Ankur Tomar

Follow

Nov 25, 2018 – 9 min lu

Crédits : Christine Doig

Salut tout le monde. Cela fait longtemps que j’ai écrit mon dernier blog sur les différents types de systèmes de recommandation. Cette fois, je vais écrire sur la modélisation des sujets.

Il existe de nombreuses sources où vous pouvez apprendre ce qu’est la modélisation des sujets, mais je pense, la plupart d’entre eux sont un peu technique et nécessite une bonne connaissance des mathématiques et d’autres techniques comme les chaînes de Markov. Dans cet article, je vais essayer d’expliquer l’idée de la modélisation thématique de manière très intuitive, avec un minimum de mathématiques et de détails techniques. Je vais écrire cet article en deux parties. Dans la première partie, j’essaierai d’expliquer ce qu’est la modélisation des sujets et dans la deuxième partie, je fournirai un tutoriel python de la façon de faire la modélisation des sujets sur le jeu de données du monde réel.

Avant de commencer, je veux reconnaître que cet article est fortement inspiré par la conférence de mon analytique de données exploratoire Prof. Edward McFowland, du cours de Coursera sur le traitement du langage naturel par la Higher School of Economics et de l’explication de Jordan Boyd-Graber sur l’échantillonnage de Gibbs.

Qu’est-ce que la modélisation des sujets ?

La modélisation des sujets est une branche du traitement non supervisé du langage naturel qui est utilisée pour représenter un document textuel à l’aide de plusieurs sujets, qui peuvent mieux expliquer l’information sous-jacente dans un document particulier. Cela peut être considéré en termes de clustering, mais avec une différence. Maintenant, au lieu de caractéristiques numériques, nous avons une collection de mots que nous voulons regrouper de telle sorte que chaque groupe représente un sujet dans un document.

Pourquoi avons-nous besoin de la modélisation des sujets ?

Ok, donc maintenant la question se pose pourquoi avons-nous besoin de la modélisation des sujets ? Si nous regardons autour de nous, nous pouvons voir une énorme quantité de données textuelles qui traînent autour de nous dans un format non structuré sous la forme d’articles d’actualité, de documents de recherche, de messages sur les médias sociaux, etc. et nous avons besoin d’un moyen de comprendre, d’organiser et d’étiqueter ces données pour prendre des décisions éclairées. La modélisation thématique est utilisée dans diverses applications, comme la recherche de questions similaires sur stack overflow, l’agrégation et l’analyse de flux de nouvelles, les systèmes de recommandation, etc. Toutes ces applications se concentrent sur la recherche de la structure thématique cachée dans le texte, car on pense que chaque texte que nous écrivons, que ce soit un tweet, un post ou un document de recherche, est composé de thèmes comme le sport, la physique, l’aérospatiale, etc.

Comment faire de la modélisation thématique ?

À l’heure actuelle, il existe de nombreuses façons de faire de la modélisation thématique, mais dans ce post, nous allons discuter d’une approche de modélisation probabiliste appelée Latent Dirichlet Allocation (LDA) développée par le professeur David M. Blei en 2003. Il s’agit d’une extension de l’analyse sémantique latente probabiliste (PLSA) développée en 1999 par Thomas Hoffman, avec une différence minime en termes de traitement de la distribution par document. Alors sautons directement dans le fonctionnement de LDA.

L’allocation latente de Dirichlet

Commençons par comprendre la signification de chaque mot du titre, car je pense qu’il contient tout ce que nous devons savoir pour comprendre le fonctionnement de LDA.

Latent : Cela fait référence à tout ce que nous ne connaissons pas a priori et qui est caché dans les données. Ici, les thèmes ou sujets dont se compose le document sont inconnus, mais on pense qu’ils sont présents car le texte est généré à partir de ces sujets.

Dirichlet : C’est une « distribution de distributions ». Oui, vous avez bien lu. Mais qu’est-ce que cela signifie ? Réfléchissons à cela à l’aide d’un exemple. Supposons qu’une machine produise des dés et que nous puissions contrôler si la machine produira toujours un dé avec un poids égal pour tous les côtés, ou s’il y aura un biais pour certains côtés. Ainsi, la machine qui produit des dés est une distribution car elle produit des dés de différents types. Nous savons également que le dé lui-même est une distribution puisque nous obtenons plusieurs valeurs lorsque nous lançons un dé. C’est ce que signifie être une distribution de distributions et c’est ce qu’est Dirichlet. Ici, dans le contexte de la modélisation des sujets, le Dirichlet est la distribution des sujets dans les documents et la distribution des mots dans le sujet. Il se peut que ce ne soit pas très clair à ce stade, mais c’est très bien car nous allons l’examiner plus en détail dans un moment.

