自动摘要算法
from: http://www.isnowfy.com/automatic-summarization/
當(dāng)時(shí)yahoo以3000萬美元的價(jià)格收購了summly的消息傳出來之后,貌似大家都比變的對(duì)自動(dòng)摘要產(chǎn)生了極大的興趣,關(guān)于自導(dǎo)摘要wiki這里有很詳細(xì)的介紹,一般自動(dòng)摘要比較常用的一個(gè)是摘取文章中的關(guān)鍵詞,另一個(gè)則是摘取文章中的關(guān)鍵的句子,在這里我主要是介紹用textrank算法來搞句子的摘取。
相對(duì)于textrank,摘取關(guān)鍵句子還有一些比較簡(jiǎn)單的算法,比如這篇,我們可以把句子分別和整篇文章做比較,相似性最大的就是關(guān)鍵的句子。而textrank其實(shí)就是pagerank算法擴(kuò)展到句子上,來的到一些全局的信息。textrank的論文在這里。
首先我們看pagerank算法,就是google用的那個(gè)網(wǎng)頁排序的pagerank算法,首先網(wǎng)頁之間都是有超鏈接鏈接的,如果某個(gè)網(wǎng)站A有指向B的超鏈接,說明A網(wǎng)站認(rèn)為B網(wǎng)站是有價(jià)值的,于是相應(yīng)的我們可以給B來提升權(quán)重,但是就像現(xiàn)實(shí)中,一般人的意見和專家的意見的權(quán)重是不一樣的,所以如果網(wǎng)站A的權(quán)重比較高,那么就可以貢獻(xiàn)更多的權(quán)重給B,反之則貢獻(xiàn)更少的權(quán)重,然后算法經(jīng)過一輪輪的迭代,所有結(jié)點(diǎn)的權(quán)重會(huì)收斂,就得到了最終的權(quán)重了。然后我們有pagerank的計(jì)算公式,其中d是阻尼系數(shù)。
score(Vi)=(1?d)+d?∑1∣∣out(Vj)∣∣?score(Vj)
換到textrank,對(duì)于pagerank而言,邊是沒有權(quán)值的,而textrank的邊是有權(quán)值的,表示兩個(gè)句子的相似性,這個(gè)權(quán)值可以用Jaccard similarity coefficient就是交集數(shù)目除以并集數(shù)目,或者cosine的余弦夾角,或者是bm25一類的算法。在邊有了權(quán)值之后,textrank的公式變?yōu)檫@個(gè)樣子。
score(Vi)=(1?d)+d?∑weight(j,i)∑weight(j,k)?score(Vj)
論文里顯示帶了權(quán)重之后收斂會(huì)慢一些,在經(jīng)過若干輪的迭代之后,我們就可以得到每個(gè)句子的權(quán)重了,然后我們?nèi)〕鰴?quán)重最大的幾個(gè)就認(rèn)為是文章的關(guān)鍵句子了。
自己實(shí)現(xiàn)了一份以bm25為相似性的textrank算法,代碼在github上,具體可以看代碼,test.py展示了摘要的提取。同時(shí)這個(gè)項(xiàng)目實(shí)現(xiàn)了一些常用的操作,比如繁體轉(zhuǎn)簡(jiǎn)體,中文的分詞和詞性標(biāo)注等,歡迎試用提pull requests啊!
總結(jié)
- 上一篇: ROC曲线 1
- 下一篇: 基于用户的协同过滤和皮尔逊相关系数