Daddario commited on
Commit
b7ffce6
·
verified ·
1 Parent(s): d113885

Update train.py

Browse files
Files changed (1) hide show
  1. train.py +26 -11
train.py CHANGED
@@ -1,24 +1,34 @@
1
- from transformers import Trainer, TrainingArguments, BertForTokenClassification
2
  from datasets import Dataset
3
  import json
 
 
 
 
 
4
 
5
  # Carica il dataset
6
  with open('entity_dataset.json', 'r') as f:
7
  dataset = json.load(f)
8
 
9
- # Prepara il dataset per l'addestramento
10
  def prepare_dataset(dataset):
11
- # Converti il dataset in un formato adatto per Hugging Face Dataset
12
- data = {
13
- "text": [entry["query"] for entry in dataset],
14
- "labels": [entry["entities"] for entry in dataset]
15
- }
16
- return Dataset.from_dict(data)
17
 
18
- train_dataset = prepare_dataset(dataset)
 
 
 
 
 
 
 
19
 
20
- # Carica il modello pre-addestrato
21
- model = BertForTokenClassification.from_pretrained("dbmdz/bert-base-italian-uncased")
 
 
22
 
23
  # Imposta i parametri di addestramento
24
  training_args = TrainingArguments(
@@ -27,6 +37,7 @@ training_args = TrainingArguments(
27
  learning_rate=2e-5, # Tasso di apprendimento
28
  per_device_train_batch_size=16, # Dimensione del batch
29
  num_train_epochs=3, # Numero di epoche
 
30
  )
31
 
32
  # Inizializza il trainer
@@ -38,3 +49,7 @@ trainer = Trainer(
38
 
39
  # Avvia l'addestramento
40
  trainer.train()
 
 
 
 
 
1
+ from transformers import BertTokenizer, BertForTokenClassification, Trainer, TrainingArguments
2
  from datasets import Dataset
3
  import json
4
+ import torch
5
+
6
+ # Carica il tokenizer e il modello pre-addestrato (dbmdz/bert-base-italian-uncased)
7
+ tokenizer = BertTokenizer.from_pretrained("dbmdz/bert-base-italian-uncased")
8
+ model = BertForTokenClassification.from_pretrained("dbmdz/bert-base-italian-uncased", num_labels=5) # Aggiungi il numero corretto di etichette (labels)
9
 
10
  # Carica il dataset
11
  with open('entity_dataset.json', 'r') as f:
12
  dataset = json.load(f)
13
 
14
+ # Funzione per preparare i dati
15
  def prepare_dataset(dataset):
16
+ input_texts = [entry["query"] for entry in dataset]
17
+ labels = [entry["entities"] for entry in dataset]
 
 
 
 
18
 
19
+ # Tokenizza i dati di input
20
+ encodings = tokenizer(input_texts, truncation=True, padding=True, max_length=512)
21
+ # Aggiungi le etichette (entità) come output
22
+ # Qui supponiamo che tu stia etichettando solo le entità (puoi adattare la funzione per il tuo caso)
23
+ # Nota: dovresti mappare le etichette in modo che corrispondano al formato richiesto per BERT
24
+
25
+ # Associa le etichette agli input tokenizzati
26
+ encodings['labels'] = torch.tensor(labels)
27
 
28
+ return Dataset.from_dict(encodings)
29
+
30
+ # Prepara il dataset per l'addestramento
31
+ train_dataset = prepare_dataset(dataset)
32
 
33
  # Imposta i parametri di addestramento
34
  training_args = TrainingArguments(
 
37
  learning_rate=2e-5, # Tasso di apprendimento
38
  per_device_train_batch_size=16, # Dimensione del batch
39
  num_train_epochs=3, # Numero di epoche
40
+ weight_decay=0.01 # Peso di decadimento (per evitare overfitting)
41
  )
42
 
43
  # Inizializza il trainer
 
49
 
50
  # Avvia l'addestramento
51
  trainer.train()
52
+
53
+ # Salva il modello addestrato
54
+ model.save_pretrained("./hotel_model")
55
+ tokenizer.save_pretrained("./hotel_model")