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()