?>
L'action `calculateErrorRate` est un outil fondamental dans les projets de reconnaissance vocale (Speech-to-Text). Elle permet de quantifier la performance d'un modèle en comparant ses transcriptions (hypothèses) avec un texte de référence (vérité terrain). Elle calcule des métriques clés comme le Taux d'Erreur par Mot (WER - Word Error Rate) et le Taux d'Erreur par Caractère (CER - Character Error Rate), qui sont des standards pour évaluer la précision de ces systèmes.
| Parameter | Beschreibung |
|---|---|
| reference | Spécifie la table CAS contenant les transcriptions de référence (la vérité terrain). C'est la table qui contient le texte correct. |
| referenceId | Nom de la colonne dans la table de référence qui contient l'identifiant unique pour chaque transcription. Permet de joindre avec la table d'hypothèses. |
| referenceText | Nom de la colonne dans la table de référence qui contient le texte de référence lui-même. |
| table | Spécifie la table CAS contenant les transcriptions hypothétiques (généralement la sortie d'un modèle de reconnaissance vocale). |
| tableId | Nom de la colonne dans la table d'hypothèses qui contient l'identifiant unique pour chaque transcription. Doit correspondre aux identifiants de `referenceId`. |
| tableText | Nom de la colonne dans la table d'hypothèses qui contient le texte à évaluer. |
Nous créons deux tables dans la caslib `casuser`. La première, `ref_transcripts`, contient le texte correct (vérité). La seconde, `hyp_transcripts`, contient le texte généré par un modèle, avec quelques erreurs intentionnelles (substitution, insertion, suppression) pour illustrer le calcul du taux d'erreur.
1 DATA casuser.ref_transcripts; 2 INFILE DATALINES dsd; 3 LENGTH id 8 text $100; 4 INPUT id text $; 5 DATALINES; 6 1,le chat est sur le tapis 7 2,il fait beau aujourd'hui 8 3,ceci est un test 9 ; 10 run; 11 12 data casuser.hyp_transcripts; 13 infile datalines dsd; 14 length id 8 text $100; 15 input id text $; 16 datalines; 17 1,le chat est sur la tapis 18 2,il fait aujourd'hui 19 3,ceci est un super test 20 ; 21 RUN;
Cet exemple compare les deux tables (`ref_transcripts` et `hyp_transcripts`) pour calculer le taux d'erreur global (mots et caractères). Les colonnes sont explicitement mappées avec les paramètres `referenceId`, `referenceText`, `tableId` et `tableText`.
| 1 | PROC CAS; |
| 2 | langModel.calculateErrorRate / |
| 3 | reference={name='ref_transcripts'}, |
| 4 | referenceId='id', |
| 5 | referenceText='text', |
| 6 | TABLE={name='hyp_transcripts'}, |
| 7 | tableId='id', |
| 8 | tableText='text'; |
| 9 | RUN; |
| 10 | QUIT; |
Cet exemple montre comment utiliser la clause `where` à l'intérieur des définitions de table pour ne calculer le taux d'erreur que sur un sous-ensemble des données. Ici, nous ignorons la première phrase (id=1) et ne calculons les erreurs que pour les phrases avec un id supérieur à 1.
| 1 | PROC CAS; |
| 2 | langModel.calculateErrorRate / |
| 3 | reference={name='ref_transcripts', where='id > 1'}, |
| 4 | referenceId='id', |
| 5 | referenceText='text', |
| 6 | TABLE={name='hyp_transcripts', where='id > 1'}, |
| 7 | tableId='id', |
| 8 | tableText='text'; |
| 9 | RUN; |
| 10 | QUIT; |
Ce scénario simule une situation où les tables source ont des noms de colonnes différents des noms par défaut. Nous créons les tables `ref_alt` et `hyp_alt` avec les colonnes `doc_id` et `transcription`. L'exemple montre comment mapper correctement ces noms de colonnes en utilisant les paramètres `referenceId`, `referenceText`, `tableId` et `tableText` pour que l'action fonctionne correctement.
| 1 | DATA casuser.ref_alt; |
| 2 | INFILE DATALINES dsd; |
| 3 | LENGTH doc_id $10 transcription $100; |
| 4 | INPUT doc_id $ transcription $; |
| 5 | DATALINES; |
| 6 | sentence1,le chat est sur le tapis |
| 7 | sentence2,il fait beau aujourd'hui |
| 8 | ; |
| 9 | run; |
| 10 | |
| 11 | data casuser.hyp_alt; |
| 12 | infile datalines dsd; |
| 13 | length doc_id $10 transcription $100; |
| 14 | input doc_id $ transcription $; |
| 15 | datalines; |
| 16 | sentence1,le chat est sur la tapis |
| 17 | sentence2,il fait aujourd'hui |
| 18 | ; |
| 19 | RUN; |
| 20 | |
| 21 | PROC CAS; |
| 22 | langModel.calculateErrorRate / |
| 23 | reference={name='ref_alt'}, |
| 24 | referenceId='doc_id', |
| 25 | referenceText='transcription', |
| 26 | TABLE={name='hyp_alt'}, |
| 27 | tableId='doc_id', |
| 28 | tableText='transcription'; |
| 29 | RUN; |
| 30 | QUIT; |