为什么向量化语料库的值与通过idf_
属性获得的值不同?idf_
属性不应该以向量化语料库中出现的相同方式返回反向文档频率(IDF)吗?你知道吗
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ["This is very strange",
"This is very nice"]
vectorizer = TfidfVectorizer()
corpus = vectorizer.fit_transform(corpus)
print(corpus)
语料库矢量化:
(0, 2) 0.6300993445179441
(0, 4) 0.44832087319911734
(0, 0) 0.44832087319911734
(0, 3) 0.44832087319911734
(1, 1) 0.6300993445179441
(1, 4) 0.44832087319911734
(1, 0) 0.44832087319911734
(1, 3) 0.44832087319911734
词汇和idf_
值:
print(dict(zip(vectorizer.vocabulary_, vectorizer.idf_)))
输出:
{'this': 1.0,
'is': 1.4054651081081644,
'very': 1.4054651081081644,
'strange': 1.0,
'nice': 1.0}
词汇索引:
print(vectorizer.vocabulary_)
输出:
{'this': 3,
'is': 0,
'very': 4,
'strange': 2,
'nice': 1}
为什么单词this
的IDF值在语料库中是0.44
,而由idf_
获得时是1.0
?你知道吗
这是因为
l2
规范化,它在TfidfVectorizer()
中默认应用。 如果将norm
参数设置为None
,则会得到与idf_
相同的值。你知道吗另外,计算特性对应的idf值的方法是错误的,因为
dict
没有保留顺序。你知道吗用途:
相关问题 更多 >
编程相关推荐