Partager via


Allocation de Dirichlet latente

Important

Le support de Machine Learning Studio (classique) prend fin le 31 août 2024. Nous vous recommandons de passer à Azure Machine Learning avant cette date.

À partir du 1er décembre 2021, vous ne pourrez plus créer de nouvelles ressources Machine Learning Studio (classique). Jusqu’au 31 août 2024, vous pouvez continuer à utiliser les ressources Machine Learning Studio (classique) existantes.

La documentation ML Studio (classique) est en cours de retrait et ne sera probablement plus mise à jour.

Utilisez la bibliothèque vowpal Wabbit pour exécuter VW thèmes Lda

catégorie : Analyse de texte

Notes

s’applique à: Machine Learning Studio (classic) uniquement

Des modules par glisser-déposer similaires sont disponibles dans Concepteur Azure Machine Learning.

Vue d’ensemble du module

cet article explique comment utiliser le module d' Allocation Dirichlet latente dans Machine Learning Studio (classic) pour regrouper du texte autrement non classifié en plusieurs catégories. L’allocation Dirichlet latente (thèmes LDA) est souvent utilisée dans le traitement en langage naturel (NLP) pour rechercher des textes similaires. Modélisation de rubrique est un autre terme courant.

Ce module prend une colonne de texte et génère les sorties suivantes :

  • Le texte source, avec un score pour chaque catégorie

  • Matrice de fonctionnalités, contenant les termes extraits et les coefficients pour chaque catégorie

  • Une transformation, que vous pouvez enregistrer et réappliquer au nouveau texte utilisé comme entrée

Étant donné que ce module utilise la bibliothèque vowpal Wabbit, il est très rapide. pour plus d’informations sur Vowpal Wabbit, consultez le référentiel GitHub qui comprend des didacticiels et une explication de l’algorithme.

En savoir plus sur l’allocation des Dirichlet latentes (thèmes LDA)

En règle générale, thèmes LDA n’est pas une méthode de classification par se, mais utilise une approche de la génération de la variable. Cela signifie que vous n’avez pas besoin de fournir des étiquettes de classe connues, puis de déduire les modèles. Au lieu de cela, l’algorithme génère un modèle probabiliste qui est utilisé pour identifier des groupes de rubriques. Vous pouvez utiliser le modèle probabiliste pour classer les cas d’apprentissage existants ou les nouveaux cas que vous fournissez au modèle comme entrée.

Un modèle de génération de modèles de service peut être préférable, car il évite de faire des hypothèses importantes sur la relation entre le texte et les catégories et utilise uniquement la distribution de mots pour modeler les rubriques de façon mathématique.

Pour plus d’informations, consultez la section Notes techniques.

Configuration de l’allocation de Dirichlet latente

