こんにちは!逆瀬川 ( https://twitter.com/gyakuse ) です!
今日は論文をGPT-3.5系API用いて要約してみようと思います。
プロンプトエンジニアリングの参考にもなるかもしれません。
論文全体の自動翻訳はこちら:
※OpenAI GPT-3.5シリーズには code-davinci-002, text-davinci-002, text-davinci-003 が含まれます (https://platform.openai.com/docs/model-index-for-researchers)
概要
主にArXivに投稿されている英語論文を セクション単位 で要約するものです。
文章抽出には今回はGROBIDを用い、要約にはGPT-3.5を使います。
OpenAI APIについて
- サインアップ
- キーの取得
- 備考
- API使用料金は、1k tokenで 0.02 ドルかかり、論文1本あたりおおよそ40円程度かかります。
- https://openai.com/api/pricing/
なおOpenAIを使わずに安価にするためには、セクションごとに要約処理を別のモデルで行ったあと、翻訳するとよいです。ArXiv要約用事前学習モデルは以下などがあります。
- https://huggingface.co/kworts/BARTxiv
- https://huggingface.co/farleyknight/arxiv-summarization-t5-base-2022-09-21
なお、BARTxivを用いて要約処理する例を以下に書いた:
BARTxiv (論文要約) x fugumt (翻訳) x GROBID (PDF論文抽出)で論文要約を自動化する
Colab
- openai_keyを入力後、ランタイム > すべてのセルを実行をクリック
- ファイル選択をクリックして、翻訳したいpdfを選択
- 処理が終わると一番下に要約テキストが表示されます🎉
処理の流れ
- GROBIDで論文から文章抽出 (XMLとして保存される)
- xmlをパースしてセクションを取り出す
- セクション単位で要約タスク用プロンプトを作り、OpenAIに渡す
実装
プロンプトの構築
def create_prompt(english_title, english_section_title, english_bodytext):
return f"""英語の研究論文の一部を日本語で要約するタスクを行います。
これは「{english_title}」というタイトルの論文の「{english_section_title}」というセクションの文章です。
以下のルールに従ってください。
・リスト形式で出力する (先頭は - を使う)
・簡潔に表現する
・不明な単語や人名と思われるものは英語のまま表示する
それでは開始します。
英語の論文の一部:
{english_bodytext}
日本語で要約した文章:"""
GPT-3.5の場合はzero-shot性能が高いので、そのまま渡してあげます。
なお、リスト形式で出力させるときに、(先頭は - を使う)
という文言が形式の安定化に寄与しました (これを抜くと、「・」や「-」や「1.」といった色んな種類のリスト形式になってしまいました)
OpenAIに投げる
温度やfrequency_penaltyはいい感じに調整しましょう。
def completion(text):
openai.api_key = openai_key
response = openai.Completion.create(
engine="text-davinci-003",
prompt=text,
max_tokens=1200,
temperature=0.7,
frequency_penalty=1.0,
)
return response['choices'][0]['text']
後記
- 論文のサーベイ等の支援ツールは以下で紹介されています
- https://twitter.com/naoya_0504/status/1623640221593251840
-
1. Paperpile、Zotero:無料で論文管理 2. Connected Papers:関連論文が視覚的に 3. Elicit、Perplexity:AIが論文検索 4. SCISPACE:論文の要約など 5. Shaper & DeepL:翻訳コンビ 6. Grammarly、DeepL Write:英文のブラッシュアップ
- ArXivにおけるCS論文は月8,000本にも達し、今後さらにこうしたツールが必要になるかもしれません
- なお、新しいBing付属のChatGPTはこうした要約処理を対話的に行えるようになっていきそうです
- 一方で、論文を静的にサーベイする場合、このような要約処理が事前に行われていると嬉しいので、CC-0, CC-BY, CC-BY-SA, CC-BY-SA-NC系ライセンスの論文を対象に(ArXivでは新規投稿論文の50%程度がそれらのライセンス下にあります)、何らかの形で無償サービスとして展開できればなぁと思います