Upload folder using huggingface_hub
Browse files- README.md +19 -27
- camembert_chronicle/config.json +30 -0
- camembert_chronicle/model.safetensors +3 -0
- camembert_chronicle/tokenizer.json +0 -0
- camembert_chronicle/tokenizer_config.json +19 -0
- pro_chronicle_model.joblib +2 -2
- rf_metrics.json +45 -0
README.md
CHANGED
|
@@ -1,36 +1,28 @@
|
|
| 1 |
-
# Documentation
|
| 2 |
|
| 3 |
-
Ce dossier contient
|
| 4 |
|
| 5 |
-
##
|
| 6 |
|
| 7 |
-
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
- **
|
| 12 |
-
- **
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-
###
|
| 15 |
-
|
| 16 |
-
- **Position Relative (`rel_pos`)** : La progression dans l'émission (0.0 à 1.0). Les chroniques ont des horaires théoriques fixes.
|
| 17 |
-
- **Détection de Jingle (`has_jingle_now/prev`)** : Présence du tag `[JINGLE]`. C'est le prédicteur le plus fort pour marquer le début ou la fin d'une séquence.
|
| 18 |
-
- **Rythmique (`duration`, `is_very_short`)** : La durée du segment. Les lancements sont souvent courts et denses, les chroniques sont des blocs de texte longs et continus.
|
| 19 |
-
- **Mots-clés discriminants** : Présence de termes comme "METEO", "JOURNAL", "REDACTION" qui servent de balises structurelles.
|
| 20 |
|
| 21 |
-
##
|
| 22 |
-
- **Équilibrage (`class_weight='balanced'`)** : Comme les chroniques ne représentent qu'environ 15% du temps total d'une matinale, le modèle est forcé mathématiquement à accorder plus d'importance aux exemples de chroniques pour ne pas les ignorer au profit du "silence/bruit".
|
| 23 |
-
- **Lissage Temporel (Post-processing)** : Le script de prédiction applique un filtre après le passage du modèle pour combler les trous de détection de moins de 10s et supprimer les détections "fantômes" trop courtes pour être de vraies chroniques.
|
| 24 |
|
| 25 |
-
|
| 26 |
-
- `pro_chronicle_model.joblib` : Le fichier binaire contenant la pipeline complète (Vectoriseur + Forêt d'arbres).
|
| 27 |
|
| 28 |
-
##
|
| 29 |
-
|
| 30 |
|
| 31 |
-
##
|
| 32 |
-
|
| 33 |
-
```
|
| 34 |
-
hf upload eglantinefonrose/rlac-audiotranscript-segmenter-chroniques-bert ./models .
|
| 35 |
-
```
|
| 36 |
-
Il est disponible à
|
|
|
|
| 1 |
+
# Documentation des Modèles de Détection de Chroniques
|
| 2 |
|
| 3 |
+
Ce dossier contient les modèles entraînés pour identifier les segments de chroniques dans les transcriptions radio.
|
| 4 |
|
| 5 |
+
## Modèle Transformer (DistilCamemBERT)
|
| 6 |
|
| 7 |
+
C'est le modèle principal généré par `train.py`. Nous avons opté pour une version distillée afin d'accélérer les cycles d'expérimentation tout en conservant d'excellentes performances.
|
| 8 |
|
| 9 |
+
- **Type de modèle** : Transformer (Architecture BERT), utilisant `cmarkea/distilcamembert-base`.
|
| 10 |
+
- **Nombre de paramètres** : **~68 millions** (au lieu de 110M pour la version base).
|
| 11 |
+
- **Méthode d'apprentissage** : **Fine-tuning** sur des segments de transcriptions.
|
| 12 |
+
- **Optimisations** :
|
| 13 |
+
- **Modèle Distillé** : Utilise une version compressée de CamemBERT qui conserve environ 95% des performances tout en étant beaucoup plus légère.
|
| 14 |
+
- **Fenêtre Contextuelle** : `max_length` de 128 tokens pour un équilibre optimal entre contexte et temps de calcul.
|
| 15 |
+
- **Efficacité** : Le modèle est suffisamment léger pour être ultra-rapide en Python standard, sans nécessiter de formats de quantification complexes comme GGUF.
|
| 16 |
|
| 17 |
+
### Pourquoi DistilCamemBERT ?
|
| 18 |
+
C'est le compromis idéal : il comprend parfaitement les nuances du français mais s'entraîne et s'exécute beaucoup plus vite que le modèle standard.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
+
## Utilisation
|
|
|
|
|
|
|
| 21 |
|
| 22 |
+
Le script `train.py` entraîne ce modèle. Pour utiliser ce modèle en prédiction, le script `predict.py` doit pointer vers le dossier `models/camembert_chronicle`.
|
|
|
|
| 23 |
|
| 24 |
+
## Fichiers de sortie
|
| 25 |
+
- `camembert_chronicle/` : Dossier contenant les poids du modèle, la configuration et le tokenizer au format Hugging Face.
|
| 26 |
|
| 27 |
+
## Méthode d'entraînement
|
| 28 |
+
L'entraînement est effectué sur l'intégralité des données disponibles (transcriptions Whisper couplées à des timecodes de référence) pour maximiser la capacité de détection sémantique des segments de chroniques.
|
|
|
|
|
|
|
|
|
|
|
|
camembert_chronicle/config.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_cross_attention": false,
|
| 3 |
+
"architectures": [
|
| 4 |
+
"CamembertForSequenceClassification"
|
| 5 |
+
],
|
| 6 |
+
"attention_probs_dropout_prob": 0.1,
|
| 7 |
+
"bos_token_id": 5,
|
| 8 |
+
"classifier_dropout": null,
|
| 9 |
+
"dtype": "float32",
|
| 10 |
+
"eos_token_id": 6,
|
| 11 |
+
"hidden_act": "gelu",
|
| 12 |
+
"hidden_dropout_prob": 0.1,
|
| 13 |
+
"hidden_size": 768,
|
| 14 |
+
"initializer_range": 0.02,
|
| 15 |
+
"intermediate_size": 3072,
|
| 16 |
+
"is_decoder": false,
|
| 17 |
+
"layer_norm_eps": 1e-05,
|
| 18 |
+
"max_position_embeddings": 514,
|
| 19 |
+
"model_type": "camembert",
|
| 20 |
+
"num_attention_heads": 12,
|
| 21 |
+
"num_hidden_layers": 12,
|
| 22 |
+
"output_past": true,
|
| 23 |
+
"pad_token_id": 1,
|
| 24 |
+
"problem_type": "single_label_classification",
|
| 25 |
+
"tie_word_embeddings": true,
|
| 26 |
+
"transformers_version": "5.5.4",
|
| 27 |
+
"type_vocab_size": 1,
|
| 28 |
+
"use_cache": false,
|
| 29 |
+
"vocab_size": 32005
|
| 30 |
+
}
|
camembert_chronicle/model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b78a4b8b81b005fbd4708d3abd54d58a6964f28cc9e25aac1f3c6b7af8d19586
|
| 3 |
+
size 442518080
|
camembert_chronicle/tokenizer.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
camembert_chronicle/tokenizer_config.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_prefix_space": true,
|
| 3 |
+
"backend": "tokenizers",
|
| 4 |
+
"bos_token": "<s>",
|
| 5 |
+
"cls_token": "<s>",
|
| 6 |
+
"eos_token": "</s>",
|
| 7 |
+
"extra_special_tokens": [
|
| 8 |
+
"<s>NOTUSED",
|
| 9 |
+
"</s>NOTUSED",
|
| 10 |
+
"<unk>NOTUSED"
|
| 11 |
+
],
|
| 12 |
+
"is_local": false,
|
| 13 |
+
"mask_token": "<mask>",
|
| 14 |
+
"model_max_length": 512,
|
| 15 |
+
"pad_token": "<pad>",
|
| 16 |
+
"sep_token": "</s>",
|
| 17 |
+
"tokenizer_class": "CamembertTokenizer",
|
| 18 |
+
"unk_token": "<unk>"
|
| 19 |
+
}
|
pro_chronicle_model.joblib
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f10df7f096bf8d01377b70577ad6e6002029240d74fb3710ad14d9e96f19b562
|
| 3 |
+
size 65502658
|
rf_metrics.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"best_params": {
|
| 3 |
+
"clf__max_depth": null,
|
| 4 |
+
"clf__n_estimators": 100,
|
| 5 |
+
"preprocessor__txt__max_features": 5000
|
| 6 |
+
},
|
| 7 |
+
"cv_f1_mean": 0.9771736061326074,
|
| 8 |
+
"test_report": {
|
| 9 |
+
"0": {
|
| 10 |
+
"precision": 0.9441176470588235,
|
| 11 |
+
"recall": 0.7109634551495017,
|
| 12 |
+
"f1-score": 0.8111181301326595,
|
| 13 |
+
"support": 903.0
|
| 14 |
+
},
|
| 15 |
+
"1": {
|
| 16 |
+
"precision": 0.9855257320319432,
|
| 17 |
+
"recall": 0.9978662474029985,
|
| 18 |
+
"f1-score": 0.9916575988393181,
|
| 19 |
+
"support": 17809.0
|
| 20 |
+
},
|
| 21 |
+
"accuracy": 0.9840209491235571,
|
| 22 |
+
"macro avg": {
|
| 23 |
+
"precision": 0.9648216895453834,
|
| 24 |
+
"recall": 0.85441485127625,
|
| 25 |
+
"f1-score": 0.9013878644859888,
|
| 26 |
+
"support": 18712.0
|
| 27 |
+
},
|
| 28 |
+
"weighted avg": {
|
| 29 |
+
"precision": 0.983527468846248,
|
| 30 |
+
"recall": 0.9840209491235571,
|
| 31 |
+
"f1-score": 0.9829451608186835,
|
| 32 |
+
"support": 18712.0
|
| 33 |
+
}
|
| 34 |
+
},
|
| 35 |
+
"confusion_matrix": [
|
| 36 |
+
[
|
| 37 |
+
642,
|
| 38 |
+
261
|
| 39 |
+
],
|
| 40 |
+
[
|
| 41 |
+
38,
|
| 42 |
+
17771
|
| 43 |
+
]
|
| 44 |
+
]
|
| 45 |
+
}
|