Python 基于gensim的Tf-idf计算

Python 基于gensim的Tf-idf计算,python,tf-idf,gensim,Python,Tf Idf,Gensim,我有一个来自ISI论文的tf idf示例。我试图通过这个例子来验证我的代码。但是我从我的代码中得到了不同的结果。我不知道原因是什么 纸上术语文档矩阵: acceptance [ 0 1 0 1 1 0 information 0 1 0 1 0 0 media 1 0 1 0 0 2 model 0 0 1 1 0 0 selection 1 0 1 0 0 0 technology 0 1 0 1 1 0

我有一个来自ISI论文的tf idf示例。我试图通过这个例子来验证我的代码。但是我从我的代码中得到了不同的结果。我不知道原因是什么

纸上术语文档矩阵:

acceptance     [ 0 1 0 1 1 0
information      0 1 0 1 0 0
media            1 0 1 0 0 2
model            0 0 1 1 0 0
selection        1 0 1 0 0 0 
technology       0 1 0 1 1 0]
Tf idf矩阵来自纸张:

acceptance     [ 0   0.4   0   0.3   0.7  0
information      0   0.7   0   0.5   0    0
media            0.3  0   0.2   0    0    1
model            0    0   0.6   0.5  0    0
selection        0.9  0   0.6   0    0    0 
technology       0   0.4   0   0.3   0.7  0]
我的tf idf矩阵:

acceptance     [ 0   0.4   0   0.3   0.7  0
information      0   0.7   0   0.5   0    0
media            0.5  0   0.4   0    0    1
model            0    0   0.6   0.5  0    0
selection        0.8  0   0.6   0    0    0 
technology       0   0.4   0   0.3   0.7  0]
我的代码:

tfidf = models.TfidfModel(corpus)   
corpus_tfidf=tfidf[corpus]
我尝试过另一个类似这样的代码:

transformer = TfidfTransformer()
tfidf=transformer.fit_transform(counts).toarray() ##counts is term-document matrix

但是我没有得到合适的答案,正如你提到的,结果之间存在差异的原因是有很多方法可以计算TF-IDF。如果你读到它提到TF-IDF计算为

tfidft,d,d=tft,d。以色列国防军,D

tft,d和idft,d都可以用不同的函数来计算,这些函数将改变TF_IDF值的最终结果。实际上,函数在不同的应用程序中的使用是不同的

可以计算tft、d和idft、d的任何函数,如其文档中所述

将局部分量项频率乘以 全局组件反转文档频率,并规范化 将生成的文档更改为单位长度。非标准重量公式 D文档语料库中文档j中的术语i:

权重{i,j}=频率{i,j}*log_2D/document_freq{i}

或者,更一般地说:

权重{i,j}=wlocalfrequency{i,j}*wglobaldocument{u Frequency{i},D

因此,您可以插入自己的自定义wlocal和wglobal函数

wlocal的默认值是其他选项:math.sqrt、math.log1p、, ... wglobal的默认值是log_2total_docs/doc_freq,给出 上面的公式

现在,如果你想得到精确的论文结果,你必须知道它用于计算TF-IDF矩阵的函数


还有一个很好的例子显示了如何使用自定义函数来计算TF-IDF。

你的语料库是什么?@Mahmood Kohansal-字典:“{u'media':0,u'technolog':3,u'accept':4,u'inform':2,u'model':5,u'select':1}”,语料库:“[[0,1,1,1,3,1,4,4,1],[0,1,1,1,1,1,1],[3, 1, 4, 1], [0, 2]]“这个答案对你有帮助吗?谢谢你的回答。我之前猜到这是因为算法,但我尝试了3或4种不同的算法,但我没有得到提到的答案……对我来说奇怪的是,对tf idf使用任何算法都不应该导致文本聚类的完全不同的最终答案!但是每次我改变tf-idf算法,我都会得到不同的聚类!!我使用SVD来提取因子。我认为答案对tf-idf方法的依赖性很明显,正如我在回答中所说的。无论如何,如果答案正确,你可以接受。你是对的。但我认为tf-idf权重只是一种辅助方法,可以提高权重,所以它不会影响最终的结果发誓