利用TF-IDF 提取文章关键词

来源:互联网 发布:网络的利与弊作文1000 编辑:程序博客网 时间:2024/05/14 07:45

当我们拿到一篇很长的文章的时候,TF-IDF 可以帮助我们确定 文章的关键词,往往比较两篇文章的相似性,我们可以提取出两篇文章的关键词,比如两篇文章各20个关键词,接下来利用余弦相似性(cosine similarity) 就可以确定两篇文章的相似性到底有多高.


什么是TF-IDF(Term Frequency-Inverse Document Frequency)

 TF-IDF 的主要思想是:如果某个短语或者某个词在一篇文章中出现的频率TF 高,并且在其它文章中很少出现,那么我们认为该词/短语具有良好的区别能力,适合用来分类.

TF-IDF = TF x IDF, TF 表示某个词在一篇文章中出现的频率, IDF 是逆向文件频率,表示一个词或短语重要性的权重.


如何计算TF-IDF(Term Frequency-Inverse Document Frequency):


词频(TF) = (某个词在文章中出现的次数)/(文章的总词数)


这里会出现一个问题就是你会发现文章中出现的最多的就是“The”, "a", "In" 这列词,对结果毫无帮助,它们叫做“停用词”(Stop words),表示对结果毫无帮助,必须过滤掉的词.


逆文档频率(IDF) = log(语料库的文档总数/(包含该词的文档数 + 1))

语料库用来模拟语言的使用环境.

如果一个词越常见,逆文档频率就越接近于0. 分母加1 是为了避免分母为0的情况(语料库的所有文档都不包含该词).


TF-IDF = TF X IDF

TF-IDF 与一个词的词频成正比,而与该词的权重或者重要性程度成反比. 所以在提取一篇文章的关键词时,我们先去掉停用词,计算文章中每个词的TF-IDF 值,然后按照降序排列,取排在最前面的词.


例子:


文档1 = “Shipment of gold damaged in a fire”

文档2= “Delivery of silver arrived in a silver truck”

文档3= “shipment of gold arrived in a truck”


第一步(去掉停用词):

文档1 = “Shipment gold damaged fire”

文档2 = “Delivery silver arrived silver truck”

文档3 = “Shipment gold arrived truck”


第二步(英文单词词干化)

可选,在这里可以使用NTLK 来做英文单词的词干化. NTLK 提供了好几个相关的工具接口供使用,比如 Lancaster Stemmer, Porter Stemmer 等.

例如stemmed/stemming/stemmer 词干化后都是单词stem。

如果在比较文章的相似性的时候,可以做下英文单词词干化,这里我们不做,我们只选关键词.


第三步(计算TF):

文档2:

Delivery = 1/5 = 0.2

silver = 2/5 = 0.4

arrived = 1/5 = 0.2

truck = 1/5 = 0.2


第四步(计算IDF)

文档2:

Delivery = log(3/(1+1)) = 0.176

silver = log(3/(1+1)) = 0.176

arrived = log(3/(2+1)) = 0 

truck = log(3/(2+1)) = 0


第五步(计算TF X IDF):

Delivery = 0.2 x 0.176 = 0.0352

silver = 0.4 x 0.176 = 0.0704

arrived = 0

truck = 0


那么对于文档2来说,silver 和Delivery 能用来区分文档2 和其它文档的相似度的.



好了,TF-IDF 就讲到这里,下次可以讲下 用TF-IDF 和 余弦相似度来计算文档的相似度.



0 0
原创粉丝点击