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 de descriptions de produits avec des cas complexes : texte manquant, concepts imbriqués ('iPhone' vs 'iPhone Pro'), et concepts génériques à ignorer ('produit').
| 1 | DATA casuser.descriptions_produits; |
| 2 | INFILE DATALINES delimiter='|'; |
| 3 | LENGTH id_prod $10 description $500; |
| 4 | INPUT id_prod$ description$; |
| 5 | DATALINES; |
| 6 | PROD01|Le nouvel iPhone Pro est disponible en noir sidéral. Un produit exceptionnel. |
| 7 | PROD02|Samsung Galaxy S22, couleur blanc fantôme. |
| 8 | PROD03| |
| 9 | PROD04|iPhone 14 standard. Le meilleur produit Apple. |
| 10 | ; |
| 11 | RUN; |
| 12 | |
| 13 | DATA casuser.ecommerce_liti_model; |
| 14 | LENGTH model $200; |
| 15 | INFILE DATALINES; |
| 16 | INPUT model$; |
| 17 | DATALINES; |
| 18 | CONCEPT:PRODUIT_GEN:(OR, "produit") |
| 19 | CONCEPT:MARQUE:(OR, "Apple", "Samsung") |
| 20 | CONCEPT:IPHONE:(OR, "iPhone", "iPhone 14") |
| 21 | CONCEPT:IPHONE_PRO:(OR, "iPhone Pro") |
| 22 | CONCEPT:COULEUR:(OR, "noir sidéral", "blanc fantôme") |
| 23 | ; |
| 24 | RUN; |
| 1 | PROC CAS; |
| 2 | textRuleScore.applyConcept / |
| 3 | TABLE={caslib='casuser', name='descriptions_produits'}, |
| 4 | docId='id_prod', |
| 5 | text='description', |
| 6 | model={caslib='casuser', name='ecommerce_liti_model'}, |
| 7 | matchType='ALL', |
| 8 | casOut={caslib='casuser', name='ecommerce_matches_all', replace=true}; |
| 9 | RUN; |
| 1 | PROC CAS; |
| 2 | textRuleScore.applyConcept / |
| 3 | TABLE={caslib='casuser', name='descriptions_produits'}, |
| 4 | docId='id_prod', |
| 5 | text='description', |
| 6 | model={caslib='casuser', name='ecommerce_liti_model'}, |
| 7 | matchType='LONGEST', |
| 8 | casOut={caslib='casuser', name='ecommerce_matches_longest', replace=true}; |
| 9 | RUN; |
| 1 | PROC CAS; |
| 2 | textRuleScore.applyConcept / |
| 3 | TABLE={caslib='casuser', name='descriptions_produits'}, |
| 4 | docId='id_prod', |
| 5 | text='description', |
| 6 | model={caslib='casuser', name='ecommerce_liti_model'}, |
| 7 | matchType='LONGEST', |
| 8 | dropConcepts={'PRODUIT_GEN'}, |
| 9 | casOut={caslib='casuser', name='ecommerce_matches_final', replace=true}; |
| 10 | RUN; |
La table finale 'ecommerce_matches_final' doit contenir les attributs les plus spécifiques et pertinents, sans le bruit des concepts génériques. Pour PROD01, on doit trouver 'IPHONE_PRO' et 'COULEUR'. Pour PROD03 (description vide), aucune correspondance ne doit être trouvée, montrant que l'action gère correctement les valeurs nulles. Ce test valide la capacité à affiner l'extraction en conditions réelles.