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个向量的相似度)
1234567891011121314151617 | 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] |
余弦相似度(如何计算向量间的相似度)
- 想象两个向量是共原点的射线,两射线形成一个夹角,可通过夹角的大小判断向量的相似度,夹角越小,越相似
假定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算法找出关键词
- 找出簇
- 找出包含分值最高的簇的句子,把它们合在一起,即构成自动摘要