File size: 4,435 Bytes
0859e68 ab3800b 7825eba c81b746 7e1f71f 8ecaf5d 178952f ab3800b 0859e68 8ecaf5d 810ccfa 0859e68 217a744 810ccfa 217a744 810ccfa 217a744 810ccfa 0859e68 810ccfa 0859e68 810ccfa 0859e68 217a744 810ccfa 0859e68 158372b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
#modules/morphosyntax/morphosyntax_process.py
import streamlit as st
from ..text_analysis.morpho_analysis import (
get_repeated_words_colors,
highlight_repeated_words,
generate_arc_diagram,
get_detailed_pos_analysis,
get_morphological_analysis,
get_sentence_structure_analysis,
perform_advanced_morphosyntactic_analysis,
POS_COLORS,
POS_TRANSLATIONS
)
from ..database.morphosintax_mongo_db import store_student_morphosyntax_result
import logging
logger = logging.getLogger(__name__)
def process_morphosyntactic_input(text, lang_code, nlp_models, t):
"""
Procesa el texto ingresado para realizar el análisis morfosintáctico.
Args:
text: Texto a analizar
lang_code: Código del idioma
nlp_models: Diccionario de modelos spaCy
t: Diccionario de traducciones
Returns:
tuple: (análisis, visualizaciones, texto_resaltado, mensaje)
"""
try:
# Realizar el análisis morfosintáctico
doc = nlp_models[lang_code](text)
# Obtener el análisis avanzado
analysis = perform_advanced_morphosyntactic_analysis(text, nlp_models[lang_code])
# Generar visualizaciones - AQUÍ ESTÁ EL CAMBIO
arc_diagrams = generate_arc_diagram(doc) # Quitamos lang_code
# Obtener palabras repetidas y texto resaltado
word_colors = get_repeated_words_colors(doc)
highlighted_text = highlight_repeated_words(doc, word_colors)
# Guardar el análisis en la base de datos
store_student_morphosyntax_result(
st.session_state.username,
text,
{
'arc_diagrams': arc_diagrams,
'pos_analysis': analysis['pos_analysis'],
'morphological_analysis': analysis['morphological_analysis'],
'sentence_structure': analysis['sentence_structure']
}
)
return {
'analysis': analysis,
'visualizations': arc_diagrams,
'highlighted_text': highlighted_text,
'success': True,
'message': t.get('MORPHOSYNTACTIC', {}).get('success_message', 'Analysis completed successfully')
}
except Exception as e:
logger.error(f"Error en el análisis morfosintáctico: {str(e)}")
return {
'analysis': None,
'visualizations': None,
'highlighted_text': None,
'success': False,
'message': t.get('MORPHOSYNTACTIC', {}).get('error_message', f'Error in analysis: {str(e)}')
}
def format_analysis_results(analysis_result, t):
"""
Formatea los resultados del análisis para su visualización.
Args:
analysis_result: Resultado del análisis morfosintáctico
t: Diccionario de traducciones
Returns:
dict: Resultados formateados para visualización
"""
morpho_t = t.get('MORPHOSYNTACTIC', {})
if not analysis_result['success']:
return {
'formatted_text': analysis_result['message'],
'visualizations': None
}
formatted_sections = []
# Formato para análisis POS
if 'pos_analysis' in analysis_result['analysis']:
pos_section = [f"### {morpho_t.get('pos_analysis', 'Part of Speech Analysis')}"]
for pos_item in analysis_result['analysis']['pos_analysis']:
pos_section.append(
f"- {morpho_t.get(pos_item['pos'], pos_item['pos'])}: "
f"{pos_item['count']} ({pos_item['percentage']}%)\n "
f"Ejemplos: {', '.join(pos_item['examples'])}"
)
formatted_sections.append('\n'.join(pos_section))
# Agregar otras secciones de formato según sea necesario
return {
'formatted_text': '\n\n'.join(formatted_sections),
'visualizations': analysis_result['visualizations'],
'highlighted_text': analysis_result['highlighted_text']
}
# Re-exportar las funciones y constantes necesarias
__all__ = [
'process_morphosyntactic_input',
'highlight_repeated_words',
'generate_arc_diagram',
'get_repeated_words_colors',
'get_detailed_pos_analysis',
'get_morphological_analysis',
'get_sentence_structure_analysis',
'perform_advanced_morphosyntactic_analysis',
'POS_COLORS',
'POS_TRANSLATIONS'
] |