BooookScore
v0.1.3 BooookScore Python package release
這個儲存庫託管我們 ICLR 2024 論文 BooookScore 的官方程式碼和資料發布: BooookScore :法學碩士時代對書籍長度摘要的系統探索。有 4 個 O ?
如果您發現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 位於本自述文件的末尾。我們也歡迎開源貢獻?
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