我正在尝试从维基百科页面上有关葡萄牙历史的句子中尝试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吗?
答案 0 :(得分:5)
tfidf.indices
只是TfidfVectorizer中功能名称的索引。
通过该索引从句子中获取单词是错误的。
您应该将df的列名称命名为TfidfVec.get_feature_names()
答案 1 :(得分:1)
输出是给与两个,因为句子中有两个。整个句子被编码,并且每个索引的获取值。其他两个单词没有出现的原因是它们是稀有单词。您可以通过降低阈值使它们出现。
请参阅min_df和max_features:
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html