Introducción
El volumen de artículos de investigación en plataformas como arXiv puede ser abrumador para los académicos que intentan mantenerse actualizados con los últimos hallazgos. Este tutorial tiene como objetivo guiarte a través del proceso de resumir artículos largos de arXiv en puntos clave e identificar trabajos similares. Estas acciones pueden ayudar a los investigadores a captar rápidamente la esencia de un artículo y contextualizarlo dentro del discurso académico más amplio, asegurando una comprensión completa y evitando esfuerzos de investigación redundantes.
Este artículo se divide en dos partes:
- Generación de embeddings y construcción del índice Annoy
- Consulta del índice para obtener artículos relacionados y generación de resúmenes
Parte 1: Construcción del Índice Annoy
Requisitos Previos
Antes de comenzar, asegúrate de tener instalado Python 3.9 y pip en tu sistema.
Pasos
Instalación de Paquetes de Python
Instala los paquetes necesarios de Python usando pip:
pip install sentence-transformers annoy flask requests
Alternativamente, puedes crear un archivo requirements.txt
e instalar los paquetes usando:
pip install -r requirements.txt
con los siguientes contenidos:
sentence-transformers
annoy
flask
requests
Conjunto de Datos de Kaggle arXiv
Para proceder, crea una cuenta de Kaggle y descarga el conjunto de datos de arXiv con metadatos limitados. Después de descargar, descomprime el archivo para encontrar un archivo JSON.
Preprocesar los Datos
Carga tu conjunto de datos y préprocesalo en el formato deseado. Aquí, estamos leyendo un archivo JSON que contiene metadatos de ArXiv y concatenando títulos y resúmenes con un separador '[SEP]':
Generar Embeddings usando SBERT
Inicializa el modelo SBERT y genera embeddings para tus datos preprocesados. Estamos usando el modelo allenai-specter, especialmente entrenado para artículos científicos. Para aproximadamente ~2 millones de artículos de arXiv hasta diciembre de 2022, tomó:
- RTX 3080 (16GB): 8 horas
- RTX 4090 (16 GB): 5 horas
- A100 (80 GB) (en la nube): 1 hora
Ajusta el batch_size
según la memoria de tu GPU para un rendimiento óptimo.
Indexar Embeddings con Annoy
Una vez que tengas los embeddings, el siguiente paso es indexarlos para una búsqueda rápida de similitudes. Estamos usando la biblioteca Annoy debido a su eficiencia:
En caso de que no tengas una GPU, también puedes utilizar URLs públicas de S3 para descargar los conjuntos de datos necesarios:
-
Índice Annoy de 2M artículos de arXiv:
S3 URL: https://arxiv-r-1228.s3.us-west-1.amazonaws.com/annoy_index.ann
-
Conjunto de datos de 2M artículos de arXiv:
S3 URL: https://arxiv-r-1228.s3.us-west-1.amazonaws.com/arxiv-metadata-oai-snapshot.json
-
Archivo numpy de embeddings:
S3 URL: https://arxiv-r-1228.s3.us-west-1.amazonaws.com/embeddings.npy
Parte 2: Resumiendo y Buscando Artículos Similares en Arxiv
Descripción
Esta parte del tutorial te guía a través de resumir un artículo largo de arXiv en puntos clave e identificar trabajos similares, usando Sentence Transformers para embeddings y la API de OpenAI para resumir.
Requisitos Previos
Antes de proceder, asegúrate de tener lo siguiente:
- Python 3+
- Flask para crear un endpoint
- Conocimiento de JSON, Annoy y Sentence Transformers
Pasos
Paso 1: Configurar e Instalar Dependencias
Primero, instala los paquetes requeridos como se mencionó anteriormente.
Paso 2: Cargar y Preprocesar Metadatos de arXiv
Para resumir y encontrar artículos similares, necesitamos los metadatos del conjunto de datos. La función de preprocesamiento hace esto cargando los datos JSON, extrayendo títulos y resúmenes, y combinándolos en oraciones.
Paso 3: Generar Índice Annoy
Annoy (Aproximación de Vecinos más Cercanos Oh Sí) se utiliza para buscar vectores similares en grandes conjuntos de datos. Carga un índice Annoy dado un nombre de archivo.
Paso 4: Función de Búsqueda
La función de búsqueda toma una consulta, calcula su embedding usando Sentence Transformers, y encuentra las coincidencias más cercanas en nuestro índice Annoy.
Paso 5: Mostrar Resultados
Una vez que hemos encontrado las coincidencias más cercanas, formateamos y las mostramos al usuario.
Paso 6: Usar OpenAI para Resumir
Usaremos la API de OpenAI para generar un resumen del artículo de arXiv seleccionado. El título, el resumen y el contenido del artículo se enviarán al modelo de OpenAI.
Paso 7: Endpoint de Flask
Crea un endpoint en Flask que procese la URL de arXiv, resuma el artículo, busque publicaciones similares y devuelva una respuesta HTML formateada.
Paso 8: Ejecutar el Servidor Flask
Finalmente, ejecuta tu aplicación Flask y navega a: http://127.0.0.1:5000/search?q=ARXIV_URL
, reemplazando ARXIV_URL
con la URL específica de tu artículo de arXiv.
Conclusión
¡Felicidades! Ahora has creado una herramienta valiosa que resume artículos de arXiv y encuentra trabajos similares basados en su contenido. Esta herramienta se puede extender con funciones adicionales o integrarse en aplicaciones más grandes para ayudar a investigadores y académicos.
¡Explora más tutoriales de IA para diferentes niveles de experiencia y pon a prueba tus habilidades en hackatones de IA dentro de la comunidad lablab.ai!
Referencia del Tutorial:
Autor: [Tu Nombre aquí]
Dejar un comentario
Todos los comentarios se revisan antes de su publicación.
Este sitio está protegido por hCaptcha y se aplican la Política de privacidad de hCaptcha y los Términos del servicio.