jcmachicao's picture
Rename app.py to app_vobs0.py
04404c7 verified
raw
history blame
4.23 kB
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()