在TFIDFVECTORIZER中删除法语和英语的停止词



我试图在tfidfvectorizer中以法语和英语删除oft ote。到目前为止,我只设法从英语中删除了停止词。当我尝试输入stop_words的法语时,我会收到一条错误消息,说它不是内置的。

实际上,我会收到以下错误消息:

ValueError: not a built-in stop list: french

我有一个文本文档,其中包含700条用法语和英语混合的文本。

我正在使用Python进行这700行的聚类项目。但是,我的群集出现了一个问题:我的集群充满了法语止词,这使我的簇的效率弄乱了。

我的问题是:

有什么办法可以添加法语停止词或手动更新内置的英语停止词列表,以便我可以摆脱这些不必要的单词?

这是包含我的stopwords代码的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。

任何帮助将不胜感激。谢谢。

您可以使用nltk或spacy的良好停止单词包,这是两个超级流行的NLP库。由于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个停止词。

Spacy:

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个停车词。

igor sharm指出了手动做事的方法,但也许您也可以安装停止词包。然后,自tfidfvectorizer允许列表作为stop_words参数,

from stop_words import get_stop_words
my_stop_word_list = get_stop_words('english') + get_stop_words('french')
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000,
                             min_df=0.2, stop_words=my_stop_word_list,
                             use_idf=True, tokenizer=tokenize_and_stem, 
ngram_range=(1,3))

,您还可以根据需要在github项目中阅读和解析法语。

根据我的经验,解决此问题的最简单方法是在预处理阶段手动删除止版(同时从其他地方列出最常见的法语短语(。

此外,应该方便地检查哪些停止字是在您的文本/模型中最常见的英语和法语(通过它们的情况或IDF(,并将它们添加到您在预处理阶段中排除的停止词。

如果您希望使用tfidfvectorizer buildin方法删除这些单词,请考虑列出要包含法语和英语的停止词,并以

将其传递
stopwords=[a,he,she,le,...]
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=200000,
                             min_df=0.2, stop_words=stopwords,analyzer=’word’,
                             use_idf=True, tokenizer=tokenize_and_stem) 

重要的是,从文档中引用:

"英语"当前是唯一受支持的字符串值

因此,现在您必须手动添加一些停车列表,例如,您可以在Web上的任何地方找到,然后使用您的主题进行调整:停止字

最新更新