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