LoginSignup
112
91

More than 1 year has passed since last update.

OpenAIのGPT-3.5系APIを使って論文を自動で要約する

Last updated at Posted at 2023-02-12

Cursor_と_arxiv_summarizer_ipynb_-_Colaboratory.png

こんにちは!逆瀬川 ( 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について

なおOpenAIを使わずに安価にするためには、セクションごとに要約処理を別のモデルで行ったあと、翻訳するとよいです。ArXiv要約用事前学習モデルは以下などがあります。

なお、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%程度がそれらのライセンス下にあります)、何らかの形で無償サービスとして展開できればなぁと思います
112
91
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
112
91