applyCategory
Description
Catégorise le texte à l'aide d'un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). de catégories (fichier MCOFormat binaire compact utilisé par SAS Viya pour stocker des modèles analytiques (comme les réseaux de neurones) après entraînement, permettant leur déploiement et leur exécution rapide via CAS.). Cette action applique des règles linguistiques pour classer les documents dans une ou plusieurs catégories prédéfinies selon le fourni. C'est un peu le Choixpeau magique de Poudlard, mais optimisé pour vos données textuelles SAS !
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| casOut | Spécifie le nom de la table de données de sortie contenant les catégories affectées. |
| docId | Spécifie le nom d'une variable d'identification unique dans la table d'entrée pour référencer chaque ligne. Peut être un caractère ou un numérique. |
| docType | Spécifie le format du document à analyser, par exemple TEXT (par défaut) ou XML. |
| groupedMatchOut | Spécifie la table de sortie optionnelle qui regroupe les correspondances par catégorie pour chaque document. |
| matchDelimiter | Spécifie le délimiteur (32 caractères maximum) à utiliser pour séparer chaque instance de texte correspondante dans la table (par défaut '|'). |
| matchOut | Spécifie le nom de la table contenant les termes correspondants extraits (une correspondance par ligne). |
| model | Paramètre requis. Spécifie la table CAS d'entrée qui contient le modèle de catégorisation préalablement compilé. |
| modelOut | Spécifie le nom de la table de sortie pour exporter le modèle de catégories (utile si vous mettez à jour un modèle). |
| scoringAlgorithm | Spécifie l'algorithme de calcul des scores : 'FREQUENCY' (par défaut) ou 'WEIGHTED'. |
| table | Spécifie la table de données d'entrée contenant les documents textuels à catégoriser. |
| text | Spécifie le nom de la variable textuelle dans la table d'entrée sur laquelle le modèle doit être appliqué. |
Préparation des données
Création des données pour la catégorisation
Génération d'une table contenant quelques phrases de test. On suppose ici qu'un modèle de catégorie a déjà été généré en amont par l'action `compileCategory` (la magie de l'ellipse !).
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | TABLE.readRoutine / |
| 4 | TABLE="documents", |
| 5 | casOut={name="documents", replace=true}, |
| 6 | columns={{name="docId", type="varchar"}, {name="texte_document", type="varchar"}}, |
| 7 | DATA=" |
| 8 | '1', 'Le service client a été extrêmement rapide et très courtois.' |
| 9 | '2', 'Ce produit est défectueux, je suis en colère et je veux un remboursement.' |
| 10 | '3', 'Livraison en retard, mais le produit reste correct.' |
| 11 | "; |
| 12 | QUIT; |
Exemples d'utilisation
Catégorisation basique de documents
Application du modèle sur la table `documents`. La sortie sera stockée dans la table de résultat identifiée par %%casOut%%.
| 1 | PROC CAS; |
| 2 | textRuleScore.applyCategory / |
| 3 | model={name="mon_modele_categorie"} |
| 4 | TABLE={name="documents"} |
| 5 | docId="docId" |
| 6 | text="texte_document" |
| 7 | casOut={name="categories_out", replace=true}; |
| 8 | QUIT; |
| 9 | PROC PRINT DATA=mycas.categories_out; RUN; |
Résultat Attendu :
Catégorisation détaillée avec extraction des correspondances (matches)
Utilisation avancée pour obtenir le détail des mots exacts qui ont déclenché les règles. On extrait les données brutes via %%matchOut%% et les données groupées via %%groupedMatchOut%%. Les correspondances sont séparées par une virgule grâce au paramètre %%matchDelimiter%%. On utilise également un score pondéré avec %%scoringAlgorithm%%.
| 1 | PROC CAS; |
| 2 | textRuleScore.applyCategory / |
| 3 | model={name="mon_modele_categorie"} |
| 4 | TABLE={name="documents"} |
| 5 | docId="docId" |
| 6 | text="texte_document" |
| 7 | docType="TEXT" |
| 8 | scoringAlgorithm="WEIGHTED" |
| 9 | matchDelimiter="," |
| 10 | casOut={name="categories_out", replace=true} |
| 11 | matchOut={name="matches_out", replace=true} |
| 12 | groupedMatchOut={name="grouped_matches_out", replace=true}; |
| 13 | QUIT; |