我正在尝试在TfidfVectorizer中删除法语和英语中的停用词。到目前为止,我仅设法从英语中删除了停用词。当我尝试输入stop_words的法语时,出现一条错误消息,提示它不是内置的。
实际上,我收到以下错误消息:
ValueError: not a built-in stop list: french
我有一个文本文件,其中包含700行法语和英语混合的文本。
我正在使用Python进行这700行的集群项目。但是,我的集群出现问题:我的集群中充满了法语停用词,这使集群的效率大打折扣。
我的问题如下:
有什么方法可以添加法语停用词或手动更新内置的英语停用词列表,以便摆脱这些不必要的词吗?
这是包含我的停用词代码的TfidfVectorizer代码:
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000,
min_df=0.2, stop_words='english',
use_idf=True, tokenizer=tokenize_and_stem,
ngram_range=(1,3))
删除这些法语停用词将使我拥有代表我的文档中重复出现的单词的簇。
对此问题的相关性有任何疑问,我上周曾问过类似的问题。但是,它不相似,因为它不使用TfidfVectorizer。
任何帮助将不胜感激。谢谢。
最佳答案
您可以使用来自两个非常流行的Python NLP库NLTK或Spacy的停用词包。由于achultz已经添加了使用stop-words库的代码段,因此我将展示如何使用NLTK或Spacy。
NLTK:
from nltk.corpus import stopwords
final_stopwords_list = stopwords.words('english') + stopwords.words('french')
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000, min_df=0.2, stop_words=final_stopwords_list, use_idf=True, tokenizer=tokenize_and_stem, ngram_range(1,3))
NLTK将总共为您提供334个停用词。
空间:
from spacy.lang.fr.stop_words import STOP_WORDS as fr_stop
from spacy.lang.en.stop_words import STOP_WORDS as en_stop
final_stopwords_list = list(fr_stop) + list(en_stop)
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000, min_df=0.2, stop_words=final_stopwords_list, use_idf=True, tokenizer=tokenize_and_stem, ngram_range(1,3))
Spacy总共为您提供890个停用词。
关于python - 在TfidfVectorizer中删除法语和英语中的停用词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57359982/