TFIDF简介

  • A+
所属分类:深度学习

1、提出问题

如何知道一篇文章的关键字有哪些?

当然你可能有很多方法,我们假设这里有三篇文章。它们主题是介绍分别是科技,娱乐和历史

当我们拿到这三篇文章的时候,我们需要知道这三篇文章代表他们特色的关键字有哪些。

比如我们可能知道,在科技文章里面主要会提到手机、互联网、支付宝等等。而历史里面会提到一些重要的任务或者战役,娱乐里面会提到一些明星什么的。

TFIDF的概念就是为了分析某个词语在文章中的权重。

比如,邓小平是一个历史人物,出现在历史的重要性权重应该比其它的要高出很多。比如范冰冰这个词语来说权重比较高的应该在娱乐里面。

2、TFIDF的概念

TFIDF是两个概念的叠加,一个是TF,另外一个是IDF。

2.1  TF的概念:

TF:词在文章中出现的频率。它的计算要依据个人的情况而定,只要保证这个TF能表示词在文章的频率就行。

最简单的我们统计一个词出现的次数就行了(wordCount),但是每个文章的长短不同,我们进行标准化,除以一个文章的总词数(wordTotal),但是有可能文章太长,基数变得很小所以我们也可以让它除以最大出现此时的那个词(wordMaxCount)。

所以TF表示如下:

词出现的次数:wordCount

词出现的次数除以文章词的总述:wordCount/wordTotal

词出现的次数除以词在文章出现次数最大的那个:wordCount/wordMaxCount

那这边考虑一个问题,比如以下词语如: "你们","我们“,“的” 这些词语在任何类型的文章中,频率都是很高的不是吗?那么这里就提出里一个IDF的概念。

2.2 IDF的概念

IDF:逆文本频率,表示该词在所有文章中的出现的频率的倒数。IDF = 文章总数/包含该词的文档数

比如我有四个文章,分别是 科技,娱乐,历史,和财经。

“你们” 这个词在这个四个文章中都出现了,那么IDF = 文章总数/包含该词的文档数 = 4 /4 = 1

“支付宝”这个词在这个四个文章中只有财经和娱乐文章中出现了,那么IDF = 文章总数/包含该词的文档数 = 4/2 = 2

这样的概念,就能凸显出某些词语在特定的文章中的重要性,比如“邓小平” 只在历史文章中出现那么 IDF = 4,那么我们说这个词语对这篇历史文章是至关重要的。

但是这里还有个变形和防止出错

如果出现一个词语,在这四个文章中都没有 那就会变成 4 / 0.这样是不行的。

所以我们统一在分母加上一个 1.又为了归一化,我们将IDF进行取对数处理,取对数是在数据变化中长用的手段,它又很多好处。最终如下:

2.3 两个联合起来形成TFIDF

TFIDF = TF * IDF 。两者相乘就有了TFIDF的概念,它的意义在于:TF 表示了一个词在文章中的重要性,IDF表示改词在该文章中的独特性。那么我们说TFIDF 表示该词在该文章独特又重要的位置,也就是关键位置。

 

3、代码书写

当然,如果你手上有好多文章,需要提取关键字,你可以计算每个词的TFIDF,然后提取前几名就可以了。

但是sklearn 工具包推荐大家使用,代码如下
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer()
re = tfidf.fit_transform(“文本”)

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: