AIdeaText commited on
Commit
3e361e9
·
verified ·
1 Parent(s): 0bacaa5

Update modules/text_analysis/discourse_analysis.py

Browse files
modules/text_analysis/discourse_analysis.py CHANGED
@@ -108,62 +108,81 @@ def fig_to_bytes(fig, dpi=100):
108
  logger.error(f"Error en fig_to_bytes: {str(e)}")
109
  return None
110
 
111
- #################
112
  def compare_semantic_analysis(text1, text2, nlp, lang):
113
  """
114
  Realiza el análisis semántico comparativo entre dos textos
115
  """
116
  try:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  logger.info(f"Iniciando análisis comparativo para idioma: {lang}")
118
 
119
- # Obtener stopwords
120
  stopwords = get_custom_stopwords(lang)
121
  logger.info(f"Obtenidas {len(stopwords)} stopwords para el idioma {lang}")
122
 
123
- # Procesar los textos
124
  doc1 = nlp(text1)
125
  doc2 = nlp(text2)
126
 
127
- # Identificar conceptos clave
128
- logger.info("Identificando conceptos clave del primer texto...")
129
  key_concepts1 = identify_key_concepts(doc1, stopwords=stopwords, min_freq=2, min_length=3)
130
-
131
- logger.info("Identificando conceptos clave del segundo texto...")
132
  key_concepts2 = identify_key_concepts(doc2, stopwords=stopwords, min_freq=2, min_length=3)
133
 
134
  if not key_concepts1 or not key_concepts2:
135
  raise ValueError("No se pudieron identificar conceptos clave en uno o ambos textos")
136
 
137
- # Crear grafos
138
- logger.info("Creando grafos de conceptos...")
139
  G1 = create_concept_graph(doc1, key_concepts1)
140
  G2 = create_concept_graph(doc2, key_concepts2)
141
-
142
- # Visualizar grafos
143
- logger.info("Visualizando grafos...")
144
 
145
- # Primer grafo
146
  plt.figure(figsize=(12, 8))
147
  fig1 = visualize_concept_graph(G1, lang)
148
- plt.title("Análisis del primer texto", pad=20)
149
  plt.tight_layout()
150
 
151
- # Segundo grafo
152
  plt.figure(figsize=(12, 8))
153
  fig2 = visualize_concept_graph(G2, lang)
154
- plt.title("Análisis del segundo texto", pad=20)
155
  plt.tight_layout()
156
 
157
- logger.info("Análisis comparativo completado exitosamente")
158
  return fig1, fig2, key_concepts1, key_concepts2
159
 
160
  except Exception as e:
161
  logger.error(f"Error en compare_semantic_analysis: {str(e)}")
162
- plt.close('all') # Limpiar recursos en caso de error
163
  raise
164
  finally:
165
- plt.close('all') # Asegurar limpieza en todos los casos
166
-
167
 
168
  ############################################
169
  def create_concept_table(key_concepts):
 
108
  logger.error(f"Error en fig_to_bytes: {str(e)}")
109
  return None
110
 
111
+ ################################################################################################
112
  def compare_semantic_analysis(text1, text2, nlp, lang):
113
  """
114
  Realiza el análisis semántico comparativo entre dos textos
115
  """
116
  try:
117
+ # Diccionario de traducciones para los títulos de los gráficos COMPARATIVOS
118
+ COMPARE_GRAPH_TITLES = {
119
+ 'es': {
120
+ 'doc1_network': 'Relaciones entre conceptos clave del documento 1',
121
+ 'doc1_centrality': 'Centralidad de los conceptos clave del documento 1',
122
+ 'doc2_network': 'Relaciones entre conceptos clave del documento 2',
123
+ 'doc2_centrality': 'Centralidad de los conceptos clave del documento 2'
124
+ },
125
+ 'en': {
126
+ 'doc1_network': 'Key concept relationships in document 1',
127
+ 'doc1_centrality': 'Key concept centrality in document 1',
128
+ 'doc2_network': 'Key concept relationships in document 2',
129
+ 'doc2_centrality': 'Key concept centrality in document 2'
130
+ },
131
+ 'fr': {
132
+ 'doc1_network': 'Relations entre concepts clés du document 1',
133
+ 'doc1_centrality': 'Centralité des concepts clés du document 1',
134
+ 'doc2_network': 'Relations entre concepts clés du document 2',
135
+ 'doc2_centrality': 'Centralité des concepts clés du document 2'
136
+ },
137
+ 'pt': {
138
+ 'doc1_network': 'Relações entre conceitos-chave do documento 1',
139
+ 'doc1_centrality': 'Centralidade dos conceitos-chave do documento 1',
140
+ 'doc2_network': 'Relações entre conceitos-chave do documento 2',
141
+ 'doc2_centrality': 'Centralidade dos conceitos-chave do documento 2'
142
+ }
143
+ }
144
+
145
+ # Obtener traducciones (inglés por defecto)
146
+ titles = COMPARE_GRAPH_TITLES.get(lang, COMPARE_GRAPH_TITLES['en'])
147
+
148
  logger.info(f"Iniciando análisis comparativo para idioma: {lang}")
149
 
150
+ # Resto del código permanece exactamente igual...
151
  stopwords = get_custom_stopwords(lang)
152
  logger.info(f"Obtenidas {len(stopwords)} stopwords para el idioma {lang}")
153
 
 
154
  doc1 = nlp(text1)
155
  doc2 = nlp(text2)
156
 
 
 
157
  key_concepts1 = identify_key_concepts(doc1, stopwords=stopwords, min_freq=2, min_length=3)
 
 
158
  key_concepts2 = identify_key_concepts(doc2, stopwords=stopwords, min_freq=2, min_length=3)
159
 
160
  if not key_concepts1 or not key_concepts2:
161
  raise ValueError("No se pudieron identificar conceptos clave en uno o ambos textos")
162
 
 
 
163
  G1 = create_concept_graph(doc1, key_concepts1)
164
  G2 = create_concept_graph(doc2, key_concepts2)
 
 
 
165
 
166
+ # Primer grafo con título traducido
167
  plt.figure(figsize=(12, 8))
168
  fig1 = visualize_concept_graph(G1, lang)
169
+ plt.title(titles['doc1_network'], pad=20)
170
  plt.tight_layout()
171
 
172
+ # Segundo grafo con título traducido
173
  plt.figure(figsize=(12, 8))
174
  fig2 = visualize_concept_graph(G2, lang)
175
+ plt.title(titles['doc2_network'], pad=20)
176
  plt.tight_layout()
177
 
 
178
  return fig1, fig2, key_concepts1, key_concepts2
179
 
180
  except Exception as e:
181
  logger.error(f"Error en compare_semantic_analysis: {str(e)}")
182
+ plt.close('all')
183
  raise
184
  finally:
185
+ plt.close('all')
 
186
 
187
  ############################################
188
  def create_concept_table(key_concepts):