يستضيف هذا المستودع الكود الرسمي وإصدار البيانات لورقة ICLR 2024 الخاصة بنا، BooookScore : استكشاف منهجي لتلخيص طول الكتاب في عصر ماجستير إدارة الأعمال. هناك 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}
}
أيضًا، إذا كنت مهتمًا بتقييم الإخلاص في تلخيص طول الكتاب، فراجع أعمال المتابعة لدينا: الخرافات: تقييم الإخلاص واختيار المحتوى في تلخيص طول الكتاب (ورقة | ريبو)!
توجد بعض مهام المهام المتعلقة بالتحديثات المستقبلية في نهاية هذا الملف التمهيدي. ونحن نرحب أيضا بالمساهمات مفتوحة المصدر؟
2024/09/03
تمت إضافة رابط نموذج Google لطلب مجموعة بيانات BooookScore .2024/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
: واجهة برمجة التطبيقات التي يجب استخدامها، تدعم حاليًا 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
مثال للاستخدام (كلود 3 أوبوس):
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
(اختياري): واجهة برمجة التطبيقات التي سيتم استخدامها، تدعم حاليًا 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
: واجهة برمجة التطبيقات التي يجب استخدامها، تدعم حاليًا openai
و anthropic
together
--api_key
: المسار إلى ملف txt الذي يخزن مفتاح API الخاص بك--v2
(اختياري): إذا تم تحديده، فسيتم إنشاء تعليقات توضيحية باستخدام كود v2 والموجه، الذي يستخدم تجميع الجملة بدلاً من تقييم جملة تلو الأخرى (بمساهمة منIlyaGusev!)--batch_size
(اختياري): حجم الدفعة المطلوب استخدامه في حالة استخدام الإصدار 2مثال للاستخدام ( 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