| 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): |
| doc1 = nlp(text1) |
| doc2 = nlp(text2) |
|
|
| |
| key_concepts1 = identify_key_concepts(doc1) |
| key_concepts2 = identify_key_concepts(doc2) |
|
|
| |
| G1 = create_concept_graph(doc1, key_concepts1) |
| G2 = create_concept_graph(doc2, key_concepts2) |
|
|
| |
| fig1 = visualize_concept_graph(G1, lang) |
| fig2 = visualize_concept_graph(G2, lang) |
|
|
| |
| fig1.suptitle("") |
| fig2.suptitle("") |
|
|
| return fig1, fig2, key_concepts1, key_concepts2 |
|
|
| def create_concept_table(key_concepts): |
| df = pd.DataFrame(key_concepts, columns=['Concepto', 'Frecuencia']) |
| df['Frecuencia'] = df['Frecuencia'].round(2) |
| return df |
|
|
| def perform_discourse_analysis(text1, text2, nlp, lang): |
| graph1, graph2, key_concepts1, key_concepts2 = compare_semantic_analysis(text1, text2, nlp, lang) |
|
|
| |
| 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 |
| } |
|
|
| def display_discourse_analysis_results(analysis_result, lang_code): |
| translations = { |
| 'es': { |
| 'doc1_title': "Documento 1: Relaciones Conceptuales", |
| 'doc2_title': "Documento 2: Relaciones Conceptuales", |
| 'key_concepts': "Conceptos Clave", |
| }, |
| 'en': { |
| 'doc1_title': "Document 1: Conceptual Relations", |
| 'doc2_title': "Document 2: Conceptual Relations", |
| 'key_concepts': "Key Concepts", |
| }, |
| 'fr': { |
| 'doc1_title': "Document 1 : Relations Conceptuelles", |
| 'doc2_title': "Document 2 : Relations Conceptuelles", |
| 'key_concepts': "Concepts Clés", |
| } |
| } |
|
|
| t = translations[lang_code] |
|
|
| col1, col2 = st.columns(2) |
|
|
| with col1: |
| with st.expander(t['doc1_title'], expanded=True): |
| st.pyplot(analysis_result['graph1']) |
| st.subheader(t['key_concepts']) |
| st.table(analysis_result['table1']) |
|
|
| with col2: |
| with st.expander(t['doc2_title'], expanded=True): |
| st.pyplot(analysis_result['graph2']) |
| st.subheader(t['key_concepts']) |
| st.table(analysis_result['table2']) |