Update functions.py
Browse files- functions.py +22 -20
functions.py
CHANGED
|
@@ -64,38 +64,35 @@ def generar_encabezado(tareas_seleccionadas):
|
|
| 64 |
|
| 65 |
return ",".join(columnas_ordenadas)
|
| 66 |
|
| 67 |
-
# Buscar datasets
|
| 68 |
def buscar_datasets(tareas_seleccionadas, filtro_tamaño, filtro_licencia):
|
| 69 |
try:
|
| 70 |
-
#
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
url = f"https://huggingface.co/api/datasets?search={query}&full=True" # Parámetro 'full' para más detalles <button class="citation-flag" data-index="1">
|
| 74 |
response = requests.get(url)
|
| 75 |
response.raise_for_status()
|
| 76 |
datasets = response.json()
|
| 77 |
|
|
|
|
| 78 |
datasets_utiles = []
|
| 79 |
for dataset in datasets:
|
| 80 |
try:
|
| 81 |
-
# Verificar
|
| 82 |
-
if filtro_tamaño and dataset.get("size_categories", "").lower() != filtro_tamaño:
|
| 83 |
-
continue
|
| 84 |
if filtro_licencia and dataset.get("license", "").lower() != filtro_licencia:
|
| 85 |
continue
|
|
|
|
|
|
|
| 86 |
|
| 87 |
# Verificar columnas relevantes
|
| 88 |
dataset_info = requests.get(f"https://huggingface.co/api/datasets/{dataset['id']}").json()
|
| 89 |
if "features" in dataset_info:
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
datasets_utiles.append(
|
| 94 |
-
(dataset['id'], f"{dataset['id']} ({dataset['tags']}) - {dataset['description']}")
|
| 95 |
-
)
|
| 96 |
|
| 97 |
except requests.exceptions.RequestException:
|
| 98 |
-
continue
|
| 99 |
|
| 100 |
return datasets_utiles
|
| 101 |
|
|
@@ -103,7 +100,7 @@ def buscar_datasets(tareas_seleccionadas, filtro_tamaño, filtro_licencia):
|
|
| 103 |
raise ValueError(f"Error al buscar datasets: {str(e)}")
|
| 104 |
|
| 105 |
|
| 106 |
-
# Generar dataset
|
| 107 |
def generar_dataset(encabezado, datasets_seleccionados, pagina_actual=1, filas_por_pagina=5):
|
| 108 |
try:
|
| 109 |
columnas = encabezado.split(",")
|
|
@@ -112,17 +109,22 @@ def generar_dataset(encabezado, datasets_seleccionados, pagina_actual=1, filas_p
|
|
| 112 |
for dataset_id in datasets_seleccionados:
|
| 113 |
try:
|
| 114 |
dataset = load_dataset(dataset_id, split="train")
|
| 115 |
-
|
| 116 |
|
| 117 |
-
# Mapear columnas
|
| 118 |
mapeo = {}
|
| 119 |
for col in columnas:
|
| 120 |
if col == "id":
|
| 121 |
mapeo[col] = lambda idx: f"id_{idx}"
|
| 122 |
-
elif col in
|
| 123 |
mapeo[col] = lambda fila, c=col: str(fila[c])
|
| 124 |
else:
|
| 125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
|
| 127 |
inicio = (pagina_actual - 1) * filas_por_pagina
|
| 128 |
fin = pagina_actual * filas_por_pagina
|
|
|
|
| 64 |
|
| 65 |
return ",".join(columnas_ordenadas)
|
| 66 |
|
| 67 |
+
# Buscar datasets usando tags oficiales de HuggingFace
|
| 68 |
def buscar_datasets(tareas_seleccionadas, filtro_tamaño, filtro_licencia):
|
| 69 |
try:
|
| 70 |
+
# Usar tags oficiales para búsqueda precisa
|
| 71 |
+
query = "+".join([f"task:{tarea}" for tarea in tareas_seleccionadas])
|
| 72 |
+
url = f"https://huggingface.co/api/datasets?search={query}&sort=downloads"
|
|
|
|
| 73 |
response = requests.get(url)
|
| 74 |
response.raise_for_status()
|
| 75 |
datasets = response.json()
|
| 76 |
|
| 77 |
+
# Filtrar datasets útiles
|
| 78 |
datasets_utiles = []
|
| 79 |
for dataset in datasets:
|
| 80 |
try:
|
| 81 |
+
# Verificar licencia y tamaño
|
|
|
|
|
|
|
| 82 |
if filtro_licencia and dataset.get("license", "").lower() != filtro_licencia:
|
| 83 |
continue
|
| 84 |
+
if filtro_tamaño and dataset.get("size_categories", "").lower() != filtro_tamaño:
|
| 85 |
+
continue
|
| 86 |
|
| 87 |
# Verificar columnas relevantes
|
| 88 |
dataset_info = requests.get(f"https://huggingface.co/api/datasets/{dataset['id']}").json()
|
| 89 |
if "features" in dataset_info:
|
| 90 |
+
datasets_utiles.append(
|
| 91 |
+
(dataset['id'], f"{dataset['id']} ({dataset['tags']}) - {dataset['description']}")
|
| 92 |
+
)
|
|
|
|
|
|
|
|
|
|
| 93 |
|
| 94 |
except requests.exceptions.RequestException:
|
| 95 |
+
continue
|
| 96 |
|
| 97 |
return datasets_utiles
|
| 98 |
|
|
|
|
| 100 |
raise ValueError(f"Error al buscar datasets: {str(e)}")
|
| 101 |
|
| 102 |
|
| 103 |
+
# Generar dataset con mapeo dinámico de columnas
|
| 104 |
def generar_dataset(encabezado, datasets_seleccionados, pagina_actual=1, filas_por_pagina=5):
|
| 105 |
try:
|
| 106 |
columnas = encabezado.split(",")
|
|
|
|
| 109 |
for dataset_id in datasets_seleccionados:
|
| 110 |
try:
|
| 111 |
dataset = load_dataset(dataset_id, split="train")
|
| 112 |
+
features = dataset.features
|
| 113 |
|
| 114 |
+
# Mapear columnas automáticamente
|
| 115 |
mapeo = {}
|
| 116 |
for col in columnas:
|
| 117 |
if col == "id":
|
| 118 |
mapeo[col] = lambda idx: f"id_{idx}"
|
| 119 |
+
elif col in features:
|
| 120 |
mapeo[col] = lambda fila, c=col: str(fila[c])
|
| 121 |
else:
|
| 122 |
+
# Buscar columna alternativa (ej. 'text' para 'text_input')
|
| 123 |
+
columna_alternativa = next(
|
| 124 |
+
(k for k in features if col.split("_")[0] in k),
|
| 125 |
+
"valor_default"
|
| 126 |
+
)
|
| 127 |
+
mapeo[col] = lambda fila, c=columna_alternativa: str(fila.get(c, "N/A"))
|
| 128 |
|
| 129 |
inicio = (pagina_actual - 1) * filas_por_pagina
|
| 130 |
fin = pagina_actual * filas_por_pagina
|