iaoptativa
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (4.5%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: Raaquel09
- License: apache-2.0
- Language: Python
- Default Branch: master
- Size: 28.2 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 5
Metadata Files
README.md
IAoptativa
Descripción
Este repositorio está enlazado con Zenodo: https://zenodo.org/
Zenodo - DOI: https://zenodo.org/doi/10.5281/zenodo.10783171
El proyecto se basa en el manejo de programas escritos en el lenguaje de programación Python y en como se pueden ejecutar en local, con Grobid y Docker. Tenemos tres tareas a realizar y de cada una de ellas hay dos versiones del script:
1 La que ejecutaremos en nuestro entorno local para comprobar que funciona correctamente(procesa pdfs).
2 Hace lo mismo pero lleva incluido el código correspondiente para que funcione con el cliente de Python para Grobid. O procesa los xmls que nos da la aplicación de Grobid.
WordCloud
Crea una nube de palabras basada en la información que obtiene de un pdf/xml. El resultado es una imagen.png
NumberOfFigures
Dibuja un gráfico en el que se ve cuantas figuras tiene cada pdf/xml. El resultado es una imagen.png
ListOfLinks
Crea una lista de los links que encuentra en un pdf/xml. El resultado es una lista en un fichero.json
Requisitos
Para que este proyecto funcione hay que instalarse una serie de cosas que explicaremos más adelante como hacerlo. Necesitamos:
1 Un entorno de python para ejecutar los scripts y comprobar que funciona (también se puede en un entorno virtual como podría ser conda).
2 Las librerías correspondientes a lo que nos pidan los scripts.
3 Instalar Docker.
4 Instalar Grobid (es más fácil hacerlo una vez ya nos hemos instalado Docker).
5 Preparar el cliente de Python para Grobid.
6 Tener los scripts necesarios para que el cliente funcione correctamente.
Instrucciones de Instalación
1 Preparar un entorno para comprobar que los scripts funcionan. Si queremos hacerlo en Python, habría que entrar en el siguiente enlace e instalarse la versión correspondiente al dispositivo de cada uno. https://www.python.org/downloads/
Y si queremos que sea en un entorno virtual como conda:
El enlace de instalación https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html A continuación los comandos para crear el entorno virtual: conda create -n nombreEntorno python=3(el 3 sería un ejemplo, habría que poner la versión de Python que hayamos instalado antes, esta se puede comprobar con python --version) conda env list conda activate nombreEntorno Y conda deactivate nombreEntorno si queremos cerrarlo una vez hayamos terminado.
2 Las librerías correspondientes a lo que nos pidan los scripts. En este caso con las siguientes librerías sería suficiente: pip install PyPDF2 pip install wordcloud pip install matplotlib pip install beautifulsoup4
3 Instalar Docker. Entra en el siguiente enlace e instala la versión correspondiente a tu dispositivo. https://docs.docker.com/engine/install/
4 Instalar Grobid (es más fácil hacerlo una vez ya nos hemos instalado Docker). Descarga la imagen de Grobid. docker pull lfoppiano/grobid:0.7.2 (esto es la versión que quieras tener, si pones lastest se instalará la última) Lanza el servidor de Grobid con Docker. docker run -t --rm -p 8070:8070 lfoppiano/grobid:0.7.2 (esto es la versión que quieras tener, si pones lastest se instalará la última)
El primer puerto que vemos arriba es al que nosotros vamos a acceder y el segundo es el que se usa por defecto. En este caso el proyecto está preparado para que se acceda al puerto 8070.
Para comprobar que todo ha ido bien accedemos desde internet al puerto correspondiente. http://localhost:8070/
5 Preparar el cliente de Python para Grobid. El cliente es recomendable descargarlo en la misma carpeta donde tengas el proyecto para evitar errores. Antes de poder clonar el reporitorio es necesario instalarse Git ( https://git-scm.com/download/win ), puedes verificar que se ha hecho correctamente con el comando git --version.
Los comandos a ejecutar son los siguientes: git clone https://github.com/kermitt2/grobidclientpython cd grobidclientpython python3 setup.py install (Si el comando anterior da fallo porque no estuviesen instaladas todas las herramientas ejecuta "pip install setuptools" y vuelve a ejecutar el otro comando)
Estos comandos también están en el fichero codigoDescargaCliente.txt que se encuentra en este mismo repositorio.
Utilizamos el cliente de Python para Grobid para que nos sea más fácil y el fichero nos genere automáticamente el fichero.xml que tiene que procesar el script de Python. Tendríamos otra opción si no podemos instalarlo, sería obtener el fichero.xml que luego tiene que procesar el script desde la página de Grobid a la que accedes desde el puerto elegido. http://localhost:8070/ Una vez dentro seleccionamos TEI, ponemos la opción Process Fulltext Document, elegimos el pdf que queremos usar y le damos a submit. Cuando termine nos habrá generado un fichero.xml, lo descargamos y ese será el fichero que tendrá que procesar nuestro script.
En este caso vamos a hacer lo segundo, es decir, darle como parametro al script el xml generado por Grobid.
6 Tener los scripts necesarios para que el cliente funcione correctamente. Para que el script se pueda conectar con el cliente es necesario introducir las siguientes líneas de código en nuestro script de Python:
from grobidclient.grobidclient import GrobidClient
client = GrobidClient(config_path="./config.json") client.process("processFulltextDocument", "C:\Users\Admin\Desktop\PracticaIndividual", n=20)
(La ruta que se ve en la última línea hay que cambiarla por la ruta del directorio en el que esté el proyecto.) Estos comandos también están en el fichero codigoCliente.txt que se encuentra en este mismo repositorio.
Y también necesitaremos el fichero config.json (está incluido en el repositorio) en el que especifica las características, entre ellas el puerto al que queremos acceder(8070) cuando no sea el que por defecto(8070).
Instrucciones de Ejecución
Ejecución en local
1 Abrimos una terminal donde se encuentra el proyecto.
2 Situarnos en la carpeta en la que tengamos el proyecto.
3 python nombreFichero.py salida.png ejemplo1.pdf ejemplo2.pdf En el caso de los links la salida es un fichero.json
Ejemplos
Para los ejemplos el repositorio incluye 10 pdfs.
WordCloud
Recordatorio de lo que hacia el script: Crea una nube de palabras basada en la información que obtiene de un pdf. El resultado es una figura.
1 Con un solo pdf: 1.pdf python keywordCloudTotal.py salidaKeyPdf1.png 1.pdf Resultado:salidaKeyPdf1.png
2 Con tres pdfs: 2.pdf 3.pdf 4.pdf python keywordCloudTotal.py salidaKeyPdf234.png 2.pdf 3.pdf 4.pdf Resultado:salidaKeyPdf234.png
3 Con seis pdfs: 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf python keywordCloudTotal.py salidaKeyPdf5678910.png 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf Resultado:salidaKeyPdf5678910.png
Las imagenes de salida están en la carpeta soluciones pdfs.
NumberOfFigures
Recordatorio de lo que hacia el script: Dibuja un gráfico en el que se ve cuantas figuras tiene cada pdf. El resultado es una figura.
1 Con un solo pdf: 1.pdf python numberOfFiguresTotal.py 1.pdf Resultado:salidaFiguresPdf1.png
2 Con tres pdfs: 2.pdf 3.pdf 4.pdf python numberOfFiguresTotal.py 2.pdf 3.pdf 4.pdf Resultado:salidaFiguresPdf234.png
3 Con seis pdfs: 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf python numberOfFiguresTotal.py 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf Resultado:salidaFiguresPdf5678910.png
Las imagenes de salida están en la carpeta soluciones pdfs.
ListOfLinks
Recordatorio de lo que hacia el script: Crea una lista de los links que encuentra en un pdf. El resultado es una lista que devuelve por consola en formato json.
1 Con un solo pdf: 1.pdf python listOfLinksPdf.py 1.pdf Resultado:salidaLinksPdf1.json
2 Con tres pdfs: 2.pdf 3.pdf 4.pdf python listOfLinksPdf.py 2.pdf 3.pdf 4.pdf Resultado:salidaLinksPdf234.json
3 Con seis pdfs: 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf python listOfLinksPdf.py 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf 10.pdf Resultado:salidaLinksPdf5678910.json
Los ficheros.json de salida están en la carpeta soluciones pdfs.
Ejecución con Grobid
En este caso vamos a hacerlo con el cliente de Python para Grobid.
1 Abrimos una terminal donde se encuentra el proyecto.
2 Si no tenemos todavía la imagen de Grobid descargada la descargamos. docker pull lfoppiano/grobid:0.7.2 (esto es la versión que quieras tener, si pones lastest se instalará la última)
3 Lanza el servidor de Grobid con Docker. docker run -t --rm -p 8070:8070 lfoppiano/grobid:0.7.2 (esto es la versión que quieras tener, si pones lastest se instalará la última)
4 Accede a Grobid para comprobar que se ha conectado correctamente. http://localhost:8070/
Como vamos a hacerlo con los xml generados por Grobid: Le damos a la opción TEI Ponemos la opción Process Fulltext Document Elegimos el pdf que queremos usar Le damos a submit Y descargamos el xml
5 Abrimos otra terminal donde se encuentra el proyecto.
6 python nombreFichero.py imagenSalida.png ejemplo1.xml ejemplo2.xml En el caso de los links la salida es un fichero.json
Ejemplos
Para los ejemplos el repositorio incluye 10 xmls.
WordCloud
Recordatorio de lo que hacia el script: Crea una nube de palabras basada en la información que obtiene de un pdf. El resultado es una figura.
1 Con un solo xml: 1.pdf.tei.xml python keywordCloudTotal.py salidaKeyXml1.png 1.pdf.tei.xml Resultado:salidaKeyXml1.png
2 Con tres xmls: 2.pdf.tei.xml 3.pdf.tei.xml 4.pdf.tei.xml python keywordCloudTotal.py salidaKeyXml234.png 2.pdf.tei.xml 3.pdf.tei.xml 4.pdf.tei.xml Resultado:salidaKeyXml234.png
3 Con seis xmls: 5.pdf.tei.xml 6.pdf.tei.xml 7.pdf.tei.xml 8.pdf.tei.xml 9.pdf.tei.xml 10.pdf.tei.xml python keywordCloudTotal.py salidaKeyXml5678910.png 5.pdf.tei.xml 6.pdf.tei.xml 7.pdf.tei.xml 8.pdf.tei.xml 9.pdf.tei.xml 10.pdf.tei.xml Resultado:salidaKeyXml5678910.png
Las imagenes de salida están en la carpeta soluciones xmls.
NumberOfFigures
Recordatorio de lo que hacia el script: Dibuja un gráfico en el que se ve cuantas figuras tiene cada pdf. El resultado es una figura.
1 Con un solo xml: 1.pdf.tei.xml python numberOfFiguresTotal.py salidaFiguresXml1.png 1.pdf.tei.xml Resultado:salidaFiguresXml1.png
2 Con tres xmls: 2.pdf.tei.xml 3.pdf.tei.xml 4.pdf.tei.xml python numberOfFiguresTotal.py salidaFiguresXml234.png 2.pdf.tei.xml 3.pdf.tei.xml 4.pdf.tei.xml Resultado:salidaFiguresXml234.png
3 Con seis xmls: 5.pdf.tei.xml 6.pdf.tei.xml 7.pdf.tei.xml 8.pdf.tei.xml 9.pdf.tei.xml 10.pdf.tei.xml python numberOfFiguresTotal.py salidaFiguresXml5678910.png 5.pdf.tei.xml 6.pdf.tei.xml 7.pdf.tei.xml 8.pdf.tei.xml 9.pdf.tei.xml 10.pdf.tei.xml Resultado:salidaFiguresXml5678910.png
Las imagenes de salida están en la carpeta soluciones xmls.
ListOfLinks
Recordatorio de lo que hacia el script: Crea una lista de los links que encuentra en un pdf. El resultado es una lista que devuelve por consola en formato json.
1 Con un solo pdf: 1.pdf.tei.xml python listOfLinksPdf.py salidaLinksXml1.json 1.pdf.tei.xml Resultado:salidaLinksXml1.json
2 Con tres pdfs: 2.pdf.tei.xml 3.pdf.tei.xml 4.pdf.tei.xml python listOfLinksPdf.py salidaLinksXml234.json 2.pdf.tei.xml 3.pdf.tei.xml 4.pdf.tei.xml Resultado:salidaLinksXml234.json
3 Con seis pdfs: 5.pdf.tei.xml 6.pdf.tei.xml 7.pdf.tei.xml 8.pdf.tei.xml 9.pdf.tei.xml 10.pdf.tei.xml python listOfLinksPdf.py salidaLinksXml5678910.json 5.pdf.tei.xml 6.pdf.tei.xml 7.pdf.tei.xml 8.pdf.tei.xml 9.pdf.tei.xml 10.pdf.tei.xml Resultado:salidaLinksXml5678910.json
Los ficheros.json de salida están en la carpeta soluciones xmls.
Dónde Obtener Ayuda
Repositorio de Grobid
https://github.com/kermitt2/grobid
Repositorio del cliente de Python para Grobid
https://github.com/kermitt2/grobidclientpython
Documentación de Grobid
https://grobid.readthedocs.io/en/latest/
Owner
- Login: Raaquel09
- Kind: user
- Repositories: 1
- Profile: https://github.com/Raaquel09
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: '"Práctica con Python, Grobid y Docker"'
message: '"If you use this software, please cite it as below."'
type: software
authors:
- given-names: Raquel
family-names: Falero
identifiers:
- type: doi
value: 'https://zenodo.org/doi/10.5281/zenodo.10783171'
description: DOI first release
repository-code: 'https://github.com/Raaquel09/IAoptativa.git'
abstract: >-
El proyecto se basa en el manejo de programas escritos en
el lenguaje de programación Python y en como se pueden
ejecutar en local, con Grobid y Docker.
license: Apache-2.0
version: '1.0'
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"licencia": "https://spdx.org/licenses/Apache- 2.0",
"codeRepository": "https://github.com/Raaquel09/IAoptativa.git",
"dateCreated": "2024-03-05",
"datePublished": "2024-03-06",
"dateModified": "2024-03-06",
"name": "\"Prctica con Python, Grobid y Docker\"",
"version": "1.0",
"description": "El proyecto se basa en el manejo de programas escritos en el lenguaje de programacin Python y en como se pueden ejecutar en local, con Grobid y Docker.",
"developmentStatus": "active",
"referencePublication": "https://zenodo.org/doi/10.5281/zenodo.10783171 ",
"programmingLanguage": [
"Python 3"
],
"operatingSystem": [
"Windows 11"
],
"author": [
{
"@type": "Persona",
"givenName": "Raquel",
"familyName": "Falero",
"afiliacin": {
"@type": "Organizacin",
"nombre": "Universidad Politcnica de Madrid"
}
}
]
}