Este repositorio implementa un escáner diario muy simple para Arxiv que utiliza GPT4 y coincidencias de autores para encontrar artículos que puedan resultarle interesantes. Se ejecutará diariamente a través de acciones de github y puede publicar esta información en Slack a través de un bot o simplemente representarla en un sitio web estático de páginas de github.
Puede ver una demostración sencilla de los diarios aquí ejecutándose en cs.CL
Como estimación de costos, ejecutar esto en todo cs.CL
costó $0,07 el 7/02/2024
Estos son los pasos mínimos necesarios para que el escáner se ejecute. Se recomienda encarecidamente leerlo completo para decidir qué desea ejecutar.
config/paper_topics.template.txt
a config/paper_topics.txt
y complételo con los tipos de artículos que desea seguirconfig/authors.template.txt
a config/authors.txt
y enumere los autores que realmente desea seguir. Los números detrás del autor son importantes. Son ID de autores de académicos semánticos que puede encontrar buscando los autores en académicos semánticos y tomando los números al final de la URL.config/config.ini
.OAI_KEY
) como ``un secreto de githubEn este punto, su bot debería ejecutarse diariamente y publicar un sitio web estático. Puedes probar esto ejecutando el flujo de trabajo de acción de github manualmente.
Opcional pero muy recomendable :
S2_KEY
) como secreto de github. De lo contrario, el paso de búsqueda del autor será muy lento.SLACK_KEY
como secreto de githubSLACK_CHANNEL_ID
en un secreto de github.configs/config.ini
para modificar cómo se filtran las cosas.Cada día a la 1 p. m. UTC, el bot se ejecutará y publicará en Slack y publicará un sitio web de páginas de Github (consulte las acciones Publish_md y cron_runs para obtener más detalles).
Los pasos son generalmente los mismos que los anteriores, pero debe configurar el entorno mediante requirements.txt
En lugar de pasar credenciales a través de secretos de github, debe configurar las variables de entorno OAI_KEY
, SLACK_KEY
, SLACK_CHANNEL_ID
.
Para ejecutar todo, simplemente llame main.py
Otras notas: es posible que también desee no presionar para slack, en cuyo caso configure el punto final de salida deseado (json, markdown, slack) en los campos dump_json
, dump_md
y push_to_slack
de config/config.ini
.
Si la API semántica académica agota el tiempo de espera o es lenta, debe obtener una clave de API S2 y configurarla como S2_KEY
en sus variables de entorno. (debido a las limitaciones de las acciones de github, esto solo ayudará si el código se ejecuta localmente)
Hacer que se ejecute por sí solo: todo esto casi no requiere cómputo, por lo que puede alquilar la máquina virtual más barata de AWS, colocar este repositorio en ella, instalar los requirements.txt
, configurar adecuadamente las variables de entorno y agregar el siguiente crontab.
0 13 * * * python ~/arxiv_scanner/main.py
Este crontab ejecutará el script cada 1 p. m. UTC, 6 p. m. hora del Pacífico.
paper_topics.txt
El archivo paper_topics.txt
se utiliza para generar el mensaje para GPT. Es una lista de temas que quieres seguir. Un conjunto de ejemplos podría ser algo como
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.
Este es solo un mensaje estándar, pero ser muy específico puede ayudar, especialmente para cosas como 'modelos de lenguaje de difusión' o 'seguimiento de instrucciones', donde el LM puede confundirse acerca de si las difusiones de imágenes son relevantes o si es mejor realizar alguna tarea. suficiente para mejorar el seguimiento de las instrucciones.
Quizás también quieras seguir esto con algunas áreas de interés general como
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.
El script toma un conjunto candidato de artículos ArXiv para un día específico, a través de canales RSS. Para evitar periódicos con doble anuncio, solo obtendrá una fuente RSS del último día. Para evitar perder documentos, le recomendamos ejecutar esto todos los días. Filtra los artículos UPDATED
y anuncia solo los nuevos.
La lógica de filtrado es bastante simple. Primero verificamos la coincidencia del autor.
authors.txt
se incluye en el conjunto de candidatos con una puntuación predeterminada de author_match_score
.Luego verificamos la relevancia evaluada por GPT. Hacemos esto en dos pasos.
hcutoff
en config.ini
. Esto es para reducir costos.model
en config.ini
. Solo debes usar GPT3.5 para depurar. ¡No funciona bien para este propósito! Este paso utiliza la siguiente configuración de aviso definida en configs/
Eres un útil asistente de lectura de artículos cuyo trabajo es leer publicaciones diarias de ArXiv e identificar algunos artículos que podrían ser relevantes para tu amigo. Habrá hasta 5 artículos a continuación. Su trabajo es encontrar documentos que:
- Criterio 1
- Criterio 2
[PAPELES]
Escriba la respuesta en formato JSONL con {ARXIVID, COMMENT, RELEVANCE, NOVELTY} en cada línea, una para cada artículo. El ARXIVID debe ser el ID de ArXiv. El COMENTARIO debe identificar si existe un criterio que coincida mucho con el documento. Si es así, deberá mencionarlo por número (no es necesario mencionar los criterios que no coinciden). Estas coincidencias no deben basarse en términos generales como "modelado del lenguaje" o "avances" y deben referirse específicamente a un criterio. La RELEVANCIA debe ser una puntuación de relevancia del 1 al 10, donde 10 debe estar directamente relacionado con el criterio exacto y específico con coincidencias de palabras clave casi sinónimas y autores que sean conocidos por trabajar en el tema, 1 es irrelevante para cualquier criterio y no está relacionado con el área de interés general de su amigo, 2-3 son artículos que son relevantes para el área de interés general, pero no para criterios específicos, y 5 es una coincidencia directa con un criterio específico. La NOVEDAD debe tener una puntuación de 1 a 10, donde 10 es un descubrimiento innovador y de propósito general que transformaría todo el campo y 1 es un trabajo que mejora un aspecto de un problema o es una aplicación a un campo muy específico. Lea el resumen detenidamente para determinar esto y suponga que no se puede confiar en los autores en sus afirmaciones de novedad.
config/papers_topics.txt
) y novedad (escala 1-10)config.ini
Finalmente, todos los artículos se ordenan por el máximo de su author_match_score
y la suma de los puntajes de relevancia y novedad clasificados por GPT (los puntajes de relevancia y novedad solo aparecerán en el resultado final si están por encima de los umbrales de corte que usted estableció en la configuración). archivo). Luego, los documentos se procesan y se envían a sus puntos finales (archivos de texto o Slack).
Este repositorio utiliza ruff check .
y ruff format .
Instale el enlace de confirmación previa ejecutando pre-commit install
El código filter_papers.py
también se puede ejecutar como un script independiente. Esto requerirá un lote de documentos en in/debug_papers.json
, ejecutará cualquier configuración y avisos que tenga y devolverá un resultado a out/filter_paper_test.debug.json
. Si descubre que el bot comete errores, puede encontrar el lote asociado en out/gpt_paper_batches.debug.json
y copiarlo en el archivo debug_papers
correspondiente.
Esto le permite crear un punto de referencia para el filtro y ver qué sale del otro lado.
Este repositorio y código fueron creados originalmente por Tatsunori Hashimoto y tienen la licencia Apache 2.0. Gracias a Chenglei Si por probar y comparar el filtro GPT.