- 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,然后提取前几名就可以了。
from sklearn.feature_extraction.text import TfidfVectorizer tfidf = TfidfVectorizer() re = tfidf.fit_transform(“文本”)
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