File size: 2,142 Bytes
2680fc6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from transformers import BertTokenizer, BertForTokenClassification, Trainer, TrainingArguments
from datasets import load_dataset

# Carica il dataset dalla repository (sostituisci con il nome corretto dei file)
dataset = load_dataset("daddario/hotel", data_files="entity_dataset.json")

# Carica il tokenizer pre-addestrato
tokenizer = BertTokenizer.from_pretrained('dbmdz/bert-base-italian-uncased')

# Funzione per tokenizzare il testo e allineare le etichette
def tokenize_and_align_labels(examples):
    tokenized_inputs = tokenizer(examples['query'], truncation=True, padding=True, is_split_into_words=False)
    labels = []

    for i, word in enumerate(examples['query'].split()):
        label = 'O'  # Default 'O' (no entity)

        for entity, value in examples['entities'].items():
            if word in value:
                label = entity
                break
        labels.append(label)

    tokenized_inputs["labels"] = labels
    return tokenized_inputs

# Preprocessamento dei dati
dataset = dataset.map(tokenize_and_align_labels, batched=True)

# Carica il modello per il riconoscimento delle entità
model = BertForTokenClassification.from_pretrained('dbmdz/bert-base-italian-uncased', num_labels=len(dataset['train'].features['labels'].feature))

# Configurazione dell'addestramento
training_args = TrainingArguments(
    output_dir='./results',          
    evaluation_strategy="epoch",     
    learning_rate=2e-5,              
    per_device_train_batch_size=16,  
    num_train_epochs=3,             
    logging_dir='./logs',            
    logging_steps=10,                
    weight_decay=0.01,               
    save_steps=10_000,               
    load_best_model_at_end=True,     
)

# Crea il Trainer per addestrare il modello
trainer = Trainer(
    model=model,                          
    args=training_args,                   
    train_dataset=dataset['train'],      
    eval_dataset=dataset['test'],        
)

# Addestramento del modello
trainer.train()

# Salva il modello e il tokenizer nella repository
model.save_pretrained("daddario/hotel")
tokenizer.save_pretrained("daddario/hotel")