File size: 6,504 Bytes
efdd1f5 1da3f58 efdd1f5 1da3f58 d628526 187ebd3 1da3f58 c8e0946 1da3f58 c7d73f9 10d99a7 1da3f58 7c0815f 10d99a7 1da3f58 c7d73f9 1da3f58 7c0815f 1da3f58 7c0815f 1da3f58 7c0815f 1da3f58 efdd1f5 1da3f58 1cd532e 7c0815f 1da3f58 7c0815f 1cd532e 7c0815f 1cd532e 7c0815f 1da3f58 d628526 1da3f58 d628526 1da3f58 c8e0946 1cd532e c8e0946 c7d73f9 1da3f58 d628526 1da3f58 c7d73f9 7c0815f d628526 7c0815f 1da3f58 7c0815f 6b3f7f3 1cd532e d628526 1cd532e 1da3f58 1cd532e efdd1f5 7c0815f 1cd532e 7c0815f 1da3f58 cba4d16 |
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 137 138 139 140 |
import gradio as gr
from datasets import load_dataset
import requests
# Diccionario de tareas por modalidad
MODALIDAD_TAREAS = {
"NLP": ["Clasificaci贸n de texto", "Generaci贸n de texto", "Traducci贸n", "Resumen"],
"Audio": ["Reconocimiento de voz", "Clasificaci贸n de audio", "Separaci贸n de fuentes"],
"Vision": ["Clasificaci贸n de im谩genes", "Detecci贸n de objetos", "Segmentaci贸n"],
"RAG": ["Respuesta a preguntas", "Recuperaci贸n de informaci贸n"],
"Code": ["Generaci贸n de c贸digo", "Completado de c贸digo"],
"Tabular": ["Clasificaci贸n tabular", "Regresi贸n tabular"],
"Time Series": ["Predicci贸n de series temporales"]
}
# Funci贸n para actualizar las tareas seg煤n las modalidades seleccionadas
def actualizar_tareas(modalidades_seleccionadas):
tareas_disponibles = []
for modalidad in modalidades_seleccionadas:
if modalidad in MODALIDAD_TAREAS:
tareas_disponibles.extend(MODALIDAD_TAREAS[modalidad])
# Eliminar duplicados y devolver un diccionario con valores predeterminados (no seleccionados)
return {tarea: False for tarea in set(tareas_disponibles)}
# Funci贸n para generar el encabezado del CSV (ahora incluye 'id')
def generar_encabezado(modalidades_seleccionadas, tareas_seleccionadas):
if not modalidades_seleccionadas or not tareas_seleccionadas:
raise ValueError("Debes seleccionar al menos una modalidad y una tarea.")
columnas = ["id"] # A帽adimos 'id' como primer elemento
for modalidad in modalidades_seleccionadas:
columnas.append(f"{modalidad.lower()}_input")
columnas.append(f"{modalidad.lower()}_output")
for tarea in tareas_seleccionadas:
columnas.append(f"{tarea.lower().replace(' ', '_')}_label")
return ",".join(columnas)
# Funci贸n para buscar datasets compatibles en HuggingFace
def buscar_datasets(modalidades_seleccionadas, tareas_seleccionadas, filtro_tama帽o=None, filtro_licencia=None):
query = "+".join(modalidades_seleccionadas + tareas_seleccionadas)
url = f"https://huggingface.co/api/datasets?search={query}"
response = requests.get(url)
datasets = response.json()
resultados = []
for dataset in datasets:
# Aplicar filtros adicionales
if filtro_tama帽o and dataset.get("size_categories") != filtro_tama帽o:
continue
if filtro_licencia and dataset.get("license") != filtro_licencia:
continue
resultados.append(f"- {dataset['id']}: {dataset['description']}")
return "\n".join(resultados)
# Funci贸n para generar el dataset
def generar_dataset(encabezado, datasets_seleccionados, pagina_actual=1, filas_por_pagina=5):
if not datasets_seleccionados:
raise ValueError("Debes seleccionar al menos un dataset.")
columnas = encabezado.split(",")
filas = []
# Cargar datos reales desde los datasets seleccionados
for dataset_id in datasets_seleccionados.split("\n"):
dataset_id = dataset_id.strip("- ").split(":")[0] # Extraer ID del dataset
try:
dataset = load_dataset(dataset_id, split="train")
inicio = (pagina_actual - 1) * filas_por_pagina
fin = pagina_actual * filas_por_pagina
for i, fila in enumerate(dataset[inicio:fin]):
valores = [str(fila.get(col, "valor_default")) for col in columnas[1:]] # Ignorar 'id'
filas.append(f"id_{inicio + i}," + ",".join(valores))
except Exception as e:
filas.append(f"Error cargando dataset {dataset_id}: {str(e)}")
contenido_csv = "\n".join([encabezado] + filas)
return contenido_csv
# Interfaz Gradio
with gr.Blocks() as demo:
gr.Markdown("# Dise帽ador de Modelos de Redes Neuronales y Generador de Datasets Multimodales")
# Panel 1: Selecci贸n de Modalidades
with gr.Row():
modalidades = list(MODALIDAD_TAREAS.keys())
modalidades_seleccionadas = gr.CheckboxGroup(choices=modalidades, label="Selecciona Modalidades")
# Panel 2: Configuraci贸n de Tareas (Refactorizado)
with gr.Row():
gr.Markdown("### Selecciona Tareas")
tareas_disponibles = gr.CheckboxGroup(choices=[], label="Tareas Disponibles", interactive=True, elem_classes=["expanded-checkbox"])
modalidades_seleccionadas.change(
actualizar_tareas,
inputs=modalidades_seleccionadas,
outputs=tareas_disponibles
)
# Panel 3: Generar Encabezado del CSV
with gr.Row():
btn_generar_encabezado = gr.Button("Generar Encabezado del CSV")
encabezado_generado = gr.Textbox(label="Encabezado Generado", interactive=False)
btn_generar_encabezado.click(generar_encabezado, inputs=[modalidades_seleccionadas, tareas_disponibles], outputs=encabezado_generado)
# Panel 4: Buscar Datasets Compatibles con Filtros Adicionales
with gr.Row():
with gr.Column():
filtro_tama帽o = gr.Dropdown(choices=["small", "medium", "large"], label="Filtrar por Tama帽o")
filtro_licencia = gr.Dropdown(choices=["mit", "apache-2.0", "cc-by-4.0"], label="Filtrar por Licencia")
btn_buscar_datasets = gr.Button("Buscar Datasets Compatibles")
datasets_encontrados = gr.Textbox(label="Datasets Encontrados", interactive=False)
btn_buscar_datasets.click(
buscar_datasets,
inputs=[modalidades_seleccionadas, tareas_disponibles, filtro_tama帽o, filtro_licencia],
outputs=datasets_encontrados
)
# Panel 5: Generar Dataset con Paginaci贸n
with gr.Row():
pagina_actual = gr.Number(value=1, label="P谩gina Actual")
filas_por_pagina = gr.Number(value=5, label="Filas por P谩gina")
btn_generar_dataset = gr.Button("Generar Dataset")
vista_previa_csv = gr.Textbox(label="Vista Previa del CSV", interactive=False)
btn_descargar_csv = gr.File(label="Descargar CSV")
btn_generar_dataset.click(
generar_dataset,
inputs=[encabezado_generado, datasets_encontrados, pagina_actual, filas_por_pagina],
outputs=vista_previa_csv
)
# Estilo CSS para expandir el 谩rea de selecci贸n de tareas
demo.css = """
.expanded-checkbox {
max-height: 200px; /* Altura m谩xima */
overflow-y: auto; /* Scroll vertical si es necesario */
border: 1px solid #ccc; /* Borde para mejorar la visibilidad */
padding: 10px; /* Espaciado interno */
}
"""
# Ejecutar la aplicaci贸n
demo.launch() |