Allocation : Cela signifie qu’une fois que nous avons Dirichlet, nous allons allouer les sujets aux documents et les mots du document aux sujets.

C’est tout. Voilà ce qu’est le LDA en quelques mots. Maintenant, comprenons comment cela fonctionne dans la modélisation des sujets.

Pour récapituler, ce que dit LDA, c’est que chaque mot de chaque document provient d’un sujet et que le sujet est sélectionné dans une distribution par document sur les sujets. Nous avons donc deux matrices :

1. ϴtd = P(t|d) qui est la distribution de probabilité des sujets dans les documents

2. Фwt = P(w|t) qui est la distribution de probabilité des mots dans les sujets

Et, on peut dire que la probabilité d’un mot donné document i.c’est-à-dire P(w|d) est égale à :

où T est le nombre total de sujets. De plus, supposons qu’il y a W nombre de mots dans notre vocabulaire pour tous les documents.

Si nous supposons l’indépendance conditionnelle, nous pouvons dire que

P(w|t,d) = P(w|t)

Et donc P(w|d) est égal à :

C’est le produit scalaire de ϴtd et Фwt pour chaque sujet t.

Cela peut être représenté sous la forme d’une matrice comme ceci:

Crédit : Higher School of Economics

Donc, en regardant cela, nous pouvons penser que LDA est similaire à celui de la factorisation matricielle ou SVD, où nous décomposons la matrice de distribution de probabilité du mot dans le document en deux matrices constituées de la distribution du mot dans un document et de la distribution des mots dans un document.

C’est pourquoi, ce que nous obtiendrons est, par exemple, ceci :

Crédit : David M. Blei

Et pour revenir à notre exemple de dé, on peut dire que chaque mot dans la distribution des mots d’un sujet est semblable à une face du dé, et nous avons un paramètre de Dirichlet pour contrôler si tous les mots ont la même probabilité dans un sujet ou si ce sujet aura un biais extrême vers certains mots. La même intuition est pour la distribution des sujets dans un document.

Bien. Maintenant vient la partie importante. Comment apprendre les poids de ces deux matrices ?

Pour commencer, attribuons aléatoirement des poids aux deux matrices et supposons que nos données sont générées selon les étapes suivantes :

1. Choisissez aléatoirement un sujet dans la distribution des sujets d’un document en fonction des poids qui leur sont attribués. Dans l’exemple précédent, disons que nous avons choisi le sujet rose

2. Ensuite, sur la base de la distribution des mots pour le sujet choisi, sélectionnez un mot au hasard et mettez-le dans le document

3. Répétez cette étape pour l’ensemble du document

Dans ce processus, si notre estimation des poids est fausse, alors les données réelles que nous observons seront très peu probables dans le cadre de nos poids supposés et du processus de génération de données. Par exemple, disons que nous avons le document D1 qui se compose du texte suivant :

« Qualcomm® Adreno™ 630 Visual Processing Subsystem featuring room-scale 6DoF with SLAM, Adreno Foveation »

et disons que nous attribuons des poids élevés au sujet T1 qui a des poids élevés pour des mots comme Cuillère, Assiettes, Oignons etc. alors nous verrons que compte tenu de notre hypothèse sur la façon dont les données sont générées, il est très peu probable que T1 appartienne à D1 ou que ces mots appartiennent à T1. Par conséquent, ce que nous faisons, c’est que nous essayons de maximiser la vraisemblance de nos données étant donné ces deux matrices.

Pour identifier les poids corrects, nous allons utiliser un algorithme appelé échantillonnage de Gibbs. Comprenons maintenant ce qu’est l’échantillonnage de Gibbs et comment il fonctionne dans LDA.

L’échantillonnage de Gibbs

