所谓自动摘要,就是从文章中自动抽取关键句。何谓关键句?人类的理解是能够概括文章中心的句子,机器的理解只能模拟人类的理解,即拟定一个权重的评分标准,给每个句子打分,之后给出排名靠前的几个句子。
1.TextRank公式
TextRank的打分思想依然是从PageRank的迭代思想衍生过来的,如下公式所示:
等式左边表示一个句子的权重(WS是weight_sum的缩写),右侧的求和表示每个相邻句子对本句子的贡献程度,一般认为一篇文档中全部句子都是相邻的。求和的分母wji表示两个句子的相似程度,分母又是一个weight_sum,而WS(Vj)代表上次迭代j的权重,整个公式是一个迭代的过程。
2.相似程度的计算
而相似程度wji的计算使用BM25,BM25算法是一种常见用来做相关度打分的公式,思路比较简单,主要就是计算一个query里面所有词和文档的相关度,然后再把分数做累加操作,而每个词的相关度分数主要还是受到tf/idf的影响。公式如下:
fi是词在文档中的出现次数,dl是文档长度,avgdl是文档平均长度,可以看出如果其他因素一样,dl越大,相关度越低,这个也符合结论。至于会除以一个avgdl,我想是拿本篇文档长度和整体文档长度水平做比较,以免单独取dl值时过大。
N是文档总数,n(qi)是包含该词的文档数,0.5是调教系数,避免n(qi)为0的情况,从这个公式可以看出N越大,n(qi)越小的,idf值越大,这也符合了"词的重要程度和其出现在总文档集合里的频率成反比"的思想,取个log是为了让idf的值受N和n(qi)的影响更加平滑。
影响BM25公式的因数有:
1 idf,idf越高分数越高
2 tf,tf越高分数越高
3 dl/avgdl如果该文档长度在文档水平中越高则分数越低。
4 k1,b为分数的调节因子,其中k1,b都是调节因子,一般k1=2, b=0.75
3.引用
1.https://my.oschina.net/letiantian/blog/351154
2.http://www.hankcs.com/nlp/textrank-algorithm-java-implementation-of-automatic-abstract.html