在 TfidfVectorizer 中删除法语和英语中的停用词

OnT*_*ise 4 python nltk stop-words tfidfvectorizer

我正在尝试在 TfidfVectorizer 中删除法语和英语中的停用词。到目前为止,我只设法从英语中删除了停用词。当我尝试为 stop_words 输入法语时,我收到一条错误消息,指出它不是内置的。

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

ValueError: not a built-in stop list: french
Run Code Online (Sandbox Code Playgroud)

我有一个包含 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))
Run Code Online (Sandbox Code Playgroud)

删除这些法语停用词将使我拥有代表在我的文档中重复出现的词的集群。

对于关于这个问题的相关性的任何疑问,我上周问过一个类似的问题。但是,它不相似,因为它不使用 TfidfVectorizer。

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

Ank*_*nha 10

您可以使用来自NLTKSpacy 的优秀停用词包,这两个用于 Python 的超级流行 NLP 库。由于 achultz 已经添加了使用停用词库的代码片段,我将展示如何使用 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))
Run Code Online (Sandbox Code Playgroud)

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))
Run Code Online (Sandbox Code Playgroud)

Spacy 总共为您提供 890 个停用词。