首页 > 编程语言 > 详细

TF-IDF与TextRank的关键词提取算法应用

时间:2019-07-09 20:42:51      阅读:288      评论:0      收藏:0      [点我收藏+]

TF-IDF

??TF-IDF(Term Frequency/Inverse Document Frequency)是信息检索领域非常重要的搜索词重要性度量;用以衡量一个关键词w对于查询(Query,可看作文档)所能提供的信息。词频(Term Frequency, TF)表示关键词w在文档Di中出现的频率:

\[TF_{w,D_i} = \frac{count(w)}{|D_i|}\]

??其中,count(w)为关键词w的出现次数,|Di|为文档Di中所有词的数量。逆文档频率(Inverse Document Frequency, IDF)反映关键词的普遍程度——当一个词越普遍(即有大量文档包含这个词)时,其IDF值越低;反之,则IDF值越高。IDF定义如下:

\[IDF_w = log\frac{N}{\sum_{i=1}^{N}I(w,D_i)}\]

??其中,N为所有的文档总数,I(w,Di)表示文档Di是否包含关键词,若包含则为1,若不包含则为0。若词w在所有文档中均未出现,则IDF公式中的分母为0;因此需要对IDF做平滑(smooth):

\[IDF_w = log\frac{N}{1+\sum_{i=1}^{N}I(w,D_i)}\]

??关键词w在文档Di的TF-IDF值:

\[TF - IDF_{w,D_i} = TF_{w,D_i} * IDF_w\]

从上述定义可以看出:

  • 当一个词在文档频率越高并且新鲜度高(即普遍度低),其TF-IDF值越高。

  • TF-IDF兼顾词频与新鲜度,过滤一些常见词,保留能提供更多信息的重要词。

TextRank

  • 思想
    通过词之间的相邻关系构建网络,然后用PageRank迭代计算每个节点的rank值,排序rank值即可得到关键词。

PageRank本来是用来解决网页排名的问题,网页之间的链接关系即为图的边,迭代计算公式如下:

\[PR(V_i) = (1 - d) + d * \sum_{j \in In(V_i)}\frac{1}{|Out(V_j)|}PR(V_j)\]

其中,PR(Vi)表示结点Vi的rank值,In(Vi)表示结点Vi的前驱结点集合,Out(Vj)表示结点Vj的后继结点集合,d为阻尼系数用于做平滑。

TextRank的迭代计算公式如下:

\[WS(V_i) = (1 - d) + d * \sum_{j\in In(V_i)}\frac{w_{ji}}{\sum_{V_k \in Out(V_j) w_{jk}}}WS(V_j)\]

可以看出,该公式仅仅比PageRank多了一个权重项Wji,用来表示两个节点之间的边连接有不同的重要程度。

TextRank生成摘要

??将文本中的每个句子分别看做一个节点,如果两个句子有相似性,那么认为这两个句子对应的节点之间存在一条无向有权边。考察句子相似度的方法是下面这个公式:

\[Similarity(S_i,S_j) = \frac{| \{ w_k | w_k \in S_i \bigcup w_k \in S_j \} |}{log(|S_i|) + log(|S_j|)}\]

??公式中,Si,Sj分别表示两个句子词的个数总数,Wk表示句子中的词,那么分子部分的意思是同时出现在两个句子中的同一个词的个数,分母是对句子中词的个数求对数之和。分母这样设计可以遏制较长的句子在相似度计算上的优势。

??我们可以根据以上相似度公式循环计算任意两个节点之间的相似度,根据阈值去掉两个节点之间相似度较低的边连接,构建出节点连接图,然后计算TextRank值,最后对所有TextRank值排序,选出TextRank值最高的几个节点对应的句子作为摘要。

参考文献

TF-IDF与TextRank

TF-IDF与TextRank的关键词提取算法应用

原文:https://www.cnblogs.com/lewpeng/p/11155991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!