日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用TextRank算法为文本生成关键字和摘要

發布時間:2025/7/25 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用TextRank算法为文本生成关键字和摘要 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用TextRank算法為文本生成關鍵字和摘要

發表于1年前(2014-12-01 21:31)?? 閱讀(10282)?|?評論(27)?155人收藏此文章,?我要收藏 15 摘要?TextRank算法基于PageRank,用于為文本生成關鍵字和摘要。 pagerank?textrank?自動摘要?關鍵詞?提取

目錄[-]

  • PageRank
  • 使用TextRank提取關鍵字
  • 使用TextRank提取關鍵短語
  • 使用TextRank提取摘要
  • 實現TextRank
TextRank算法基于PageRank,用于為文本生成關鍵字和摘要。其論文是:?
Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.
先從PageRank講起。?

PageRank


PageRank最開始用來計算網頁的重要性。整個www可以看作一張有向圖圖,節點是網頁。如果網頁A存在到網頁B的鏈接,那么有一條從網頁A指向網頁B的有向邊。

構造完圖后,使用下面的公式:


S(Vi)是網頁i的中重要性(PR值)。d是阻尼系數,一般設置為0.85。In(Vi)是存在指向網頁i的鏈接的網頁集合。Out(Vj)是網頁j中的鏈接存在的鏈接指向的網頁的集合。|Out(Vj)|是集合中元素的個數。

PageRank需要使用上面的公式多次迭代才能得到結果。初始時,可以設置每個網頁的重要性為1。上面公式等號左邊計算的結果是迭代后網頁i的PR值,等號右邊用到的PR值全是迭代前的。

舉個例子:


上圖表示了三張網頁之間的鏈接關系,直覺上網頁A最重要??梢缘玫较旅娴谋?#xff1a;

?? 結束\起始
A
B
C
A
0
1
1
B
0
0
0
C
0
0
0

橫欄代表其實的節點,縱欄代表結束的節點。若兩個節點間有鏈接關系,對應的值為1。?

根據公式,需要將每一豎欄歸一化(每個元素/元素之和),歸一化的結果是:?

?? 結束\起始
A
B
C
A
0
1
1
B
0
0
0
C
0
0
0

上面的結果構成矩陣M。我們用matlab迭代100次看看最后每個網頁的重要性: ?
1 2 3 4 5 6 7 8 9 10 11 M = [0 1 1 ????0 0 0 ????0 0 0]; PR = [1; 1 ; 1]; for iter = 1:100 ????PR = 0.15 + 0.85*M*PR; ????disp(iter); ????disp(PR); end
運行結果(省略部分):?

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...... ????95 ????0.4050 ????0.1500 ????0.1500 ????96 ????0.4050 ????0.1500 ????0.1500 ????97 ????0.4050 ????0.1500 ????0.1500 ????98 ????0.4050 ????0.1500 ????0.1500 ????99 ????0.4050 ????0.1500 ????0.1500 ???100 ????0.4050 ????0.1500 ????0.1500
最終A的PR值為0.4050,B和C的PR值為0.1500。?

如果把上面的有向邊看作無向的(其實就是雙向的),那么:?
?
1 2 3 4 5 6 7 8 9 10 11 M = [0 1 1 ????0.5 0 0 ????0.5 0 0]; PR = [1; 1 ; 1]; for iter = 1:100 ????PR = 0.15 + 0.85*M*PR; ????disp(iter); ????disp(PR); end
運行結果(省略部分):?

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ..... ????98 ????1.4595 ????0.7703 ????0.7703 ????99 ????1.4595 ????0.7703 ????0.7703 ???100 ????1.4595 ????0.7703 ????0.7703
依然能判斷出A、B、C的重要性。?


使用TextRank提取關鍵字


將原文本拆分為句子,在每個句子中過濾掉停用詞(可選),并只保留指定詞性的單詞(可選)。由此可以得到句子的集合和單詞的集合。

