Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -92,10 +92,11 @@ def create_custom_entity_viz(data, full_text):
|
|
92 |
# Check for overlapping spans
|
93 |
overlapping = any(s.start < end and start < s.end for s in spans)
|
94 |
if not overlapping:
|
95 |
-
|
|
|
96 |
spans.append(span)
|
97 |
-
if
|
98 |
-
colors[
|
99 |
|
100 |
doc.set_ents(spans, default="unmodified")
|
101 |
doc.spans["sc"] = spans
|
@@ -119,13 +120,22 @@ def create_custom_entity_viz(data, full_text):
|
|
119 |
def create_graph(json_data):
|
120 |
G = nx.Graph()
|
121 |
|
122 |
-
# Add nodes with tooltips
|
123 |
for node in json_data['nodes']:
|
124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
|
126 |
# Add edges with labels
|
127 |
for edge in json_data['edges']:
|
128 |
-
|
|
|
|
|
|
|
129 |
|
130 |
# Create network visualization
|
131 |
nt = Network(
|
@@ -339,14 +349,13 @@ def create_ui():
|
|
339 |
|
340 |
# Full width visualization area at the bottom
|
341 |
with gr.Row():
|
342 |
-
|
343 |
-
|
344 |
-
with gr.
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
output_entity_viz = gr.HTML(label="")
|
350 |
|
351 |
# Functionality
|
352 |
submit_button.click(
|
|
|
92 |
# Check for overlapping spans
|
93 |
overlapping = any(s.start < end and start < s.end for s in spans)
|
94 |
if not overlapping:
|
95 |
+
node_type = node.get("type", "Entity")
|
96 |
+
span = Span(doc, start, end, label=node_type)
|
97 |
spans.append(span)
|
98 |
+
if node_type not in colors:
|
99 |
+
colors[node_type] = get_random_light_color()
|
100 |
|
101 |
doc.set_ents(spans, default="unmodified")
|
102 |
doc.spans["sc"] = spans
|
|
|
120 |
def create_graph(json_data):
|
121 |
G = nx.Graph()
|
122 |
|
123 |
+
# Add nodes with tooltips - with error handling for missing keys
|
124 |
for node in json_data['nodes']:
|
125 |
+
# Get node type with fallback
|
126 |
+
node_type = node.get("type", "Entity")
|
127 |
+
# Get detailed type with fallback
|
128 |
+
detailed_type = node.get("detailed_type", node_type)
|
129 |
+
|
130 |
+
# Use node ID and type info for the tooltip
|
131 |
+
G.add_node(node['id'], title=f"{node_type}: {detailed_type}")
|
132 |
|
133 |
# Add edges with labels
|
134 |
for edge in json_data['edges']:
|
135 |
+
# Check if the required keys exist
|
136 |
+
if 'from' in edge and 'to' in edge:
|
137 |
+
label = edge.get('label', 'related')
|
138 |
+
G.add_edge(edge['from'], edge['to'], title=label, label=label)
|
139 |
|
140 |
# Create network visualization
|
141 |
nt = Network(
|
|
|
349 |
|
350 |
# Full width visualization area at the bottom
|
351 |
with gr.Row():
|
352 |
+
# Full width visualization area
|
353 |
+
with gr.Tabs():
|
354 |
+
with gr.TabItem("🧩 Knowledge Graph"):
|
355 |
+
output_graph = gr.HTML(label="")
|
356 |
+
|
357 |
+
with gr.TabItem("🏷️ Entity Recognition"):
|
358 |
+
output_entity_viz = gr.HTML(label="")
|
|
|
359 |
|
360 |
# Functionality
|
361 |
submit_button.click(
|