Justificación y Validación del Análisis con Grobid
Introducción
Este documento proporciona una justificación del enfoque utilizado para procesar y analizar 10 artículos de acceso abierto mediante Grobid. Se detallan las decisiones metodológicas, las pruebas realizadas y la validación manual de los resultados obtenidos.
Metodología
Pipeline con Grobid y Selección Inicial de los Artículos
Se diseñó un pipeline automatizado que procesa documentos en PDF utilizando Grobid, una herramienta de extracción de datos estructurados en XML basada en modelos de aprendizaje automático.
Los pasos del procesamiento son los siguientes:
Subida de los documentos: Se almacenan los archivos en el directorio
data/.Ejecución de Grobid: Se utiliza la API de Grobid para convertir los PDFs en XMLs estructurados.
Extracción de información clave: Se extraen abstracts, figuras y enlaces a partir de los archivos XML generados.
Visualización de datos: Se generan una nube de palabras clave y un gráfico de figuras por artículo.
El pipeline fue implementado en Python, utilizando requests para interactuar con la API de Grobid y
xml.etree.ElementTree para parsear los archivos XML.
Extracción de Información
Nube de Palabras Clave
Enfoque:
- Se extraen los abstracts de los archivos XML generados.
- Se combinan en un solo texto y se eliminan caracteres especiales.
- Se genera una nube de palabras con wordcloud.WordCloud.
Validación: - Se revisó manualmente que los abstracts extraídos desde el XML correspondieran a los textos en los artículos originales. - Se verificó que las palabras clave reflejaran términos frecuentes en los abstracts procesados. - Se generaron diferentes versiones de la nube de palabras para confirmar que el resultado era consistente.
Conteo de Figuras por Artículo
Enfoque:
- Se buscan etiquetas <tei:figure> dentro del XML de cada artículo.
- Se cuenta la cantidad de apariciones de esta etiqueta en cada archivo.
- Se genera un gráfico de barras con matplotlib.pyplot.
Validación: - Se realizó una comparación manual entre el número de figuras reportado y el número de imágenes visibles en los PDFs originales. - Se ajustó el código para asegurar que solo se contaran las figuras correctamente etiquetadas. - Se generaron gráficos en diferentes formatos para confirmar la consistencia de los resultados.
Extracción de Enlaces Externos
Enfoque:
- Se buscan etiquetas <tei:ref> en los XMLs.
- Se extraen los valores del atributo target, descartando los enlaces internos.
- Se almacenan en un archivo JSON (links_per_paper.json).
Validación: - Se realizó una verificación manual de los enlaces extraídos comparándolos con los que aparecen en los PDFs. - Se descartaron referencias que no correspondían a URLs externas. - Se utilizó una prueba con un PDF de ejemplo para asegurar que la extracción funcionaba correctamente.
Pruebas y Validación
Pruebas Unitarias (Archivo test.py)
Se desarrollaron pruebas automatizadas utilizando pytest para verificar la funcionalidad de los scripts:
Prueba de procesamiento de PDFs: Verifica que los XMLs se generen correctamente.
Prueba de extracción de abstracts: Confirma que los abstracts se extraen correctamente de los XMLs.
Prueba de conteo de figuras: Asegura que se detecten correctamente las figuras en cada artículo.
Prueba de extracción de enlaces: Valida que se extraigan URLs válidas de los XMLs.
Prueba de generación de la nube de palabras: Comprueba que el archivo
wordcloud.pngse genera correctamente.Prueba de generación del gráfico de figuras: Confirma que
figures_per_paper.pngse genera correctamente.
Validación Manual
Además de las pruebas automatizadas, se realizó una validación manual de los resultados:
Comparación visual de los abstracts extraídos con los textos originales en los PDFs.
Verificación manual del conteo de figuras, asegurando que coincidiera con las imágenes en los artículos.
Revisión de los enlaces extraídos en comparación con los documentos originales.
Reproducibilidad del Experimento
Configuración del Entorno
Se creó un archivo ``requirements.txt`` con todas las dependencias necesarias para ejecutar el pipeline.
Dockerización
Se desarrolló un Dockerfile y un archivo ``docker-compose.yml`` para contenerizar la aplicación y garantizar su correcta ejecución en cualquier entorno.
Posibles Mejoras y Limitaciones
Posibles Mejoras
Implementar una mejor filtración de palabras clave para mejorar la nube de palabras.
Utilizar procesamiento de lenguaje natural (NLP) para identificar términos más relevantes en los abstracts.
Aplicar reconocimiento de imágenes para analizar el contenido de las figuras en los artículos.
Optimizar la extracción de enlaces, filtrando solo aquellos de interés para el análisis.
Limitaciones
La calidad de la extracción de datos depende de la estructura del XML generado por Grobid.
Grobid puede no reconocer correctamente todos los elementos en algunos artículos, lo que puede afectar los resultados.
La validación manual fue limitada a una muestra, por lo que podrían existir errores en algunos artículos.