이 저장소는 GPT4와 저자 일치를 사용하여 흥미로운 논문을 찾는 Arxiv용 매우 간단한 일일 스캐너를 구현합니다. github 작업을 통해 매일 실행되며 이 정보를 봇을 통해 Slack에 게시하거나 정적 github-pages 웹 사이트에서 렌더링할 수 있습니다.
cs.CL
에서 실행되는 일간 신문의 간단한 데모를 여기에서 볼 수 있습니다.
예상 비용으로 모든 cs.CL
에서 이를 실행하는 데 드는 비용은 2024년 2월 7일에 $0.07입니다.
이는 스캐너를 실행하는 데 필요한 최소한의 단계입니다. 실행하려는 항목을 결정하려면 전체 내용을 읽어 보는 것이 좋습니다.
config/paper_topics.template.txt
config/paper_topics.txt
에 복사하고 팔로우하려는 문서 유형을 입력하세요.config/authors.template.txt
config/authors.txt
에 복사하고 실제로 팔로우하려는 작성자를 나열하세요. 저자 뒤에 있는 숫자가 중요합니다. 의미론자 저자 ID는 의미론자에 대한 저자를 검색하고 URL 끝에 있는 숫자를 사용하여 찾을 수 있습니다.config/config.ini
에서 원하는 ArXiv 카테고리를 설정하세요.OAI_KEY
)를 'github 비밀'로 설정하세요.이 시점에서 봇은 매일 실행되고 정적 웹 사이트를 게시해야 합니다. github 작업 워크플로를 수동으로 실행하여 이를 테스트할 수 있습니다.
선택사항이지만 적극 권장됩니다 .
S2_KEY
)를 Github 비밀로 가져와 설정하세요. 그렇지 않으면 저자 검색 단계가 매우 느려질 것입니다.SLACK_KEY
로 설정하세요.SLACK_CHANNEL_ID
로 설정합니다.configs/config.ini
를 살펴보고 필터링 방법을 조정하세요.매일 오후 1시(UTC)에 봇이 실행되어 Slack에 게시하고 github 페이지 웹 사이트를 게시합니다(자세한 내용은 게시_md 및 cron_runs 작업 참조).
단계는 일반적으로 위와 동일하지만, requirements.txt
통해 환경을 설정해야 합니다.
github 비밀을 통해 자격 증명을 전달하는 대신 환경 변수 OAI_KEY
, SLACK_KEY
, SLACK_CHANNEL_ID
설정해야 합니다.
모든 것을 실행하려면 main.py
호출하면 됩니다.
기타 참고 사항: Slack으로 푸시하지 않을 수도 있습니다. 이 경우 config/config.ini
의 dump_json
, dump_md
및 push_to_slack
필드에 원하는 출력 엔드포인트(json, markdown, slack)를 설정하세요.
Semantic Scholar API가 시간 초과되거나 속도가 느린 경우 S2 API 키를 가져와서 환경 변수에서 S2_KEY
로 설정해야 합니다. (github 작업의 제한으로 인해 코드가 로컬에서 실행되는 경우에만 도움이 됩니다)
자체 실행: 이 모든 작업에는 컴퓨팅이 거의 필요하지 않으므로 AWS에서 가장 저렴한 VM을 임대하고 이 리포지토리를 여기에 넣고 requirements.txt
를 설치하고 환경 변수를 적절하게 설정하고 다음 crontab을 추가할 수 있습니다.
0 13 * * * python ~/arxiv_scanner/main.py
이 crontab은 UTC 기준 오후 1시, 태평양 기준 오후 6시마다 스크립트를 실행합니다.
paper_topics.txt
프롬프트 만들기 paper_topics.txt
파일은 GPT에 대한 프롬프트를 생성하는 데 사용됩니다. 팔로우하고 싶은 주제의 목록입니다. 한 세트의 예는 다음과 같을 수 있습니다.
1. New methodological improvements to RLHF or instruction-following which are specific fine-tuning steps that are taken to make language models better at following user instructions across a range of tasks.
- Relevant: papers that discuss specific methods like RLHF, or instruction-tuning datasets, improving these methods, or analyzing them.
- Not relevant: papers about adaptation to some task. Simply following instructions or inputs are not sufficient.
2. Shows new powerful test set contamination or membership inference methods for language models. Test set contamination is the phenomenon where a language model observes a benchmark dataset during pretraining.
- Relevant: test statistics that can detect contamination of benchmarks in language models. statistics that can provide guarantees are more interesting. membership inference methods that are general enough to apply to language models are also relevant.
- Not relevant: any papers that do not consider language models, or that do not consider test set contamination.
3. Shows a significant advance in the performance of diffusion language models.
- Relevant: papers that study language models that are also diffusion models. Continuous diffusions are even more relevant, while discrete diffusions are less so.
- Not relevant: papers about image diffusions like DALL-E or Stable Diffusion, or papers that do not explicitly mention language models or applications to text.
이것은 단지 표준 프롬프트일 뿐이지만 매우 구체적이면 특히 '확산 언어 모델' 또는 '지시 따르기'와 같은 경우에 도움이 될 수 있습니다. 여기서 LM은 이미지 확산이 적절한지 또는 일부 작업을 더 잘 수행하는 것이 더 나은지 혼란스러울 수 있습니다. 지시 따르기를 개선하는 데 충분합니다.
다음과 같은 일반적인 관심 분야에 대해서도 이 내용을 따르고 싶을 수도 있습니다.
In suggesting papers to your friend, remember that he enjoys papers on statistical machine learning, and generative modeling in natural language processing.
Your friend also likes learning about surprising empirical results in language models, as well as clever statistical tricks.
He does not want to read papers that are about primarily applications of methods to specific domains.
스크립트는 RSS 피드를 통해 특정 날짜의 ArXiv 논문 후보 세트를 가져옵니다. 논문의 이중 발표를 피하기 위해 마지막 날에만 RSS 피드를 가져옵니다. 서류 누락을 방지하려면 매일 실행하는 것이 좋습니다. UPDATED
논문을 필터링하고 새로운 논문만 발표합니다.
필터링 논리는 매우 간단합니다. 먼저 저자 일치를 확인합니다.
authors.txt
의 누군가와 일치하면 기본 점수가 author_match_score
인 후보 세트에 포함됩니다.그런 다음 GPT 평가 관련성을 확인합니다. 이 작업은 두 단계로 수행됩니다.
config.ini
에서 hcutoff
보다 높은 h-index를 가진 저자가 없는 논문을 필터링합니다. 이는 비용을 절감하기 위한 것입니다.config.ini
의 model
에 지정된 GPT 모델에 의해 평가됩니다. 디버깅에는 GPT3.5만 사용해야 합니다. 이 목적으로는 잘 작동하지 않습니다! 이 단계에서는 configs/
에 정의된 다음 프롬프트 설정을 사용합니다.당신은 ArXiv의 매일 게시물을 읽고 친구와 관련이 있을 수 있는 몇 가지 논문을 식별하는 유용한 논문 읽기 보조자입니다. 아래에는 최대 5개의 논문이 있습니다. 귀하의 임무는 다음과 같은 서류를 찾는 것입니다.
- 기준 1
- 기준 2
[서류]
각 논문마다 하나씩 각 줄에 {ARXIVID, COMMENT, RELEVANCE, NOVELTY}를 사용하여 JSONL 형식으로 응답을 작성합니다. ARXIVID는 ArXiv ID여야 합니다. COMMENT는 논문과 매우 밀접하게 일치하는 기준이 있는지 여부를 식별해야 합니다. 그렇다면 숫자로 언급해야 합니다(일치하지 않는 기준은 언급할 필요가 없습니다). 이러한 일치 항목은 "언어 모델링" 또는 "발전"과 같은 일반적인 용어를 기반으로 해서는 안 되며 구체적으로 기준을 참조해야 합니다. RELEVANCE는 1-10의 관련성 점수여야 합니다. 여기서 10은 동의어에 가까운 키워드 일치와 해당 주제에 대해 작업한 것으로 알려진 작성자가 있는 정확하고 구체적인 기준과 직접 관련되어야 하며, 1은 어떤 기준과도 관련이 없으며 관련이 없습니다. 친구의 일반 관심 분야, 2-3은 일반 관심 분야와 관련이 있지만 특정 기준은 아닌 논문이고, 5는 특정 기준과 직접 일치하는 논문입니다. 참신함은 1에서 10까지의 점수여야 합니다. 여기서 10은 전체 분야를 변화시킬 획기적인 범용 발견이고, 1은 문제의 한 측면을 개선하거나 매우 특정한 분야에 적용한 작업입니다. 이를 결정하기 위해 초록을 주의 깊게 읽고 저자의 신규성 주장을 신뢰할 수 없다고 가정하십시오.
config/papers_topics.txt
주제에 대한)과 참신함(1~10점)에 대해 점수를 매깁니다.config.ini
의 관련성 및 참신성 기준보다 낮은 점수를 받은 논문은 필터링됩니다. 마지막으로, 모든 논문은 최대 author_match_score
와 GPT 등급 관련성 및 참신성 점수의 합을 기준으로 정렬됩니다. 관련성 및 참신성 점수는 구성에서 설정한 컷오프 임계값보다 높은 경우에만 최종 출력에 표시됩니다. 파일). 그런 다음 문서가 렌더링되어 엔드포인트(텍스트 파일 또는 Slack)로 푸시됩니다.
이 저장소는 ruff- ruff check .
그리고 ruff format .
pre-commit install
실행하여 사전 커밋 후크를 설치하세요.
filter_papers.py
코드는 독립형 스크립트로 실행될 수도 있습니다. 이는 in/debug_papers.json
에 있는 일련의 문서를 가져와서 가지고 있는 구성과 프롬프트를 모두 실행하고 출력을 out/filter_paper_test.debug.json
으로 반환합니다. 봇에 실수가 있는 경우 out/gpt_paper_batches.debug.json
에서 관련 배치를 찾아 관련 debug_papers
파일에 복사할 수 있습니다.
이를 통해 필터에 대한 벤치마크를 구축하고 반대편에서 어떤 결과가 나오는지 확인할 수 있습니다.
이 저장소와 코드는 원래 하시모토 타츠노리(Tatsunori Hashimoto)가 작성했으며 Apache 2.0 라이센스에 따라 라이센스가 부여되었습니다. GPT 필터를 테스트하고 벤치마킹한 Chenglei Si에게 감사드립니다.