textrank4zh是_GitHub - renxiaowei941015/TextRank4ZH: 从中文文本中自动提取关键词和摘要...
TextRank4ZH
TextRank算法可以用來從文本中提取關鍵詞和摘要(重要的句子)。TextRank4ZH是針對中文文本的TextRank算法的python算法實現。
安裝
方式1:
$ python setup.py install --user
方式2:
$ sudo python setup.py install
方式3:
$ pip install textrank4zh --user
方式4:
$ sudo pip install textrank4zh
Python 3下需要將上面的python改成python3,pip改成pip3。
卸載
$ pip uninstall textrank4zh
依賴
jieba >= 0.35
numpy >= 1.7.1
networkx >= 1.9.1
兼容性
在Python 2.7.9和Python 3.4.3中測試通過。
原理
TextRank的詳細原理請參考:
Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.
關鍵詞提取
將原文本拆分為句子,在每個句子中過濾掉停用詞(可選),并只保留指定詞性的單詞(可選)。由此可以得到句子的集合和單詞的集合。
每個單詞作為pagerank中的一個節點。設定窗口大小為k,假設一個句子依次由下面的單詞組成:
w1, w2, w3, w4, w5, ..., wn
w1, w2, ..., wk、w2, w3, ...,wk+1、w3, w4, ...,wk+2等都是一個窗口。在一個窗口中的任兩個單詞對應的節點之間存在一個無向無權的邊。
基于上面構成圖,可以計算出每個單詞節點的重要性。最重要的若干單詞可以作為關鍵詞。
關鍵短語提取
參照關鍵詞提取提取出若干關鍵詞。若原文本中存在若干個關鍵詞相鄰的情況,那么這些關鍵詞可以構成一個關鍵詞組。
例如,在一篇介紹支持向量機的文章中,可以找到關鍵詞支持、向量、機,通過關鍵詞組提取,可以得到支持向量機。
摘要生成
將每個句子看成圖中的一個節點,若兩個句子之間有相似性,認為對應的兩個節點之間有一個無向有權邊,權值是相似度。
通過pagerank算法計算得到的重要性最高的若干句子可以當作摘要。
示例
example/example01.py:
#-*- encoding:utf-8 -*-
from __future__ import print_function
import sys
try:
reload(sys)
sys.setdefaultencoding('utf-8')
except:
pass
import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentence
text = codecs.open('../test/doc/01.txt', 'r', 'utf-8').read()
tr4w = TextRank4Keyword()
tr4w.analyze(text=text, lower=True, window=2) # py2中text必須是utf8編碼的str或者unicode對象,py3中必須是utf8編碼的bytes或者str對象
print( '關鍵詞:' )
for item in tr4w.get_keywords(20, word_min_len=1):
print(item.word, item.weight)
print()
print( '關鍵短語:' )
for phrase in tr4w.get_keyphrases(keywords_num=20, min_occur_num= 2):
print(phrase)
tr4s = TextRank4Sentence()
tr4s.analyze(text=text, lower=True, source = 'all_filters')
print()
print( '摘要:' )
for item in tr4s.get_key_sentences(num=3):
print(item.index, item.weight, item.sentence) # index是語句在文本中位置,weight是權重
運行結果如下:
關鍵詞:
媒體 0.02155864734852778
高圓圓 0.020220281898126486
微 0.01671909730824073
賓客 0.014328439104001788
趙又廷 0.014035488254875914
答謝 0.013759845912857732
謝娜 0.013361244496632448
現身 0.012724133346018603
記者 0.01227742092899235
新人 0.01183128428494362
北京 0.011686712993089671
博 0.011447168887452668
展示 0.010889176260920504
捧場 0.010507502237123278
禮物 0.010447275379792245
張杰 0.009558332870902892
當晚 0.009137982757893915
戴 0.008915271161035208
酒店 0.00883521621207796
外套 0.008822082954131174
關鍵短語:
微博
摘要:
摘要:
0 0.0709719557171 中新網北京12月1日電(記者 張曦) 30日晚,高圓圓和趙又廷在京舉行答謝宴,諸多明星現身捧場,其中包括張杰(微博)、謝娜(微博)夫婦、何炅(微博)、蔡康永(微博)、徐克、張凱麗、黃軒(微博)等
6 0.0541037236415 高圓圓身穿粉色外套,看到大批記者在場露出嬌羞神色,趙又廷則戴著鴨舌帽,十分淡定,兩人快步走進電梯,未接受媒體采訪
27 0.0490428312984 記者了解到,出席高圓圓、趙又廷答謝宴的賓客近百人,其中不少都是女方的高中同學
使用說明
類TextRank4Keyword、TextRank4Sentence在處理一段文本時會將文本拆分成4種格式:
sentences:由句子組成的列表。
words_no_filter:對sentences中每個句子分詞而得到的兩級列表。
words_no_stop_words:去掉words_no_filter中的停止詞而得到的二維列表。
words_all_filters:保留words_no_stop_words中指定詞性的單詞而得到的二維列表。
例如,對于:
這間酒店位于北京東三環,里面擺放很多雕塑,文藝氣息十足。答謝宴于晚上8點開始。
#-*- encoding:utf-8 -*-
from __future__ import print_function
import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentence
import sys
try:
reload(sys)
sys.setdefaultencoding('utf-8')
except:
pass
text = "這間酒店位于北京東三環,里面擺放很多雕塑,文藝氣息十足。答謝宴于晚上8點開始。"
tr4w = TextRank4Keyword()
tr4w.analyze(text=text, lower=True, window=2)
print()
print('sentences:')
for s in tr4w.sentences:
print(s) # py2中是unicode類型。py3中是str類型。
print()
print('words_no_filter')
for words in tr4w.words_no_filter:
print('/'.join(words)) # py2中是unicode類型。py3中是str類型。
print()
print('words_no_stop_words')
for words in tr4w.words_no_stop_words:
print('/'.join(words)) # py2中是unicode類型。py3中是str類型。
print()
print('words_all_filters')
for words in tr4w.words_all_filters:
print('/'.join(words)) # py2中是unicode類型。py3中是str類型。
運行結果如下:
sentences:
這間酒店位于北京東三環,里面擺放很多雕塑,文藝氣息十足
答謝宴于晚上8點開始
words_no_filter
這/間/酒店/位于/北京/東三環/里面/擺放/很多/雕塑/文藝/氣息/十足
答謝/宴于/晚上/8/點/開始
words_no_stop_words
間/酒店/位于/北京/東三環/里面/擺放/很多/雕塑/文藝/氣息/十足
答謝/宴于/晚上/8/點
words_all_filters
酒店/位于/北京/東三環/擺放/雕塑/文藝/氣息
答謝/宴于/晚上
API
TODO.
類的實現、函數的參數請參考源碼注釋。
License
總結
以上是生活随笔為你收集整理的textrank4zh是_GitHub - renxiaowei941015/TextRank4ZH: 从中文文本中自动提取关键词和摘要...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java判断ajax请求_判断Httpr
- 下一篇: java xml 文件_Java 对xm