conditionalRandomFields crfScore

Cas Limites et Données Sales (Finance)

Scénario de test & Cas d'usage

Contexte Métier

Une banque analyse des logs de transactions bruts. Les données contiennent souvent des erreurs : champs vides, caractères spéciaux, ou chaînes extrêmement longues qui pourraient faire planter le parseur.
Préparation des Données

Création d'un jeu de données 'sale' : textes vides, NULL, caractères spéciaux et textes très longs.

Copié !
1 
2DATA casuser.dirty_logs;
3LENGTH log_entry $5000;
4/* Cas 1: Texte vide */ doc_id=1;
5log_entry='';
6OUTPUT;
7/* Cas 2: Caractères spéciaux */ doc_id=2;
8log_entry='Erreur #@&%! system failure';
9OUTPUT;
10/* Cas 3: Texte très long */ doc_id=3;
11log_entry=repeat('Alerte ', 500);
12OUTPUT;
13/* Cas 4: Valeur manquante sas */ doc_id=4;
14call missing(log_entry);
15OUTPUT;
16 
17RUN;
18 

Étapes de réalisation

1
Tentative de scoring sur des données corrompues
Copié !
1 
2PROC CAS;
3conditionalRandomFields.crfScore / TABLE={name='dirty_logs', caslib='casuser'} model={ label={name='model_label', caslib='casuser'}, attr={name='model_attr', caslib='casuser'}, feature={name='model_feature', caslib='casuser'}, attrfeature={name='model_attrfeature', caslib='casuser'}, template={name='model_template', caslib='casuser'} } casOut={name='dirty_scored', caslib='casuser', replace=true} target='predicted_tags';
4 
5RUN;
6 
7QUIT;
8 
2
Analyse des résultats pour les cas vides/nulls
Copié !
1 
2PROC CAS;
3TABLE.fetch / TABLE={name='dirty_scored', caslib='casuser'} where='doc_id in (1, 4)';
4 
5RUN;
6 
7QUIT;
8 

Résultat Attendu


L'action ne doit pas crasher (SegFault). Elle doit gérer gracieusement les chaînes vides ou NULLs (probablement en renvoyant une séquence vide ou une valeur manquante dans la colonne 'predicted_tags'). Les textes longs doivent être traités ou tronqués proprement.