Python之TF-IDF原理介绍

发布 : 2017-08-29 分类 : Python 浏览 :

TF-IDF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
特征抽取,从原始数据中抽取特征
IF-IDF,词频-逆向文件频率,是一种在文本挖掘中广泛使用的特征向量化方法,它可以体现一个文档中词语在预料库中的重要程序

词语,用t表示
文档,用d表示
语料库,用D表示
词频TF(t,d):词语t在文档d中出出现的次数
文件频率DF(t,D):包含词t的文档个数

如果只使用词频来衡量重要性,很容易过度强调在文档中经常出现,却没有太多实际信息的词语
比如"a""the"、以及"of"

如果一个词语经常出现在语料库中,意味着它并不能很好的对文档进行分区
IF-IDF就是在数值化文档信息,衡量词语提供多少信息以及分区文档

IDF(t,D)=log(D+1/DF(t,D)+1)
此处|D|是语料库中总的文档数,公式中使用log函数,当词出现在所有文档中时候,它的IDF值就为0,加1是为了避免分母为0的情况

IF-IDF度量值表示为:
TFIDF(t,d,D)=TF(t,d).IDF(t,D)
1
2
3
4
在Spark ML库中,TF-TDF被分为两部分
TF和IDF
TF:HashingTF是一个transfomer,在文本处理中,接受词条的集合,然后把这些集合转化为固定长度的特征向量
IDF:IDF是一个Estimator,在数据及应用fit()方法,产生一个IDFModel,用该模型接受特征向量,然后计算每一个词在文档中出现的频次

例子

1
2
3
有一篇文章,词语数量=100,但是词语"机器学习"出现了3次,那么"机器学习"一次在该文件中的词频就是3/100=0.03
如果"机器学习"一词在999份文件中出现过,并且文件总数为99999999份的话,逆向文件频率就是log(999+1/99999999+1)=4
最后的TF-IDF=0.03*4=0.12
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/08/29/Python之TF-IDF原理介绍/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