enpaiva commited on
Commit
7ddab05
·
verified ·
1 Parent(s): 25fc10a

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -0
app.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import spacy
3
+ from graphviz import Digraph
4
+ import os
5
+ import uuid
6
+
7
+ # Cargar modelo de spaCy
8
+ nlp = spacy.load("es_dep_news_trf")
9
+
10
+ # Carpeta persistente para imágenes
11
+ os.makedirs("outputs", exist_ok=True)
12
+
13
+ def generar_grafico_dependencia(texto):
14
+ doc = nlp(texto)
15
+ raices = [token for token in doc if token.head == token]
16
+ rutas_imagenes = []
17
+
18
+ for i, raiz in enumerate(raices):
19
+ dot = Digraph(comment=f"Árbol {i+1}")
20
+ dot.attr('node', shape='ellipse')
21
+
22
+ def agregar_nodo(palabra):
23
+ nodo_id = f"{palabra.text}_{palabra.i}"
24
+ etiqueta = f"{palabra.text}\n({palabra.pos_})"
25
+ dot.node(nodo_id, etiqueta)
26
+ for hijo in palabra.children:
27
+ hijo_id = f"{hijo.text}_{hijo.i}"
28
+ etiqueta_hijo = f"{hijo.text}\n({hijo.pos_})"
29
+ dot.node(hijo_id, etiqueta_hijo)
30
+ dot.edge(nodo_id, hijo_id, label=hijo.dep_)
31
+ agregar_nodo(hijo)
32
+
33
+ agregar_nodo(raiz)
34
+
35
+ # Guardar archivo con nombre único
36
+ nombre_archivo = f"outputs/arbol_{uuid.uuid4().hex}.png"
37
+ dot.render(filename=nombre_archivo, format='png', cleanup=True)
38
+ rutas_imagenes.append(nombre_archivo + ".png") # Graphviz añade extensión
39
+
40
+ return rutas_imagenes
41
+
42
+ # Crear interfaz Gradio
43
+ demo = gr.Interface(
44
+ fn=generar_grafico_dependencia,
45
+ inputs=gr.Textbox(lines=4, label="Introduce texto en español"),
46
+ outputs=gr.Gallery(label="Gráficos de dependencia"),
47
+ title="Visualización de Dependencias Sintácticas",
48
+ description="Analiza un texto en español con spaCy y muestra el árbol de dependencias."
49
+ )
50
+
51
+ if __name__ == "__main__":
52
+ demo.launch()