自动摘要算法

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啊!

您可能喜欢:
我猜您可能还喜欢:
, ,

有 5 条《自动摘要算法》的回复

  1. 站长能否给发份G-white主题啊,网上找不到原始的了,都是修改后的,感觉不如你现在这个好,在此谢过了

  2. How to Update/Register Your Cell Number with Indian Overseas Bank, The Reserve Bank of India’s guidelines are followed by the national bank Indian Overseas Bank. The bank has been providing its clients in the public banking sector with a wealth of convenient services and amenities. Indian Overseas Bank (IOB) Mobile Banking Registration, How to Update/Register Your Cell Number with Indian Overseas Bank, The Reserve Bank of India’s guidelines are followed by the national bank Indian Overseas Bank. ekhan.net The bank has been providing its clients in the public banking sector with a wealth of convenient services and amenities. Indian Overseas Bank (IOB) Mobile Banking Registration.

Trackbacks/Pingbacks:

  1. 浅谈中文分词 - IT牛人博客聚合

发表回复