|
from ..text_analysis.discourse_analysis import perform_discourse_analysis, compare_semantic_analysis
|
|
import streamlit as st
|
|
|
|
def process_discourse_input(text1, text2, nlp_models, lang_code):
|
|
"""
|
|
Procesa la entrada para el análisis del discurso
|
|
Args:
|
|
text1: Texto del primer documento
|
|
text2: Texto del segundo documento
|
|
nlp_models: Diccionario de modelos de spaCy
|
|
lang_code: Código del idioma actual
|
|
Returns:
|
|
dict: Resultados del análisis
|
|
"""
|
|
try:
|
|
|
|
nlp = nlp_models[lang_code]
|
|
|
|
|
|
analysis_result = perform_discourse_analysis(text1, text2, nlp, lang_code)
|
|
|
|
if analysis_result['success']:
|
|
return {
|
|
'success': True,
|
|
'analysis': analysis_result
|
|
}
|
|
else:
|
|
return {
|
|
'success': False,
|
|
'error': 'Error en el análisis del discurso'
|
|
}
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error en process_discourse_input: {str(e)}")
|
|
return {
|
|
'success': False,
|
|
'error': str(e)
|
|
}
|
|
|
|
def format_discourse_results(result):
|
|
"""
|
|
Formatea los resultados del análisis para su visualización
|
|
Args:
|
|
result: Resultado del análisis
|
|
Returns:
|
|
dict: Resultados formateados
|
|
"""
|
|
try:
|
|
if not result['success']:
|
|
return result
|
|
|
|
analysis = result['analysis']
|
|
return {
|
|
'success': True,
|
|
'graph1': analysis['graph1'],
|
|
'graph2': analysis['graph2'],
|
|
'key_concepts1': analysis['key_concepts1'],
|
|
'key_concepts2': analysis['key_concepts2'],
|
|
'table1': analysis['table1'],
|
|
'table2': analysis['table2']
|
|
}
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error en format_discourse_results: {str(e)}")
|
|
return {
|
|
'success': False,
|
|
'error': str(e)
|
|
} |