如何解决使用 spacy 清理/词形还原荷兰数据集
我正在尝试从荷兰语推文数据集中对停用词进行词形还原和删除,以执行文本分析。 目标是实现以下结构: [['this','is','a','tweet],['this','tweet ]] 然后停用词也被删除。
数据集目前看起来像这样: [' Wanneer het niet mogelijk is om met de auto naar de testtraat te komen,kun je samen meet 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 ']
我写的代码是这样的:
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.
它没有词形还原,它不在列表中,而且停用词仍然存在,因此该功能无法正常工作。 提前感谢您的建议!
解决方法
这是使用 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。