AIdeaText commited on
Commit
b5a8e1a
·
verified ·
1 Parent(s): dd09ab0

Create morphosyntax_process_BackUp_Dec24_Ok.py

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