langModel

calculateErrorRate

##set_langmodel

Description

L'action calculateErrorRate est l'outil ultime pour évaluer la précision de vos systèmes de reconnaissance vocaleTechnologie SAS Viya transformant un signal audio en texte via des modèles de Deep Learning (RNN, CNN) pour l'analyse de conversations, le sous-titrage ou le contrôle par commandes vocales. (ASRL'ASR (Automatic Speech Recognition) est une technologie utilisant l'IA pour transcrire instantanément le langage parlé en texte, facilitant l'analyse vocale au sein de SAS Viya.). Elle compare des transcriptions générées (hypothèses) à des transcriptions de référence (la vérité terrain). Elle calcule les métriques standards de l'industrie : le taux d'erreur par mot (WER - Word Error RateLe Word Error Rate (WER) mesure la précision d'une transcription ASR en calculant le ratio d'insertions, de substitutions et de suppressions par rapport au nombre total de mots d'origine.), le taux d'erreur par caractère (CER - Character Error Rate) et le taux d'erreur par phrase (SER - Sentence Error RateLe Sentence Error Rate (SER) mesure le pourcentage de phrases transcrites par un système ASR contenant au moins une erreur par rapport au nombre total de phrases de référence.). Parce que bon, même si l'IA est géniale, elle a parfois besoin d'un petit rappel à l'ordre quand elle confond 'SAS Viya' avec 'Chat S'il Vous Plaît' !

Syntaxe Officielle
langModel.calculateErrorRate /
reference={name="nom_table_reference", ...} /* Table des textes de référence */
table={name="nom_table_hypothese", ...} /* Table des textes prédits */
referenceId="colonne_ID_ref" /* Identifiant unique */
referenceText="colonne_texte_ref" /* Texte correct */
tableId="colonne_ID_hyp" /* Identifiant dans la table prédite */
tableText="colonne_texte_hyp" /* Texte prédit */

Paramètres Clés

Nom du paramètre Description
reference Spécifie la table CAS contenant les transcriptions de référence (le 'Ground Truth'). C'est la base de comparaison .
table Spécifie la table CAS contenant les transcriptions hypothétiques (généralement produites par une action comme transcribeSpeech). Alias : hypothesis .
referenceId Nom de la colonne dans la table de référence qui sert d'identifiant unique pour lier les lignes entre les deux tables.
referenceText Nom de la colonne contenant le texte source correct dans la table de référence.
tableId Nom de la colonne d'identifiant dans la table d'hypothèse. Alias : hypothesisId.
tableText Nom de la colonne contenant le texte transcrit à évaluer. Alias : hypothesisText.

Préparation des données

Préparation des transcriptions pour évaluation

Nous créons deux tables : une table de référence avec les phrases exactes et une table d'hypothèse simulant les erreurs d'un moteur de reconnaissance vocale.

1PROC CAS;
2 TABLE.loadTable / path="reference.csv", casout={name="ref_transcripts", replace=true};
3 TABLE.loadTable / path="hypothesis.csv", casout={name="hyp_transcripts", replace=true};
4 /* Ou création directe via datastep pour le test */
5 DATA casuser.ref_transcripts;
6 LENGTH id 8 text $100;
7 id=1; text="le chat mange la souris"; OUTPUT;
8 id=2; text="sas viya est puissant"; OUTPUT;
9 RUN;
10 DATA casuser.hyp_transcripts;
11 LENGTH id 8 text $100;
12 id=1; text="le chat mange une souris"; OUTPUT; /* Une erreur de substitution */
13 id=2; text="sas villa est puissant"; OUTPUT; /* Une erreur de substitution */
14 RUN;
15QUIT;

Exemples d'utilisation

Calcul basique du taux d'erreur

Une comparaison directe entre deux tables en utilisant les paramètres par défaut (première colonne pour l'ID, seconde pour le texte).

1PROC CAS; langModel.calculateErrorRate / reference={name="ref_transcripts"}, TABLE={name="hyp_transcripts"}; RUN; QUIT;
Résultat Attendu :
Un tableau de résultats affichant le WER (Word Error Rate), le CER (Character Error Rate) et le nombre total d'insertions, suppressions et substitutions.
Évaluation complète avec mapping explicite des colonnes

Dans cet exemple, nous spécifions précisément quelles colonnes utiliser. C'est la méthode recommandée pour éviter que SAS ne choisisse les mauvaises colonnes par défaut (surtout si votre table est un joyeux bazar).

1PROC CAS;
2 langModel.calculateErrorRate /
3 reference={name="ref_transcripts", caslib="casuser"}
4 TABLE={name="hyp_transcripts", caslib="casuser"}
5 referenceId="id"
6 referenceText="text"
7 tableId="id"
8 tableText="text";
9RUN;
10QUIT;
Résultat Attendu :
Une analyse détaillée montrant que pour l'ID 1, il y a 1 erreur sur 5 mots (WER = 20%). Le rapport final inclut les statistiques agrégées pour l'ensemble du jeu de données.