Ce module requiert un jeu de données qui contient une colonne de texte, à l’état brut ou prétraité.

  1. Ajoutez le module d' allocation Dirichlet latente à votre expérience.

  2. Comme entrée du module, fournissez un jeu de données contenant une ou plusieurs colonnes de texte.

  3. Pour Colonnes cibles, choisissez une ou plusieurs colonnes contenant du texte à analyser.

    Vous pouvez choisir plusieurs colonnes, mais elles doivent être du type de données String.

    En général, étant donné que thèmes LDA crée une matrice de fonctionnalités volumineuse à partir du texte, vous analyserez généralement une seule colonne de texte.

  4. Pour le nombre de rubriques à modéliser, tapez un entier compris entre 1 et 1000 qui indique le nombre de catégories ou de rubriques que vous souhaitez dériver du texte d’entrée.

    Par défaut, 5 rubriques sont créées.

  5. Pour N-grams, spécifiez la longueur maximale de N-grammes générés lors du hachage.

    La valeur par défaut est 2, ce qui signifie qu’à la fois des bigrammes et des unigrammes sont générés.

  6. Sélectionnez l’option normaliser pour convertir les valeurs de sortie en probabilités. Par conséquent, au lieu de représenter les valeurs transformées sous forme d’entiers, les valeurs contenues dans le jeu de données de sortie et de fonctionnalité sont transformées comme suit :

    • Les valeurs du jeu de données sont représentées en tant que probabilité où P(topic|document).

    • Les valeurs de la matrice de rubriques de caractéristiques sont représentées en tant que probabilité où P(word|topic).

  7. Sélectionnez l’option afficher toutes les options, puis affectez-lui la valeur vrai si vous souhaitez afficher, puis définir des paramètres avancés supplémentaires.

    Ces paramètres sont spécifiques à l’implémentation vowpal Wabbit de thèmes Lda. Il existe des didacticiels intéressants sur thèmes LDA dans vowpal Wabbit Online, ainsi que sur le wiki vowpal Wabbitofficiel.

    Consultez cet exemple pour obtenir des exemples dans la version 8 et l’utilisation de VW dans Azure ml.

    • Rho parameter. Fournissez une probabilité antérieure pour la densité des distributions de rubriques. Correspond au paramètre de lda_rho VW. Vous pouvez utiliser la valeur 1 si vous vous attendez à ce que la distribution des mots soit plate ; autrement dit, tous les mots sont supposés equiprobable. Si vous pensez que la plupart des mots s’affichent peu, vous pouvez les définir sur une valeur inférieure.

    • Alpha parameter. Spécifiez une probabilité antérieure pour la densité des pondérations de rubrique par document. Correspond au paramètre de lda_alpha VW.

    • Estimated number of documents. Tapez un nombre qui représente la meilleure estimation du nombre de documents (lignes) qui seront traités. Cela permet au module d’allouer une table de hachage d’une taille suffisante. Correspond au lda_D paramètre dans vowpal Wabbit.

    • Size of the batch. Tapez un nombre qui indique le nombre de lignes à inclure dans chaque lot de texte envoyé à vowpal Wabbit. Correspond au batch_sz paramètre dans vowpal Wabbit.

    • Initial value of iteration used in learning update schedule. Spécifiez la valeur de départ pour le taux d’apprentissage. Correspond au initial_t paramètre dans vowpal Wabbit.

    • Power applied to the iteration during updates. Indiquez le niveau d’alimentation appliqué au nombre d’itérations lors des mises à jour en ligne. Correspond au power_t paramètre dans vowpal Wabbit.

    • Number of passes over the data. Spécifiez le nombre de fois où l’algorithme doit parcourir les données. Correspond au epoch_size paramètre dans vowpal Wabbit.

  8. Sélectionnez l’option générer le dictionnaire de ngrams ou générer le dictionnaire de ngrams avant thèmes LDA, si vous souhaitez créer la liste n-Gram dans une passe initiale, avant de classifier le texte.

    Si vous créez le dictionnaire initial au préalable, vous pouvez l’utiliser plus tard quand vous examinez le modèle. La possibilité de mapper les résultats sur du texte plutôt que sur des index numériques facilite généralement l’interprétation. Toutefois, l’enregistrement du dictionnaire prend plus de temps et utilise du stockage supplémentaire.

  9. Pour taille maximale du dictionnaire ngram, tapez le nombre total de lignes qui peuvent être créées dans le dictionnaire n-Gram.

    Cette option est utile pour contrôler la taille du dictionnaire. Toutefois, si le nombre de ngrams dans l’entrée dépasse cette taille, des collisions peuvent se produire.

  10. Exécutez l’expérience. Le module LDA utilise le théorème de Bayes pour déterminer les rubriques qui peuvent être associées à des mots individuels. Les mots ne sont pas exclusivement associés à des rubriques ou des groupes ; au lieu de cela, chaque n-gramme a une probabilité d’être associée à l’une des classes découvertes.

Résultats

