# Allenare e validare i modelli
Ogni volta che cambi gli esempi degli intent, le regole o le conversazioni, riaddestra.
La pipeline completa
python -m pipelineEsegue in ordine:
- Validazione di intenti ed entità: duplicati e frasi presenti in intent diversi bloccano il training.
- Corpus per l'embedding.
- Merge di regole, risposte e conversazioni in
.cognitor/. - Embedding: skip-gram interno su vocabolario SentencePiece (default) oppure FastText.
- Dataset tokenizzato e tag NER.
- Intent Classifier (BiGRU + Attention + CRF).
- Dialogue Policy.
python -m pipeline esegue sempre tutti gli step. Per saltare classifier o policy chiama run_full_pipeline(train_classifier=False) o run_full_pipeline(train_policy=False) (da from pipeline import run_full_pipeline).
Scegliere l'embedding
Lo switch è USE_FASTTEXT in config.py, controllato dalla variabile d'ambiente COGNITOR_USE_FASTTEXT (default false).
| Default (`false`) | `true` | |
|---|---|---|
| Algoritmo | skip-gram + negative sampling | FastText |
| Vocabolario | SentencePiece | parole + n-grammi |
| Dipendenza | `sentencepiece` | `fasttext-wheel` (opzionale) |
COGNITOR_USE_FASTTEXT=true python -m pipelineCambiando embedding devi riaddestrare tutto: classifier e embedding vanno sempre insieme.
Solo la validazione
python -c "
from pipeline.validator import DatasetValidator
print(DatasetValidator('knowledge', 'training_data').validate_all())"È veloce e va lanciata prima del training completo.
Riproducibilità
La pipeline fissa i seed (42): due training sullo stesso dataset danno lo stesso modello. Se dopo una modifica cambia il comportamento di frasi che non hai toccato, il responsabile è il dataset, non il caso.
Cosa viene generato
.cognitor/: file di lavoro (vocabolario, dataset tokenizzato, regole e risposte unite). Viene svuotato a ogni run.models/intent_model_fast.pth: classifier.models/dialogue_policy.pth: policy di dialogo.
Prossimo passo: [Capire perché un intent viene sbagliato](/guides/debug-intent).