| | |
| | import json |
| | import requests |
| | from datasets import load_dataset |
| | import matplotlib.pyplot as plt |
| |
|
| | |
| | def cargar_modalidades_tareas(): |
| | with open("modalidades_tareas.json", "r") as file: |
| | MODALIDAD_TAREAS = json.load(file) |
| | return MODALIDAD_TAREAS |
| |
|
| | |
| | def validar_modalidades_tareas(modalidades_tareas): |
| | for modalidad, tareas in modalidades_tareas.items(): |
| | if not isinstance(modalidad, str) or not isinstance(tareas, list): |
| | raise ValueError(f"Formato incorrecto para la modalidad: {modalidad}") |
| | for tarea in tareas: |
| | if not isinstance(tarea, str): |
| | raise ValueError(f"Formato incorrecto para la tarea: {tarea} en la modalidad {modalidad}") |
| |
|
| | |
| | def generar_grafica_barras(tareas_seleccionadas, MODALIDAD_TAREAS): |
| | |
| | conteo_modalidades = {} |
| | for modalidad, tareas in MODALIDAD_TAREAS.items(): |
| | conteo_modalidades[modalidad] = len([tarea for tarea in tareas if tarea in tareas_seleccionadas]) |
| | |
| | modalidades = list(conteo_modalidades.keys()) |
| | cantidades = [conteo_modalidades[modalidad] for modalidad in modalidades] |
| | |
| | |
| | fig, ax = plt.subplots(figsize=(10, 6)) |
| | ax.barh(modalidades, cantidades, color='skyblue', edgecolor='black') |
| | ax.set_xlabel('Cantidad de Tareas Seleccionadas') |
| | ax.set_ylabel('Modalidades') |
| | ax.set_title('Distribuci贸n de Tareas Seleccionadas por Modalidad') |
| | ax.invert_yaxis() |
| | |
| | return fig |
| |
|
| | |
| | def buscar_datasets(tareas_seleccionadas, filtro_tama帽o=None, filtro_licencia=None): |
| | query = "+".join(tareas_seleccionadas) |
| | url = f"https://huggingface.co/api/datasets?search={query}" |
| | response = requests.get(url) |
| | datasets = response.json() |
| | |
| | resultados = [] |
| | for dataset in datasets: |
| | |
| | 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) |
| |
|
| | |
| | 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 = [] |
| | |
| | |
| | for dataset_id in datasets_seleccionados.split("\n"): |
| | dataset_id = dataset_id.strip("- ").split(":")[0] |
| | 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:]] |
| | 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 |
| |
|
| | |
| | def generar_encabezado_inteligente(tareas_seleccionadas, api_key): |
| | if not tareas_seleccionadas: |
| | raise ValueError("Debes seleccionar al menos una tarea.") |
| | |
| | |
| | if not api_key: |
| | raise ValueError("Debes proporcionar una API Key v谩lida.") |
| | |
| | |
| | API_URL = "https://api-inference.huggingface.co/models/google/flan-t5-large" |
| | headers = {"Authorization": f"Bearer {api_key}"} |
| | |
| | |
| | prompt = ( |
| | f"Genera un encabezado de CSV para las siguientes tareas: {', '.join(tareas_seleccionadas)}. " |
| | "El encabezado debe incluir 'id' como primer elemento y etiquetas relevantes para cada tarea." |
| | ) |
| | |
| | |
| | response = requests.post(API_URL, headers=headers, json={"inputs": prompt}) |
| | if response.status_code == 200: |
| | encabezado = response.json()[0]["generated_text"] |
| | return encabezado |
| | else: |
| | raise ValueError(f"Error al generar el encabezado: {response.text}") |