Le module possède deux sorties :

  • DataSet transformé: contient le texte d’entrée et un nombre spécifié de catégories découvertes, ainsi que les scores pour chaque exemple de texte pour chaque catégorie.

  • Matrice de rubrique de fonctionnalité: la colonne la plus à gauche contient la fonctionnalité de texte extrait et il existe une colonne pour chaque catégorie contenant le score de cette fonctionnalité dans cette catégorie.

Pour plus d’informations, consultez exemple de résultats thèmes LDA.

Transformation LDA

Ce module génère également la transformation qui applique thèmes LDA au jeu de données, sous la forme d’une interface ITransform.

Vous pouvez enregistrer cette transformation et la réutiliser pour d’autres jeux de données. Cela peut être utile si vous avez formé un corpus important et que vous souhaitez réutiliser les coefficients ou les catégories.

Affinage d’un modèle ou des résultats LDA

En général, vous ne pouvez pas créer un modèle thèmes LDA unique qui répond à tous les besoins, et même un modèle conçu pour une tâche peut nécessiter de nombreuses itérations pour améliorer la précision. Nous vous recommandons d’essayer toutes ces méthodes pour améliorer votre modèle :

  • Changer les paramètres du modèle
  • Utiliser la visualisation pour comprendre les résultats
  • Obtenir les commentaires des experts en matière de sujet pour déterminer si les rubriques générées sont utiles.

Les mesures qualitatives peuvent également être utiles pour évaluer les résultats. Pour évaluer les résultats de la modélisation des rubriques, prenez en compte les aspects suivants :

  • Précision : des éléments similaires sont-ils vraiment similaires ?
  • Diversité : le modèle peut-il distinguer les éléments similaires lorsque cela est nécessaire pour le problème de l’entreprise ?
  • Évolutivité : fonctionne-t-il sur un large éventail de catégories de texte ou uniquement sur un domaine cible étroit ?

La précision des modèles basés sur thèmes Lda peut souvent être améliorée en utilisant le traitement en langage naturel pour nettoyer, synthétiser et simplifier ou catégoriser le texte. par exemple, les techniques suivantes, toutes prises en charge dans Machine Learning, peuvent améliorer la précision de la classification :

  • Arrêter la suppression de mots

  • Normalisation de casse

  • Lemmatisation ou recherche de radical

  • Reconnaissance d’entité nommée

Pour plus d’informations, consultez prétraitement de texte et reconnaissance d’entité nommée.

Dans Studio (Classic), vous pouvez également utiliser des bibliothèques R ou python pour le traitement de texte : exécuter un script r, exécuter un script Python

Exemples

Pour obtenir des exemples d’analyse de texte, consultez les expériences suivantes dans la Azure ai Gallery:

  • Execute python script: utilise le traitement en langage naturel dans Python pour nettoyer et transformer du texte.

Pour plus d’informations et pour obtenir un exemple basé sur le texte de révision du client, consultez Présentation des résultats de thèmes LDA.

Exemple de résultats thèmes Lda

pour illustrer le fonctionnement du module d' Allocation Dirichlet Latent , l’exemple suivant applique thèmes lda avec les paramètres par défaut au jeu de données de revue de livres fourni dans Machine Learning Studio (classic).

Jeu de données source

Le DataSet contient une colonne d’évaluation, ainsi que le texte de commentaire complet fourni par les utilisateurs.

Ce tableau n’affiche que quelques exemples représentatifs.

text
Cet ouvrage présente ses bons points. Si ce n’est pas le cas, il vous aide à placer les mots que vous souhaitez auprès d’un superviseur...
Je n’ai pas terminé ce livre. Un ami m’a recommandé que je rencontre des problèmes avec mise en veille...
Mal écrit, j’ai essayé de lire ce livre, mais je l’ai trouvé Turgid et mal écrit que je le mets en frustration. ...
Étant donné que vous empruntez une copie de chien-eared à partir d’amis qui l’ont passées depuis un certain nombre d’années, je n’ai pas été en mesure de faire de mes mains sur ce livre qui est devenu un favori culte à courte durée de vie.
Le tracé de ce livre était intéressant et il aurait pu être un bon livre. Malheureusement, ce n’était pas le tout. Le principal problème pour moi était que...

