test2 / modules /text_analysis /discourse_analysis.py
AIdeaText's picture
Update modules/text_analysis/discourse_analysis.py
d3778bb verified
raw
history blame
2.76 kB
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)
# 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):
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)
# Crear tablas de conceptos clave
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'])