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
Last synced: 6 months ago · JSON representation

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
Created 11 months ago · Last pushed 9 months ago
Metadata Files
Readme License Citation

README.md

Task2-AIAOSIRSE: Knowledge Graph of Scientific Papers Enhanced with ORCID and Wikidata Metadata

DOI

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

  1. Credenciales 1de acceso a la API de ORCID:
    • https://orcid.org/developer-tools
    • Registro como desarrollador
    • Creacin de API Pblica
    • Generacin de:
      • Client ID
      • Client 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

  1. Lee los autores del archivo outputs/papers_metadata.json.
  2. 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

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:

  1. Agruparlos por temas comunes mediante topic modeling (LDA).
  2. 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.json
  • abstract_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 .json por 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 .json por 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

  1. Carga los datos de entrada.
  2. Crea instancias RDF para:
    • Artculos (Paper)
    • Autores (Person)
    • Organizaciones (Organization)
    • Proyectos (Project)
    • Topics (Topic)
  3. Define relaciones entre ellas.
  4. 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

  1. Carga de asignaciones de tpicos (outputs/papers_with_topics.json)

  2. Creacin de instancias TopicBelonging:
    Para cada paper, se crea una instancia base:TopicBelonging que relaciona el paper con el tpico asignado, usando las propiedades:

  • base:has_paper URI del paper
  • base:has_topic URI del tpico
  • base:has_percentage grado de pertenencia (topic_score)

Esto permite modelar la relacin de un paper con un topic y establecer un grado de pertenencia.

  1. Carga de asignaciones de similitud (outputs/similarities_semantic_by_topic/)

  2. 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 propiedad similar_to entre 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 vinculan TopicBelonging con Topic y Paper, usando propiedades has_topic, has_paper y has_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

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

environment.yml conda
  • 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.*
Dockerfile docker
  • continuumio/miniconda3 latest build
docker-compose.yml docker
  • grobid/grobid 0.8.1