conditionalRandomFields crfScore

Performance sur Volumétrie Élevée (E-commerce)

Scénario de test & Cas d'usage

Contexte Métier

Une plateforme e-commerce souhaite analyser les sentiments sur 500 000 avis clients en temps quasi-réel pour détecter les défauts produits récurrents (NER sur les composants défectueux).
Préparation des Données

Génération de 500 000 avis clients synthétiques via une boucle Data Step pour tester la tenue en charge.

Copié !
1 
2DATA casuser.large_reviews;
3LENGTH review_text $300;
4DO i=1 to 500000;
5doc_id=i;
6review_text = catx(' ', 'Le produit', put(i, z6.), 'est vraiment décevant au niveau de la batterie.');
7OUTPUT;
8END;
9 
10RUN;
11 

Étapes de réalisation

1
Exécution du scoring sur la table volumineuse
Copié !
1 
2PROC CAS;
3conditionalRandomFields.crfScore / TABLE={name='large_reviews', 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='scored_reviews_bulk', caslib='casuser', replace=true} target='ner_tags';
4 
5RUN;
6 
7QUIT;
8 
2
Vérification du nombre de lignes en sortie (doit correspondre à l'entrée)
Copié !
1 
2PROC CAS;
3TABLE.recordCount / TABLE={name='scored_reviews_bulk', caslib='casuser'};
4 
5RUN;
6 
7QUIT;
8 

Résultat Attendu


Le scoring doit traiter les 500 000 lignes dans un temps raisonnable sans erreur mémoire. La table de sortie 'scored_reviews_bulk' doit contenir exactement le même nombre de documents que la table d'entrée.