Lors du traitement, le module d' allocation Dirichlet latent nettoie et analyse le texte, en fonction des paramètres que vous spécifiez. Par exemple, il peut automatiquement créer un jeton pour le texte et supprimer la ponctuation, et en même temps, rechercher les fonctionnalités de texte pour chaque rubrique.

Jeu de données transformé thèmes Lda

Le tableau suivant contient le DataSet transformé , basé sur l’exemple de révision de livre. La sortie contient le texte d’entrée et un nombre spécifié de catégories découvertes, ainsi que les scores pour chaque catégorie.

Nom du film Rubrique 1 Rubrique 2 Rubrique 3 Rubrique 4 Rubrique 5
Cet ouvrage présente ses bons points 0,001652892 0,001652892 0,001652892 0,001652892 0,9933884
ami m’a recommandé 0,00198019 0,001980198 0,9920791 0,001980198 0,001980198
a essayé de lire ce livre 0,002469135 0,002469135 0,9901233 0,002469135 0,002469135
a emprunté un ami 0,9901232 0,002469135 0,002469135 0,002469135 0,002469135
le tracé de ce livre a été intéressant 0,001652892 0,001652892 0,9933884 0,001652892 0,001652892

Dans cet exemple, nous avons utilisé la valeur par défaut 5 pour le nombre de rubriques à modéliser. Par conséquent, le module thèmes LDA crée cinq catégories, dont nous pouvons supposer qu’elles correspondront à peu près au système d’évaluation à cinq échelles d’origine.

Le module attribue également un score à chaque entrée pour chacune des cinq catégories qui représentent des rubriques. Un score indique la probabilité que la ligne soit affectée à une catégorie particulière.

Matrice de rubrique de fonctionnalité

La deuxième sortie du module est la matrice de rubriques de fonctionnalités. Il s’agit d’un jeu de données tabulaire qui contient le texte implémenter,, en fonctionde colonne, avec un score pour chacune des catégories, dans les colonnes restantes, rubrique 1, rubrique 2,... Rubrique N. Le score représente le coefficient.

Fonctionnalité Rubrique 1 Rubrique 2 Rubrique 3 Rubrique 4 Rubrique 5
intéressantes 0.0240282071983144 0.0354678954779375 0.363051866576914 0.0276637824315893 0.660663576149515
was 0.0171478729532397 0.0823969031108669 0.00452966877950789 0.0408714510319233 0.025077322689733
de 0.0148224220349217 0.0505086981492109 0.00434423322461094 0.0273389126293824 0.0171484355106826
traçage 0.0227415889348212 0.0408709456489325 0.182791041345191 0.086937090812819 1 0.0169680136708971
lecture 0.0227415889348212 0.0408709456489325 0.182791041345191 0.0869370908128191 0.0169680136708971
essai 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
moi 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
par 0.0141026103224462 0.043359976919215 0.00388640531859447 0.0305925953440055 0.0228993750526364
it 0.0264490547105951 0.0356674440311847 0.00541759897864314 0.0314539386250293 0.0140606468587681
friend 0.0135971322960941 0.0346118171467234 0.00434999437350706 0.0666507321888536 0.018156863779311
points 0.0227415889348212 0.0396233855719081 0.00404663601474112 0.0381156510019025 0.0337788009496797
bien 0.651813073836783 0.0598646397444108 0.00446809691985617 0.0358975694646062 0.0138989124411206
.its 0.0185385588647078 0.144253986783184 0.00408876416453866 0.0583049240441475 0.015442805566858
sur 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
emprunté 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
has 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
book 0.0143157047920681 0.069145948535052 0.184036340170983 0.0548757337823903 0.0156837976985903
recommandé 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372
this 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372

Notes techniques

