scikit-学习TfidfVectorizer忽略某些单词

时间:2018-10-30 14:47:50

标签: python scikit-learn nlp tf-idf tfidfvectorizer

我正在尝试从维基百科页面上有关葡萄牙历史的句子中尝试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"])

数据帧的输出:

enter image description here

从本质上讲,它忽略了“ Aroeira”和“ Almonda”一词。

但是我不希望它忽略这些单词,所以我该怎么办?我找不到他们谈论此文档的任何地方。

另一个问题是,为什么“ the”一词会重复出现?算法应该只考虑一个“ the”并计算其tf-idf吗?

2 个答案:

答案 0 :(得分:5)

tfidf.indices只是TfidfVectorizer中功能名称的索引。 通过该索引从句子中获取单词是错误的。

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

enter image description here

答案 1 :(得分:1)

输出是给与两个,因为句子中有两个。整个句子被编码,并且每个索引的获取值。其他两个单词没有出现的原因是它们是稀有单词。您可以通过降低阈值使它们出现。

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