NLP学习笔记——TF-IDF算法

一、TF-IDF算法简介

        TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)算法是一种信息检索和文本数据挖掘常用的加权技术。TF-IDF是一种统计方法,主要用来评估一个字词在文件集或一个语料库中的一份文件的重要程度。字词的重要性会随着它在文件中出现的次数成正比增加,同时也会随着它在语料库中出现的次数成反比下降。

        TF-IDF的基本思想是:某个字词在一个文件中出现的次数越高,而且在语料库中出现的次数越少,那么这个字词对这个文件就越重要,越有区分性,适合用来分类。

1、TF:词频

        TF是指一个字词在某个文件中出现的频率,通常统计出词频后会进行归一化,计算公式为:

TF=\frac{w}{W}

其中w为字词在文件出现的次数,W为文件总字词的个数。

        也就是说,从一个文件来看,一个单词出现的次数越多就越重要,但这不是绝对的。比如,的、地、得等单词出现的次数一定不会少,但是它们并不蕴含什么重要信息。所以我们需要IDF。

2、IDF:逆向文件频率

        指的是某个词在一个文件集或者语料库中区分力指标。计算公式为:

IDF=log(\frac{Fn+1}{Fw+1})

其中Fn为文件集或语料库中文档的总个数,Fw为出现某个词的文档个数,Fw+1是为了避免分母为0,Fn+1是为了保证log内的值永远\geq1,使IDF的值永远为非负数。

        也就是说,对一个文件集或者语料库而言,包含某个单词的文档越少,IDF的值越大,这个词的区分力越强,就越重要。log

 3、TF-IDF=TF * IDF

        综合考虑以某个文档为中心的局部信息TF,和以某个语料库全局信息为基础的IDF,得到以下公式:

TF-IDF=TF*IDF

        所以TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语料库中的出现的文档的个数成反比。

4、优缺点

  • 优点

        简单、快捷。

  • 缺点

        不能反映字词的位置信息;

        精度不高,因为TF-IDF本身是倾向于文本中频率较小的字词,是一种试图抑制噪声的加权技术;

        严重依赖语料库,会掩盖同一类型的关键词,例如语料库中NBA类的新闻比较多,那么NBA类的关键词权重就会普遍较低。


二、代码示例

随便举个简单的例子。

from nltk.text import TextCollection
from nltk.tokenize import word_tokenize
 
#构建语料库
data=['this is 0','this is 1','this is 2']
data=[word_tokenize(sent) for sent in data]   #对每个句子进行分词
corpus=TextCollection(data)  #构建语料库
print(corpus)                 #输出语料库
 
#计算第三个文档中"0"的tf值
tf=corpus.tf('0',corpus)   
 
#计算语料库中"0"的idf值
idf=corpus.idf('0')      

#计算语料库中"0"的tf-idf值
tf_idf=corpus.tf_idf('0',corpus)

print(tf)
print(idf)
print(tf_idf)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值