ldaTopic

ldaTrain

##set_ldatopic

Description

L'action ldaTrain permet d'entraîner 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 thématiques 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). C'est un peu comme si vous demandiez à un robot de lire une montagne de documents et de regrouper les mots qui 'vont ensemble' pour découvrir les sujets principaux, sans que vous ayez besoin de lui dire quoi chercher. C'est l'outil idéal pour extraire de la sémantique de données textuelles massives quand votre cerveau refuse de traiter plus de trois lignes après 16h. Sources :

Syntaxe Officielle
ldaTopic.ldaTrain /
alpha=double,
beta=double,
casOut={casouttable},
docDistOut={casouttable},
docId="variable-name",
k=64-bit-integer,
keepWords={castable},
likelihood=TRUE | FALSE,
meanEstimate=TRUE | FALSE,
nBurnin=integer,
nIters=integer,
seed=double,
stopWords={castable},
table={castable},
text={{casinvardesc-1}, ...},
tm={castm};

Paramètres Clés

Nom du paramètre Description
alpha Spécifie l'hyperparamètre de Dirichlet pour la proportion de thématiques dans les documents. Plus la valeur est élevée, plus les documents sont supposés couvrir un grand nombre de sujets. Valeur par défaut : 0.1.
beta Spécifie l'hyperparamètre de Dirichlet pour la distribution des mots dans les thématiques. Plus la valeur est élevée, plus les thématiques sont supposées contenir une large variété de mots. Valeur par défaut : 0.1.
casOut Définit la table de sortie CAS qui contiendra le modèle LDA (la distribution des termes par thématique). Nécessaire pour le scoring futur avec ldaScore .
docDistOut Définit la table de sortie CAS qui contiendra la proportion de chaque thématique pour chaque document traité.
docId Nom de la variable contenant l'identifiant unique de chaque document.
k Le nombre de thématiques (clusters sémantiques) que vous souhaitez que le modèle découvre. Valeur par défaut : 2.
nIters Nombre maximum d'itérations pour l'échantillonnage de Gibbs. Plus il y en a, plus le modèle est précis, mais plus votre serveur va transpirer.
table La table CAS d'entrée contenant les documents à analyser.
text La liste des variables textuelles à utiliser pour l'entraînement.
tm Sous-paramètres de traitement de texte (langue, racinisation/stemming, extraction d'entités, etc.).

Préparation des données

Création d'un jeu de données de test pour LDA

On génère quelques documents simples portant sur le support client et la qualité des produits pour tester la séparation thématique.

1DATA casuser.feedback; LENGTH text $200; INPUT id text $; DATALINES; 1|Le support client est excellent et très réactif. 2|Le produit est arrivé cassé et le support est trop lent. 3|Excellent rapport qualité prix, je recommande ce produit. 4|Livraison en retard mais le produit est conforme. 5|Le support technique m'a aidé à configurer mon appareil. 6|Qualité médiocre et service après-vente inexistant. ; RUN;

Exemples d'utilisation

Entraînement de base avec 2 thématiques

Exécution minimale de l'action LDA sur notre table de feedback pour identifier deux sujets principaux.

1PROC CAS; ldaTopic.ldaTrain / TABLE={name="feedback"}, docId="id", text={"text"}, k=2, casOut={name="lda_model", replace=true}; RUN;
Résultat Attendu :
Une table 'lda_model' est créée contenant les probabilités des mots pour les 2 thématiques découvertes.
Entraînement complet avec prétraitement linguistique

On utilise ici des hyperparamètres spécifiques, un nombre d'itérations plus élevé, et on active la racinisation (stemming) pour le français.

1PROC CAS; ldaTopic.ldaTrain / TABLE={name="feedback"}, docId="id", text={"text"}, k=3, alpha=0.2, beta=0.01, nIters=100, seed=12345, meanEstimate=true, tm={language="FRENCH", stemming=true}, casOut={name="lda_model_final", replace=true}, docDistOut={name="document_topics", replace=true}; RUN;
Résultat Attendu :
Deux tables sont générées : 'lda_model_final' (le modèle) et 'document_topics' (le score par document). Le modèle a convergé après 100 itérations en utilisant la logique linguistique française.