📝

BARTxiv (論文要約) x fugumt (翻訳) x GROBID (PDF論文抽出)で論文要約を自動化する

2023/02/12に公開1

https://qiita.com/sakasegawa/items/1d906d66330a09b6939f
こちらでBARTxivを使えばGPT-3.5を使わなくても要約できると書いたが、実際にやってみた。

Google colab

https://colab.research.google.com/drive/1s4rOEFoSpx7wexl0snJdMSx78Uw2VZQX?usp=sharing

使い方

  • ランタイムからすべてのセルを実行をクリックし、最初のセルの下に出てくるファイル選択で任意の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分)
  • 処理時間から推測される処理可能な論文数
    • 1日123本 = 1ヶ月3600本

要約能力の比較

GPT-3.5のほうが正確性という面では圧倒的に勝る。

GPT-3.5

BARTxiv

Discussion

antmanantman

summarizer(section.body,truncation=True)を有効にしないと、モデルが想定している以上のトークン長が渡された時に切り捨てずエラーを吐くようです