首页 > 其他 > 详细

TF-IDF

时间:2020-05-04 22:44:06      阅读:88      评论:0      收藏:0      [点我收藏+]

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/12828493.html

 

什么是 TF-IDF 值

在多项式朴素贝叶斯中提到了“词的 TF-IDF 值”,TF-IDF 是一个统计方法,用来评估某个词语对于一个文件集或文档库中的其中一份文件的重要程度。

TF-IDF 实际上是两个词组 Term FrequencyInverse Document Frequency 的总称,两者缩写为 TF 和 IDF,分别代表了词频和逆向文档频率。

词频 TF 计算了一个单词在文档中出现的次数,它认为一个单词的重要性和它在文档中出现的次数呈正比。

逆向文档频率 IDF,是指一个单词在文档中的区分度。它认为一个单词出现在的文档数越少,就越能通过这个单词把该文档和其他文档区分开。IDF 越大就代表该单词的区分度越大。

所以 TF-IDF 实际上是词频 TF 和逆向文档频率 IDF 的乘积。这样我们倾向于找到 TF 和 IDF 取值都高的单词作为区分,即这个单词在一个文档中出现的次数多,同时又很少出现在其他文档中。这样的单词适合用于分类。

 

TF-IDF 如何计算

首先看下词频 TF 和逆向文档概率 IDF 的公式。

技术分享图片

技术分享图片

IDF 的分母中,单词出现的文档数要加 1,是因为有些单词可能不会存在文档中,为了避免分母为 0,统一给单词出现的文档数都加 1。

 

TF-IDF=TF*IDF

TF-IDF 值就是 TF 与 IDF 的乘积,这样可以更准确地对文档进行分类。比如“我”这样的高频单词,虽然 TF 词频高,但是 IDF 值很低,整体的 TF-IDF 也不高。

举个具体的例子

假设一个文件夹里一共有 10 篇文档,其中一篇文档有 1000 个单词,“this”这个单词出现 20 次,“bayes”出现了 5 次。“this”在所有文档中均出现过,而“bayes”只在 2 篇文档中出现过。计算一下这两个词语的 TF-IDF 值。

针对“this”,计算 TF-IDF 值:
技术分享图片
技术分享图片
所以 TF-IDF=0.02*(-0.0414)=-8.28e-4。

 

针对“bayes”,计算 TF-IDF 值:
技术分享图片

技术分享图片
所以 TF-IDF=0.005*0.5229=2.61e-3。

很明显“bayes”的 TF-IDF 值要大于“this”的 TF-IDF 值。这就说明用“bayes”这个单词做区分比单词“this”要好。

 

如何求 TF-IDF

在 sklearn 中直接使用 TfidfVectorizer 类,它可以计算单词 TF-IDF 向量的值。在这个类中,取 sklearn 计算的对数 log 时,底数是 e,不是 10。

 

Reference

https://time.geekbang.org/column/article/79762

https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html

 

TF-IDF

原文:https://www.cnblogs.com/agilestyle/p/12828493.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!