tfidf原理及实现

本文介绍了TF-IDF原理,包括单词词频(TF)和逆文档频率(IDF)的概念,并给出了计算TF-IDF的公式。此外,详细讲解了如何使用gesim库实现TF-IDF,包括表示句子的方式、模型的保存与加载方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TFIDF原理

TF:单词词频。一个词在文章中出现的频率,公式:tf=词在文章中出现的次数/文章总的词汇数。文章可以是一个句子,也可以是一篇文章,根据具体情况定。

idf:逆文件频率。词在该文章中出现的次数越少,越能够代表该文章。

IDF=log(语料库的总文档数/包含该词条的文档数+1),分母+1是为了避免分母为0

TFIDF=TF*IDF

代码实现:

两种方法:gesim实现和sklearn实现。先提供gensim的版本的实现

gesim实现:

from gensim import corpora,similarities,models
import jieba
#第一步:确定语料库的语料和要进行判断的句子:
#wordlist作为语料库,语料库中有三句话,相当于三篇文章.比较sentences和wordlist中三句话的相似度
wordlist=['我喜欢编程','我想变漂亮','今天吃午饭了吗']
#注意这里是个字符串
sentenses='我喜欢什么'
#第二步:使用语料库建立词典,也就是给预料库中的每个单词标上序号,类似:{'我':1,'喜欢':2,'编程':3,....}首先进行中文分词
text=[[word for word  in jieba.cut(words) ]for words in wordlist]
dictionary=corpora.Dictionary(text)
#第三步,对语料中的每个词进行词频统计,doc2bow是对每一句话进行词频统计,传入的是一个list
#corpus得到的是一个二维数组[[(0, 1), (1, 1), (2, 1)], [(3, 1), (4, 1)], [(5, 1), (6, 1), (7, 1), (8, 1), (9, 1)]],意思是编号为0的词出现的频率是1次,编号为2的词出现的频率是1次
corpus=[dictionary.doc2bow(word) for word in text]
#第四步:使用corpus训练tfidf模型
model=models.TfidfModel(corpus)
#要是想
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值