textRuleScore applyCategory

Catégorisation volumétrique d'avis produits avec sorties détaillées

Scénario de test & Cas d'usage

Contexte Métier

Une plateforme e-commerce doit analyser des milliers d'avis produits chaque jour pour détecter les tendances (ex: 'Problème de livraison', 'Qualité excellente', 'Autonomie batterie faible'). Le test vise à valider la performance sur un volume modéré et à générer des tables de correspondances détaillées pour une analyse approfondie des termes déclencheurs.
À propos du Set : textRuleScore

Scoring de documents textuels basé sur des règles.

Découvrir toutes les actions de textRuleScore
Préparation des Données

Création d'une table 'avis_produits' avec un volume de données plus important et d'un modèle de règles simulé 'modele_produits_mco'.

Copié !
1DATA casuser.avis_produits;
2 LENGTH id_avis $10. avis $500.;
3 DO i = 1 to 5000;
4 id_avis = 'AVIS_' || put(i, z5.);
5 IF mod(i, 3) = 0 THEN avis = 'La livraison a été un désastre, colis arrivé en retard et abîmé.';
6 ELSE IF mod(i, 2) = 0 THEN avis = 'Excellente qualité, je recommande ce produit. La batterie tient bien la charge.';
7 ELSE avis = 'Déçu par la faible autonomie de la batterie, ne dure pas une journée complète.';
8 OUTPUT;
9 END;
10RUN;
11 
12DATA casuser.modele_produits_mco;
13 LENGTH _mco_ $ 200;
14 _mco_ = 'simulated compiled product model'; OUTPUT;
15RUN;

Étapes de réalisation

1
Application du modèle en utilisant l'algorithme 'WEIGHTED' et en demandant la création des trois tables de sortie : principale, correspondances et correspondances groupées. Un délimiteur personnalisé est utilisé.
Copié !
1PROC CAS;
2 textRuleScore.applyCategory /
3 TABLE={name='avis_produits', caslib='casuser'},
4 model={name='modele_produits_mco', caslib='casuser'},
5 docId='id_avis',
6 text='avis',
7 scoringAlgorithm='WEIGHTED',
8 matchDelimiter=' / ',
9 casOut={name='avis_categorises', caslib='casuser', replace=true},
10 matchOut={name='avis_matches', caslib='casuser', replace=true},
11 groupedMatchOut={name='avis_grouped_matches', caslib='casuser', replace=true};
12RUN;
13QUIT;
2
Inspection des tables de sortie pour valider leur structure et leur contenu.
Copié !
1PROC CONTENTS DATA=casuser.avis_categorises;
2RUN;
3PROC CONTENTS DATA=casuser.avis_matches;
4RUN;
5PROC CONTENTS DATA=casuser.avis_grouped_matches;
6RUN;
7PROC PRINT DATA=casuser.avis_grouped_matches(obs=10);
8RUN;

Résultat Attendu


Trois tables sont créées. 'avis_categorises' contient le scoring principal. 'avis_matches' contient une ligne pour chaque terme ayant déclenché une règle. 'avis_grouped_matches' agrège ces termes par document et par catégorie, avec le délimiteur ' / ' séparant les termes. L'action doit se terminer dans un temps raisonnable malgré le volume de données.