ldaTopic

ldaScore

##set_ldatopic

Description

L'action `ldaScore` permet de scorer une table de documents en utilisant 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 topics (sujets) basé sur l'allocation de Dirichlet latenteModèle probabiliste de topic modeling (LDA) qui identifie des thèmes cachés dans un corpus de textes en associant chaque document à un mélange de sujets et chaque sujet à une distribution de mots. (LDA) préalablement entraîné. C'est un peu comme si vous demandiez à SAS de lire une montagne de documents et de deviner de quoi ils parlent en se basant sur ce qu'il a déjà appris. Pratique pour s'épargner des heures de lecture fastidieuse !

Syntaxe Officielle
proc cas;
ldaTopic.ldaScore
docDistOut={name="ma_table_sortie"}
docId="id_document"
modelTable={name="mon_modele"}
nIters=10
seed=12345
table={name="ma_table_entree"}
text={"texte_variable"}
tm={language="FRENCH", stemming=TRUE, nounGroups=FALSE, entities="NONE"};
run;
quit;

Paramètres Clés

Nom du paramètre Description
docDistOut Spécifie la table en mémoire qui stockera la proportion de topics pour chaque document (la table de sortie).
docId Spécifie la variable (caractère ou numérique) de la table d'entrée qui contient l'identifiant unique de chaque document. Indispensable pour s'y retrouver !
modelTable Spécifie la table d'entrée contenant la distribution des topics du modèle LDA (doit obligatoirement inclure _TopicID_, _TermID_, _Term_, et _Probability_).
nIters Spécifie le nombre maximum d'itérations pour le processus de scoring. La valeur par défaut est 10.
seed Spécifie la graine pour le générateur de nombres aléatoires. Fixez une valeur supérieure à 0 si vous souhaitez que vos résultats soient reproductibles à chaque exécution.
table Spécifie la table d'entrée contenant les documents textuels que vous souhaitez scorer.
text Spécifie les variables textuelles de la table d'entrée à utiliser pour le scoring.
tm Permet de configurer le parsing (l'analyse) du texte : langue (language), entités (entities), groupes nominaux (nounGroups), et la racinisation (stemming).

Préparation des données

Création des données d'exemple

Création d'une table de documents à scorer. Notez que l'action ldaScore nécessite un modèle déjà existant (créé au préalable via l'action ldaTrain).

1DATA mycas.documents;
2 LENGTH docId 8 text $100;
3 INFILE DATALINES dlm='|';
4 INPUT docId text;
5 DATALINES;
61|Le chat dort sur le canapé.
72|L'analyse de données est fascinante.
83|Un chien court dans le jardin.
9;
10RUN;

Exemples d'utilisation

Scoring basique avec LDA

Application d'un modèle LDA existant sur une nouvelle table de documents avec les paramètres minimaux.

1PROC CAS;
2 ldaTopic.ldaScore
3 TABLE={name="documents"}
4 modelTable={name="lda_model"} /* Supposé créé par ldaTrain */
5 docId="docId"
6 text={"text"}
7 docDistOut={name="doc_topics", replace=true};
8RUN;
9QUIT;
Résultat Attendu :
Une table CAS nommée 'doc_topics' contenant la distribution des topics pour chaque document. Chaque ligne représentera un document et ses probabilités d'appartenance aux différents topics.
Scoring LDA avec paramètres de texte avancés et reproductibilité

Scoring avec spécification de la langue française, activation de la racinisation (stemming), et limitation des itérations, tout en fixant la graine aléatoire pour obtenir des résultats constants.

1PROC CAS;
2 ldaTopic.ldaScore
3 TABLE={name="documents"}
4 modelTable={name="lda_model"}
5 docId="docId"
6 text={"text"}
7 nIters=15
8 seed=98765
9 tm={language="FRENCH", stemming=TRUE, nounGroups=FALSE, entities="NONE"}
10 docDistOut={name="doc_topics_advanced", replace=true};
11RUN;
12QUIT;
Résultat Attendu :
La table 'doc_topics_advanced' est générée après avoir analysé le texte en français (avec racinisation) et effectué jusqu'à 15 itérations de scoring. Les résultats seront identiques à chaque exécution du code grâce au paramètre 'seed'.