- リンクを取得
- ×
- メール
- 他のアプリ
要約
今回は現在使用している方法とは異なり、実装が簡単な要約方法になります。参考元にはニューラルネットワーク(accel-brain-base)を使用した例などもありますので、そちらを参考にしてください。
Pythonライブラリの追加
以下のライブラリをインストールしてください。$ pip install pysummarization
test.pyに以下のコードを記述します。
ここでソース記事の各行を重みづけしてから、重要度の高い5つの行だけを選択します。
test.py
from pysummarization.nlpbase.auto_abstractor import AutoAbstractor
from pysummarization.tokenizabledoc.simple_tokenizer import SimpleTokenizer
from pysummarization.abstractabledoc.top_n_rank_abstractor import TopNRankAbstractor
def getSummary(text):
# Object of automatic summarization.
auto_abstractor = AutoAbstractor()
# Set tokenizer.
auto_abstractor.tokenizable_doc = SimpleTokenizer()
# Set delimiter for making a list of sentence.
auto_abstractor.delimiter_list = [". ",".\n","\n"]
# Object of abstracting and filtering document.
abstractable_doc = TopNRankAbstractor()
# Summarize document.
result_dict = auto_abstractor.summarize(text, abstractable_doc)
# Output result.
out_text = ''
dic_len = len(result_dict["summarize_result"])
if dic_len > 5 :
dic_len = 5
for i in range(dic_len):
out_text += result_dict["summarize_result"][i]
return out_text
以前のgetBody()から上記のgetSummary()を呼び出します。
タイトルや本文に色々ゴミが入ってくるので軽く削除してます。またブログアップロードする際に改行文字をHTMLの改行タグ(<BR>)に変更しています。
test.py
def getBody(link):
try :
res = requests.get(link)
extractor.analyse(res.text)
text, title = extractor.as_text()
title = re.sub('[-|:|\||\[|\(|\{].*','',title)
text = re.sub('&.*?;','',text)
text = getSummary(text)
return postBlog(title,text.replace('\n','<BR>'),'TECHNOLOGY')
except Exception as e :
print(e)
return None
ちなみに要約前は以下。
次は翻訳に入ります。