Repo ini mengimplementasikan pemindai harian yang sangat sederhana untuk Arxiv yang menggunakan GPT4 dan kecocokan penulis untuk menemukan makalah yang mungkin menarik bagi Anda. Ini akan berjalan setiap hari melalui tindakan github dan dapat memposting informasi ini ke slack melalui bot atau hanya merendernya di situs web halaman github statis.
Demo sederhana surat kabar harian dapat dilihat di sini di cs.CL
Sebagai perkiraan biaya, menjalankan ini di semua cs.CL
dikenakan biaya $0,07 pada 7/2/2024
Ini adalah langkah minimal yang diperlukan untuk menjalankan pemindai. Sangat disarankan untuk membaca keseluruhannya untuk memutuskan apa yang ingin Anda jalankan.
config/paper_topics.template.txt
ke config/paper_topics.txt
dan isi dengan jenis makalah yang ingin diikuticonfig/authors.template.txt
ke config/authors.txt
dan daftarkan penulis yang sebenarnya ingin Anda ikuti. Angka-angka di belakang penulis itu penting. Itu adalah ID penulis sarjana semantik yang dapat Anda temukan dengan mencari penulis di sarjana semantik dan mengambil nomor di akhir URL.config/config.ini
.OAI_KEY
) sebagai `` rahasia githubPada titik ini bot Anda harus berjalan setiap hari dan menerbitkan situs web statis. Anda dapat mengujinya dengan menjalankan alur kerja tindakan github secara manual.
Opsional tetapi sangat disarankan :
S2_KEY
) sebagai rahasia github. Jika tidak, langkah pencarian penulis akan sangat lambatSLACK_KEY
sebagai rahasia githubSLACK_CHANNEL_ID
dalam rahasia github.configs/config.ini
untuk mengubah cara pemfilteran.Setiap hari pada pukul 1 siang UTC, bot akan berjalan dan memposting ke slack dan mempublikasikan situs web halaman github (lihat tindakan publikasikan_md dan cron_runs untuk detailnya).
Langkah-langkahnya umumnya sama seperti di atas, tetapi Anda harus menyiapkan lingkungan melalui requirements.txt
Daripada meneruskan kredensial melalui rahasia github, Anda harus menyetel variabel lingkungan OAI_KEY
, SLACK_KEY
, SLACK_CHANNEL_ID
.
Untuk menjalankan semuanya, panggil saja main.py
Catatan lain: Anda mungkin juga tidak ingin melakukan push ke slack, dalam hal ini tetapkan titik akhir keluaran yang Anda inginkan (json, markdown, slack) di bidang dump_json
, dump_md
, dan push_to_slack
di config/config.ini
.
Jika waktu API sarjana semantik habis atau lambat, Anda harus mendapatkan kunci api S2 dan mengaturnya sebagai S2_KEY
di variabel lingkungan Anda. (karena keterbatasan tindakan github, ini hanya akan membantu jika kode dijalankan secara lokal)
Membuatnya berjalan sendiri: Semua ini hampir tidak membutuhkan komputasi, sehingga Anda dapat menyewa VM termurah dari AWS, memasukkan repo ini ke dalamnya, menginstal requirements.txt
dengan tepat, menyiapkan variabel lingkungan, dan menambahkan crontab berikut
0 13 * * * python ~/arxiv_scanner/main.py
Crontab ini akan menjalankan skrip setiap jam 1 siang UTC, jam 6 sore Pasifik.
paper_topics.txt
File paper_topics.txt
digunakan untuk menghasilkan prompt untuk GPT. Ini adalah daftar topik yang ingin Anda ikuti. Satu set contohnya mungkin seperti ini
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.
Ini hanyalah perintah standar, namun menjadi sangat spesifik dapat membantu, terutama untuk hal-hal seperti 'model bahasa difusi' atau 'mengikuti instruksi', di mana LM dapat menjadi bingung apakah difusi gambar relevan, atau apakah melakukan suatu tugas dengan lebih baik adalah hal yang relevan. cukup untuk meningkatkan pengajaran berikut.
Anda mungkin juga ingin mengikuti ini dengan beberapa bidang minat umum seperti
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.
Skrip mengambil kumpulan kandidat makalah ArXiv untuk hari tertentu, melalui umpan RSS. Untuk menghindari makalah yang diumumkan ganda, ia hanya akan mengambil RSS feed dalam hari terakhir. Untuk menghindari kertas hilang, Anda sebaiknya menjalankan ini setiap hari. Ini menyaring semua makalah UPDATED
dan hanya mengumumkan yang baru.
Logika pemfilterannya cukup sederhana. Kami pertama-tama memeriksa kecocokan penulis.
authors.txt
id tersebut masuk dalam kumpulan kandidat dengan skor default author_match_score
.Kami kemudian memeriksa relevansi yang dievaluasi GPT. Kami melakukan ini dalam dua langkah.
hcutoff
di config.ini
. Hal ini untuk mengurangi biaya.model
di config.ini
. Anda sebaiknya hanya menggunakan GPT3.5 untuk debugging. Ini tidak berfungsi dengan baik untuk tujuan ini! Langkah ini menggunakan pengaturan prompt berikut yang ditentukan di configs/
Anda adalah asisten pembaca makalah yang bertugas membaca postingan harian dari ArXiv dan mengidentifikasi beberapa makalah yang mungkin relevan untuk teman Anda. Akan ada hingga 5 makalah di bawah ini. Tugas Anda adalah menemukan makalah yang:
- Kriteria 1
- Kriteria 2
[DOKUMEN]
Tulis tanggapan dalam format JSONL dengan {ARXIVID, COMMENT, RELEVANCE, NOVELTY} di setiap baris, satu untuk setiap makalah. ARXIVID harus berupa ID ArXiv. KOMENTAR harus mengidentifikasi apakah ada kriteria yang sangat cocok dengan makalah tersebut. Jika ya, harus disebutkan berdasarkan nomor (tidak perlu menyebutkan kriteria yang tidak cocok). Pencocokan ini tidak boleh didasarkan pada istilah umum seperti "pemodelan bahasa" atau "kemajuan" dan harus secara khusus mengacu pada suatu kriteria. RELEVANCE harus berupa skor relevansi dari 1-10 di mana 10 harus terkait langsung dengan kriteria yang tepat dan spesifik dengan pencocokan kata kunci yang hampir sinonim dan penulis yang dikenal sering mengerjakan topik tersebut, 1 tidak relevan dengan kriteria apa pun, dan tidak terkait dengan bidang minat umum teman Anda, 2-3 adalah makalah yang relevan dengan bidang minat umum, namun bukan kriteria spesifik, dan 5 adalah kecocokan langsung dengan kriteria tertentu. NOVELTY harus berupa skor dari 1 hingga 10, di mana 10 adalah penemuan inovatif dengan tujuan umum yang akan mengubah seluruh bidang dan 1 adalah pekerjaan yang meningkatkan satu aspek dari suatu masalah atau merupakan penerapan pada bidang yang sangat spesifik. Baca abstrak dengan cermat untuk menentukan hal ini dan asumsikan bahwa penulis tidak dapat dipercaya dalam klaim mereka tentang kebaruan.
config/papers_topics.txt
) dan kebaruan (skala 1-10)config.ini
Terakhir, semua makalah diurutkan berdasarkan maksimal author_match_score
dan jumlah skor relevansi dan kebaruan dengan rating GPT (skor relevansi dan kebaruan hanya akan muncul di hasil akhir jika berada di atas ambang batas yang Anda tetapkan di konfigurasi mengajukan). Kemudian kertas dirender dan dimasukkan ke titik akhirnya (file teks atau Slack).
Repo ini menggunakan ruff - ruff check .
dan ruff format .
Silakan instal hook pra-komit dengan menjalankan pre-commit install
Kode filter_papers.py
juga dapat dijalankan sebagai skrip mandiri. Ini akan mengambil sekumpulan kertas di in/debug_papers.json
, jalankan konfigurasi dan perintah apa pun yang Anda miliki dan kembalikan output ke out/filter_paper_test.debug.json
. Jika Anda menemukan bot melakukan kesalahan, Anda dapat menemukan batch terkait di out/gpt_paper_batches.debug.json
dan menyalinnya ke file debug_papers
yang relevan.
Ini memungkinkan Anda membuat tolok ukur untuk filter dan melihat apa yang keluar dari sisi lain.
Repo dan kode ini awalnya dibuat oleh Tatsunori Hashimoto dan dilisensikan di bawah lisensi Apache 2.0. Terima kasih kepada Chenglei Si yang telah menguji dan melakukan benchmarking pada filter GPT.