zoukankan      html  css  js  c++  java
  • TF-IDF与TextRank的关键词提取算法应用

    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 = logfrac{N}{sum_{i=1}^{N}I(w,D_i)} ]

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

    [IDF_w = logfrac{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_{jin 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 igcup w_k in S_j } |}{log(|S_i|) + log(|S_j|)} ]

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

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

    参考文献

    TF-IDF与TextRank

  • 相关阅读:
    各种经典透镜投影模型
    表达式和运算
    数组
    如何使用布尔类型
    如何使用数字类型
    如何使用字符串类型
    如何声明变量,如何给变量赋值
    变量 构造函数 New 关键字
    调用write方法打印语句到浏览器
    MVC中几种常用ActionResult
  • 原文地址:https://www.cnblogs.com/lewpeng/p/11155991.html
Copyright © 2011-2022 走看看