task2-aiaosirse
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 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.9%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: javizhangg
- License: apache-2.0
- Language: Python
- Default Branch: main
- Size: 98.8 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
Task2-AIAOSIRSE: Knowledge Graph of Scientific Papers Enhanced with ORCID and Wikidata Metadata
Clonar repositorio antes de hacer nada.
bash
git clone https://github.com/javizhangg/Task2-AIAOSIRSE.git
Diagrama del proceso y KG
KG
https://drive.google.com/file/d/1heVXqSLhGMyUHERv-NbrnHFA24A0xB/view?usp=sharing
Diagrama de procesos
https://drive.google.com/file/d/12_EM-y5ptJhGotsEJ1NyPQciONYfK82P/view?usp=sharing
Ejecucion automatica con Docker
Tambin puedes ejecutar todo el proceso directamente con Docker:
bash
docker-compose up --build
Ejecucion manual(Primer crear enviroment)
bash
conda env create -f environment.yml
conda activate mi_entorno
python grobid.py
Extraccin de Metadatos (grobid.py)
El script grobid.py utiliza la herramienta GROBID para procesar artculos cientficos en formato PDF y extraer metadatos estructurados.
- Ttulo del paper
- Fecha de publicacin
- Autores:
- Nombre completo
- Afiliacin asociada (si est disponible y correctamente vinculada)
- Resumen (abstract), si est presente
- Referencias:
- Ttulo del paper citado
- Autores (si estn disponibles)
- Ao de publicacin
El resultado se guarda en el archivo:
outputs/papers_metadata.json
Este archivo es la base para los procesos posteriores de enriquecimiento (NER, ORCID, Wikidata, RDF...).
Devuelve papers_metadata.json
Named Entity Recognition (NER)
Se identifican entidades relevantes dentro de los textos procesados (organizaciones, proyectos, etc.):
bash
python ner.py
Salida: outputs/papers_metadata_ner.json
Enriquecimiento desde Wikidata
Ampla los metadatos con informacin de Wikidata:
- Organizaciones
- Proyectos
bash
python wikidata.py
Salida:
* outputs/paper_metadata_wikidata.json
* ontology.ttl muesta el kg de los metadatos sin extender y el
* ontology_enhanced.ttl muestra el kg extendido con orgs y project
Enriquecimiento de Autores desde ORCID (person.py)
Este script utiliza la API pblica de ORCID para buscar informacin adicional sobre los autores identificados en los metadatos del paper (en papers_metadata.json).
Requisitos
- Credenciales 1de acceso a la API de ORCID:
- https://orcid.org/developer-tools
- Registro como desarrollador
- Creacin de API Pblica
- Generacin de:
Client IDClient Secret
Uso de las credenciales
- Estas credenciales se usan para obtener un token temporal (
access_token) que permite acceder a datos pblicos de autores. - Se solicita automticamente desde el script con:
python
def fetch_access_token(client_id, client_secret):
...
Script person.py
bash
python person.py
- Lee los autores del archivo
outputs/papers_metadata.json. - Por cada autor:
- Busca su ORCID ID mediante:
- Fuzzy matching por afiliacin
- Coincidencia de palabras clave del ttulo del paper en sus trabajos
- Si se encuentra un ORCID vlido se obtienen:
- Afiliaciones (educacin y empleo)
- Nombres alternativos
- URLs pblicas
- IDs externos
- Nmero total de trabajos
- Busca su ORCID ID mediante:
Salida generada
El resultado se guarda como JSON enriquecido en:
outputs/enriched_authors.json
Este archivo luego es integrado al grafo RDF final mediante el script jsonToRDF.py.
Ejemplo de entrada (papers_metadata.json)
json
{
"title": "...",
"authors": [
{
"name": "...",
"affiliation": "..."
}
]
}
Ejemplo de salida (enriched_authors.json)
json
{
"full_name": "...",
"orcid_id": "0000-0000-0000-0000",
"employment": [...],
"education": [...],
"external_ids": [...],
"other_names": [...],
"researcher_urls": [...],
"work_count": 0
}
Parte del Topic Modeling y la Similitud entre Papers
Durante esta parte de la prctica se exploraron dos enfoques distintos para analizar un conjunto de papers cientficos: el agrupamiento por temas (topic modeling con LDA) y el clculo de similitud entre abstracts.
Inicialmente para calcular la similitud entre papers, se us TF-IDF, pero los valores obtenidos eran demasiado bajos y no representaban bien la relacin entre documentos. Esto se deba a que TF-IDF solo compara palabras exactas y no es capaz de interpretar el significado de las frases.
Posteriormente, se utiliz el modelo sentence-transformers (all-MiniLM-L6-v2, obtenido de HuggingFace) para calcular similaridad semntica entre abstracts. Este modelo permiti obtener valores mucho ms realistas, ya que interpreta el contenido a nivel conceptual y no nicamente lexical.
Finalmente, se opt por:
- Usar LDA para identificar temas generales entre los papers.
- Usar embeddings semnticos para medir similitud real entre papers dentro de cada tema.
Esta combinacin proporciona una visin estructurada (por temas) y precisa (por contenido), permitiendo construir representaciones ms tiles y coherentes para analizar el corpus cientfico.
Anlisis de Temas y Similitud Semntica entre Papers
Esta parte de la prctica se centra en analizar automticamente un conjunto de artculos cientficos para:
- Agruparlos por temas comunes mediante topic modeling (LDA).
- Medir qu tan similares son entre s los abstracts usando embeddings semnticos.
Scripts utilizados
analisis_topic_similarities.py
Luego para ejecutarlo hay que usar este comando:
bash
python analisis_topic_similarities.py
Este script fue el punto de partida y realiza:
- Topic modeling con LDA: distinguimos los diferentes papers a travs de un proceso de seleccin automtica del nmero de tpicos mediante la coherencia UMass, dandonos el nmero ptimo de tpicos.
- Similaridad general (TF-IDF + cosine): mide la similitud entre todos los pares de abstracts usando vectorizacin clsica.
Salidas generadas:
papers_with_topics.jsonabstract_similarities.json
similarities_by_topic_semantic.py
Luego para ejecutarlo hay que usar este comando:
bash
python similarities_by_topic_semantic.py
Este es el script final y recomendado. Realiza lo siguiente:
- Agrupa los papers por su tema principal (
main_topic), calculado anteriormente por el modelo LDA. - Calcula la similitud semntica entre los abstracts de cada grupo temtico utilizando
sentence-transformers.
Salida generada:
- Archivos
.jsonpor tema, con pares de papers y su similitud semntica real, en:outputs/similarities_semantic_by_topic/topic_X.json
similarities_by_topic_TF-IDF.py (versin alternativa)
Luego para ejecutarlo hay que usar este comando:
bash
python similarities_by_topic_TF.py
Este script replica el enfoque anterior pero usando TF-IDF en lugar de embeddings. Se conserva nicamente como referencia para mostrar en la presentacin por qu se decidi migrar a un modelo semntico.
Salida generada:
- Archivos
.jsonpor tema con similitud TF-IDF, en:outputs/similarities_by_topic/topic_X.json
Justificacin del enfoque final
- LDA es ideal para descubrir temas comunes y dar estructura al conjunto de documentos.
- TF-IDF result poco til al aplicar similitud, ya que muchos abstracts hablaban de machine learning pero aplicado a campos muy distintos y con vocabulario tcnico diferente.
- Embeddings semnticos (
sentence-transformers) ofrecieron una mejor medicin del contenido real, permitiendo identificar relaciones reales entre papers ms all del vocabulario exacto.
Este enfoque mixto permite obtener agrupaciones temticas coherentes y relaciones relevantes dentro de cada tema.
Generacin del Grafo de Conocimiento RDF (jsonToRDF.py)
Este script construye un grafo semntico en formato RDF/Turtle combinando los metadatos de artculos cientficos, informacin enriquecida de autores, organizaciones y proyectos, y anlisis temtico y de similitud semntica.
Entrada
Utiliza los archivos generados en las secciones anteriores, almacenados en outputs/:
papers_metadata.json: Metadatos de los artculos.enriched_authors.json: Informacin extendida de los autores.papers_with_topics.json: Topic de cada paper.similarities_semantic_by_topic/*.json: Relacin de similitud semntica entre artculos por topic.
Script jsonToRDF.py
Por ltimo hay que ejecutar este script para que nos de el grafo enriquecido en outputs/knowledge_graph.ttl.
bash
python jsonToRDF.py
- Carga los datos de entrada.
- Crea instancias RDF para:
- Artculos (
Paper) - Autores (
Person) - Organizaciones (
Organization) - Proyectos (
Project) - Topics (
Topic)
- Artculos (
- Define relaciones entre ellas.
- Guarda el grafo en
outputs/knowledge_graph.ttl.
Propiedades RDF (base:)
has_title: ttulo del paper o referencia (artculo original / referencias).has_date: fecha de publicacin (artculo original).has_author: relacin entre un artculo y su(s) autor(es) (artculo original).has_orcid: ID ORCID de un autor (ORCID).has_work_count: cantidad de trabajos del autor (ORCID).has_other_name: otros nombres del autor en ORCID (ORCID).has_researcher_url: URLs pblicas asociadas al autor (ORCID).has_education_institution,has_education_city,has_education_country: educacin del autor (ORCID).has_employment_institution,has_employment_city,has_employment_country: empleo del autor (ORCID).references: relacin entre artculos referenciados (artculo original).acknowledges: reconocimiento a una organizacin o proyecto (Wikidata).has_name_organization: nombre de una organizacin (Wikidata).has_wikidata_uri: enlace a Wikidata si existe (Wikidata).has_funder: entidad financiadora (Wikidata).has_start_date,has_end_date: fechas de existencia de la organizacin o proyecto (Wikidata).has_website: URL oficial de la entidad (Wikidata).has_topic: relacin con el topic principal del artculo (Topic Modeling).has_name_topic: nombre o identificador del topic (Topic Modeling).has_percentage: nivel de pertenencia a un topic (Topic Modeling).similar_to: relacin de similitud semntica entre artculos (Semantic Similarity).
Flujo de trabajo para Topics y Similarities
Carga de asignaciones de tpicos (
outputs/papers_with_topics.json)Creacin de instancias
TopicBelonging:
Para cada paper, se crea una instanciabase:TopicBelongingque relaciona el paper con el tpico asignado, usando las propiedades:
base:has_paperURI del paperbase:has_topicURI del tpicobase:has_percentagegrado de pertenencia (topic_score)
Esto permite modelar la relacin de un paper con un topic y establecer un grado de pertenencia.
Carga de asignaciones de similitud (
outputs/similarities_semantic_by_topic/)Creacin de la relacin
similar_to:
Si la similitud es mayor a un umbral, se aade la propiedad de manera bidireccional.
Resultado
El grafo de conocimiento se guarda en:
outputs/knowledge_graph.ttl
Prueba (quicktest.py)
Este script realiza un par de consultas sobre el grafo RDF generado.
Consultas
get_similar_papers(title)
Busca y lista papers similares a un paper dado por su ttulo.
Consulta: tripletas con la propiedadsimilar_toentre papers.
Origen de datos: relaciones de similitud semntica.get_papers_for_topic(topic_name, min_percentage)
Lista papers asociados a un topic especfico, filtrando por un nivel mnimo de pertenencia.
Consulta: tripletas que vinculanTopicBelongingconTopicyPaper, usando propiedadeshas_topic,has_paperyhas_percentage.
Origen de datos: asignacin de topics a papers.
Interfaz Interactiva (streamlit_app.py)
Este script genera en una aplicacin web con la librera Streamlit donde el usuario puede interactuar con el Knowledge Graph mediante un motor de bsqueda.
Para activarlo, simplemente ejecutar el comando
bash
streamlit run streamlit_app.py
La aplicacin presenta filtros que poder aplicar a la bsqueda (por categora, por tpico, umbral de pertenencia al tpico...) adems de un modo de bsqueda avanzada para realizar consultas personalizadas al KG mediante SparSQL.
Documentacin
La documentacin completa del proyecto est disponible en:
https://task2-aiaosirse.readthedocs.io/es/latest/
Metadatos
Los metadatos se pueden encontrar en codemeta.json.
LICENCE
Este proyecto se publica bajo la Licencia Apache 2.0 consulta el archivo LICENSE.
CITATION
Si reutilizas este codigo, datos o idea citanos siguiendo CITATION.cff
Owner
- Name: Zhiwei Zhang
- Login: javizhangg
- Kind: user
- Repositories: 1
- Profile: https://github.com/javizhangg
GitHub Events
Total
- Release event: 1
- Member event: 3
- Push event: 29
- Create event: 2
Last Year
- Release event: 1
- Member event: 3
- Push event: 29
- Create event: 2
Dependencies
- blas 1.0.*
- brotli-python 1.0.9.*
- bzip2 1.0.8.*
- ca-certificates 2025.2.25.*
- cpuonly 2.0.*
- freeglut 3.4.0.*
- freetype 2.13.3.*
- giflib 5.2.2.*
- gmp 6.3.0.*
- gmpy2 2.2.1.*
- intel-openmp 2023.1.0.*
- jpeg 9e.*
- lcms2 2.16.*
- lerc 4.0.0.*
- libdeflate 1.22.*
- libffi 3.4.4.*
- libjpeg-turbo 2.0.0.*
- libpng 1.6.39.*
- libtiff 4.7.0.*
- libuv 1.48.0.*
- libwebp 1.3.2.*
- libwebp-base 1.3.2.*
- lz4-c 1.9.4.*
- markupsafe 3.0.2.*
- mkl 2023.1.0.*
- mkl-service 2.4.0.*
- mkl_fft 1.3.11.*
- mkl_random 1.2.8.*
- mpc 1.3.1.*
- mpfr 4.2.1.*
- mpmath 1.3.0.*
- networkx 3.4.2.*
- numpy-base 2.0.1.*
- openjpeg 2.5.2.*
- openssl 3.0.16.*
- pillow 11.1.0.*
- pip 25.0.*
- pysocks 1.7.1.*
- python 3.10.16.*
- pytorch 2.5.1.*
- pytorch-mutex 1.0.*
- pyyaml 6.0.2.*
- requests 2.32.3.*
- setuptools 75.8.0.*
- sqlite 3.45.3.*
- sympy 1.13.3.*
- tbb 2021.8.0.*
- tk 8.6.14.*
- torchaudio 2.5.1.*
- torchvision 0.20.1.*
- typing_extensions 4.12.2.*
- urllib3 2.3.0.*
- vc 14.42.*
- vs2015_runtime 14.42.34433.*
- wheel 0.45.1.*
- win_inet_pton 1.1.0.*
- xz 5.6.4.*
- yaml 0.2.5.*
- zlib 1.2.13.*
- zstd 1.5.6.*
- continuumio/miniconda3 latest build
- grobid/grobid 0.8.1