@邹博 @ALL 请教邹老师和各位大神们一个问题,测试tfidf中的idfs,但是不知道其中的idfs是怎么算出来的,请老师和大神们详细解答下

要对文档进行词频等分析,用到tfidf,通过code理解tfidf时,发现idf不知道怎么算的.附上代码
#:/usr/bin/env python
# _*_coding:utf-8_*_
from gensim import corpora, models, similarities
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s',level=logging.INFO)
documents = ["Shipment of gold damaged in a fire",
 "Delivery of silver arrived in a silver truck",
 "Shipment of gold arrived in a truck"]
texts = [[word for word in document.lower().split()] for document in documents]
print('\ntexts:')
print (texts)
dictionary = corpora.Dictionary(texts)
print('\ndictionary:')
print (dictionary)
print('\ndictionary.token2id:')
print (dictionary.token2id)
corpus = [dictionary.doc2bow(text) for text in texts]
print('\ncorpus:')
print (corpus)
tfidf = models.TfidfModel(corpus)
print('\ntfidf.dfs:')
print (tfidf.dfs)
print('\ntfidf.idfs:')
print (tfidf.idfs)
corpus_tfidf = tfidf[corpus]
# print (corpus_tfidf)
for doc in corpus_tfidf:
    print (doc)
附图是debug显示的其中tfidf.idfs不知道怎么算出来的.尤其是1: 1.5849625007211563   5: 0.5849625007211562 这两个不知道怎么算的,请帮忙解答下
 
image.png

jianl_39

赞同来自:

先顶下,不沉底.

邹博 - 计算机科学博士,深谙机器学习算法原理

赞同来自:

一般都说,TF是指的词频:在第i个文档中,第j个词出现的次数除以第i个文档的词的中个数,即TF(j)。 用文档总次数除以所有的语料中第j个词出现的文档数目,然后取对数,即得到IDF(j)。 从而,第j个词的权重为: IF(j)*IDF(j)。

jianl_39

赞同来自:

感谢邹老师 回答, 但是我想知道为什么其中1的idf是 1.5849625 5的idf是0.5849625,谢谢
1
: 
1.5849625007211563
   
5
: 
0.5849625007211562

要回复问题请先登录注册