Scénario de test & Cas d'usage
Scoring de documents textuels basé sur des règles.
Découvrir toutes les actions de textRuleScoreCré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'.
| 1 | DATA 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; |
| 10 | RUN; |
| 11 | |
| 12 | DATA casuser.modele_produits_mco; |
| 13 | LENGTH _mco_ $ 200; |
| 14 | _mco_ = 'simulated compiled product model'; OUTPUT; |
| 15 | RUN; |
| 1 | PROC 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}; |
| 12 | RUN; |
| 13 | QUIT; |
| 1 | PROC CONTENTS DATA=casuser.avis_categorises; |
| 2 | RUN; |
| 3 | PROC CONTENTS DATA=casuser.avis_matches; |
| 4 | RUN; |
| 5 | PROC CONTENTS DATA=casuser.avis_grouped_matches; |
| 6 | RUN; |
| 7 | PROC PRINT DATA=casuser.avis_grouped_matches(obs=10); |
| 8 | RUN; |
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.