Spaces:
Running
Running
| #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' | |
| ] |