Cette section contient des détails, des conseils et des réponses aux questions fréquentes concernant l’implémentation.

Informations d’implémentation

Par défaut, les distributions de sorties pour le DataSet transformé et la matrice de rubrique de fonctionnalité sont normalisées comme probabilités.

  • Le jeu de données transformé est normalisé en tant que probabilité conditionnelle des rubriques en fonction d’un document. Dans ce cas, la somme de chaque ligne est égale à 1.

  • La matrice de rubriques de caractéristiques est normalisée en tant que probabilité conditionnelle de mots en fonction d’une rubrique. Dans ce cas, la somme de chaque colonne est égale à 1.

Conseil

Parfois, le module peut retourner une rubrique vide, ce qui est le plus souvent dû à l’initialisation Pseudo-aléatoire de l’algorithme. Dans ce cas, vous pouvez essayer de modifier les paramètres associés, tels que la taille maximale du dictionnaire N-Gram ou le nombre de bits à utiliser pour le hachage de fonctionnalité.

LDA et modélisation des rubriques

L’allocation Dirichlet latente (thèmes LDA) est souvent utilisée pour la modélisation de rubrique basée sur le contenu, ce qui signifie que les catégories d’apprentissage proviennent de texte non classifié. Dans la modélisation de rubriques basée sur le contenu, une rubrique est une distribution sur des mots.

Supposons, par exemple, que vous ayez fourni un corpus de révisions de clients incluant un grand nombre de produits. Le texte des révisions soumises par de nombreux clients dans le temps contiendra de nombreuses conditions, dont certaines sont utilisées dans plusieurs rubriques.

Une rubrique identifiée par le processus thèmes Lda peut représenter les révisions d’un produit individuel A, ou un groupe de révisions de produits. Pour LDA, la rubrique elle-même est simplement une distribution de probabilité dans le temps pour un ensemble de mots.

Les termes sont rarement exclusifs à un produit, mais peuvent faire référence à d’autres produits, ou être des termes généraux qui s’appliquent à tout (« parfait », « énorme »). D’autres termes peuvent être des mots parasites. Toutefois, il est important de comprendre que la méthode thèmes LDA ne prétend pas capturer tous les mots de l’univers ou comprendre comment les mots sont liés, à part les probabilités de cooccurrence. Il peut uniquement regrouper les mots qui ont été utilisés dans le domaine cible.

Une fois que les index de terme ont été calculés, les lignes de texte individuelles sont comparées à l’aide d’une mesure de similarité basée sur la distance pour déterminer si deux portions de texte sont similaires. Par exemple, vous pouvez constater que le produit a plusieurs noms qui sont fortement corrélés. Vous pouvez également constater que des termes fortement négatifs sont généralement associés à un produit particulier. Vous pouvez utiliser la mesure de similarité pour identifier des termes associés et créer des recommandations.

Entrées attendues

Nom Type Description
Dataset Table de données Jeu de données d'entrée

Paramètres du module

