解析TF-IDF算法原理:关键词提取,自动摘要,文本相似度计算

Abstract:TF-IDF算法是一种常用的词频统计方法,常被用于关键词提取、文本摘要、文章相似度计算等。

TF-IDF的算法思路

  • TF词频(Text Frequency):统计出现次数最多的词
  • IDF逆文档频率(Inverse Document Frequency):大小与一个词的常见程度成反比;即给某些词分配“重要性”权重(平时比较少见而在这篇文章里多次出现的词应给予较高权重,而平时也很常见的则分配较低权重(过滤停用词))

  • TF X IDF = 某个词的TF-IDF值,某个词对文章的重要性越高,其TF-IDF值越大,值最大的几个词即为关键词

TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。

缺点:单纯以“词频”来衡量一个词的重要性不够全面,因为有时重要的词可能出现次数并不多。而且,这种算法无法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。(一种解决方法是,对全文的第一段和每一段的第一句话,给予较大的权重。)

TF-IDF算法做文本相似度计算

【计算余弦相似性】

步骤:分词——列出所有词——计算词频——写出词频向量(于是计算N个文本的相似度变成计算N个向量的相似度)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.分词
句子A:我/喜欢/看/电视,不/喜欢/看/电影。

句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。

2.列出所有词
我,喜欢,看,电视,电影,不,也。

3.计算词频
句子A:我 1,喜欢 2,看 2,电视 1,电影 1,不 1,也 0。

句子B:我 1,喜欢 2,看 2,电视 1,电影 1,不 2,也 1。

4.写出词频向量
句子A:[1, 2, 2, 1, 1, 1, 0]

句子B:[1, 2, 2, 1, 1, 2, 1]

余弦相似度(如何计算向量间的相似度)

  • 想象两个向量是共原点的射线,两射线形成一个夹角,可通过夹角的大小判断向量的相似度,夹角越小,越相似

夹角

jiajiao

假定A和B是二维向量,a向量是[x1, y1],b向量是[x2, y2],那么可以将余弦定理改写成下面的形式:

假定A和B是两个n维向量,A是 [A1, A2, …, An] ,B是 [B1, B2, …, Bn] ,则A与B的夹角θ的余弦等于:

余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫”余弦相似性”。

文本相似度计算的步骤

  • 使用TF-IDF算法,找出两篇文章的关键词
  • 每篇文章各取若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为避免文章长度的差异,可以使用相对词频)
  • 生成两篇文章各自的词频向量
  • 计算两个向量的余弦相似度,值越大则越相似

TF-IDF——自动摘要

自动摘要:即找出那些包含信息最多的句子。而句子的信息量用“关键词”来衡量,若包含的关键词越多,则说明这个句子越重要。

簇:关键词的聚集,即包含多个关键词的句子片段。

簇

上图就是Luhn原始论文的插图,被框起来的部分就是一个”簇”。只要关键词之间的距离小于”门槛值”,它们就被认为处于同一个簇之中。Luhn建议的门槛值是4或5。也就是说,如果两个关键词之间有5个以上的其他词,就可以把这两个关键词分在两个簇。

簇的重要性分值:

自动摘要的步骤

  • TF-IDF算法找出关键词
  • 找出簇
  • 找出包含分值最高的簇的句子,把它们合在一起,即构成自动摘要

Reference

阮一峰:TF-IDF与余弦相似性的应用

拿钱去买猫粮和狗粮嗷 ~