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