Dieses Repo implementiert einen sehr einfachen täglichen Scanner für Arxiv, der GPT4 und Autorenübereinstimmungen verwendet, um Artikel zu finden, die Sie möglicherweise interessant finden. Es wird täglich über Github-Aktionen ausgeführt und kann diese Informationen über einen Bot an Slack senden oder sie einfach auf einer statischen Github-Pages-Website rendern.
Eine einfache Demo der Tageszeitungen ist hier auf cs.CL
zu sehen
Als Kostenschätzung kostete die Ausführung auf dem gesamten cs.CL
am 07.02.2024 0,07 $
Dies sind die minimal notwendigen Schritte, um den Scanner zum Laufen zu bringen. Es wird dringend empfohlen, das Ganze zu lesen, um zu entscheiden, was Sie ausführen möchten.
config/paper_topics.template.txt
nach config/paper_topics.txt
und füllen Sie es mit den Papiertypen aus, denen Sie folgen möchtenconfig/authors.template.txt
nach config/authors.txt
und listen Sie die Autoren auf, denen Sie tatsächlich folgen möchten. Wichtig sind die Zahlen hinter dem Autor. Dabei handelt es sich um Autoren-IDs von Semantic Scholar, die Sie finden können, indem Sie die Autoren auf Semantic Scholar suchen und die Nummern am Ende der URL lesen.config/config.ini
fest.OAI_KEY
) als „Github-Geheimnis“ festZu diesem Zeitpunkt sollte Ihr Bot täglich ausgeführt werden und eine statische Website veröffentlichen. Sie können dies testen, indem Sie den Github-Aktionsworkflow manuell ausführen.
Optional, aber dringend empfohlen :
S2_KEY
) und richten Sie ihn als Github-Geheimnis ein. Andernfalls ist die Autorensuche sehr langsamSLACK_KEY
festSLACK_CHANNEL_ID
fest.configs/config.ini
an, um die Filterung zu optimieren.Jeden Tag um 13:00 Uhr UTC wird der Bot ausgeführt und in Slack gepostet und eine Github-Seiten-Website veröffentlicht (Einzelheiten finden Sie in den Aktionen „publish_md“ und „cron_runs“).
Die Schritte sind im Allgemeinen die gleichen wie oben, Sie müssen die Umgebung jedoch über die Datei requirements.txt
einrichten
Anstatt Anmeldeinformationen über Github-Geheimnisse zu übergeben, müssen Sie die Umgebungsvariablen OAI_KEY
, SLACK_KEY
und SLACK_CHANNEL_ID
festlegen.
Um alles auszuführen, rufen Sie einfach main.py
auf
Weitere Hinweise: Möglicherweise möchten Sie auch nicht auf Slack pushen. Legen Sie in diesem Fall den gewünschten Ausgabeendpunkt (json, markdown, slack) in den Feldern dump_json
, dump_md
und push_to_slack
von config/config.ini
fest.
Wenn bei der Semantic Scholar-API eine Zeitüberschreitung auftritt oder sie langsam ist, sollten Sie einen S2-API-Schlüssel besorgen und ihn in Ihren Umgebungsvariablen als S2_KEY
festlegen. (Aufgrund der Einschränkungen von Github-Aktionen hilft dies nur, wenn der Code lokal ausgeführt wird.)
Eigenständige Ausführung: Das Ganze erfordert fast keine Rechenleistung, Sie können also die günstigste VM von AWS mieten, dieses Repo darin platzieren, die requirements.txt
installieren, die Umgebungsvariablen entsprechend einrichten und die folgende Crontab hinzufügen
0 13 * * * python ~/arxiv_scanner/main.py
Diese Crontab führt das Skript alle 13:00 Uhr UTC und 18:00 Uhr Pazifik aus.
paper_topics.txt
Die Datei paper_topics.txt
wird zum Generieren der Eingabeaufforderung für GPT verwendet. Es handelt sich um eine Liste von Themen, denen Sie folgen möchten. Eine Reihe von Beispielen könnte etwa so aussehen
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.
Dies ist nur eine Standardaufforderung, aber es kann hilfreich sein, sehr spezifisch zu sein, insbesondere bei Dingen wie „Sprachmodellen zur Verbreitung“ oder „Befolgen von Anweisungen“, bei denen der LM verwirrt sein kann, ob Bildverbreitungen relevant sind oder ob es sinnvoll ist, eine Aufgabe besser zu erledigen ausreichend, um die Befolgung von Anweisungen zu verbessern.
Möglicherweise möchten Sie dies auch mit einigen Bereichen von allgemeinem Interesse verfolgen, z
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.
Das Skript erfasst über die RSS-Feeds einen Kandidatensatz von ArXiv-Artikeln für einen bestimmten Tag. Um eine doppelte Ankündigung von Beiträgen zu vermeiden, wird ein RSS-Feed nur am letzten Tag abgerufen. Um zu vermeiden, dass Papiere fehlen, sollten Sie dies jeden Tag durchführen. Es filtert alle UPDATED
Papiere heraus und kündigt nur neue an.
Die Filterlogik ist ziemlich einfach. Wir prüfen zunächst, ob der Autor übereinstimmt.
authors.txt
übereinstimmt, wird sie mit der Standardbewertung author_match_score
in den Kandidatensatz aufgenommen.Anschließend prüfen wir die GPT-evaluierte Relevanz. Dies machen wir in zwei Schritten.
hcutoff
in config.ini
haben. Dadurch sollen Kosten gesenkt werden.model
in config.ini
angegeben wird. Sie sollten GPT3.5 nur zum Debuggen verwenden. Für diesen Zweck funktioniert es nicht gut! Dieser Schritt verwendet die folgende Eingabeaufforderungseinrichtung, die in configs/
definiert ist.Sie sind ein hilfreicher Assistent zum Lesen von Aufsätzen, dessen Aufgabe es ist, tägliche Beiträge von ArXiv zu lesen und einige Aufsätze zu identifizieren, die für Ihren Freund relevant sein könnten. Nachfolgend finden Sie bis zu 5 Beiträge. Ihre Aufgabe ist es, Papiere zu finden, die:
- Kriterium 1
- Kriterium 2
[PAPIERE]
Schreiben Sie die Antwort im JSONL-Format mit {ARXIVID, COMMENT, RELEVANCE, NOVELTY} in jede Zeile, eine für jede Arbeit. Die ARXIVID sollte die ArXiv-ID sein. Der KOMMENTAR sollte angeben, ob es ein Kriterium gibt, das sehr gut zum Papier passt. Wenn ja, sollte es anhand der Nummer angegeben werden (es ist nicht erforderlich, die nicht übereinstimmenden Kriterien zu erwähnen). Diese Übereinstimmungen sollten nicht auf allgemeinen Begriffen wie „Sprachmodellierung“ oder „Fortschritte“ basieren und sich konkret auf ein Kriterium beziehen. Die RELEVANZ sollte ein Relevanzwert von 1 bis 10 sein, wobei 10 in direktem Zusammenhang mit dem genauen, spezifischen Kriterium stehen muss, mit Keyword-Übereinstimmungen mit nahezu einem Synonym und Autoren, die dafür bekannt sind, an dem Thema zu arbeiten. 1 ist für kein Kriterium relevant und steht in keinem Zusammenhang damit B. das allgemeine Interessengebiet Ihres Freundes, 2-3 sind Beiträge, die für das allgemeine Interessengebiet relevant sind, aber keine spezifischen Kriterien, und 5 ist eine direkte Übereinstimmung mit einem bestimmten Kriterium. Die NEUHEIT sollte eine Punktzahl von 1 bis 10 haben, wobei 10 eine bahnbrechende, allgemeine Entdeckung ist, die das gesamte Fachgebiet verändern würde, und 1 eine Arbeit ist, die einen Aspekt eines Problems verbessert oder eine Anwendung auf ein ganz bestimmtes Fachgebiet darstellt. Lesen Sie die Zusammenfassung sorgfältig durch, um dies festzustellen, und gehen Sie davon aus, dass den Autoren in ihren Neuheitsansprüchen nicht vertraut werden kann.
config/papers_topics.txt
) und Neuheit (Skala 1–10).config.ini
liegen Abschließend werden alle Beiträge nach dem Maximum ihres author_match_score
und der Summe der GPT-bewerteten Relevanz- und Neuheitswerte sortiert (die Relevanz- und Neuheitswerte werden in der endgültigen Ausgabe nur angezeigt, wenn sie über den Grenzwerten liegen, die Sie in der Konfiguration festgelegt haben). Datei). Anschließend werden die Dokumente gerendert und an ihre Endpunkte (Textdateien oder Slack) übertragen.
Dieses Repo verwendet Ruff- ruff check .
und ruff format .
Bitte installieren Sie den Pre-Commit-Hook, indem Sie pre-commit install
ausführen
Der filter_papers.py
Code kann auch als eigenständiges Skript ausgeführt werden. Dies erfordert einen Stapel Papiere in in/debug_papers.json
, führt die Konfiguration und Eingabeaufforderungen aus, die Sie haben, und gibt eine Ausgabe an out/filter_paper_test.debug.json
zurück. Wenn Sie feststellen, dass der Bot Fehler macht, können Sie den zugehörigen Stapel in out/gpt_paper_batches.debug.json
finden und ihn in die entsprechende debug_papers
-Datei kopieren.
Auf diese Weise können Sie einen Benchmark für den Filter erstellen und sehen, was auf der anderen Seite herauskommt.
Dieses Repo und dieser Code wurden ursprünglich von Tatsunori Hashimoto erstellt und sind unter der Apache 2.0-Lizenz lizenziert. Vielen Dank an Chenglei Si für das Testen und Benchmarking des GPT-Filters.