- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在测试 TfidfVectorizer
举个简单的例子,我想不出结果。
corpus = ["I'd like an apple",
"An apple a day keeps the doctor away",
"Never compare an apple to an orange",
"I prefer scikit-learn to Orange",
"The scikit-learn docs are Orange and Blue"]
vect = TfidfVectorizer(min_df=1, stop_words="english")
tfidf = vect.fit_transform(corpus)
print(vect.get_feature_names())
print(tfidf.shape)
print(tfidf)
输出:
['apple', 'away', 'blue', 'compare', 'day', 'docs', 'doctor', 'keeps', 'learn', 'like', 'orange', 'prefer', 'scikit']
(5, 13)
(0, 0) 0.5564505207186616
(0, 9) 0.830880748357988
...
我正在计算
tfidf
第一句话,我得到了不同的结果:
I'd like an apple
”)仅包含 2 个词(在去除停用词之后(根据 vect.get_feature_names()
的打印结果(我们保留:“like
”、“apple
”)apple
在语料库中出现 3 次。 like
在语料库中出现 1 次。 tfidf("apple")
在文档 1 = 0.5 * 0.51082 = 0.255 != 0.5564 tfidf("like")
在文档 1 = 0.5 * 1.60943 = 0.804 != 0.8308 最佳答案
你的计算有几个问题。
第一 ,关于如何计算 TF 有多种约定(参见 Wikipedia entry); scikit-learn 不会使用文档长度对其进行标准化。来自 user guide :
[...] the term frequency, the number of times a term occurs in a given document [...]
TF("apple", Document_1) = 1
,而不是 0.5
If
smooth_idf=True
(the default), the constant “1” is added to the numerator and denominator of the idf as if an extra document was seen containing every term in the collection exactly once, which prevents zero divisions: idf(t) = log [ (1 + n) / (1 + df(t)) ] + 1.
IDF ("apple") = ln(5+1/3+1) + 1 = 1.4054651081081644
因此
TF-IDF("apple") = 1 * 1.4054651081081644 = 1.4054651081081644
第三 , 使用默认设置
norm='l2'
,有一个额外的规范化发生;再次来自文档:
Normalization is “c” (cosine) when
norm='l2'
, “n” (none) whennorm=None
.
vect = TfidfVectorizer(min_df=1, stop_words="english", norm=None)
给
'apple'
(0, 0) 1.4054651081081644
即已经手动计算
norm='l2'
时如何影响计算的详细信息(默认设置),参见
Tf–idf term weighting用户指南的部分;他们自己承认:
the tf-idfs computed in scikit-learn’s
TfidfTransformer
andTfidfVectorizer
differ slightly from the standard textbook notation
关于python - 了解 TfidfVectorizer 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66350670/
我认为函数 TfidfVectorizer 没有正确计算 IDF 因子。例如,从 tf-idf feature weights using sklearn.feature_extraction.tex
我将大型语料库拆分为 5K 个文件,我正在尝试使用 TF-IDF 转换生成基于 IDF 的词汇表。 这是代码:基本上我有一个迭代器,它循环遍历 .tsv 文件的目录,读取每个文件并产生。 import
假设我用于单个文档 text="bla agao haa" singleTFIDF = TfidfVectorizer(analyzer='char_wb', ngram_range= (4,6),p
我尝试在语料库上使用 TfidfVectorizer,但每次都会出现此错误 File "sparsefuncs.pyx", line 117, in sklearn.utils.sparsefuncs
虽然有六个不同的词。结果只打印了5个字。如何根据所有单词(6列向量)获得结果? from sklearn.feature_extraction.text import TfidfVectorizer
我正在尝试使用 sklearn 的 TfidfVectorizer 输出由两个一元组组成的输入列表的 tf-idf 分数和二元组。 这是我正在做的事情的本质: comprehensive_ngrams
我正在寻找一种方法来加载我之前使用 scikit-learn 的 TfidfVectorizer 生成的向量。总的来说,我希望更好地了解 TfidfVectorizer 的数据持久性。 例如,到目前为
就我而言,不存在这样的问题。我正在 Kaggle 中从事 NLP 和情感分析项目,首先我正在准备我的数据。数据框是一个文本列,后跟 0 到 9 之间的数字,用于对行(文档)所属的簇进行分类。我在 sk
我使用 TfIdfVectorizer 和 MultinomialNB 训练了我的模型,并将其保存到 pickle 文件中。 现在我正尝试使用另一个文件中的分类器来预测看不见的数据,我不能这样做,因为
我有一个大型语料库,存储为 25 个列表的字典,我想使用 SKLearn 的 TfidfVectorizer 进行分析。每个列表包含许多字符串。现在,我既关心整个语料库中的总体词频 (tf),也关心
我对 skelearn 的 TfidfVectorizer 在我不知道的情况下到底做了什么感到有点困惑。 我有这样的句子: sentence_1 = 'Sum: 1 Mean: 1 Min:1' 但是
给出以下代码: import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer import urlli
我正在使用 sklearn Pipeline 和 FeatureUnion 从文本文件创建特征,我想打印出特征名称。 首先,我将所有转换收集到一个列表中。 In [225]:components Ou
我想确保我了解属性 use_idf 和 sublinear_tf 在 TfidfVectorizer 对象中的作用。这几天我一直在研究这个。我正在尝试对不同长度的文档进行分类,目前使用 tf-idf
我正在测试 TfidfVectorizer举个简单的例子,我想不出结果。 corpus = ["I'd like an apple", "An apple a day keeps
在 scikit-learn TfidfVectorizer允许我们拟合训练数据,然后使用相同的向量化器来转换我们的测试数据。 训练数据转换的输出是一个矩阵,表示给定文档的每个单词的 tf-idf 分
我正在尝试删除 TfidfVectorizer 中法语和英语的停用词。到目前为止,我只成功地从英语中删除了停用词。当我尝试为 stop_words 输入法语时,收到一条错误消息,指出它不是内置的。 事
我正在尝试在一组上训练 NLP 模型,保存词汇和模型,然后将其应用于单独的验证集。代码正在运行,但我如何确定它按我的预期工作? 换句话说,我从训练集中保存了词汇和 nmodel,然后使用保存的词汇创建
我有一个相当简单的 NLTK 和 sklearn 分类器(我对此完全是菜鸟)。 我进行通常的导入 import pandas as pd import matplotlib.pyplot as plt
我正在绘制一组二维文本文档,我注意到一些异常值,我希望能够找出这些异常值是什么。我使用原始文本,然后使用 SKLearn 内置的 TfidfVectorizer。 vectorizer = Tfi
我是一名优秀的程序员,十分优秀!