พื้นที่เก็บข้อมูลนี้โฮสต์รหัสอย่างเป็นทางการและการเผยแพร่ข้อมูลสำหรับรายงาน ICLR 2024 ของเรา BooookScore : การสำรวจอย่างเป็นระบบของการสรุปความยาวหนังสือในยุคของ LLM มี 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}
}
นอกจากนี้ หากคุณสนใจการประเมินความซื่อสัตย์ในการสรุปความยาวหนังสือ โปรดดูงานติดตามผลของเรา: นิทาน: การประเมินความซื่อสัตย์และการเลือกเนื้อหาในการสรุปความยาวหนังสือ (กระดาษ | repo)!
สิ่งที่ต้องทำสำหรับการอัปเดตในอนาคตบางส่วนอยู่ที่ส่วนท้ายของ README นี้ เรายังยินดีต้อนรับการมีส่วนร่วมโอเพ่นซอร์ส ?
2024/09/03
เพิ่มลิงก์แบบฟอร์ม Google สำหรับการขอชุดข้อมูล BooookScore2024/04/01
BooookScore พร้อมให้บริการในรูปแบบแพ็คเกจ Python แล้ว!2024/02/27
ขณะนี้เรามี BooookScore v2 ซึ่งเป็นเวอร์ชันที่จัดกลุ่มประโยคเมื่อได้รับคำอธิบายประกอบที่สร้างโดยโมเดลสำหรับสรุป ขอชื่นชม @IlyaGusev สำหรับการนำสิ่งนี้ไปใช้!2023/10/10
การเปิดเผยข้อมูลเบื้องต้น: ข้อมูลสรุปทั้งหมด คำอธิบายประกอบ GPT-4 และคำอธิบายประกอบโดยมนุษย์หากคุณสนใจที่จะรับสำเนาชุดข้อมูล BooookScore โปรดกรอกแบบฟอร์มนี้ โปรดทราบว่าเราสามารถเผยแพร่ชุดข้อมูลไปยังห้องปฏิบัติการทางวิชาการเท่านั้น
pip install BooookScore
ก่อนที่จะรันสคริปต์การแบ่งส่วน คุณต้องมีไฟล์ ดอง ที่มีพจนานุกรม โดยที่คีย์คือชื่อหนังสือและค่าเป็นข้อความแบบเต็มของหนังสือ อ้างถึง 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
: ควรตั้งค่าเป็นพาธที่จัดเก็บไฟล์ดองที่อธิบายไว้ข้างต้น--output_path
: ตำแหน่งที่จะบันทึกข้อมูลที่เป็นก้อน (ไฟล์ดอง)--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
: เส้นทางไปยังข้อมูลที่เป็นกลุ่ม (ไฟล์ดอง)--summ_path
: เส้นทางสำหรับบันทึกข้อมูลสรุปที่สร้างขึ้น--model
: ชื่อของโมเดลที่จะใช้ ต้องรองรับโดย API ที่คุณใช้--api
: API ที่จะใช้ ปัจจุบันรองรับ openai
, anthropic
together
--api_key
: เส้นทางไปยังไฟล์ txt ที่จัดเก็บคีย์ API ของคุณ--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
: เส้นทางไปยังข้อมูลที่เป็นกลุ่ม (ไฟล์ดอง)--model
(เป็นทางเลือก): โมเดลใดที่จะใช้หากคุณต้องการให้ LLM ลบส่วนสรุป--api
(เป็นทางเลือก): API ที่จะใช้ ปัจจุบันรองรับ openai
, anthropic
together
--api_key
(ไม่บังคับ): เส้นทางไปยังไฟล์ txt ที่จัดเก็บคีย์ OpenAI API ของคุณ--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
: เส้นทางไปยังไฟล์ txt ที่จัดเก็บคีย์ API ของคุณ--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