Nom Type Plage Facultatif Default Description
Number of hash bits Integer [1;31] S’applique lorsque la case à cocher afficher toutes les options n’est pas activée 12 Nombre de bits à utiliser pour le hachage des fonctionnalités
Target column(s) Sélection de colonnes Obligatoire StringFeature Nom ou index de la colonne cible
Number of topics to model Integer [1;1000] Obligatoire 5 Modéliser la distribution de documents sur N rubriques
N-grams Integer [1;10] Obligatoire 2 Ordre des N-grammes générés au cours du hachage
Normalize Boolean Obligatoire true Normaliser la sortie vers les probabilités. Le jeu de données transformé est P(rubrique|document) tandis que la matrice de rubriques de caractéristiques est P(mot|rubrique).
Show all options Boolean True ou False Obligatoire False Présente des paramètres supplémentaires spécifiques à vowpal Wabbit Online thèmes Lda
Rho parameter Float [0.00001;1.0] S’applique lorsque la case à cocher afficher toutes les options est activée 0.01 Rho parameter
Alpha parameter Float [0.00001;1.0] S’applique lorsque la case à cocher afficher toutes les options est activée 0.01 Alpha parameter
Estimated number of documents Integer [1;int.MaxValue] S’applique lorsque la case à cocher afficher toutes les options est activée 1 000 Estimation du nombre de documents (correspond à lda_D paramètre)
Taille du lot Integer [1;1024] S’applique lorsque la case à cocher afficher toutes les options est activée 32 Taille du lot
Initial value of iteration used in learning rate update schedule Integer [0;int.MaxValue] S’applique lorsque la case à cocher afficher toutes les options est activée 0 Valeur initiale du nombre d’itérations utilisé dans le calendrier de mise à jour du taux d’apprentissage (correspond à initial_t paramètre)
Power applied to the iteration during updates Float [0.0;1.0] S’applique lorsque la case à cocher afficher toutes les options est activée 0.5 Puissance appliquée au nombre d’itérations pendant les mises à jour en ligne (correspond au paramètre power_t)
Nombre d’itérations d’entraînement Integer [1;1024] S’applique lorsque la case à cocher afficher toutes les options est activée 25 Nombre d’itérations d’entraînement
Build dictionary of ngrams Boolean True ou False S’applique lorsque la case à cocher afficher toutes les options n’est pas activée True Crée un dictionnaire de N-grammes avant le calcul de LDA. Utile pour l’inspection et l’interprétation du modèle
Nombre de bits à utiliser pour le hachage des fonctionnalités Integer [1;31] S’applique lorsque l’option générer le dictionnaire de ngrams a la valeur false 12 Nombre de bits à utiliser pendant le hachage des fonctionnalités
Maximum size of ngram dictionary Integer [1;int.MaxValue] S’applique quand l’option Build dictionary of ngrams a la valeur True. 20000 Taille maximale du dictionnaire de N-grammes. Si le nombre de jetons dans l’entrée dépasse cette taille, des collisions peuvent se produire
Build dictionary of ngrams prior to LDA Boolean True ou False S’applique lorsque la case à cocher afficher toutes les options est activée True Crée un dictionnaire de N-grammes avant LDA. Utile pour l’inspection et l’interprétation du modèle
Maximum number of ngrams in dictionary Integer [1;int.MaxValue] S’applique lorsque l’option générer le dictionnaire de ngrams a la valeur true et que la case à cocher afficher toutes les options est activée 20000 Taille maximale du dictionnaire. Si le nombre de jetons dans l’entrée dépasse cette taille, des collisions peuvent se produire

Sorties

Nom Type Description
Jeu de données transformé Table de données Jeu de données de sortie
Matrice de rubrique de fonctionnalité Table de données Matrice de rubrique de fonctionnalité produite par thèmes Lda
Transformation LDA Interface ITransform Transformation qui applique thèmes LDA au jeu de données

Exceptions

Exception Description
Erreur 0002 Une exception se produit si une ou plusieurs colonnes spécifiées du jeu de données sont introuvables.
Erreur 0003 Cette exception se produit si une ou plusieurs entrées sont null ou vide.
Erreur 0004 Une exception se produit si le paramètre est inférieur ou égal à une valeur spécifique.
Erreur 0017 Une exception se produit si une ou plusieurs colonnes spécifiées présentent un type non pris en charge par le module actuel.

pour obtenir la liste des erreurs spécifiques aux modules Studio (classiques), consultez Machine Learning codes d’erreur.

pour obtenir la liste des exceptions d’api, consultez Machine Learning les Codes d’erreur de l' api REST.

Voir aussi

Analyse de texte
Hachage des caractéristiques
Reconnaissance d’entité nommée
Scorer le modèle Vowpal Wabbit 7-4
Entraîner le modèle Vowpal Wabbit 7-4
Entraîner le modèle Vowpal Wabbit 8