欢迎大家访问我的博客以及简书
本博客所有内容以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢!
一. 摘要
这篇文章主要介绍了计算TF-IDF的不同方法实现,主要有三种方法:
用gensim库来计算tfidf值
用sklearn库来计算tfidf值
用python手动实现tfidf的计算
关于TFIDF的算法原理我就不过多介绍了,看这篇博客即可——TF-IDF原理。阮一峰大佬写的,浅显易懂,看了这么多篇就这篇最好懂。
二. 正文
1.使用gensim提取文本的tfidf特征
首先来看我们的语料库
corpus = [
'this is the first document',
'this is the second second document',
'and the third one',
'is this the first document'
]
接下来看我们的处理过程
1)把语料库做一个分词的处理
[输入]:
word_list = []
for i in range(len(corpus)):
word_list.append(corpus[i].split(' '))
print(word_list)
[输出]:
[['this', 'is', 'the', 'first', 'document'],
['this', 'is', 'the', 'second', 'second', 'document'],
['and', 'the', 'third', 'one'],
['is', 'this', 'the', 'first', 'document']]
得到每个词的id值及词频
[输入]:
from gensim import corpora
# 赋给语料库中每个词(不重复的词)一个整数id
dictionary = corpora.Dictionary(word_list)
new_corpus = [dictionary.doc2bow(text) for text in word_list]
print(new_corpus)
# 元组中第一个元素是词语在词典中对应的id,第二个元素是词语在文档中出现的次数
[输出]:
[[(0, 1), (1, 1), (2, 1), (3, 1), (4, 1)],
[(0, 1), (2, 1), (3, 1), (4, 1), (5, 2)],
[(3, 1), (6, 1), (7, 1), (8, 1)],
[(0, 1), (1, 1), (2, 1), (3, 1), (4, 1)]]
[输入]:
# 通过下面的方法可以看到语料库中每个词对应的id
print(dictionary.to