jcmachicao commited on
Commit
7db0e19
verified
1 Parent(s): 1f92d7e

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +135 -0
app.py ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import json
3
+ from transformers import pipeline
4
+ import re
5
+
6
+ # Template del autodiagn贸stico
7
+ TEMPLATE = {
8
+ "datos_generales": {
9
+ "nombre": "",
10
+ "sector": "",
11
+ "fecha": ""
12
+ },
13
+ "reto": {
14
+ "descripcion": "",
15
+ "contexto": "",
16
+ "alcance": ""
17
+ },
18
+ "conocimientos_cogtech": {
19
+ "terminos_desconocidos": [],
20
+ "conceptos_dudosos": [],
21
+ "areas_desconfianza": []
22
+ },
23
+ "dominio_actual": {
24
+ "aspectos_dominados": [],
25
+ "experiencia_previa": [],
26
+ "recursos_disponibles": []
27
+ },
28
+ "entrampes": {
29
+ "tecnicos": [],
30
+ "implementacion": [],
31
+ "organizacionales": []
32
+ },
33
+ "objetivos": {
34
+ "corto_plazo": [],
35
+ "esperados_microtaller": []
36
+ }
37
+ }
38
+
39
+ # Inicializar el modelo de clasificaci贸n de texto
40
+ classifier = pipeline("zero-shot-classification")
41
+
42
+ def extraer_terminos_tecnicos(texto):
43
+ """Extrae t茅rminos t茅cnicos del texto usando el modelo de clasificaci贸n"""
44
+ candidatos = texto.split()
45
+ labels = ["AI", "machine learning", "programming", "data science", "cognitive technology"]
46
+
47
+ resultados = []
48
+ for termino in candidatos:
49
+ if len(termino) > 4: # Filtrar palabras muy cortas
50
+ clasificacion = classifier(termino, labels)
51
+ if clasificacion['scores'][0] > 0.5:
52
+ resultados.append(termino)
53
+
54
+ return resultados
55
+
56
+ def identificar_entrampes(texto):
57
+ """Identifica posibles entrampes en el texto"""
58
+ entrampes = {
59
+ "tecnicos": [],
60
+ "implementacion": [],
61
+ "organizacionales": []
62
+ }
63
+
64
+ # Palabras clave para cada tipo de entrampe
65
+ keywords = {
66
+ "tecnicos": ["error", "falla", "bug", "t茅cnico", "c贸digo", "programa"],
67
+ "implementacion": ["proceso", "tiempo", "recursos", "implementar", "desplegar"],
68
+ "organizacionales": ["equipo", "presupuesto", "pol铆tica", "aprobaci贸n", "gesti贸n"]
69
+ }
70
+
71
+ oraciones = texto.split('.')
72
+ for oracion in oraciones:
73
+ oracion = oracion.lower()
74
+ for tipo, palabras in keywords.items():
75
+ if any(palabra in oracion for palabra in palabras):
76
+ entrampes[tipo].append(oracion.strip())
77
+
78
+ return entrampes
79
+
80
+ def procesar_texto(texto_input):
81
+ """Procesa el texto de entrada y genera un autodiagn贸stico estructurado"""
82
+ # Inicializar el autodiagn贸stico con el template
83
+ autodiagnostico = TEMPLATE.copy()
84
+
85
+ # Extraer t茅rminos t茅cnicos
86
+ terminos = extraer_terminos_tecnicos(texto_input)
87
+ autodiagnostico["conocimientos_cogtech"]["terminos_desconocidos"] = terminos
88
+
89
+ # Identificar entrampes
90
+ entrampes = identificar_entrampes(texto_input)
91
+ autodiagnostico["entrampes"] = entrampes
92
+
93
+ # Extraer objetivos (oraciones que empiezan con "quiero", "necesito", "busco")
94
+ objetivos = []
95
+ for linea in texto_input.split('.'):
96
+ if any(palabra in linea.lower() for palabra in ["quiero", "necesito", "busco"]):
97
+ objetivos.append(linea.strip())
98
+ autodiagnostico["objetivos"]["esperados_microtaller"] = objetivos
99
+
100
+ # Convertir a JSON
101
+ return json.dumps(autodiagnostico, indent=2, ensure_ascii=False)
102
+
103
+ # Crear la interfaz de Gradio
104
+ with gr.Blocks() as app:
105
+ gr.Markdown("# Autodiagn贸stico CogTech")
106
+ gr.Markdown("""
107
+ Describe tu reto o proyecto relacionado con tecnolog铆as cognitivas.
108
+ La aplicaci贸n analizar谩 tu texto y generar谩 un autodiagn贸stico estructurado.
109
+ """)
110
+
111
+ with gr.Row():
112
+ texto_input = gr.Textbox(
113
+ label="Tu descripci贸n",
114
+ placeholder="Describe tu reto, dudas, objetivos y contexto...",
115
+ lines=10
116
+ )
117
+ json_output = gr.JSON(label="Autodiagn贸stico Estructurado")
118
+
119
+ analizar_btn = gr.Button("Generar Autodiagn贸stico")
120
+ analizar_btn.click(
121
+ fn=procesar_texto,
122
+ inputs=texto_input,
123
+ outputs=json_output
124
+ )
125
+
126
+ gr.Markdown("""
127
+ ### Instrucciones:
128
+ 1. Describe tu reto o proyecto en el campo de texto
129
+ 2. Incluye tus dudas, objetivos y contexto
130
+ 3. Haz clic en "Generar Autodiagn贸stico"
131
+ 4. Descarga el JSON resultante
132
+ """)
133
+
134
+ # Lanzar la aplicaci贸n
135
+ app.launch()