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 te guiará a través del proceso de resumir artículos largos de arXiv en puntos clave e identificar documentos similares. Estas acciones pueden ayudar a los investigadores a comprender rápidamente la esencia de un artículo y contextualizarlo dentro del discurso académico más amplio, asegurando una comprensión integral y evitando esfuerzos de investigación redundantes.
Este artículo tiene dos partes:
- Generación de los embeddings y construcción del índice Annoy
- Consulta del índice para obtener artículos relacionados y generar resúmenes
Parte 1: Construcción del Índice Annoy
Requisitos previos
Antes de comenzar, asegúrate de tener Python 3.9 y pip instalados en tu sistema.
Pasos
Instalación de Paquetes de Python
Instala los siguientes paquetes de Python usando pip:
pip install numpy pandas sentence-transformers annoy flask openai
Alternativamente, puedes crear un requirements.txt
y instalar los paquetes usando el comando:
pip install -r requirements.txt
con el siguiente contenido:
numpy
pandas
sentence-transformers
annoy
flask
openai
Conjunto de datos arXiv de Kaggle
Para continuar, crea una cuenta de Kaggle y descarga el conjunto de datos de arXiv con metadatos limitados de este conjunto. 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, se tardó:
- Más de 8 horas en RTX3080
- 6 horas en RTX4090
- 1.5 horas en A100 (nube)
Ajusta el batch_size
según la memoria de tu GPU:
Tiempo de GPU para generar embeddings:
RTX 3080 (16GB) - 8 horas
RTX 4090 (16GB) - 5 horas
A100 (80GB) (en la nube) - 1 hora
Indexar Embeddings con Annoy
Una vez que tengas los embeddings, el siguiente paso es indexarlos para una búsqueda de similitud rápida. Estamos utilizando la biblioteca Annoy por su eficiencia:
Alternativamente, si no tienes GPU y estás de acuerdo con el instantáneo de arXiv hasta diciembre de 2022, puedes usar URLs públicas de S3 para descargar los conjuntos de datos necesarios:
descripción del conjunto de datos
URL de S3
annoy_index.ann
Índice Annoy de 2M artículos de arXiv usando el archivo arxiv-metadata-oai-snapshot.json
URL de S3: enlace
arxiv-metadata-oai-snapshot.json
Conjunto de datos de 2M artículos de Arxiv descargados de Kaggle
URL de S3: enlace
embeddings.npy
Archivo numpy de embeddings. Contiene embeddings serializados de todos los 2M artículos
URL de S3: enlace
Parte 2: Resumir y Buscar Artículos Similares en Arxiv
Descripción
Este tutorial te guiará a través del proceso de resumir un artículo largo de arXiv en puntos clave, generando una idea basada en él e identificando documentos similares. Haremos uso de:
- Transformadores de Oraciones para embeddings
- Annoy para indexación
- La API de OpenAI para generar el resumen
Requisitos previos
Antes de proceder, asegúrate de tener lo siguiente:
- Python 3+
- Flask para crear un endpoint
- Conocimiento de JSON, Annoy y Transformadores de Oraciones
Pasos
Paso 1: Configuración e Instalación de Dependencias
Primero, instala los paquetes requeridos:
pip install flask
Paso 2: Cargar y Preprocesar los Metadatos de Arxiv
Para resumir y encontrar artículos similares, necesitamos los metadatos del conjunto de datos. La función de preprocesamiento hace esto al:
- Cargar los datos JSON
- Extraer títulos y resúmenes
- Combinarlos 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. Aquí, cargamos 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 Transformadores de Oraciones y luego encuentra las coincidencias más cercanas en nuestro índice Annoy.
Paso 5: Mostrar Resultados
Una vez que hemos encontrado las coincidencias más cercanas, necesitamos formatearlas y mostrarlas.
Paso 6: Usar OpenAI para Resumir
Usamos la API de OpenAI para generar un resumen del artículo de Arxiv. El artículo, su título, resumen y contenido de la página se envían a OpenAI.
Paso 7: Endpoint de Flask
Creamos un endpoint en Flask que procesa la URL de Arxiv, resume el artículo, busca artículos similares y devuelve una respuesta HTML formateada.
Paso 8: Ejecutar el Servidor Flask
Finalmente, ejecuta tu aplicación Flask. Luego, abre un navegador y navega a:
http://127.0.0.1:5000/search?q=ARXIV_URL
sustituyendo ARXIV_URL
por la URL del artículo de Arxiv que deseas.
Conclusión
Ahora has creado una herramienta que resume artículos de Arxiv y encuentra artículos similares basados en su contenido. Esta herramienta se puede ampliar con otras características o integrarse en aplicaciones más grandes para ayudar a investigadores y académicos.
¡Explora más tutoriales de IA para todos los niveles de experiencia y pon a prueba tus habilidades en Hackatones de IA en la comunidad lablab.ai!
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.