L’échantillonnage de Gibbs est un algorithme pour échantillonner successivement des distributions conditionnelles de variables, dont la distribution sur les états converge vers la vraie distribution à long terme. Il s’agit d’un concept quelque peu abstrait qui nécessite une bonne compréhension des chaînes de Markov de Monte Carlo et du théorème de Bayes. Ces concepts et les mathématiques qui les sous-tendent sont assez complexes et sortent du cadre de ce blog. Ici, je vais essayer de donner une intuition sur la façon dont l’échantillonnage de Gibbs fonctionne pour identifier les sujets dans les documents.

Comme je l’ai mentionné précédemment, pour commencer, nous allons supposer que nous connaissons les matrices ϴ et Ф. Maintenant, ce que nous allons faire, c’est que nous allons changer lentement ces matrices et arriver à une réponse qui maximise la vraisemblance des données que nous avons. Nous allons le faire mot par mot en changeant l’affectation du sujet d’un mot. Nous supposerons que nous ne connaissons pas l’affectation du sujet du mot donné mais que nous connaissons l’affectation de tous les autres mots du texte et nous essaierons de déduire quel sujet sera affecté à ce mot.

Si nous regardons cela de manière mathématique, ce que nous faisons, c’est que nous essayons de trouver la distribution de probabilité conditionnelle de l’affectation du sujet d’un seul mot conditionnée par le reste des affectations du sujet. En ignorant tous les calculs mathématiques, ce que nous obtiendrons est une équation de probabilité conditionnelle qui ressemble à ceci pour un mot unique w dans le document d qui appartient au sujet k:

Crédit : Jordan Boyd-Graber

où:

n(d,k) : Nombre de fois que le document d utilise le sujet k

v(k,w) : Nombre de fois où le sujet k utilise le mot donné

αk : Paramètre de Dirichlet pour la distribution du document au sujet

λw : Paramètre de Dirichlet pour la distribution du sujet au mot

Il y a deux parties dans cette équation. La première partie nous indique à quel point chaque sujet est présent dans un document et la seconde partie nous indique à quel point chaque sujet aime un mot. Notez que pour chaque mot, nous obtiendrons un vecteur de probabilités qui expliquera la probabilité que ce mot appartienne à chacun des sujets. Dans l’équation ci-dessus, on peut voir que les paramètres de Dirichlet agissent également comme des paramètres de lissage lorsque n(d,k) ou v(k,w) est nul, ce qui signifie qu’il y aura toujours une certaine chance que le mot choisisse un sujet à l’avenir.

Passons maintenant par un exemple :

Pour commencer, supposons que nous avons un document avec une certaine attribution aléatoire de sujets de mots, par exemple, comme indiqué ci-dessous :

Nous avons également notre matrice de comptage v(k,w) comme indiqué ci-dessous :

Maintenant, changeons l’affectation du mot monde dans le document.

  • D’abord, nous allons réduire le compte de monde dans le sujet 1 de 28 à 27 car nous ne savons pas à quel sujet appartient monde.
  • Deuxièmement représentons la matrice n(d,k) de la manière suivante pour montrer combien un document utilise chaque topic

– Troisièmement, représentons v(k,w) de la manière suivante pour montrer combien de fois chaque sujet est affecté à ce mot

  • Quatrièmement, nous multiplierons ces deux matrices pour obtenir nos probabilités conditionnelles

  • Enfin, nous choisirons au hasard n’importe quel sujet et l’assignerons au monde et nous répéterons ces étapes pour tous les autres mots également. Intuitivement, le sujet avec la plus grande probabilité conditionnelle devrait être sélectionné, mais comme nous pouvons le voir, les autres sujets ont également une certaine chance d’être sélectionnés

C’est tout. Voilà ce que fait l’algorithme d’échantillonnage de Gibbs sous le capot. Bien que nous ayons sauté certains détails comme le réglage des hyperparamètres, mais d’un point de vue intuitif, c’est ainsi que l’échantillonnage de Gibbs fonctionne pour la modélisation des sujets.

Alors, c’est tout pour la théorie de l’allocation latente de Dirichlet. J’espère que cela a été utile pour comprendre ce qu’est la modélisation des sujets et comment nous utilisons LDA avec Gibbs pour la modélisation des sujets. Dans le prochain article, je posterai l’implémentation de LDA en utilisant Python.

Merci!

admin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

lg