이 저장소는 ICLR 2024 논문인 BooookScore : LLM 시대의 책 길이 요약에 대한 체계적인 탐구에 대한 공식 코드 및 데이터 릴리스를 호스팅합니다. 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: 책 길이 요약(paper | repo)의 충실도 및 내용 선택 평가 !
향후 업데이트에 대한 일부 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
청킹 스크립트를 실행하기 전에 사전이 포함된 피클 파일이 있어야 합니다. 여기서 키는 책 이름이고 값은 책의 전체 텍스트입니다. 예제는 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
: 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
: 청크된 데이터의 경로(피클 파일)--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