textrank提取文档关键词
前言:我大致介紹一下TextRank算法的實(shí)現(xiàn),對(duì)于細(xì)節(jié)和相關(guān)公式的介紹不做過多的介紹,感興趣的同學(xué)可以去看TextRank算法的論文(英文版)里面有具體的實(shí)現(xiàn),文章下載地址http://download.csdn.net/detail/sinat_29957455/9925407
一、TextRank算法簡(jiǎn)介
TextRank算法主要用于文檔的關(guān)鍵詞抽取和摘要的抽取,TextRank主要借鑒了PageRank的思想來實(shí)現(xiàn)的。PageRank是由Google用來體現(xiàn)網(wǎng)頁之間的相關(guān)性和重要性,它是通過網(wǎng)頁之間的超鏈接來計(jì)算網(wǎng)頁的重要性。通過網(wǎng)頁之間超鏈接之間的關(guān)系將不同的頁面劃分成不同的等級(jí),頁面劃分等級(jí)的依據(jù)是根據(jù)各個(gè)頁面之間給其他頁面之間的投票來進(jìn)行衡量的。而,TextRank提取關(guān)鍵詞也正是采用了這種思想來實(shí)現(xiàn)的,它需要將一片文章先進(jìn)行分詞,然后將每個(gè)詞語作為一個(gè)無向圖的節(jié)點(diǎn),最后通過單詞之間的投票計(jì)算出權(quán)重。
二、TextRank實(shí)現(xiàn)
1、將給定輸入的文章,進(jìn)行分詞,如何將文章進(jìn)行分詞可以使用jieba來實(shí)現(xiàn)。
2、對(duì)于分詞的詞語,我們可以對(duì)其詞性進(jìn)行標(biāo)注處理,并可以過濾掉一些停用詞(如:的、有...),只保留我們需要的詞性的單詞,名詞或者動(dòng)詞或形容詞。
3、將上述我們需要的詞語構(gòu)建一個(gè)關(guān)鍵詞圖,其中詞語為圖的節(jié)點(diǎn),然后通過共現(xiàn)關(guān)系構(gòu)造任意兩點(diǎn)之間的變,兩個(gè)節(jié)點(diǎn)之間存在邊僅當(dāng)他們對(duì)應(yīng)的詞匯在長(zhǎng)度為k的窗口中共現(xiàn),K表示窗口的大小,即一個(gè)窗口單詞的個(gè)數(shù)默認(rèn)是5.
4、然后根據(jù)公式計(jì)算,最后可以等到每個(gè)單詞的權(quán)重,我們可以根據(jù)順序選取權(quán)重最大的前幾個(gè)。
5、對(duì)節(jié)點(diǎn)的權(quán)重進(jìn)行排序,逆序排序,選取權(quán)重最大的前幾個(gè)作為文章的關(guān)鍵詞。
三、TextRank算法的測(cè)試
測(cè)試文章
有很多不同的數(shù)學(xué)公式可以用來計(jì)算tf-idf。 這邊的例子以上述的數(shù)學(xué)公式來計(jì)算。 詞頻(tf)是一詞語出現(xiàn)的次數(shù)除以該文件的總詞語數(shù)。 假如一篇文件的總詞語數(shù)是100個(gè),而詞語“母牛”出現(xiàn)了3次, 那么“母牛”一詞在該文件中的詞頻就是3/100=0.03。 一個(gè)計(jì)算文件頻率(DF)的方法是測(cè)定有多少份文件出現(xiàn)過“母牛”一詞, 然后除以文件集里包含的文件總數(shù)。所以,如果“母牛”一詞在1,000份文件出現(xiàn)過, 而文件總數(shù)是10,000,000份的話,其逆向文件頻率就是log(10,000,000 / 1,000)=4。 最后的tf-idf的分?jǐn)?shù)為0.03 * 4=0.12。實(shí)現(xiàn)代碼,使用jieba實(shí)現(xiàn)的import sys sys.path.append('../')import jieba import jieba.analyse from optparse import OptionParserfile_name = "../txt/test.txt"content = open(file_name, 'rb').read()#topK表示輸出多少個(gè)關(guān)鍵詞,withWeight表示是否輸出權(quán)重,如果想要獲取權(quán)重,for x,w并將withWeight=True #allowPOS表示輸出的詞性 for x in jieba.analyse.textrank(content,topK=20,withWeight=False,allowPOS=('ns','n','vn','v')):print('%s' % (x))輸出結(jié)果
文件 出現(xiàn) 計(jì)算 詞語 數(shù)學(xué)公式 份文件 頻率 母牛 測(cè)定 集里 總數(shù) 包含 次數(shù) 用來 詞頻 逆向 方法 例子 四、TF-IDF測(cè)試結(jié)果 import sys sys.path.append('../')import jieba import jieba.analyse from optparse import OptionParserfile_name = "../txt/test.txt"content = open(file_name, 'rb').read()#10表示輸出的前10個(gè) tags = jieba.analyse.extract_tags(content, topK=10)print(",".join(tags))輸出結(jié)果
000,文件,母牛,詞語,tf,詞頻,100,0.03,idf,10
總結(jié):對(duì)比TextRank算法和TF-IDF算法的結(jié)果,我們可以發(fā)現(xiàn)TextRank算法提取的關(guān)鍵詞更能表現(xiàn)出文章的意思,而TF-IDF算法主要還是依靠詞頻來判斷一個(gè)詞語是否為文章的關(guān)鍵詞。當(dāng)然,如果你想要提高TF-IDF算法的準(zhǔn)確性可以根據(jù)自己的業(yè)務(wù)需要,來使用適合自己業(yè)務(wù)的語料庫和設(shè)置詞語的權(quán)重來達(dá)到自己想要的效果,TF-IDF算法相對(duì)于TextRank算法來說,效率較高。但是,TextRank算法不需要自己來訓(xùn)練數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的textrank提取文档关键词的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Carla控制指定Actor(四)
- 下一篇: 让我们重温经典---TVB十大感人爱情故