自动摘要算法

标签: algorithm program ir nlp python | 发表时间:2013-11-30 18:05 | 作者:isnowfy
出处:http://www.isnowfy.com

news

当时yahoo以3000万美元的价格收购了summly的消息传出来之后,貌似大家都比变的对自动摘要产生了极大的兴趣,关于自导摘要 wiki这里有很详细的介绍,一般自动摘要比较常用的一个是摘取文章中的关键词,另一个则是摘取文章中的关键的句子,在这里我主要是介绍用textrank算法来搞句子的摘取。

相对于textrank,摘取关键句子还有一些比较简单的算法,比如 这篇,我们可以把句子分别和整篇文章做比较,相似性最大的就是关键的句子。而textrank其实就是pagerank算法扩展到句子上,来的到一些全局的信息。textrank的论文在 这里

首先我们看pagerank算法,就是google用的那个网页排序的pagerank算法,首先网页之间都是有超链接链接的,如果某个网站A有指向B的超链接,说明A网站认为B网站是有价值的,于是相应的我们可以给B来提升权重,但是就像现实中,一般人的意见和专家的意见的权重是不一样的,所以如果网站A的权重比较高,那么就可以贡献更多的权重给B,反之则贡献更少的权重,然后算法经过一轮轮的迭代,所有结点的权重会收敛,就得到了最终的权重了。然后我们有pagerank的计算公式,其中d是阻尼系数。

\(score(V_i)=(1-d)+d*\sum{\frac{1}{|out(V_j)|}*score(V_j)}\)

换到textrank,对于pagerank而言,边是没有权值的,而textrank的边是有权值的,表示两个句子的相似性,这个权值可以用Jaccard similarity coefficient就是交集数目除以并集数目,或者cosine的余弦夹角,或者是bm25一类的算法。在边有了权值之后,textrank的公式变为这个样子。

\(score(V_i)=(1-d)+d*\sum{\frac{weight(j,i)}{\sum{weight(j,k)}}*score(V_j)}\)

论文里显示带了权重之后收敛会慢一些,在经过若干轮的迭代之后,我们就可以得到每个句子的权重了,然后我们取出权重最大的几个就认为是文章的关键句子了。

自己实现了一份以bm25为相似性的textrank算法,代码在 github上,具体可以看代码,test.py展示了摘要的提取。同时这个项目实现了一些常用的操作,比如繁体转简体,中文的分词和词性标注等,欢迎试用提pull requests啊!
我猜您可能还会喜欢:

相关 [摘要算法] 推荐:

自动摘要算法

- - isnowfy
当时yahoo以3000万美元的价格收购了summly的消息传出来之后,貌似大家都比变的对自动摘要产生了极大的兴趣,关于自导摘要 wiki这里有很详细的介绍,一般自动摘要比较常用的一个是摘取文章中的关键词,另一个则是摘取文章中的关键的句子,在这里我主要是介绍用textrank算法来搞句子的摘取. 相对于textrank,摘取关键句子还有一些比较简单的算法,比如 这篇,我们可以把句子分别和整篇文章做比较,相似性最大的就是关键的句子.

基于Density Based Selection 的文本摘要算法

- - CSDN博客互联网推荐文章
    文本摘要算法大意是提取出文章的主要信息,以一种较为概括的简短的方式表达整篇文章,在搜索领域会经常用到,前段时间,yahoo以3000W刀的价格收购了一家创业公司,该公司据说是以一种机器学习的方法来对新闻进行摘要,跟传统的推送完整新闻的方式不同,该公司是展示新闻的摘要给用户的,这里只是介绍下简单的摘要算法.