每個單詞作為pagerank中的一個節點。設定窗口大小為k,假設一個句子依次由下面的單詞組成:

w1, w2, w3, w4, w5, ..., wn

w1, w2, ..., wkw2, w3, ...,wk+1w3, w4, ...,wk+2等都是一個窗口。在一個窗口中的任兩個單詞對應的節點之間存在一個無向無權的邊。

基于上面構成圖,可以計算出每個單詞節點的重要性。最重要的若干單詞可以作為關鍵詞。


使用TextRank提取關鍵短語


參照“使用TextRank提取關鍵詞”提取出若干關鍵詞。若原文本中存在若干個關鍵詞相鄰的情況,那么這些關鍵詞可以構成一個關鍵短語。

例如,在一篇介紹“支持向量機”的文章中,可以找到三個關鍵詞支持、向量、機,通過關鍵短語提取,可以得到支持向量機。

使用TextRank提取摘要


將每個句子看成圖中的一個節點,若兩個句子之間有相似性,認為對應的兩個節點之間有一個無向有權邊,權值是相似度。

通過pagerank算法計算得到的重要性最高的若干句子可以當作摘要。

論文中使用下面的公式計算兩個句子Si和Sj的相似度:



分子是在兩個句子中都出現的單詞的數量。|Si|是句子i的單詞數。

由于是有權圖,PageRank公式略做修改:


實現TextRank


因為要用測試多種情況,所以自己實現了一個基于Python 2.7的TextRank針對中文文本的庫TextRank4ZH。位于:

https://github.com/someus/TextRank4ZH

下面是一個例子:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #-*- encoding:utf-8 -*- import codecs from textrank4zh import TextRank4Keyword, TextRank4Sentence text = codecs.open('./text/01.txt', 'r', 'utf-8').read() tr4w = TextRank4Keyword(stop_words_file='./stopword.data')? # 導入停止詞 #使用詞性過濾,文本小寫,窗口為2 tr4w.train(text=text, speech_tag_filter=True, lower=True, window=2)? print '關鍵詞:' # 20個關鍵詞且每個的長度最小為1 print '/'.join(tr4w.get_keywords(20, word_min_len=1))? print '關鍵短語:' # 20個關鍵詞去構造短語,短語在原文本中出現次數最少為2 print '/'.join(tr4w.get_keyphrases(keywords_num=20, min_occur_num= 2))? ????? tr4s = TextRank4Sentence(stop_words_file='./stopword.data') # 使用詞性過濾,文本小寫,使用words_all_filters生成句子之間的相似性 tr4s.train(text=text, speech_tag_filter=True, lower=True, source = 'all_filters') print '摘要:' print '\n'.join(tr4s.get_key_sentences(num=3)) # 重要性最高的三個句子



運行結果如下:?
?
1 2 3 4 5 6 7 8 關鍵詞: 媒體/高圓圓/微/賓客/趙又廷/答謝/謝娜/現身/記者/新人/北京/博/展示/捧場/禮物/張杰/當晚/戴/酒店/外套 關鍵短語: 微博 摘要: 中新網北京12月1日電(記者 張曦) 30日晚,高圓圓和趙又廷在京舉行答謝宴,諸多明星現身捧場,其中包括張杰(微博)、謝娜(微博)夫婦、何炅(微博)、蔡康永(微博)、徐克、張凱麗、黃軒(微博)等 高圓圓身穿粉色外套,看到大批記者在場露出嬌羞神色,趙又廷則戴著鴨舌帽,十分淡定,兩人快步走進電梯,未接受媒體采訪 記者了解到,出席高圓圓、趙又廷答謝宴的賓客近百人,其中不少都是女方的高中同學



另外,?jieba分詞提供的基于TextRank的關鍵詞提取工具。?snownlp也實現了關鍵詞提取和摘要生成。

總結

以上是生活随笔為你收集整理的使用TextRank算法为文本生成关键字和摘要的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。