このリポジトリは、ICLR 2024 論文BooookScore : A systematic exploration of book-length summary in the age of LLMs」の公式コードとデータ リリースをホストしています。 Oが4つある?
BooookScore役立つと思われる場合は、以下を引用してください。
@inproceedings{
chang2024 BooookScore ,
title={ BooookScore : A systematic exploration of book-length summarization in the era of {LLM}s},
author={Yapei Chang and Kyle Lo and Tanya Goyal and Mohit Iyyer},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://arxiv.org/pdf/2310.00785.pdf}
}
また、書籍全体の長さの要約における忠実度の評価に興味がある場合は、次の作品をチェックしてください: FABLES: 書籍全体の長さの要約における忠実度と内容選択の評価(論文 | リポジトリ)!
将来の更新のための TODO の一部は、この README の最後に記載されています。オープンソースの貢献も歓迎します?
2024/09/03
BooookScoreデータセットをリクエストするための Google フォーム リンクを追加しました。2024/04/01
BooookScoreが Python パッケージとして利用可能になりました。2024/02/27
要約用のモデル生成アノテーションを取得する際に文章をバッチ化するバージョン、 BooookScore v2 をリリースしました。これを実装してくれた @IlyaGusev に敬意を表します!2023/10/10
初期データリリース: すべての概要、GPT-4 注釈、および人間による注釈。BooookScoreデータセットのコピーの入手に興味がある場合は、このフォームに記入してください。データセットは学術研究機関にのみリリースできることに注意してください。
pip install BooookScore
チャンク スクリプトを実行する前に、辞書を含むpickleファイルが必要です。キーは書籍名、値は書籍の全文です。例については、 data/example_all_books.pkl
を参照してください。このファイルの準備ができたら、次のコマンドを実行してデータをチャンクします。
python -m BooookScore .chunk --chunk_size {chunk_size}
--input_path {input_path} --output_path {output_path}
--chunk_size
: 希望するチャンク サイズ (各チャンクはこの制限を超えません)--input_path
: 上で説明した pickle ファイルを保存するパスに設定する必要があります--output_path
: チャンクデータ (pickle ファイル) を保存する場所--include_empty_lines
(オプション): 指定した場合、入力テキストに存在する可能性のある空行は削除されません。使用例:
python -m BooookScore .chunk --chunk_size 2048
--input_path all_books.pkl --output_path all_books_chunked_2048.pkl
python -m BooookScore .summ --book_path {book_path} --summ_path {summ_path}
--model {model} --api {api} --api_key {api_key} --method {method} --chunk_size {chunk_size}
--max_context_len {max_context_len} --max_summary_len {max_summary_len}
--book_path
: チャンク化されたデータ (pickle ファイル) へのパス--summ_path
: 生成された概要を保存するパス--model
: 使用するモデルの名前。使用している API でサポートされている必要があります。--api
: 使用する API。現在、 openai
、 anthropic
together
サポートしています。--api_key
: API キーを保存する txt ファイルへのパス--method
: 使用する要約方法。増分更新の場合は「inc」、階層マージの場合は「hier」--chunk_size
: テキストの各チャンクの希望のサイズbook_path
のデータと一致している必要があります。max_context_len
: モデルの最大コンテキスト ウィンドウmax_summary_len
: サマリーに含めることができるトークンの最大数使用例 (GPT 4):
python -m BooookScore .summ --book_path all_books_chunked_4096.pkl
--summ_path summaries.json --model gpt-4 --api openai --api_key api_key.txt
--method hier --chunk_size 4096 --max_context_len 8192
使用例 (Claude 3 Opus):
python -m BooookScore .summ --book_path all_books_chunked_150000.pkl
--summ_path summaries.json --model claude-3-opus-20240229
--api anthropic --api_key api_key.txt --method hier
--chunk_size 150000 --max_context_len 200000
使用例 (Mixtral 8x7B):
python -m BooookScore .summ --book_path all_books_chunked_30000.pkl
--summ_path summaries.json --model mistralai/Mixtral-8x7B-Instruct-v0.1
--api together --api_key api_key.txt --method hier
--chunk_size 30000 --max_context_len 32000
増分更新では、 10 チャンクごとに進行状況が保存されます。階層結合により、ブックごとに進行状況が保存されます。階層マージのための改善されたチェックポイント (およびデータ構造も) は、将来のバージョンで実装される予定です。
増分更新または階層マージを使用して要約を生成した後、書籍名を最終的な要約にマッピングする辞書を含む json ファイルを作成します。入力ファイルがsummaries.json
の場合、抽出された最終的な要約はsummaries_cleaned.json
に保存されます。
python -m BooookScore .postprocess --input_path {input_path}
--model {model} --api {api} --api_key {api_key}
--input_path
: チャンク化されたデータ (pickle ファイル) へのパス--model
(オプション): LLM で要約アーティファクトを削除する場合に使用するモデル--api
(オプション): 使用する API。現在、 openai
、 anthropic
together
サポートしています。--api_key
(オプション): OpenAI API キーを保存する txt ファイルへのパス--remove_artifacts
(オプション): 指定した場合、マージからアーティファクトを削除するように言語モデルに要求します (この場合、 model
とapi_key
も指定する必要があります)使用例 (アーティファクト除去なし):
python -m BooookScore .postprocess --input_path summaries.json
使用例 (アーティファクト除去あり):
python -m BooookScore .postprocess --input_path summaries.json --model gpt-4
--api openai --api_key api_key.txt --remove_artifacts
python -m BooookScore .score --summ_path {summ_path} --annot_path {annot_path}
--model {model} --api {api} --api_key {api_key}
入力された概要は、書籍名から最終的な書籍の概要にマッピングされる JSON ファイルに保存する必要があります。
--summ_path
: すべての要約へのパス (注釈がまだない場合は指定する必要があります)--annot_path
: モデルが生成したアノテーションへのパス--model
: 使用するモデル--api
: 使用する API。現在、 openai
、 anthropic
together
サポートしています。--api_key
: API キーを保存する txt ファイルへのパス--v2
(オプション): 指定すると、v2 コードとプロンプトを使用して注釈が生成されます。これは、文ごとに評価する代わりに文のバッチ処理を使用します (@IlyaGusev による提供)。--batch_size
(オプション): v2 を使用する場合に使用するバッチ サイズ使用例 (オリジナルのBooookScore ):
python -m BooookScore .score --summ_path summaries/chatgpt-2048-hier-cleaned.json
--annot_path annotations.json --model gpt-4
--api openai --api_key api_key.txt
使用例 (文バッチ処理を使用した v2 BooookScore ):
python -m BooookScore .score --summ_path summaries/chatgpt-2048-hier-cleaned.json
--annot_path annotations.json --model gpt-4 --api openai
--api_key api_key.txt --v2 --batch_size 10