使用spacy清理/柠檬化荷兰数据集

2024-06-25 22:43:52 发布

您现在位置:Python中文网/ 问答频道 /正文

为了进行文本分析,我正在尝试将stopwords从荷兰tweet数据集中进行分类并删除。 目标是实现以下结构: [this'、'is'、'a'、'tweet]、'this'、'is'、'a'、'tweet]、'this'、'is'、'a'、'tweet]] 然后,停止字也被删除

数据集当前的外观如下所示: [“如果你不想成为一名测试人员,那么你就可以成为测试人员的最佳选择。”, “我们在这一地区的工作人员与我们在这一地区的工作人员的关系非常密切。我们在这一地区的工作人员与我们在这一地区的工作人员的关系非常密切。\n\n信息来源:⤵️\n\n', “我们在瓦达格州的科罗纳·瓦特莱恩·泽滕镇与特威德·瓦特莱恩·瓦特莱恩·泽滕镇对峙。\n\n所有人都在瓦特莱恩·霍特镇的泽滕镇,我们在沃鲁伊镇对峙。\n\n请提供信息⤵️\n\n\nAlleenSamen']

我写的代码如下:

import pandas as pd
import re
import numpy as np
import pandas as pd
from pprint import pprint
import gensim
import gensim.corpora as corpora
from gensim.utils import simple_preprocess
from gensim.models import CoherenceModel
import pyLDAvis
import pyLDAvis.gensim
import matplotlib.pyplot as plt
from nltk.corpus import stopwords
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

df = pd.read_excel (r"C:xxxxxxxxxxx")

print (df)

df2_clean = df['text'].replace('https.*[^ ]', '',regex=True) 
df2_clean = df2_clean.replace('@([^ ]*)', '',regex=True) 
df2_clean = df2_clean.replace('#', '',regex=True) 
df2_clean = df2_clean.replace('RT', '',regex=True)
df2_clean = df2_clean.replace('[0-9]+', '', regex=True)
df2_clean

tweets = [line for line in df2_clean]

tweets
import spacy
import nltk
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords
nltk.download('wordnet')

stopword_list = stopwords.words('dutch') + 
['coronavirus','covid','corona']

#lemmatizer
def lemmatizer(x):
    
#lemmatize 
for x in x:
    doc = nlp(x)
    print(doc.text)
    for token in doc:
        lemmatized_list = [token.lemma_]
    cleaned_lemmas = [x for x in lemmatized_list if x not in stopword_list]
return cleaned_lemmas



lemmatizer(tweets)

问题是我没有得到我想要的表格;它像这样返回

Wanneer het niet mogelijk is om met de auto naar de teststraat te komen, kun je samen met een telefonisch medewerker de beste optie om je te laten testen bespreken. ^CM
De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.

Actuele informatie ⤵️


De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. 

Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.

Actuele informatie ⤵️


AlleenSamen 
De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.

Actuele informatie ⤵️


AlleenSamen 
Heb je klachten als neusverkoudheid, hoesten en/of verhoging. Blijf dan thuis en laat je testen op het coronavirus.

Bel het landelijke gratis telefoonnummer - en maak een testafspraak bij een GGD-locatie in de buurt.

它没有被引理化,它不在列表中,而且stopwords仍然存在,因此函数不能正常工作。 提前感谢您的建议


Tags: infromimportcleanasdewedf2
1条回答
网友
1楼 · 发布于 2024-06-25 22:43:52

这是一种使用pipe进行更快推断的尝试

import spacy
from nltk.corpus import stopwords

stopword_list = stopwords.words('dutch') + ['coronavirus','covid','corona']

nlp = spacy.load("nl_core_news_sm")

def lemmatizer(texts):
    texts = [text.replace("\n", "").strip() for text in texts]
    docs = nlp.pipe(texts)
    cleaned_lemmas = [[t.lemma_ for t in doc if t.lemma_ not in stopword_list] for doc in docs]

    return cleaned_lemmas

tweets = [' Wanneer het niet mogelijk is om met de auto naar de teststraat te komen, kun je samen met een telefonisch medewerker de beste optie om je te laten testen bespreken. ^CM', 'De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. Alleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.\n\nActuele informatie ⤵️\n\n', 'De tweede stap in het versoepelen van de coronamaatregelen zetten we vandaag. \n\nAlleen als iedereen zich aan de maatregelen houdt, zetten we samen een stap vooruit.\n\nActuele informatie ⤵️\n\n\nAlleenSamen ']
cleaned = lemmatizer(tweets)

print(cleaned)

相关问题 更多 >