📝
BARTxiv (論文要約) x fugumt (翻訳) x GROBID (PDF論文抽出)で論文要約を自動化する
こちらでBARTxivを使えばGPT-3.5を使わなくても要約できると書いたが、実際にやってみた。
Google colab
使い方
- ランタイムからすべてのセルを実行をクリックし、最初のセルの下に出てくるファイル選択で任意のpdfを選択するだけ
実装
基本的にモデル呼び出して適用させるだけ
# ArXiv論文要約モデル: BARTxiv
from transformers import pipeline
summarizer = pipeline("summarization", model="kworts/BARTxiv")
# 翻訳モデル: fugumt
from transformers import pipeline
translator = pipeline('translation', model='staka/fugumt-en-ja')
# 表示させるためのmarkdownを作る
markdown_text = ""
for section in sections:
markdown_text += "\n\n## " + section.title
summary = summarizer(section.body)[0]['summary_text']
translated_text = translator(summary)[0]['translation_text']
markdown_text += "\n" + translated_text
# 表示
from IPython.display import display, Markdown, Latex
display(Markdown(markdown_text))
運用の検討
ArXivから新着論文をクロールし、NotionやDiscordにDeliveryするシステムを考える。
- ArXivのCS論文は月間8000本程度でている
- 特定の分野に限れば1日100本程度
- 200本程度を24時間で処理できると嬉しい
- 1本あたり7分
- 運用はしょぼいPCでできると嬉しい
- とりあえずcolabのデフォルトランタイムをベースとする
- 処理時間
- GROBID: 論文情報抽出にかかる時間
- 1論文あたり100秒程度
- BARTxiv: 要約処理にかかる時間
- 1セクションあたりおおよそ50秒程度
- 論文あたり平均10セクション(サブセクションもセクションとして数えている)程度であるため、500秒程度
- fugumt: 翻訳処理にかかる時間
- 1セクションあたり10秒程度
- 10セクションとして、100秒
- 合計: 700秒(11.6分)
- GROBID: 論文情報抽出にかかる時間
- 処理時間から推測される処理可能な論文数
- 1日123本 = 1ヶ月3600本
要約能力の比較
GPT-3.5のほうが正確性という面では圧倒的に勝る。
Discussion
summarizer(section.body,truncation=True)を有効にしないと、モデルが想定している以上のトークン長が渡された時に切り捨てずエラーを吐くようです