import streamlit as st import spacy import networkx as nx import matplotlib.pyplot as plt import pandas as pd import numpy as np from .semantic_analysis import ( create_concept_graph, visualize_concept_graph, identify_key_concepts, POS_COLORS, POS_TRANSLATIONS, ENTITY_LABELS ) def compare_semantic_analysis(text1, text2, nlp, lang): """ Realiza el análisis semántico comparativo entre dos textos """ doc1 = nlp(text1) doc2 = nlp(text2) # Identificar conceptos clave para ambos documentos key_concepts1 = identify_key_concepts(doc1) key_concepts2 = identify_key_concepts(doc2) # Crear grafos de conceptos para ambos documentos G1 = create_concept_graph(doc1, key_concepts1) G2 = create_concept_graph(doc2, key_concepts2) # Visualizar los grafos de conceptos fig1 = visualize_concept_graph(G1, lang) fig2 = visualize_concept_graph(G2, lang) # Remover los títulos superpuestos fig1.suptitle("") fig2.suptitle("") return fig1, fig2, key_concepts1, key_concepts2 def create_concept_table(key_concepts): """ Crea una tabla de conceptos clave con sus frecuencias """ df = pd.DataFrame(key_concepts, columns=['Concepto', 'Frecuencia']) df['Frecuencia'] = df['Frecuencia'].round(2) return df def perform_discourse_analysis(text1, text2, nlp, lang): """ Realiza el análisis completo del discurso """ graph1, graph2, key_concepts1, key_concepts2 = compare_semantic_analysis(text1, text2, nlp, lang) # Crear tablas de conceptos clave table1 = create_concept_table(key_concepts1) table2 = create_concept_table(key_concepts2) return { 'graph1': graph1, 'graph2': graph2, 'key_concepts1': key_concepts1, 'key_concepts2': key_concepts2, 'table1': table1, 'table2': table2, 'success': True }