From 42ef68ab95c47f37e72a1481d4c5284e4d36572f Mon Sep 17 00:00:00 2001 From: complexluise Date: Mon, 28 Oct 2024 22:13:02 -0500 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=93=9D=20feat:=20add=20.gitignore=20f?= =?UTF-8?q?ile=20to=20ignore=20certain=20directories?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d1f126 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/modelos/* +/.idea/* From d9b9da9d7566b4c56a5a10457b20dbbee5b31582 Mon Sep 17 00:00:00 2001 From: complexluise Date: Mon, 28 Oct 2024 22:37:09 -0500 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=9A=80=20feat:=20Add=20topic=20networ?= =?UTF-8?q?k=20analysis=20command=20#4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added a new command to the CLI that allows for the generation of a thematic network based on the similarity of bibliographic topics. The command includes options for specifying the similarity threshold, the embedding model to use, and the output path for the generated GraphML file. Additionally, the command displays statistics of the generated network. Also, refactored the 'limpiar_koha' command for improved CLI grouping. --- bibloclean/cli.py | 69 +++++++++++++++++++++++++++--- bibloclean/modelamiento_topicos.py | 35 +++++++++++++++ 2 files changed, 97 insertions(+), 7 deletions(-) diff --git a/bibloclean/cli.py b/bibloclean/cli.py index 6dd070f..71d1acb 100644 --- a/bibloclean/cli.py +++ b/bibloclean/cli.py @@ -2,9 +2,14 @@ import logging from pathlib import Path from bibloclean.limpiar_tablas import BibliotecaDataProcessor +import pandas as pd +@click.group() +def cli(): + """Herramientas para procesamiento de datos bibliográficos""" + pass -@click.command() +@cli.command() @click.argument("archivo", type=click.Path(exists=True)) @click.option( "--salida", @@ -16,11 +21,7 @@ "--verbose", "-v", is_flag=True, help="Mostrar información detallada del proceso" ) def limpiar_koha(archivo, salida, verbose): - """ - Limpia y procesa archivos de datos bibliográficos de KOHA. - - ARCHIVO: Ruta al archivo CSV/Excel que contiene los datos a procesar - """ + """Limpia y procesa archivos de datos bibliográficos de KOHA.""" # Configurar logging nivel_log = logging.INFO if verbose else logging.WARNING logging.basicConfig( @@ -62,6 +63,60 @@ def limpiar_koha(archivo, salida, verbose): click.echo(f"❌ Error: {str(e)}", err=True) raise click.Abort() +@cli.command() +@click.argument("archivo", type=click.Path(exists=True)) +@click.option( + "--umbral", + "-u", + default=0.7, + help="Umbral de similaridad para conexiones entre temas (0-1)" +) +@click.option( + "--modelo", + "-m", + default="jinaai/jina-embeddings-v3", + help="Modelo de embeddings a utilizar" +) +@click.option( + "--salida", + "-s", + default="clean_data/red_temas.graphml", + help="Ruta de salida para el archivo GraphML" +) +def analizar_red(archivo, umbral, modelo, salida): + """ + Genera red de correlaciones entre temas bibliográficos. + + ARCHIVO: CSV procesado con temas asignados + """ + from bibloclean.modelamiento_topicos import ProcesadorMateriasEmbeddings, construir_red, exportar_graphml + from bibloclean.extraer_vocabulario import extraer_vocabulario + + click.echo("🔄 Iniciando análisis de red temática") + + # Cargar tesauro + with open("raw_data/vocabulario.html", "r", encoding="utf-8") as f: + tesauro = extraer_vocabulario(f.read()) + + # Inicializar procesador y red + procesador = ProcesadorMateriasEmbeddings(tesauro, modelo_nombre=modelo) + + # Cargar datos + df = pd.read_csv(archivo) + + # Construir y exportar red + grafo = construir_red(umbral, df, procesador) + + # Crear directorio si no existe + Path(salida).parent.mkdir(parents=True, exist_ok=True) + exportar_graphml(grafo, salida) + + # Mostrar estadísticas + click.echo(f"✨ Red generada con éxito:") + click.echo(f" - Nodos: {grafo.number_of_nodes()}") + click.echo(f" - Conexiones: {grafo.number_of_edges()}") + click.echo(f" - Archivo guardado en: {salida}") + if __name__ == "__main__": - limpiar_koha() + cli() diff --git a/bibloclean/modelamiento_topicos.py b/bibloclean/modelamiento_topicos.py index f2c913a..1e1bf3f 100644 --- a/bibloclean/modelamiento_topicos.py +++ b/bibloclean/modelamiento_topicos.py @@ -1,4 +1,5 @@ import logging +import networkx as nx import os import pandas as pd import re @@ -165,3 +166,37 @@ def procesar_dataframe(self, df: pd.DataFrame) -> pd.DataFrame: end_time = time.time() logging.info(f"Total execution time: {end_time - start_time:.2f} seconds") + + +def construir_red(umbral_similaridad, df: pd.DataFrame, procesador: ProcesadorMateriasEmbeddings) -> nx.Graph: + """Construye red de correlaciones entre temas usando embeddings""" + grafo = nx.Graph() + + # Obtener temas únicos y sus embeddings + temas_unicos = df['tema_general'].dropna().unique() + embeddings_temas = procesador.modelo.encode(temas_unicos, device=procesador.device) + + # Calcular matriz de similaridad + matriz_similaridad = cosine_similarity(embeddings_temas, embeddings_temas) + + # Construir grafo + for i, tema1 in enumerate(temas_unicos): + for j, tema2 in enumerate(temas_unicos[i + 1:], i + 1): + similaridad = matriz_similaridad[i, j] + if similaridad >= umbral_similaridad: + # Añadir nodos con atributos + frecuencia1 = len(df[df['tema_general'] == tema1]) + frecuencia2 = len(df[df['tema_general'] == tema2]) + + grafo.add_node(tema1, frequency=frecuencia1) + grafo.add_node(tema2, frequency=frecuencia2) + + # Añadir arista con peso + grafo.add_edge(tema1, tema2, weight=float(similaridad)) + + return grafo + + +def exportar_graphml(grafo, ruta_salida: str): + """Exporta el grafo en formato GraphML""" + nx.write_graphml(grafo, ruta_salida) From bf8a0b4fd251c0f1a9b835ba836c8b558c8b904e Mon Sep 17 00:00:00 2001 From: complexluise Date: Mon, 28 Oct 2024 22:39:01 -0500 Subject: [PATCH 3/5] analysis artifacts --- .../Betweenness Centrality Distribution.png | Bin 0 -> 17514 bytes .../Closeness Centrality Distribution.png | Bin 0 -> 13779 bytes .../statistics/Eccentricity Distribution.png | Bin 0 -> 17223 bytes ...onic Closeness Centrality Distribution.png | Bin 0 -> 14275 bytes analysis/statistics/analysis.md | 19 + analysis/statistics/report.html | 1 + ...mas_colecciones_bibliotecas._etiquetas.svg | 7379 +++++++++++++++++ ...lecciones_bibliotecas._grado_3_o_mayor.svg | 3375 ++++++++ analysis/temas_colecciones_bibliotecas.svg | 4666 +++++++++++ clean_data/red_temas.graphml | 3955 +++++++++ 10 files changed, 19395 insertions(+) create mode 100644 analysis/statistics/Betweenness Centrality Distribution.png create mode 100644 analysis/statistics/Closeness Centrality Distribution.png create mode 100644 analysis/statistics/Eccentricity Distribution.png create mode 100644 analysis/statistics/Harmonic Closeness Centrality Distribution.png create mode 100644 analysis/statistics/analysis.md create mode 100644 analysis/statistics/report.html create mode 100644 analysis/temas_colecciones_bibliotecas._etiquetas.svg create mode 100644 analysis/temas_colecciones_bibliotecas._grado_3_o_mayor.svg create mode 100644 analysis/temas_colecciones_bibliotecas.svg create mode 100644 clean_data/red_temas.graphml diff --git a/analysis/statistics/Betweenness Centrality Distribution.png b/analysis/statistics/Betweenness Centrality Distribution.png new file mode 100644 index 0000000000000000000000000000000000000000..02aaec537eee1058f336034e7cb784bb51aa073c GIT binary patch literal 17514 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 literal 0 HcmV?d00001 diff --git a/analysis/statistics/Closeness Centrality Distribution.png b/analysis/statistics/Closeness Centrality Distribution.png new file mode 100644 index 0000000000000000000000000000000000000000..cdec169b4b86e9bc287fcce8fc9209becee60d5c GIT binary patch literal 13779 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 Lno8b9%isPF2<$R^ literal 0 HcmV?d00001 diff --git a/analysis/statistics/Eccentricity Distribution.png b/analysis/statistics/Eccentricity Distribution.png new file mode 100644 index 0000000000000000000000000000000000000000..f43bcfef0dd2709fda3ace9f91a6fc1793391029 GIT binary patch literal 17223 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 K9y!xL@sFJ>(#%Xu=62 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 PjlH{Eb{2i>`_umdo>jhk literal 0 HcmV?d00001 diff --git a/analysis/statistics/Harmonic Closeness Centrality Distribution.png b/analysis/statistics/Harmonic Closeness Centrality Distribution.png new file mode 100644 index 0000000000000000000000000000000000000000..226be59397fcd568befe061b76de0915c90feb4c GIT binary patch literal 14275 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

Graph Distance Report



Parameters:

Network Interpretation: undirected

Results:

Diameter: 22
Radius: 0
Average Path length: 6.791314971123945








Algorithm:

Ulrik Brandes, A Faster Algorithm for Betweenness Centrality, in Journal of Mathematical Sociology 25(2):163-177, (2001)
\ No newline at end of file diff --git a/analysis/temas_colecciones_bibliotecas._etiquetas.svg b/analysis/temas_colecciones_bibliotecas._etiquetas.svg new file mode 100644 index 0000000..036b388 --- /dev/null +++ b/analysis/temas_colecciones_bibliotecas._etiquetas.svg @@ -0,0 +1,7379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Educación ciudadana + + + Educación comunitaria + + + Educación + + + Educación para los derechos humanos + + + Libro para niños + + + Película para niños + + + Biblioteca para niños + + + Colombia + + + Costa Rica + + + Ecuador + + + Guatemala + + + Educación sexual + + + Educación de la mujer + + + Escuela de sexo único + + + Nanotecnología + + + Tecnología + + + Diversidad cultural + + + Conflicto cultural + + + Identidad cultural + + + Desarrollo cultural + + + Mujer periodista + + + Periodista + + + Mujer + + + Periodismo + + + Juego educativo + + + Juguete educativo + + + Juego + + + Experimento educacional + + + Narración de cuentos + + + Cuento + + + Literatura eslava + + + Literatura + + + Literatura europea + + + Literatura escandinava + + + Exploración geográfica + + + Exploración marina + + + Geografía física + + + Geografía + + + Literatura norteamericana + + + Literatura latinoamericana + + + Literatura oceánica + + + Literatura nacional + + + Español + + + Portugués + + + España + + + Inglés + + + Relación padres-hijos + + + Padres (progenitores) + + + Actitud de los padres + + + Fauna + + + Animal marino + + + Animal + + + Zoología + + + Recursos animales + + + Biblioteca pública + + + Historia de las bibliotecas + + + Biblioteca especializada + + + Información/biblioteca, política + + + Biblioteca para ciegos + + + Información/biblioteca, personal + + + Biblioteca de arte + + + Colecciones de biblioteca + + + Investigación sobre los conflictos + + + Solución de conflictos + + + Conflicto social + + + Violencia de género + + + Violencia + + + Igualdad de género + + + Movimiento revolucionario + + + Movimiento obrero + + + Movimiento juvenil + + + Revolución + + + Homicidio + + + Crimen + + + Psicología del adolescente + + + Psicología del niño + + + Adolescencia + + + Psicología + + + Cultura nacional + + + Cultura y desarrollo + + + Valor cultural + + + Política cultural + + + Educación cultural + + + Historia nacional + + + Información cultural + + + Poesía + + + Poeta + + + Poesía épica + + + Educación musical + + + Educación artística + + + Música + + + Musicología + + + Árbol + + + Bosque + + + Derecho constitucional + + + Derecho + + + Constitución + + + Prensa rural + + + Mujer rural + + + Prensa local + + + Justicia + + + Administración de justicia + + + Tribunal + + + Justicia social + + + Familia + + + Derecho de la familia + + + Desintegración de la familia + + + Casa + + + Educación a la vida familiar + + + Corrupción + + + Corrupción política + + + Afectividad + + + Desarrollo afectivo + + + Identidad + + + Desarrollo de la personalidad + + + Desarrollo del niño + + + Personalidad + + + Desarrollo mental + + + Trastornos de la personalidad + + + Ciencia ficción + + + Literatura de ficción + + + Ciencia + + + Biología marina + + + Biología + + + Vida marina + + + Crianza del niño + + + Hindustani + + + Hinduismo + + + Escritora + + + Escritura + + + Escritor + + + Muerte + + + Suicidio + + + Delincuencia + + + Seguridad social + + + Política social + + + Literatura del Caribe + + + Creencia religiosa + + + Religión + + + Actividad religiosa + + + Historia religiosa + + + Libertad religiosa + + + Cristianismo + + + Dramaturgo + + + Obra de teatro + + + Drama + + + Teatro + + + Filosofía de la ciencia + + + Filosofía política + + + Filosofía + + + Ciencia de la ciencia + + + Filosofía de la educación + + + Joven + + + Infancia + + + Electromagnetismo + + + Magnetismo + + + Ciencia política + + + Sociología política + + + Comportamiento del docente + + + Comportamiento + + + Ciencias de la educación + + + Ciencias sociales + + + Ciencias naturales + + + Ciencias ambientales + + + Relación escuela-comunidad + + + Desarrollo comunitario + + + Comunidad + + + Matemáticas + + + Álgebra + + + Aritmética + + + Desarrollo del lenguaje + + + Idioma de enseñanza + + + Metafísica + + + Filosofía del espíritu + + + Desarrollo rural + + + Arte latinoamericano + + + Cultura latinoamericana + + + Dibujo + + + Dibujos + + + Pintura + + + Dibujo técnico + + + Dibujo animado + + + Música pop + + + Música popular + + + Arte pop + + + Arte prehistórico + + + Prehistoria + + + Arte primitivo + + + Hombre prehistórico + + + Historia del arte + + + Arte antiguo + + + Experimento + + + Experimento (en clase) + + + Juguete + + + Desarrollo motor + + + Lingüista + + + Lingüística + + + Cambio de actitud + + + Cambio organizacional + + + Medicina deportiva + + + Deporte + + + Dictadura + + + Democracia + + + Educación para la paz + + + Consolidación de la paz + + + Agricultura + + + Agrosilvicultura + + + Horticultura + + + Biología agrícola + + + Maquinaria agrícola + + + Construcción de viviendas + + + Arquitectura + + + Libro de arte + + + Artes gráficas + + + Obra literaria representativa + + + Artes + + + Artes plásticas + + + Artes visuales + + + Crítica de arte + + + Historia antigua + + + Enciclopedia + + + Diccionario + + + Comercio internacional + + + Libre comercio + + + Relaciones económicas internacionales + + + Argentina + + + Animal acuático + + + Agua de mar + + + Entomología + + + Ornitología + + + Edad Media + + + Arte medieval + + + Historia medieval + + + Artes textiles + + + Artes decorativas + + + Artes escénicas + + + Estereotipo sexual + + + Rol sexual + + + Discriminación sexual + + + Hombre + + + Migración rural + + + Discriminación educacional + + + Educación inclusiva + + + Bosque y selva tropicales + + + Amazonia + + + Comportamiento animal + + + Animal salvaje + + + Animal doméstico + + + Mamífero + + + Ecología animal + + + Consumo alimenticio + + + Dietética + + + Salud mental + + + Estrés mental + + + Salud + + + Arte religioso + + + Viaje + + + Guía de viaje + + + Viaje de estudios + + + Vacaciones + + + Turismo + + + Alumno desertor + + + Estudiante + + + Estudiante universitario + + + Matrimonio + + + Matrimonio infantil + + + Comunicación interpersonal + + + Comunicación + + + Calcio + + + Educación física + + + Joven urbano + + + Francia + + + Francés + + + Bélgica + + + Lengua esquimal + + + Lengua indígena + + + Administración de empresas + + + Derecho administrativo + + + Gestión + + + Australia + + + Austria + + + Derechos de la mujer + + + Mujer artista + + + Crimen de guerra + + + Criminología + + + Agua + + + Abastecimiento de agua + + + Actividad juvenil + + + Guerra + + + Guerrilla + + + Víctima de guerra + + + Guerra mundial + + + Guerra urbana + + + Guerra civil + + + Archivos + + + Archivos audiovisuales + + + Inmigración + + + Migración interna + + + Deuda pública + + + Deuda + + + Biodiversidad + + + Reservas de la biosfera + + + Delincuencia juvenil + + + Malestar de la juventud + + + Participación juvenil + + + Arte islámico + + + Edificio religioso + + + Ecosistema acuático + + + Cambio climático + + + Clima + + + Climatología + + + Leyenda + + + Mitología + + + Expedición científica + + + Danza tradicional + + + Danza + + + Teatro tradicional + + + Música tradicional + + + Folklore + + + Educación de chicas + + + Literatura folklórica + + + Costumbres y tradiciones + + + Aptitud para la lectura + + + Enseñanza de la lectura + + + Espiritualismo + + + Alemania + + + Económicas + + + Política económica + + + Geografía económica + + + Finanzas + + + Historia económica + + + Economista + + + Conservación del agua + + + Conservación de recursos + + + Niño abandonado + + + Niño desfavorecido + + + Orfanato + + + Niño en edad preescolar + + + Bienestar de la infancia + + + Valores sociales + + + Valores morales + + + Sociología de la comunicación + + + Política de las ciencias sociales + + + Sociología cultural + + + Civilización + + + Civilización antigua + + + Taller educativo + + + Calidad de la educación + + + Educación moral + + + Reforma de la educación + + + Ambiente educacional + + + Planificación de la educación + + + Administración de la educación + + + Educación nutricional + + + Educación comparada + + + Educación de ciegos + + + Mar + + + URSS + + + Rusia + + + Cosmología + + + Astronomía + + + Población indígena + + + Instrumento musical + + + Músico + + + Forma musical + + + Transporte aéreo + + + Transporte por carretera + + + Transporte ferroviario + + + Literatura africana + + + Arte africano + + + Jardin zoológico + + + Teoría del arte + + + Ópera + + + Investigación ecológica + + + Investigación + + + Bienestar de la madre + + + Clase campesina + + + Clase social + + + Prisionero de guerra + + + País devastado por la guerra + + + Estilo de vida + + + Vida cotidiana + + + Monarquía + + + Aristocracia + + + Papel + + + Tecnología del papel + + + Cambio cultural + + + Cambio social + + + Desarrollo humano + + + Informática + + + Cartografía + + + Mapa + + + Prisionero + + + Prisión + + + Fisiología humana + + + Biofísica + + + Budismo + + + Promoción de la lectura + + + Oportunidades de empleo + + + Servicio de empleo + + + Arte chino + + + Arte asiático + + + Arte moderno + + + Ensayo literario + + + Derechos del niño + + + Derechos humanos + + + Física + + + Ciencias de la tierra + + + Científico + + + Ciencias médicas + + + Innovación científica + + + Innovación + + + Innovación educacional + + + Ciencia y desarrollo + + + Albergue juvenil + + + Tailandia + + + Myanmar + + + Democratización de la educación + + + Violación de los derechos humanos + + + Derechos civiles + + + Restablecimiento de la paz + + + Acuerdo de paz + + + Comportamiento sexual + + + Sexo + + + Planta medicinal + + + Botánica + + + Hortalizas + + + Conflicto étnico + + + Artesanía + + + Artesano + + + Colonización + + + Descolonización + + + País colonial + + + Educación de sordos + + + Chile + + + Perú + + + Epidemia + + + Pandemia + + + Comportamiento cultural + + + Paisaje cultural + + + Participación cultural + + + Medio ambiente terrestre + + + Medio ambiente + + + Fotografía + + + Fotografías + + + Crítica literaria + + + Historia literaria + + + Estilo literario + + + Condición social + + + Desigualdad social + + + Ballet + + + Sociedad tradicional + + + Bailarín + + + Nicaragua + + + Historia + + + Capitalismo + + + Comunismo + + + Homofobia + + + Xenofobia + + + Enseñanza de la literatura + + + Economía cultural + + + Administración cultural + + + Aprendizaje socioemocional + + + Enfermedad + + + Enfermedad animal + + + Recursos naturales + + + Derechos de los animales + + + Comunicación política + + + Comunicación de masas + + + Participación social + + + Participación estudiantil + + + Contratación + + + Derecho de los contratos + + + Médico + + + Salud materno-infantil + + + Química inorgánica + + + Elemento químico + + + Química + + + Geografía histórica + + + Geografía política + + + Historia natural + + + Geofísica + + + Geometría + + + Personal científico + + + Militarismo + + + Fuerzas armadas + + + Adaptación biológica + + + Psicoterapia + + + Ecología humana + + + Inventiva + + + Minería + + + Metalurgia + + + Programación informática + + + Lenguaje de programación + + + Sociología urbana + + + Arquitecto + + + Edificio + + + Estudios sobre las mujeres + + + Biología espacial + + + Humanidades + + + Humanismo + + + Proyecto de desarrollo + + + Desarrollo económico y social + + + Gestión del personal + + + Gestión industrial + + + Colección de museo + + + Ciego + + + Ceguera + + + Contabilidad + + + Contabilidad de costes + + + Lectura oral + + + Expresión oral + + + Dirección de proyecto + + + Ciclo hidrológico + + + Ciclo de vida + + + Lengua romance + + + Conservación de la naturaleza + + + Protección del paisaje + + + Escultor + + + Escultura + + + Fascismo + + + Nazismo + + + Ensayo + + + Tecnología de la madera + + + Trabajo en madera + + + Máquina + + + Diseño urbano + + + Desarrollo urbano + + + Derechos culturales + + + Intelectuales + + + Inteligencia + + + Patrimonio cultural + + + Observatorio astronómico + + + Microbiología + + + Parapsicología + + + Evaluación de proyecto + + + Yiddish + + + Judío + + + Marketing + + + Estudio de mercado + + + Derechos sociales y económicos + + + Museo de historia natural + + + \ No newline at end of file diff --git a/analysis/temas_colecciones_bibliotecas._grado_3_o_mayor.svg b/analysis/temas_colecciones_bibliotecas._grado_3_o_mayor.svg new file mode 100644 index 0000000..3e2b2b5 --- /dev/null +++ b/analysis/temas_colecciones_bibliotecas._grado_3_o_mayor.svg @@ -0,0 +1,3375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Educación ciudadana + + + Educación comunitaria + + + Educación + + + Educación para los derechos humanos + + + Biblioteca para niños + + + Colombia + + + Costa Rica + + + Ecuador + + + Guatemala + + + Educación de la mujer + + + Diversidad cultural + + + Conflicto cultural + + + Identidad cultural + + + Desarrollo cultural + + + Mujer periodista + + + Mujer + + + Juego educativo + + + Experimento educacional + + + Literatura eslava + + + Literatura + + + Exploración geográfica + + + Geografía física + + + Geografía + + + Literatura norteamericana + + + Literatura latinoamericana + + + Literatura oceánica + + + Literatura nacional + + + Español + + + España + + + Inglés + + + Fauna + + + Animal marino + + + Animal + + + Zoología + + + Recursos animales + + + Biblioteca pública + + + Biblioteca especializada + + + Biblioteca para ciegos + + + Información/biblioteca, personal + + + Biblioteca de arte + + + Colecciones de biblioteca + + + Solución de conflictos + + + Conflicto social + + + Igualdad de género + + + Movimiento revolucionario + + + Movimiento juvenil + + + Crimen + + + Psicología del adolescente + + + Psicología del niño + + + Adolescencia + + + Psicología + + + Cultura nacional + + + Cultura y desarrollo + + + Valor cultural + + + Política cultural + + + Educación cultural + + + Historia nacional + + + Información cultural + + + Poeta + + + Educación musical + + + Educación artística + + + Música + + + Musicología + + + Derecho + + + Mujer rural + + + Justicia + + + Justicia social + + + Familia + + + Desarrollo de la personalidad + + + Desarrollo del niño + + + Desarrollo mental + + + Ciencia + + + Biología marina + + + Biología + + + Vida marina + + + Crianza del niño + + + Escritor + + + Delincuencia + + + Política social + + + Creencia religiosa + + + Religión + + + Historia religiosa + + + Dramaturgo + + + Obra de teatro + + + Drama + + + Teatro + + + Filosofía de la ciencia + + + Filosofía política + + + Filosofía + + + Ciencia de la ciencia + + + Filosofía de la educación + + + Joven + + + Infancia + + + Ciencia política + + + Sociología política + + + Comportamiento + + + Ciencias de la educación + + + Ciencias sociales + + + Ciencias naturales + + + Ciencias ambientales + + + Desarrollo comunitario + + + Filosofía del espíritu + + + Arte latinoamericano + + + Dibujo + + + Pintura + + + Música pop + + + Música popular + + + Arte pop + + + Arte prehistórico + + + Prehistoria + + + Arte primitivo + + + Historia del arte + + + Arte antiguo + + + Lingüística + + + Cambio organizacional + + + Deporte + + + Consolidación de la paz + + + Agricultura + + + Agrosilvicultura + + + Horticultura + + + Biología agrícola + + + Arquitectura + + + Libro de arte + + + Artes gráficas + + + Obra literaria representativa + + + Artes + + + Artes plásticas + + + Artes visuales + + + Crítica de arte + + + Historia antigua + + + Animal acuático + + + Agua de mar + + + Arte medieval + + + Historia medieval + + + Artes textiles + + + Artes decorativas + + + Artes escénicas + + + Rol sexual + + + Comportamiento animal + + + Ecología animal + + + Salud mental + + + Salud + + + Arte religioso + + + Viaje + + + Comunicación + + + Educación física + + + Lengua indígena + + + Derecho administrativo + + + Gestión + + + Crimen de guerra + + + Actividad juvenil + + + Guerra + + + Víctima de guerra + + + Delincuencia juvenil + + + Participación juvenil + + + Danza tradicional + + + Teatro tradicional + + + Música tradicional + + + Folklore + + + Enseñanza de la lectura + + + Económicas + + + Política económica + + + Geografía económica + + + Historia económica + + + Conservación de recursos + + + Niño desfavorecido + + + Niño en edad preescolar + + + Bienestar de la infancia + + + Valores sociales + + + Sociología de la comunicación + + + Política de las ciencias sociales + + + Sociología cultural + + + Educación de ciegos + + + Instrumento musical + + + Músico + + + Forma musical + + + Clase social + + + Prisionero de guerra + + + Cambio cultural + + + Biofísica + + + Ensayo literario + + + Derechos humanos + + + Física + + + Ciencias de la tierra + + + Científico + + + Ciencias médicas + + + Innovación científica + + + Innovación + + + Ciencia y desarrollo + + + Comportamiento sexual + + + Artesanía + + + Chile + + + Comportamiento cultural + + + Paisaje cultural + + + Participación cultural + + + Medio ambiente terrestre + + + Crítica literaria + + + Historia literaria + + + Desigualdad social + + + Sociedad tradicional + + + Historia + + + Economía cultural + + + Administración cultural + + + Química + + + Geografía histórica + + + Geografía política + + + Historia natural + + + Geofísica + + + Edificio + + + Proyecto de desarrollo + + + Conservación de la naturaleza + + + Derechos culturales + + + Patrimonio cultural + + + \ No newline at end of file diff --git a/analysis/temas_colecciones_bibliotecas.svg b/analysis/temas_colecciones_bibliotecas.svg new file mode 100644 index 0000000..6fbce28 --- /dev/null +++ b/analysis/temas_colecciones_bibliotecas.svg @@ -0,0 +1,4666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/clean_data/red_temas.graphml b/clean_data/red_temas.graphml new file mode 100644 index 0000000..86b8cfa --- /dev/null +++ b/clean_data/red_temas.graphml @@ -0,0 +1,3955 @@ + + + + + + + 3 + + + 1 + + + 3 + + + 1 + + + 1255 + + + 4 + + + 7 + + + 143 + + + 1 + + + 2 + + + 1 + + + 8 + + + 1 + + + 1 + + + 1 + + + 2 + + + 2 + + + 1 + + + 3 + + + 2 + + + 1 + + + 4 + + + 7 + + + 7 + + + 14 + + + 5 + + + 4 + + + 1 + + + 67 + + + 7 + + + 4 + + + 2 + + + 1 + + + 1 + + + 4 + + + 2 + + + 2 + + + 2 + + + 54 + + + 49 + + + 4 + + + 4 + + + 9 + + + 4 + + + 3 + + + 2 + + + 3 + + + 3 + + + 1 + + + 2 + + + 2 + + + 16 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 2 + + + 1 + + + 5 + + + 26 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 20 + + + 5 + + + 3 + + + 5 + + + 40 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 44 + + + 1 + + + 8 + + + 3 + + + 1 + + + 3 + + + 1 + + + 5 + + + 1 + + + 6 + + + 2 + + + 1 + + + 1 + + + 3 + + + 1 + + + 2 + + + 4 + + + 1 + + + 1 + + + 40 + + + 1 + + + 3 + + + 1 + + + 1 + + + 6 + + + 6 + + + 11 + + + 2 + + + 1 + + + 2 + + + 3 + + + 3 + + + 1 + + + 1 + + + 22 + + + 22 + + + 10 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 2 + + + 16 + + + 2 + + + 1 + + + 11 + + + 5 + + + 7 + + + 1 + + + 1 + + + 15 + + + 1 + + + 1 + + + 2 + + + 2 + + + 1 + + + 1 + + + 2 + + + 3 + + + 5 + + + 4 + + + 1 + + + 2 + + + 9 + + + 1 + + + 1 + + + 4 + + + 3 + + + 4 + + + 1 + + + 3 + + + 2 + + + 1 + + + 1 + + + 1 + + + 3 + + + 3 + + + 1 + + + 1 + + + 1 + + + 1 + + + 7 + + + 5 + + + 2 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 3 + + + 2 + + + 4 + + + 1 + + + 12 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 3 + + + 1 + + + 7 + + + 4 + + + 5 + + + 1 + + + 2 + + + 2 + + + 1 + + + 4 + + + 1 + + + 1 + + + 1 + + + 2 + + + 2 + + + 3 + + + 2 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 4 + + + 2 + + + 1 + + + 2 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 4 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 3 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 2 + + + 6 + + + 1 + + + 3 + + + 3 + + + 1 + + + 1 + + + 1 + + + 3 + + + 2 + + + 2 + + + 2 + + + 1 + + + 1 + + + 2 + + + 2 + + + 1 + + + 1 + + + 1 + + + 9 + + + 2 + + + 1 + + + 3 + + + 5 + + + 1 + + + 2 + + + 3 + + + 1 + + + 1 + + + 1 + + + 6 + + + 9 + + + 2 + + + 1 + + + 1 + + + 3 + + + 3 + + + 2 + + + 3 + + + 1 + + + 2 + + + 1 + + + 1 + + + 3 + + + 7 + + + 17 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 2 + + + 1 + + + 1 + + + 2 + + + 3 + + + 1 + + + 8 + + + 3 + + + 1 + + + 1 + + + 1 + + + 1 + + + 6 + + + 1 + + + 1 + + + 6 + + + 18 + + + 3 + + + 2 + + + 3 + + + 1 + + + 2 + + + 10 + + + 1 + + + 4 + + + 2 + + + 1 + + + 1 + + + 9 + + + 7 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 2 + + + 1 + + + 3 + + + 5 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 3 + + + 4 + + + 1 + + + 2 + + + 3 + + + 1 + + + 2 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 7 + + + 4 + + + 3 + + + 1 + + + 8 + + + 1 + + + 1 + + + 2 + + + 2 + + + 1 + + + 4 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 2 + + + 3 + + + 1 + + + 3 + + + 2 + + + 4 + + + 2 + + + 1 + + + 1 + + + 4 + + + 1 + + + 1 + + + 2 + + + 1 + + + 3 + + + 1 + + + 1 + + + 1 + + + 5 + + + 1 + + + 3 + + + 2 + + + 1 + + + 1 + + + 3 + + + 1 + + + 3 + + + 3 + + + 5 + + + 2 + + + 4 + + + 3 + + + 1 + + + 1 + + + 1 + + + 2 + + + 2 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 4 + + + 7 + + + 3 + + + 7 + + + 4 + + + 3 + + + 6 + + + 3 + + + 1 + + + 1 + + + 12 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 2 + + + 8 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 3 + + + 2 + + + 4 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 2 + + + 1 + + + 2 + + + 1 + + + 3 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 7 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 3 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 3 + + + 3 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 3 + + + 1 + + + 2 + + + 1 + + + 4 + + + 1 + + + 1 + + + 1 + + + 1 + + + 3 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 4 + + + 2 + + + 1 + + + 2 + + + 1 + + + 2 + + + 2 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 3 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 2 + + + 1 + + + 1 + + + 1 + + + 0.7535125017166138 + + + 0.7769970893859863 + + + 0.7155817747116089 + + + 0.7383747696876526 + + + 0.7941665649414062 + + + 0.7665050625801086 + + + 0.7503685355186462 + + + 0.7249026894569397 + + + 0.7397661209106445 + + + 0.8041765689849854 + + + 0.7073233127593994 + + + 0.7050917148590088 + + + 0.7388468980789185 + + + 0.7322521209716797 + + + 0.7390340566635132 + + + 0.7249926924705505 + + + 0.734549880027771 + + + 0.7358591556549072 + + + 0.7521624565124512 + + + 0.704620897769928 + + + 0.7274912595748901 + + + 0.7078481316566467 + + + 0.701645016670227 + + + 0.7809402346611023 + + + 0.7560820579528809 + + + 0.7011932134628296 + + + 0.7798857092857361 + + + 0.7068026661872864 + + + 0.7213351726531982 + + + 0.7107459306716919 + + + 0.7356196641921997 + + + 0.7794679403305054 + + + 0.7563623785972595 + + + 0.8265995979309082 + + + 0.7391737103462219 + + + 0.7272811532020569 + + + 0.7021040320396423 + + + 0.7081352472305298 + + + 0.7605853080749512 + + + 0.7408063411712646 + + + 0.7408174872398376 + + + 0.7155323624610901 + + + 0.7032661437988281 + + + 0.7049882411956787 + + + 0.7285889983177185 + + + 0.7177298069000244 + + + 0.700398325920105 + + + 0.7002291679382324 + + + 0.7050480842590332 + + + 0.7332491278648376 + + + 0.8414032459259033 + + + 0.7013559341430664 + + + 0.7392863631248474 + + + 0.7183513045310974 + + + 0.7074351906776428 + + + 0.7035039663314819 + + + 0.7596865296363831 + + + 0.7004538178443909 + + + 0.7065229415893555 + + + 0.7816800475120544 + + + 0.7226159572601318 + + + 0.754711389541626 + + + 0.7246208786964417 + + + 0.7381307482719421 + + + 0.8281278014183044 + + + 0.7037679553031921 + + + 0.7214728593826294 + + + 0.7271390557289124 + + + 0.7285395860671997 + + + 0.7327436208724976 + + + 0.7420625686645508 + + + 0.7385653257369995 + + + 0.7084422707557678 + + + 0.7234644889831543 + + + 0.942803144454956 + + + 0.7320176362991333 + + + 0.7572243809700012 + + + 0.7830178141593933 + + + 0.7349179983139038 + + + 0.7278321981430054 + + + 0.710996687412262 + + + 0.8245590925216675 + + + 0.7402987480163574 + + + 0.7596971392631531 + + + 0.9038035869598389 + + + 0.7409837245941162 + + + 0.7510944604873657 + + + 0.7282960414886475 + + + 0.7567751407623291 + + + 0.7292811274528503 + + + 0.8860751986503601 + + + 0.7657104730606079 + + + 0.7111319303512573 + + + 0.7893129587173462 + + + 0.7790333032608032 + + + 0.8473955392837524 + + + 0.826350748538971 + + + 0.7251172661781311 + + + 0.7071127891540527 + + + 0.7508240938186646 + + + 0.7017263770103455 + + + 0.7233458757400513 + + + 0.7690603733062744 + + + 0.7179074883460999 + + + 0.7504614591598511 + + + 0.7394287586212158 + + + 0.7513541579246521 + + + 0.7725069522857666 + + + 0.7722751498222351 + + + 0.7093088626861572 + + + 0.7252230644226074 + + + 0.7639023065567017 + + + 0.7496132254600525 + + + 0.7032985687255859 + + + 0.7028059363365173 + + + 0.7553900480270386 + + + 0.7004552483558655 + + + 0.7047659158706665 + + + 0.7287611365318298 + + + 0.7258797883987427 + + + 0.9040968418121338 + + + 0.790757954120636 + + + 0.772828221321106 + + + 0.7390439510345459 + + + 0.794712483882904 + + + 0.7410902976989746 + + + 0.7992144823074341 + + + 0.7095485925674438 + + + 0.8480230569839478 + + + 0.829774022102356 + + + 0.7052187919616699 + + + 0.7435057163238525 + + + 0.7384558916091919 + + + 0.7630134224891663 + + + 0.8035605549812317 + + + 0.7038041353225708 + + + 0.7049727439880371 + + + 0.7859286665916443 + + + 0.7748715877532959 + + + 0.7023671269416809 + + + 0.7014269232749939 + + + 0.760152280330658 + + + 0.886444628238678 + + + 0.7093023061752319 + + + 0.7300999760627747 + + + 0.7543051242828369 + + + 0.749020516872406 + + + 0.7276645302772522 + + + 0.710534930229187 + + + 0.7109946012496948 + + + 0.8020147085189819 + + + 0.7212396860122681 + + + 0.7000187039375305 + + + 0.7575028538703918 + + + 0.8006511330604553 + + + 0.8722646832466125 + + + 0.7896712422370911 + + + 0.7077250480651855 + + + 0.7115604877471924 + + + 0.790771484375 + + + 0.7985097169876099 + + + 0.7763040065765381 + + + 0.7398549914360046 + + + 0.7278891205787659 + + + 0.7483429312705994 + + + 0.733930230140686 + + + 0.7417629361152649 + + + 0.8027363419532776 + + + 0.7627759575843811 + + + 0.7448126077651978 + + + 0.7140369415283203 + + + 0.75253826379776 + + + 0.7080080509185791 + + + 0.7013403177261353 + + + 0.7326282262802124 + + + 0.7288512587547302 + + + 0.7286063432693481 + + + 0.7109023928642273 + + + 0.7629780173301697 + + + 0.7585440278053284 + + + 0.7296912670135498 + + + 0.707776665687561 + + + 0.7169700860977173 + + + 0.8344703912734985 + + + 0.7560011148452759 + + + 0.8446729183197021 + + + 0.7569594979286194 + + + 0.7430030703544617 + + + 0.8014455437660217 + + + 0.7146920561790466 + + + 0.7610981464385986 + + + 0.7532510757446289 + + + 0.8226452469825745 + + + 0.709886908531189 + + + 0.7010670900344849 + + + 0.7536993622779846 + + + 0.7873682379722595 + + + 0.7202414870262146 + + + 0.832640528678894 + + + 0.7006351351737976 + + + 0.735186755657196 + + + 0.7492425441741943 + + + 0.8081599473953247 + + + 0.7834397554397583 + + + 0.755983829498291 + + + 0.732423722743988 + + + 0.7857788801193237 + + + 0.7798049449920654 + + + 0.7140976190567017 + + + 0.7486023306846619 + + + 0.7029622197151184 + + + 0.8074280619621277 + + + 0.7159038186073303 + + + 0.7137599587440491 + + + 0.7751339077949524 + + + 0.775409460067749 + + + 0.7058333158493042 + + + 0.742945671081543 + + + 0.7752683758735657 + + + 0.71885746717453 + + + 0.7352238893508911 + + + 0.7208681702613831 + + + 0.7462859153747559 + + + 0.738982081413269 + + + 0.7434048652648926 + + + 0.7012906670570374 + + + 0.716982364654541 + + + 0.7010002732276917 + + + 0.7334340810775757 + + + 0.7366554141044617 + + + 0.7081100940704346 + + + 0.7628063559532166 + + + 0.7314080595970154 + + + 0.7167612314224243 + + + 0.7146117091178894 + + + 0.738511860370636 + + + 0.7721984386444092 + + + 0.7139418125152588 + + + 0.7060374617576599 + + + 0.7334067821502686 + + + 0.7610185146331787 + + + 0.8498044610023499 + + + 0.7572557926177979 + + + 0.7527024745941162 + + + 0.7117700576782227 + + + 0.7776278853416443 + + + 0.7185935378074646 + + + 0.7471820116043091 + + + 0.736425518989563 + + + 0.7484221458435059 + + + 0.7154272794723511 + + + 0.704818069934845 + + + 0.7085361480712891 + + + 0.7127830982208252 + + + 0.7417764663696289 + + + 0.7066404223442078 + + + 0.828122615814209 + + + 0.821542501449585 + + + 0.710801899433136 + + + 0.751687228679657 + + + 0.7515349388122559 + + + 0.789594829082489 + + + 0.7315723299980164 + + + 0.7418529987335205 + + + 0.7429275512695312 + + + 0.7224940657615662 + + + 0.7050740122795105 + + + 0.7490530014038086 + + + 0.7779051065444946 + + + 0.7777119278907776 + + + 0.7950164079666138 + + + 0.847432017326355 + + + 0.7589124441146851 + + + 0.7889090180397034 + + + 0.7212705016136169 + + + 0.7333731055259705 + + + 0.7170418500900269 + + + 0.7502487897872925 + + + 0.7111779451370239 + + + 0.7522329092025757 + + + 0.8039759993553162 + + + 0.7086226940155029 + + + 0.7127590775489807 + + + 0.7201641201972961 + + + 0.7201185822486877 + + + 0.7460628747940063 + + + 0.706041157245636 + + + 0.7088896632194519 + + + 0.8045549988746643 + + + 0.7115355134010315 + + + 0.8094732165336609 + + + 0.701876163482666 + + + 0.8236482739448547 + + + 0.7369459867477417 + + + 0.713207483291626 + + + 0.7219739556312561 + + + 0.7944118976593018 + + + 0.7691811919212341 + + + 0.7108452916145325 + + + 0.7468435168266296 + + + 0.8965433239936829 + + + 0.7357491850852966 + + + 0.7042933106422424 + + + 0.7166898846626282 + + + 0.722777783870697 + + + 0.7364501357078552 + + + 0.7041362524032593 + + + 0.7066227197647095 + + + 0.7142289876937866 + + + 0.7075893878936768 + + + 0.7426000833511353 + + + 0.7123795747756958 + + + 0.7803352475166321 + + + 0.7477567195892334 + + + 0.7193284630775452 + + + 0.706224799156189 + + + 0.7282021045684814 + + + 0.7883806228637695 + + + 0.7511926293373108 + + + 0.7361594438552856 + + + 0.747882604598999 + + + 0.7110710144042969 + + + 0.8500499129295349 + + + 0.745282769203186 + + + 0.7815283536911011 + + + 0.7673396468162537 + + + 0.7168905735015869 + + + 0.7532820105552673 + + + 0.7348197102546692 + + + 0.715304970741272 + + + 0.7925583124160767 + + + 0.9200616478919983 + + + 0.8475063443183899 + + + 0.7438039779663086 + + + 0.7680410146713257 + + + 0.8543758988380432 + + + 0.7187334895133972 + + + 0.7136718034744263 + + + 0.8308255672454834 + + + 0.7589874863624573 + + + 0.8095023036003113 + + + 0.750533401966095 + + + 0.7024778723716736 + + + 0.7155795097351074 + + + 0.7499293684959412 + + + 0.7643660306930542 + + + 0.7207868099212646 + + + 0.8813325762748718 + + + 0.7426589131355286 + + + 0.7110801935195923 + + + 0.7235705852508545 + + + 0.7600010633468628 + + + 0.7260004281997681 + + + 0.7240988612174988 + + + 0.713530957698822 + + + 0.7066954970359802 + + + 0.7484889030456543 + + + 0.750639021396637 + + + 0.7038265466690063 + + + 0.8975257277488708 + + + 0.7245627641677856 + + + 0.7078731656074524 + + + 0.705828845500946 + + + 0.7152745127677917 + + + 0.7308393716812134 + + + 0.7784793376922607 + + + 0.7399718165397644 + + + 0.7374677062034607 + + + 0.7112262845039368 + + + 0.7161589860916138 + + + 0.7156121730804443 + + + 0.7597017288208008 + + + 0.7630007863044739 + + + 0.7760865092277527 + + + 0.8524709939956665 + + + 0.7483325004577637 + + + 0.7075514793395996 + + + 0.8108028173446655 + + + 0.7925742268562317 + + + 0.7964043617248535 + + + 0.7026334404945374 + + + 0.7245396375656128 + + + 0.8285599946975708 + + + 0.8180185556411743 + + + 0.7220941185951233 + + + 0.865761399269104 + + + 0.7622279524803162 + + + 0.7064858078956604 + + + 0.7306751608848572 + + + 0.7994580268859863 + + + 0.7860602140426636 + + + 0.8005130290985107 + + + 0.7199426889419556 + + + 0.7034696340560913 + + + 0.8133666515350342 + + + 0.7003849148750305 + + + 0.7053279876708984 + + + 0.7464158535003662 + + + 0.7077786326408386 + + + 0.7283204793930054 + + + 0.7888728976249695 + + + 0.8089841604232788 + + + 0.7291601896286011 + + + 0.7720409035682678 + + + 0.7688078284263611 + + + 0.7182924747467041 + + + 0.7256556749343872 + + + 0.7123581171035767 + + + 0.8359407782554626 + + + 0.7182773947715759 + + + 0.8404847383499146 + + + 0.7087634205818176 + + + 0.7578561305999756 + + + 0.7454714775085449 + + + 0.7231962084770203 + + + 0.717543363571167 + + + 0.7415505051612854 + + + 0.7717719078063965 + + + 0.7187812328338623 + + + 0.7047646045684814 + + + 0.8165808320045471 + + + 0.8013070225715637 + + + 0.7789151668548584 + + + 0.7329145073890686 + + + 0.7371466159820557 + + + 0.7094392776489258 + + + 0.748424232006073 + + + 0.7232084274291992 + + + 0.8447295427322388 + + + 0.7298939228057861 + + + 0.8343378901481628 + + + 0.7731441855430603 + + + 0.726259708404541 + + + 0.7940689325332642 + + + 0.728112518787384 + + + 0.728241503238678 + + + 0.7504808902740479 + + + 0.716094970703125 + + + 0.8021436333656311 + + + 0.8029844760894775 + + + 0.7270855903625488 + + + 0.7256352305412292 + + + 0.7228967547416687 + + + 0.7218919396400452 + + + 0.783549427986145 + + + 0.754021167755127 + + + 0.7403425574302673 + + + 0.7442607283592224 + + + 0.8488426804542542 + + + 0.7165216207504272 + + + 0.8933088183403015 + + + 0.7078104615211487 + + + 0.7800024151802063 + + + 0.8295697569847107 + + + 0.734997034072876 + + + 0.7194523811340332 + + + 0.7315878868103027 + + + 0.8096161484718323 + + + 0.8361315727233887 + + + 0.7065407037734985 + + + 0.8128089308738708 + + + 0.700249433517456 + + + 0.7321142554283142 + + + 0.8205966353416443 + + + 0.8619247674942017 + + + 0.7608171701431274 + + + 0.779971718788147 + + + 0.8285952806472778 + + + 0.8127260208129883 + + + 0.7762234210968018 + + + 0.7197399735450745 + + + 0.7898343801498413 + + + 0.7081005573272705 + + + 0.7495452165603638 + + + 0.7137221097946167 + + + 0.7309205532073975 + + + 0.8170351982116699 + + + 0.7073176503181458 + + + 0.7468199133872986 + + + 0.7322289943695068 + + + 0.7015438079833984 + + + 0.7614192962646484 + + + 0.8527777791023254 + + + 0.7946447730064392 + + + 0.7018020153045654 + + + 0.7181689143180847 + + + 0.710116982460022 + + + 0.7099433541297913 + + + 0.7357004284858704 + + + 0.7509273290634155 + + + 0.7603676915168762 + + + 0.7092146277427673 + + + 0.7060430645942688 + + + 0.7152432203292847 + + + 0.8786849975585938 + + + 0.7879917621612549 + + + 0.8138925433158875 + + + 0.8030308485031128 + + + 0.7955557703971863 + + + 0.7698928713798523 + + + 0.7659006714820862 + + + 0.7116416692733765 + + + 0.7807462215423584 + + + 0.7213014960289001 + + + 0.8016071319580078 + + + 0.7324885129928589 + + + 0.7248817682266235 + + + 0.8965213894844055 + + + 0.8061887621879578 + + + 0.7463183403015137 + + + 0.7125769257545471 + + + 0.7583010792732239 + + + 0.7177082896232605 + + + 0.7124225497245789 + + + 0.7042903900146484 + + + 0.7414251565933228 + + + 0.8060329556465149 + + + 0.8171544671058655 + + + 0.7378182411193848 + + + 0.8503755927085876 + + + 0.7179291844367981 + + + 0.7023525238037109 + + + 0.7024858593940735 + + + 0.7656548023223877 + + + 0.8038471937179565 + + + 0.7737154364585876 + + + 0.8416642546653748 + + + 0.7975029349327087 + + + 0.8265789151191711 + + + 0.7977752685546875 + + + 0.7008557319641113 + + + 0.7323247194290161 + + + 0.7752220034599304 + + + 0.8392236232757568 + + + 0.7158907651901245 + + + 0.7711831331253052 + + + 0.7270458936691284 + + + 0.7662479877471924 + + + 0.7044032216072083 + + + 0.7701683640480042 + + + 0.707207977771759 + + + 0.7303955554962158 + + + 0.7732242941856384 + + + 0.7138817310333252 + + + 0.8162074089050293 + + + 0.715022623538971 + + + 0.7037811279296875 + + + 0.7861685752868652 + + + 0.7600837349891663 + + + 0.7350447773933411 + + + 0.7922738194465637 + + + 0.8461345434188843 + + + 0.7690067887306213 + + + 0.8160545825958252 + + + 0.7129839658737183 + + + 0.7307811975479126 + + + 0.7695044279098511 + + + 0.7150702476501465 + + + 0.7630215883255005 + + + 0.7451589107513428 + + + 0.7071249485015869 + + + 0.7575634121894836 + + + 0.7180337905883789 + + + 0.7395337224006653 + + + 0.7325392961502075 + + + 0.7430797219276428 + + + 0.7195240259170532 + + + 0.7088255882263184 + + + 0.7109760642051697 + + + 0.7275620698928833 + + + 0.7207750082015991 + + + 0.7086836695671082 + + + 0.7124589681625366 + + + 0.7275241613388062 + + + 0.7068035006523132 + + + 0.7299947738647461 + + + 0.7203748226165771 + + + 0.7155556678771973 + + + 0.725152850151062 + + + 0.7391265630722046 + + + 0.789153516292572 + + + 0.7290595173835754 + + + 0.7379639744758606 + + + 0.7296017408370972 + + + 0.7437695264816284 + + + 0.7041932344436646 + + + 0.8962125182151794 + + + 0.7972182631492615 + + + 0.7362305521965027 + + + 0.7501026391983032 + + + 0.8302167057991028 + + + 0.7919673919677734 + + + 0.70087069272995 + + + 0.7805773615837097 + + + 0.7512596249580383 + + + 0.7121664881706238 + + + 0.7719441056251526 + + + 0.7305710315704346 + + + 0.7391944527626038 + + + 0.7632871270179749 + + + 0.7897717952728271 + + + 0.7404886484146118 + + + 0.7480745911598206 + + + 0.7421736717224121 + + + 0.8122029900550842 + + + 0.7269601821899414 + + + 0.7171440720558167 + + + 0.7322931885719299 + + + 0.7044789791107178 + + + 0.8385814428329468 + + + 0.7068619132041931 + + + 0.7261964082717896 + + + 0.7905868887901306 + + + 0.7239970564842224 + + + 0.7631428837776184 + + + 0.7818811535835266 + + + 0.7249876260757446 + + + 0.81448894739151 + + + 0.7677081823348999 + + + 0.8237788677215576 + + + 0.7163631319999695 + + + 0.7072163820266724 + + + 0.7324084043502808 + + + 0.7077645063400269 + + + 0.722998321056366 + + + 0.8012146949768066 + + + 0.7671413421630859 + + + 0.7436049580574036 + + + 0.8713873028755188 + + + 0.7000732421875 + + + 0.8268301486968994 + + + 0.7708872556686401 + + + 0.792267382144928 + + + 0.8329484462738037 + + + 0.7236604690551758 + + + 0.7617241144180298 + + + 0.7438355088233948 + + + 0.7087030410766602 + + + 0.7036625146865845 + + + 0.8508575558662415 + + + 0.7299680709838867 + + + 0.7108707427978516 + + + 0.7551923990249634 + + + 0.7790825963020325 + + + 0.7989704012870789 + + + 0.775892972946167 + + + 0.7507656216621399 + + + 0.7597126364707947 + + + 0.7287178039550781 + + + 0.7778719663619995 + + + 0.7061165571212769 + + + 0.7018483281135559 + + + 0.7420170903205872 + + + 0.7230088114738464 + + + 0.7916578650474548 + + + 0.7614311575889587 + + + 0.7455676794052124 + + + 0.7426025867462158 + + + 0.7047805190086365 + + + 0.7194488644599915 + + + 0.7192186713218689 + + + 0.7115222811698914 + + + 0.7778424024581909 + + + 0.7408145666122437 + + + 0.7446292042732239 + + + 0.7334991693496704 + + + 0.7995349764823914 + + + 0.7374677062034607 + + + 0.7261401414871216 + + + 0.8152800798416138 + + + 0.7659802436828613 + + + 0.7573421597480774 + + + 0.8025985956192017 + + + 0.7645038962364197 + + + 0.7060047388076782 + + + 0.7277776002883911 + + + 0.7281947135925293 + + + 0.739889919757843 + + + 0.7486741542816162 + + + 0.7794182300567627 + + + 0.7002654075622559 + + + 0.726460337638855 + + + 0.8015503287315369 + + + 0.7483540177345276 + + + 0.8271075487136841 + + + 0.7104379534721375 + + + 0.7776013016700745 + + + 0.7484247088432312 + + + 0.7626063823699951 + + + 0.7797757983207703 + + + 0.7526931166648865 + + + 0.82780921459198 + + + 0.7971037030220032 + + + 0.8613656759262085 + + + 0.7310685515403748 + + + 0.7839658260345459 + + + 0.7134039402008057 + + + 0.7346339225769043 + + + 0.826631486415863 + + + 0.8123400211334229 + + + 0.7517097592353821 + + + 0.7709962129592896 + + + 0.7135578393936157 + + + 0.8095135688781738 + + + 0.7425190210342407 + + + 0.705866813659668 + + + 0.7089238166809082 + + + 0.7352376580238342 + + + 0.722528874874115 + + + 0.794096827507019 + + + 0.7389470338821411 + + + 0.8530457019805908 + + + 0.7420587539672852 + + + 0.7373193502426147 + + + 0.8024082183837891 + + + 0.7269072532653809 + + + 0.7109180688858032 + + + 0.7676994204521179 + + + 0.728522539138794 + + + 0.7033522129058838 + + + 0.8444256782531738 + + + 0.8298362493515015 + + + 0.7498646378517151 + + + 0.7030890583992004 + + + 0.7839474678039551 + + + 0.701427161693573 + + + 0.7661672830581665 + + + 0.7094048857688904 + + + 0.741701066493988 + + + 0.7526190876960754 + + + 0.8558809161186218 + + + 0.9155114889144897 + + + 0.7006127834320068 + + + 0.7358704209327698 + + + 0.7116793394088745 + + + 0.7294514179229736 + + + 0.7094759941101074 + + + 0.7623245716094971 + + + 0.7782725095748901 + + + 0.7526248693466187 + + + 0.7469545006752014 + + + 0.7135235071182251 + + + 0.744429886341095 + + + 0.7217293381690979 + + + 0.7718600034713745 + + + 0.7274867296218872 + + + 0.7061825394630432 + + + 0.7041004300117493 + + + 0.7990853190422058 + + + 0.8056624531745911 + + + 0.7370345592498779 + + + 0.7106479406356812 + + + 0.7829754948616028 + + + 0.7071905732154846 + + + 0.7081322073936462 + + + 0.7562525272369385 + + + 0.7471145391464233 + + + 0.7706420421600342 + + + 0.7798032760620117 + + + 0.7127120494842529 + + + 0.7476696968078613 + + + 0.7784245014190674 + + + 0.8078781962394714 + + + 0.7742254137992859 + + + 0.7236784100532532 + + + 0.7418276071548462 + + + 0.8990199565887451 + + + 0.8003919720649719 + + + 0.7977613806724548 + + + 0.7917168736457825 + + + 0.724493682384491 + + + 0.7208968997001648 + + + 0.7679497599601746 + + + 0.7135998010635376 + + + From 969ca9d9fae9f8268edc1d7f4b7e63bd3c6ba145 Mon Sep 17 00:00:00 2001 From: complexluise Date: Mon, 28 Oct 2024 23:07:34 -0500 Subject: [PATCH 4/5] :sparkles: feat(README): update project documentation #4 The README.md file was updated to improve the project documentation. The changes include a rephrasing of the general description of the project, the addition of more detailed instructions on how to use the project's functionalities, a refinement of the prerequisites section and a clearer explanation of the project's structure. The content in Spanish was also revised for better clarity and comprehension. --- README.md | 135 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 84 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 7ce9ad4..466f6a9 100644 --- a/README.md +++ b/README.md @@ -2,102 +2,135 @@ ## Descripción General -**BibloClean** es un paquete Python diseñado para el procesamiento integral de datos bibliográficos, utilizando un pipeline ETL (Extracción, Transformación, Carga) para procesar registros MARC21 y normalizar la información extraída. El paquete extrae datos desde archivos CSV/Excel, realiza la limpieza y normalización del contenido, genera embeddings para análisis temático, e identifica y normaliza entidades dentro de los registros bibliográficos. - -Este paquete es ideal para bibliotecarios y gestores de información que necesitan procesar grandes volúmenes de registros bibliográficos y normalizarlos para mejorar la calidad de sus catálogos. +**BibloClean** es un paquete Python diseñado para el procesamiento integral de datos bibliográficos, utilizando un pipeline ETL (Extracción, Transformación, Carga) para procesar registros MARC21 y normalizar la información extraída. Este paquete facilita la limpieza, normalización y análisis de datos bibliográficos, y es especialmente útil para bibliotecarios y gestores de información que manejan grandes volúmenes de registros MARC21. ### Características Principales -- **Extracción de datos**: Carga registros desde archivos CSV/Excel -- **Preprocesamiento de texto**: Limpia y normaliza campos bibliográficos -- **Generación de embeddings**: Crea representaciones vectoriales para análisis temático -- **Normalización de entidades**: Detecta y normaliza autores, títulos y lugares -- **Exportación de resultados**: Guarda los datos procesados en formato estructurado +- **Extracción de datos**: Carga registros desde archivos CSV/Excel. +- **Preprocesamiento de texto**: Limpia y normaliza campos bibliográficos. +- **Generación de embeddings**: Crea representaciones vectoriales para análisis temático. +- **Normalización de entidades**: Detecta y normaliza autores, títulos y lugares. +- **Red de correlaciones temáticas**: Genera redes de conexiones entre temas basados en umbrales de similitud. +- **Exportación de resultados**: Guarda los datos procesados en un formato estructurado y exporta redes temáticas a formato GraphML. ### Limitaciones -- El paquete asume que los datos de entrada están en formato CSV/Excel -- Los pipelines están diseñados específicamente para datos bibliográficos MARC21 -- El rendimiento depende de la calidad de los modelos de embedding utilizados -- Se requiere una estructura específica de columnas en los datos de entrada +- Los datos de entrada deben estar en formato CSV o Excel. +- Los pipelines están diseñados específicamente para datos bibliográficos MARC21. +- El rendimiento depende de la calidad de los modelos de embedding y el tamaño de los datos. +- La estructura de columnas en los datos de entrada debe cumplir con un formato específico. ## Prerrequisitos ### 1. Instalación -Instalar el paquete y sus dependencias: +Para instalar el paquete y sus dependencias: ```bash git clone https://github.com/complexluise/limpieza_marc21 cd limpieza_marc21 -# Si tienes GPU debes instalar esta versión de pytoch de lo contrario omite la siguiente linea +# Si tienes una GPU, instala PyTorch para mejor rendimiento en embeddings pip3 install torch --index-url https://download.pytorch.org/whl/cu118 pip install -r requirements.txt ``` ### 2. Estructura de Datos -Los datos de entrada deben seguir la estructura de campos MARC21 especificada en la documentación, incluyendo: +Los datos de entrada deben seguir la estructura de campos MARC21 especificada en la documentación, como: -- Campos de autor (100$a) -- Campos de título (245$a, 245$b) -- Campos temáticos (650$a) -- Campos de clasificación (082$a) -- Campos de biblioteca (943$a-g) +- **Campos de autor**: 100$a +- **Campos de título**: 245$a, 245$b +- **Campos temáticos**: 650$a +- **Campos de clasificación**: 082$a +- **Campos de biblioteca**: 943$a-g -Ten en cuenta que se usan los nombres de la primera fila como la columnas a procesar. -Tu archivo CSV o Excel debería tener las siguientes columnas: +El archivo CSV o Excel debe tener las siguientes columnas: | 100$a | 245$a | 245$b | 245$c | 082$a | 082$b | 082$2 | 090$a | 090$b | 650$a | 650$y | 650$v | 650$x | 520$a | 943$a | 943$b | 943$c | 943$d | 943$e | 943$f | 943$g | |-------------------|-----------------------------------------|-----------------------------------------------|-------------------|-------|-------|-------|-------|-------|---------------------------------------------|--------|--------|--------------------|-------------------------------------------------------|-----------|--------|--------|--------|--------|--------|--------| | Nombre principal (autor) | Título principal | Subtítulo | Mención de responsabilidad | Número de clasificación Dewey | Número adicional de clasificación | Edición de la clasificación Dewey | Clasificación local | Número de clasificación local adicional | Tema principal | Periodo cronológico | Forma del término | Subdivisión temática | Resumen | Biblioteca_1 | Biblioteca_2 | Biblioteca_3 | Biblioteca_6 | Biblioteca_5 | Biblioteca_4 | Biblioteca_7 | | Goldberg, Beatriz | ¿Cómo voy a hacer esto a la edad que tengo?: | aprenda a enfrentar las crisis y los cambios a cualquier edad/ | Beatriz Goldberg | 155.25 | | 20 | | | Autoestima;Autorrealización (Psicología);Tristeza | | | Aspectos psicologicos | FAJM | | | | | | | | - ### 3. Directorios del Proyecto -``` + +```plaintext ├── raw_data/ # Datos de entrada sin procesar ├── clean_data/ # Datos procesados y limpios ├── modelos/ # Modelos de embeddings guardados -└── bibloclean/ # Código fuente +└── bibloclean/ # Código fuente +└── analysis/ # Artefactos de salida de las redes temáticas ``` ## Uso + ### 1. Preparación de Datos -1. Colocar los archivos CSV/Excel en la carpeta raw_data/ -2. Verificar que las columnas coincidan con la estructura requerida -3. Asegurar que los datos estén codificados en UTF-8 + +1. Colocar los archivos CSV/Excel en la carpeta `raw_data/`. +2. Verificar que las columnas coincidan con la estructura requerida. +3. Asegurar que los datos estén codificados en UTF-8. + ### 2. Ejecución del Pipeline -```python -python bibloclean archivo.csv -``` -Opciones disponibles: +Las funcionalidades principales están disponibles a través de una interfaz de línea de comandos (CLI) que permite realizar la limpieza y generación de redes temáticas. + +#### Comandos Disponibles + +1. **Limpieza de datos bibliográficos de KOHA** + + ```bash + python bibloclean limpiar-koha archivo.csv --salida --verbose + ``` + + - **archivo**: Ruta al archivo CSV/Excel a procesar. + - **--salida, -s**: Directorio para guardar los resultados (por defecto: `clean_data`). + - **--verbose, -v**: Muestra información detallada del proceso. + + Este comando procesa los datos, aplicando limpieza y normalización a los registros bibliográficos, y los guarda en el directorio de salida especificado. + +2. **Generación de red de correlaciones temáticas** + + ```bash + python bibloclean analizar-red archivo.csv --umbral --modelo --salida + ``` + + - **archivo**: Archivo CSV con los temas asignados. + - **--umbral, -u**: Umbral de similaridad para conexiones entre temas (rango de 0 a 1; por defecto: 0.7). + - **--modelo, -m**: Nombre del modelo de embeddings disponible en [SentenceTransformers](https://www.sbert.net/docs/sentence_transformer/pretrained_models.html) a utilizar (por defecto: `jinaai/jina-embeddings-v3`). + - **--salida, -s**: Ruta para guardar el archivo de la red en formato GraphML. + + Este comando genera una red temática que representa las relaciones entre temas en el archivo CSV, basada en un umbral de similitud y un modelo de embeddings. -- archivo: Ruta al archivo CSV/Excel a procesar -- --salida, -s: Directorio para guardar resultados -- --verbose, -v: Mostrar información detallada ### 3. Resultados -Los datos procesados se guardan en clean_data/ con las siguientes mejoras: -- Campos normalizados -- Análisis temático -- Estadísticas de procesamiento +- Los datos procesados se guardan en `clean_data/` con los siguientes atributos mejorados: + - Campos normalizados. + - Análisis temático. + - Estadísticas de procesamiento. +- La red de temas generada se guarda en el formato GraphML en la ubicación especificada por el usuario, ideal para visualización en herramientas de análisis de redes. + ## Contribuciones -Agradecemos las contribuciones a **bibloclean**: + +Agradecemos las contribuciones a **BibloClean**: ### Reportar Problemas -1. Revisar los issues existentes -2. Crear nuevo issue con descripción detallada -3. Incluir pasos para reproducir el problema + +1. Revisar los issues existentes. +2. Crear un nuevo issue con una descripción detallada. +3. Incluir pasos para reproducir el problema. + ### Realizar Mejoras -1. Fork del repositorio -2. Crear rama para nuevas características -3. Seguir estándares de código del proyecto -4. Enviar pull request + +1. Hacer fork del repositorio. +2. Crear una rama para la nueva funcionalidad. +3. Seguir los estándares de código del proyecto. +4. Enviar un pull request. + ### Proponer Cambios Mayores -1. Abrir issue para discutir la propuesta -2. Detallar justificación e implementación -3. Esperar retroalimentación antes de comenzar + +1. Abrir un issue para discutir la propuesta. +2. Detallar la justificación e implementación. +3. Esperar retroalimentación antes de comenzar. + ## Licencia -Limpieza Koha está licenciado bajo Apache License Version 2.0. + +**BibloClean** está licenciado bajo Apache License Version 2.0. \ No newline at end of file From 97faf49381f425ce9e5a6e13b2bdee385bb77c51 Mon Sep 17 00:00:00 2001 From: complexluise Date: Mon, 28 Oct 2024 23:16:50 -0500 Subject: [PATCH 5/5] :memo: update normalization explanation --- "Explicaci\303\263n transformaci\303\263n.md" | 126 ------------------ README.md | 2 + explicacion_normalizacion.md | 78 +++++++++++ 3 files changed, 80 insertions(+), 126 deletions(-) delete mode 100644 "Explicaci\303\263n transformaci\303\263n.md" create mode 100644 explicacion_normalizacion.md diff --git "a/Explicaci\303\263n transformaci\303\263n.md" "b/Explicaci\303\263n transformaci\303\263n.md" deleted file mode 100644 index 685e8cc..0000000 --- "a/Explicaci\303\263n transformaci\303\263n.md" +++ /dev/null @@ -1,126 +0,0 @@ -# Transformaciones aplicadas a los datos bibliográficos -## Limpieza general -- Se eliminan registros que no tienen biblioteca asignada -- Se conservan solo los datos válidos y se guardan por separado los descartados -- Se eliminan espacios innecesarios y caracteres especiales - -## Normalización de Lugares de publicación -- "Santafé de Bogotá" se convierte en "Bogotá" -- "México" se convierte en "Ciudad de México" -- "New York" se convierte en "Nueva York" -- "Köln" se convierte en "Colonia" - - -### Manejo de múltiples ciudades - -Cuando un registro tiene múltiples ciudades separadas por comas, mantiene hasta 2 ciudades -Ejemplo: "Barcelona, Bogotá" → Devuelve ambas ciudades - - -### Limpieza del formato - -- Elimina paréntesis y su contenido: "Madrid (España)" → "Madrid" -- Elimina espacios extra y caracteres especiales -- Elimina números y símbolos innecesarios - -### Manejo de ubicaciones faltantes o poco claras - -- Los valores vacíos se convierten en "Lugar no identificado" -- Los valores con "##" o marcadores poco claros similares se convierten en "Lugar no identificado" - -### Preservación de nombres originales cuando corresponde - -- Las ciudades que no necesitan estandarización mantienen sus nombres originales -- Los acentos y caracteres especiales se preservan cuando son correctos - -## Normalización de Fechas de publicación -### Extracción del año más reciente -- De un rango de años como "2019-2020", se toma el 2020 -- Si hay varios años mencionados, se selecciona el más actual -### Limpieza de símbolos y marcadores especiales -- Se eliminan símbolos como ©, #, ;, [] -- Se quitan palabras como "circa", "Aprox." o "c." -- Se remueven signos de interrogación y corchetes -### Manejo de formatos diversos -- Identifica años escritos como secuencias de 4 dígitos -- Funciona con años sueltos como "2020" -- Procesa años con marcadores de copyright como "©2021" -### Casos especiales -- Cuando no se encuentra un año válido, se marca como no disponible -- Si la fecha está vacía, se indica que no hay información -- Elimina texto adicional manteniendo solo el año - -## Nombres de autores -### Formato estándar "Apellido, Nombre" -- Mantiene el formato bibliográfico tradicional -- Asegura consistencia en todo el catálogo -- Ejemplo: "GARCÍA MÁRQUEZ, GABRIEL" → "García Márquez, Gabriel" -### Corrección de mayúsculas y minúsculas -- Primera letra en mayúscula para nombres y apellidos -- Respeta prefijos nobiliarios en minúscula -- Ejemplo: "browne, anthony" → "Browne, Anthony" -### Manejo de múltiples autores -- Separa autores usando punto y coma -- Normaliza cada autor individualmente -- Ejemplo: "Süskind, Patrick,; Gambolini, Gerardo" → "Süskind, Patrick; Gambolini, Gerardo" -### Limpieza de títulos y elementos adicionales -- Elimina títulos académicos (Dr., PhD., Mr., etc.) -- Quita puntuación extra y espacios innecesarios -- Ejemplo: "Dr. Cardona Marín, PhD., Guillermo" → "Cardona Marín, Guillermo" -### Casos especiales -- Autores desconocidos se marcan como "Desconocido" -- Preserva caracteres especiales y acentos correctos -- Mantiene prefijos como "von", "van", "de" en minúscula - -## Títulos -### Limpieza básica del texto -- Elimina espacios innecesarios al inicio y final -- Quita números y punto y coma al principio del título -- Ejemplo: " El príncipe " → "El príncipe" -### Eliminación de elementos bibliográficos -- Remueve barras diagonales al final (/) -- Quita dos puntos y comas al final (:,) -- Ejemplo: "Prince of the elves /" → "Prince of the elves" -### Manejo de caracteres especiales -- Mantiene caracteres válidos como en "C++" -- Elimina símbolos innecesarios (#%&*{}[]^~) -- Preserva acrónimos y abreviaturas comunes -### Corrección de espacios y puntuación -- Ajusta espacios alrededor de signos de puntuación -- Elimina espacios múltiples -- Ejemplo: "Historia del arte :," → "Historia del arte" -### Casos especiales -- Títulos vacíos se marcan como "Sin título" -- Mantiene la integridad de títulos con caracteres especiales válidos -- Preserva mayúsculas y minúsculas según corresponda - -# Modelado de Tópicos usando Embeddings - -## Proceso General -1. Se utiliza el modelo de embeddings "jinaai/jina-embeddings-v3" para convertir texto a vectores -2. El modelo se carga en GPU si está disponible para mejor rendimiento -3. Se procesan tanto los términos del tesauro como los temas de los libros - -## Tesauro y Jerarquía -- Se cargan términos del tesauro desde vocabulario.html -- Se extraen específicamente los términos de nivel 3 para mayor especificidad -- Se generan embeddings para cada término del tesauro - -## Procesamiento de Temas -1. Normalización del texto: - -- Eliminación de acentos -- Conversión a minúsculas -- Eliminación de texto entre paréntesis -- Remoción de frases comunes como "en la literatura" -2. Comparación vectorial: - -- Se generan embeddings para los temas de los libros -- Se calcula similitud coseno entre temas y términos del tesauro -- Se selecciona el término más similar para cada tema - - -## Resultados -- Se añaden dos columnas al DataFrame: - - tema_general: el término del tesauro más cercano - - score_tema_general: el puntaje de similitud \ No newline at end of file diff --git a/README.md b/README.md index 466f6a9..e83439a 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ - El rendimiento depende de la calidad de los modelos de embedding y el tamaño de los datos. - La estructura de columnas en los datos de entrada debe cumplir con un formato específico. +Para obtener más información detallada sobre las transformaciones realizadas visitar [Explicación de las normalizaciones](https://complexluise.github.io/bibloclean/explicacion_normalizacion). + ## Prerrequisitos ### 1. Instalación diff --git a/explicacion_normalizacion.md b/explicacion_normalizacion.md new file mode 100644 index 0000000..0216154 --- /dev/null +++ b/explicacion_normalizacion.md @@ -0,0 +1,78 @@ +# Transformaciones aplicadas al catálogo bibliográfico + +## ¿Qué columnas se procesan? +- Biblioteca +- Lugar de publicación +- Fecha de publicación +- Tema principal +- Autor +- Título +- Número Dewey +- Periodo cronológico + +## ¿Qué se hace con cada columna? +### Detalle de las Transformaciones Normalizadas en Cada Columna + +--- + +### 1. **Biblioteca** + - **Verificación de biblioteca asignada**: Los registros se filtran para asegurar que al menos una biblioteca esté especificada. Si un registro carece de este dato, se considera incompleto y se guarda en un archivo separado. + +--- + +### 2. **Lugar de Publicación** + - **Estandarización de nombres**: + - **Ciudades conocidas**: Se reemplazan las variantes comunes con el nombre estandarizado. Ejemplo: `"México"` se convierte en `"Ciudad de México"`; `"New York"` en `"Nueva York"`. + - **Múltiples lugares**: Si el lugar de publicación incluye múltiples ubicaciones, se guardan únicamente las dos primeras. + - **Paréntesis y espacios**: Se eliminan paréntesis y espacios superfluos. Por ejemplo, `"León ( España)"` se convierte en `"León"`. + - **Lugar no identificado**: En casos de falta de datos o caracteres inválidos, se marca como `"Lugar no identificado"`. + +--- + +### 3. **Fecha de Publicación** + - **Extracción del año**: Se extrae únicamente el año de los datos de fecha, eliminando caracteres no numéricos y manteniendo únicamente los dígitos del año. + - **Rango de fechas**: Si la fecha incluye un rango (por ejemplo, `"2019-2020"`), se selecciona el año más reciente. + - **Símbolos y prefijos**: Se eliminan símbolos como `©`, `c.` (circa), y palabras como `"aprox."`. Si el valor no es numérico, como `"sin fecha"`, se asigna como `None`. + +--- + +### 4. **Autor** + - **Formato de Nombre**: Los nombres se organizan en formato `"Apellido, Nombre"`. Se ajustan mayúsculas y minúsculas para consistencia. + - **Múltiples autores**: Si hay varios autores en un campo, se separan con punto y coma (`;`). Ejemplo: `"Süskind, Patrick,; Gambolini, Gerardo"` se convierte en `"Süskind, Patrick; Gambolini, Gerardo"`. + - **Títulos académicos**: Se eliminan títulos como `"Dr."`, `"PhD"`, y partículas nobiliarias se mantienen, como en `"von Goethe"`. + - **Autor desconocido**: Si el campo está vacío o contiene `np.nan`, se asigna `"Desconocido"`. + +--- + +### 5. **Título** + - **Eliminación de símbolos especiales**: Se eliminan símbolos no necesarios (por ejemplo, signos de exclamación, puntos) para mantener un formato limpio. + - **Mantenimiento de acrónimos**: Siglas y acrónimos como `C++` se conservan tal como aparecen. + - **Título desconocido**: Si el campo está vacío, se asigna `"Sin título"`. + +--- + +### 6. **Número Dewey** + - **Tres primeros dígitos**: Se extraen solo los primeros tres dígitos del número Dewey para facilitar la clasificación. + - **Eliminación de prefijos y separadores**: Se eliminan prefijos no numéricos y caracteres adicionales como `;`, `/`, `-` y espacios. + - **Casos especiales**: Si el número tiene menos de tres dígitos o no es numérico, se deja vacío (`""`). + +--- + +### 7. **Periodo Cronológico** + - **Conversión a siglos en números romanos**: Se traduce el formato de siglos a números romanos, por ejemplo, `"Siglo xx"` a `"XX"`, sin importar el caso o espacios. + - **Rangos de siglos**: Si el periodo contiene un rango, se selecciona el siglo más reciente. + - **Casos de siglos repetidos**: Si se repite el mismo siglo o el mismo rango, se retiene el último siglo. + - **Asignación de siglo a años específicos**: Si se encuentran fechas en lugar de siglos, se asigna el siglo correspondiente (por ejemplo, `"1830-1990"` se convierte en `"XX"`). + - **Sin siglo identificable**: Si no se encuentra un dato válido, se asigna `None`. + +--- + +### 8. **Tema** + - **Comparación con vocabulario controlado**: Cada tema se compara con un vocabulario estandarizado y se selecciona el tema más cercano en significado. + - **Puntaje de confianza**: Se asigna un puntaje de confianza que mide la exactitud de la correspondencia entre el tema original y el tema controlado. + +--- + +### **Archivos de Salida** +1. **_procesado.csv**: Contiene los registros con datos normalizados y clasificados según los criterios mencionados. +2. **_descartados.csv**: Archiva los registros que no cumplen con los requisitos de normalización, especialmente aquellos sin biblioteca asignada o sin suficientes datos de referencia para otras columnas. \ No newline at end of file