Update modules/semantic_analysis.py
Browse files- modules/semantic_analysis.py +24 -12
modules/semantic_analysis.py
CHANGED
|
@@ -135,6 +135,7 @@ def extract_entities(doc, lang):
|
|
| 135 |
return entities
|
| 136 |
|
| 137 |
#####################################################################################################################
|
|
|
|
| 138 |
def visualize_context_graph(doc, lang):
|
| 139 |
G = nx.Graph()
|
| 140 |
entities = extract_entities(doc, lang)
|
|
@@ -153,25 +154,30 @@ def visualize_context_graph(doc, lang):
|
|
| 153 |
G.add_edge(sent_entities[i].text, sent_entities[j].text)
|
| 154 |
|
| 155 |
# Visualize
|
| 156 |
-
plt.figure(figsize=(
|
| 157 |
-
pos = nx.spring_layout(G, k=0.
|
| 158 |
|
| 159 |
node_colors = [color_map[G.nodes[node]['category']] for node in G.nodes()]
|
| 160 |
|
| 161 |
-
nx.draw(G, pos, node_color=node_colors, with_labels=True,
|
| 162 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 163 |
|
| 164 |
# Add a legend
|
| 165 |
legend_elements = [plt.Rectangle((0,0),1,1,fc=color, edgecolor='none', label=category)
|
| 166 |
for category, color in color_map.items()]
|
| 167 |
-
plt.legend(handles=legend_elements, loc='upper left', bbox_to_anchor=(1, 1))
|
| 168 |
|
| 169 |
-
plt.title("Análisis del Contexto" if lang == 'es' else "Context Analysis" if lang == 'en' else "Analyse du Contexte", fontsize=
|
| 170 |
plt.axis('off')
|
| 171 |
|
| 172 |
return plt
|
| 173 |
|
| 174 |
############################################################################################################################################
|
|
|
|
| 175 |
def visualize_semantic_relations(doc, lang):
|
| 176 |
G = nx.Graph()
|
| 177 |
word_freq = Counter(token.text.lower() for token in doc if token.pos_ not in ['PUNCT', 'SPACE'])
|
|
@@ -185,29 +191,35 @@ def visualize_semantic_relations(doc, lang):
|
|
| 185 |
if token.text.lower() in top_words and token.head.text.lower() in top_words:
|
| 186 |
G.add_edge(token.text, token.head.text, label=token.dep_)
|
| 187 |
|
| 188 |
-
plt.figure(figsize=(
|
| 189 |
-
pos = nx.spring_layout(G, k=0.
|
| 190 |
|
| 191 |
node_colors = [POS_COLORS.get(G.nodes[node]['pos'], '#CCCCCC') for node in G.nodes()]
|
| 192 |
|
| 193 |
nx.draw(G, pos, node_color=node_colors, with_labels=True,
|
| 194 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 195 |
|
| 196 |
edge_labels = nx.get_edge_attributes(G, 'label')
|
| 197 |
-
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=
|
| 198 |
|
| 199 |
title = {
|
| 200 |
'es': "Relaciones Semánticas Relevantes",
|
| 201 |
'en': "Relevant Semantic Relations",
|
| 202 |
'fr': "Relations Sémantiques Pertinentes"
|
| 203 |
}
|
| 204 |
-
plt.title(title[lang], fontsize=
|
| 205 |
plt.axis('off')
|
| 206 |
|
| 207 |
legend_elements = [plt.Rectangle((0,0),1,1, facecolor=POS_COLORS.get(pos, '#CCCCCC'), edgecolor='none',
|
| 208 |
label=f"{POS_TRANSLATIONS[lang].get(pos, pos)}")
|
| 209 |
for pos in set(nx.get_node_attributes(G, 'pos').values())]
|
| 210 |
-
plt.legend(handles=legend_elements, loc='center left', bbox_to_anchor=(1, 0.5), fontsize=
|
| 211 |
|
| 212 |
return plt
|
| 213 |
|
|
|
|
| 135 |
return entities
|
| 136 |
|
| 137 |
#####################################################################################################################
|
| 138 |
+
|
| 139 |
def visualize_context_graph(doc, lang):
|
| 140 |
G = nx.Graph()
|
| 141 |
entities = extract_entities(doc, lang)
|
|
|
|
| 154 |
G.add_edge(sent_entities[i].text, sent_entities[j].text)
|
| 155 |
|
| 156 |
# Visualize
|
| 157 |
+
plt.figure(figsize=(30, 22)) # Increased figure size
|
| 158 |
+
pos = nx.spring_layout(G, k=0.7, iterations=50) # Adjusted layout
|
| 159 |
|
| 160 |
node_colors = [color_map[G.nodes[node]['category']] for node in G.nodes()]
|
| 161 |
|
| 162 |
+
nx.draw(G, pos, node_color=node_colors, with_labels=True,
|
| 163 |
+
node_size=10000, # Increased node size
|
| 164 |
+
font_size=18, # Increased font size
|
| 165 |
+
font_weight='bold',
|
| 166 |
+
width=2, # Increased edge width
|
| 167 |
+
arrowsize=30) # Increased arrow size
|
| 168 |
|
| 169 |
# Add a legend
|
| 170 |
legend_elements = [plt.Rectangle((0,0),1,1,fc=color, edgecolor='none', label=category)
|
| 171 |
for category, color in color_map.items()]
|
| 172 |
+
plt.legend(handles=legend_elements, loc='upper left', bbox_to_anchor=(1, 1), fontsize=16) # Increased legend font size
|
| 173 |
|
| 174 |
+
plt.title("Análisis del Contexto" if lang == 'es' else "Context Analysis" if lang == 'en' else "Analyse du Contexte", fontsize=24) # Increased title font size
|
| 175 |
plt.axis('off')
|
| 176 |
|
| 177 |
return plt
|
| 178 |
|
| 179 |
############################################################################################################################################
|
| 180 |
+
|
| 181 |
def visualize_semantic_relations(doc, lang):
|
| 182 |
G = nx.Graph()
|
| 183 |
word_freq = Counter(token.text.lower() for token in doc if token.pos_ not in ['PUNCT', 'SPACE'])
|
|
|
|
| 191 |
if token.text.lower() in top_words and token.head.text.lower() in top_words:
|
| 192 |
G.add_edge(token.text, token.head.text, label=token.dep_)
|
| 193 |
|
| 194 |
+
plt.figure(figsize=(36, 27)) # Increased figure size
|
| 195 |
+
pos = nx.spring_layout(G, k=0.7, iterations=50) # Adjusted layout
|
| 196 |
|
| 197 |
node_colors = [POS_COLORS.get(G.nodes[node]['pos'], '#CCCCCC') for node in G.nodes()]
|
| 198 |
|
| 199 |
nx.draw(G, pos, node_color=node_colors, with_labels=True,
|
| 200 |
+
node_size=10000, # Increased node size
|
| 201 |
+
font_size=16, # Increased font size
|
| 202 |
+
font_weight='bold',
|
| 203 |
+
arrows=True,
|
| 204 |
+
arrowsize=30, # Increased arrow size
|
| 205 |
+
width=3, # Increased edge width
|
| 206 |
+
edge_color='gray')
|
| 207 |
|
| 208 |
edge_labels = nx.get_edge_attributes(G, 'label')
|
| 209 |
+
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=14) # Increased edge label font size
|
| 210 |
|
| 211 |
title = {
|
| 212 |
'es': "Relaciones Semánticas Relevantes",
|
| 213 |
'en': "Relevant Semantic Relations",
|
| 214 |
'fr': "Relations Sémantiques Pertinentes"
|
| 215 |
}
|
| 216 |
+
plt.title(title[lang], fontsize=24, fontweight='bold') # Increased title font size
|
| 217 |
plt.axis('off')
|
| 218 |
|
| 219 |
legend_elements = [plt.Rectangle((0,0),1,1, facecolor=POS_COLORS.get(pos, '#CCCCCC'), edgecolor='none',
|
| 220 |
label=f"{POS_TRANSLATIONS[lang].get(pos, pos)}")
|
| 221 |
for pos in set(nx.get_node_attributes(G, 'pos').values())]
|
| 222 |
+
plt.legend(handles=legend_elements, loc='center left', bbox_to_anchor=(1, 0.5), fontsize=16) # Increased legend font size
|
| 223 |
|
| 224 |
return plt
|
| 225 |
|