|
import streamlit as st |
|
import spacy |
|
import networkx as nx |
|
import matplotlib.pyplot as plt |
|
import pandas as pd |
|
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, |
|
'table1': table1, |
|
'table2': table2 |
|
} |
|
|
|
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']) |