Spaces:
Runtime error
Runtime error
| from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments | |
| from datasets import load_dataset | |
| # Definir el nombre del modelo | |
| model_name = "bert-base-uncased" | |
| # Cargar el tokenizador y el modelo preentrenado | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2) | |
| # Cargar el dataset de Hugging Face | |
| dataset = load_dataset("GenaroCoronel/godot_docs") | |
| print("Data set cargado godot_docs.json .....") | |
| print(dataset) | |
| # Verifica las columnas originales antes de cualquier procesamiento | |
| print("Columnas originales del dataset:") | |
| print(dataset['train'].column_names) | |
| # Función para concatenar los campos relevantes | |
| def preprocess_function(examples): | |
| texts = [] | |
| for i in range(len(examples['name'])): | |
| text = f"Name: {examples['name'][i]}, Inherits: {examples['inherits'][i]}, " | |
| text += f"Brief Description: {examples['brief_description'][i]}, Description: {examples['description'][i]}" | |
| # Concatenar métodos | |
| methods = examples['methods'][i] | |
| methods_text = "Methods: " | |
| for method in methods: | |
| methods_text += f"{method['name']}({', '.join([param['name'] for param in method['params']])}), " | |
| text += methods_text | |
| # Concatenar miembros | |
| members = examples['members'][i] | |
| members_text = "Members: " | |
| for member in members: | |
| members_text += f"{member['name']} (Type: {member['type']}), " | |
| text += members_text | |
| texts.append(text) | |
| return {"text": texts} | |
| # Preprocesar el dataset | |
| processed_datasets = dataset.map(preprocess_function, batched=True) | |
| # Verifica las columnas del dataset procesado | |
| print("Columnas después de preprocesar:") | |
| print(processed_datasets['train'].column_names) | |
| # Tokenizar el dataset | |
| def tokenize_function(examples): | |
| # Verifica si la columna 'text' está presente | |
| if 'text' not in examples: | |
| print("Columna 'text' no encontrada, saltando esta iteración.") | |
| return {} # Si no hay 'text', no retorna nada para esta iteración | |
| # Tokenizar los textos | |
| tokenized_examples = tokenizer(examples['text'], padding="max_length", truncation=True) | |
| # Crear etiquetas basadas en algún criterio (ejemplo: 0 si 'Label' está en el nombre, 1 en otro caso) | |
| tokenized_examples['labels'] = [0 if 'Label' in text else 1 for text in examples['text']] | |
| return tokenized_examples | |
| # Aplicar la tokenización al dataset | |
| tokenized_datasets = processed_datasets.map(tokenize_function, batched=True) | |
| # Filtrar filas que no contienen datos válidos | |
| tokenized_datasets = tokenized_datasets.filter(lambda example: example is not None) | |
| # Verifica que el dataset ha sido tokenizado correctamente | |
| print("Dataset después de la tokenización:") | |
| print(tokenized_datasets) | |
| # Configuración de los argumentos de entrenamiento | |
| training_args = TrainingArguments( | |
| output_dir='./results', # Directorio donde guardar los resultados | |
| num_train_epochs=3, # Número de épocas | |
| per_device_train_batch_size=8, # Tamaño del batch para entrenamiento | |
| per_device_eval_batch_size=16, # Tamaño del batch para evaluación | |
| logging_dir='./logs', # Directorio para logs | |
| ) | |
| # Inicializar el Trainer | |
| trainer = Trainer( | |
| model=model, # El modelo que entrenaremos | |
| args=training_args, # Argumentos de entrenamiento | |
| train_dataset=tokenized_datasets['train'], # Dataset de entrenamiento | |
| ) | |
| # Entrenar el modelo | |
| trainer.train() | |
| # Guardar el modelo entrenado | |
| model.save_pretrained('./trained_model') | |
| tokenizer.save_pretrained('./trained_model') | |
| print("Entrenamiento completado y modelo guardado.") | |