scikit-learn TfidfVectorizer 忽略某些单词

scikit-learn TfidfVectorizer ignoring certain words

我正在尝试使用 TfidfVectorizer 处理从维基百科页面获取的关于葡萄牙历史的句子。但是我注意到 TfidfVec.fit_transform 方法忽略了某些单词。这是我试过的句子:

sentence = "The oldest human fossil is the skull discovered in the Cave of Aroeira in Almonda."

TfidfVec = TfidfVectorizer()
tfidf = TfidfVec.fit_transform([sentence])

cols = [words[idx] for idx in tfidf.indices]
matrix = tfidf.todense()
pd.DataFrame(matrix,columns = cols,index=["Tf-Idf"])

数据帧的输出:

本质上就是忽略了"Aroeira"和"Almonda"这两个词。

但我不想让它忽略这些词,所以我该怎么办?我在他们谈论这个的文档中找不到任何地方。

另一个问题是为什么"the"这个词重复了?算法应该只考虑一个 "the" 并计算它的 tf-idf 吗?

输出是 giving two the,因为句子中有两个。整个句子都已编码,您将获得每个索引的值。其他两个词之所以没有出现,是因为它们是生僻词。您可以通过降低阈值来使它们出现。

参考min_df和max_features:
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html

tfidf.indices 只是 TfidfVectorizer 中特征名称的索引。 通过这个索引从句子中获取单词是一个错误。

您应该将 df 的列名称设为 TfidfVec.get_feature_names()