Un guide du débutant pour l’allocation de Dirichlet latente(LDA)

La modélisation des sujets est une méthode de classification non supervisée des documents, similaire au clustering sur les données numériques, qui trouve certains groupes naturels d’éléments (sujets) même lorsque nous ne sommes pas sûrs de ce que nous recherchons.

Un document peut faire partie de plusieurs sujets, un peu comme dans le clustering flou(soft clustering) dans lequel chaque point de données appartient à plus d’un cluster.

Pourquoi la modélisation de sujets ?

La modélisation de sujets fournit des méthodes pour organiser, comprendre, rechercher et résumer automatiquement de grandes archives électroniques.
Elle peut aider à :

  • découvrir les thèmes cachés dans la collection.
  • classer les documents dans les thèmes découverts.
  • utiliser la classification pour organiser/sommeriser/rechercher les documents.

Par exemple, disons qu’un document appartient aux thèmes nourriture, chiens et santé. Donc, si un utilisateur demande « nourriture pour chiens », il pourrait trouver le document susmentionné parce qu’il couvre ces sujets(entre autres sujets). Nous sommes capables de figurer sa pertinence par rapport à la requête sans même parcourir l’ensemble du document.

Par conséquent, en annotant le document, sur la base des sujets prédits par la méthode de modélisation, nous sommes en mesure d’optimiser notre processus de recherche.

LDA

C’est l’une des méthodes de modélisation des sujets les plus populaires. Chaque document est composé de différents mots, et chaque sujet possède également différents mots lui appartenant. L’objectif de LDA est de trouver les sujets auxquels un document appartient, sur la base des mots qu’il contient. Vous êtes confus ? Voici un exemple pour vous guider.

Définition du modèle

Each document is a collection of words.

We have 5 documents each containing the words listed in front of them( ordered by frequency of occurrence).

What we want to figure out are the words in different topics, as shown in the table below. Each row in the table represents a different topic and each column a different word in the corpus. Each cell contains the probability that the word(column) belongs to the topic(row).

Each topic contains a score for all the words in the corpus.

Finding Representative Words for a Topic

  • We can sort the words with respect to their probability score.
    Les x premiers mots sont choisis dans chaque sujet pour représenter le sujet. Si x = 10, on va trier tous les mots du topic1 en fonction de leur score et prendre les 10 premiers mots pour représenter le topic.
    Cette étape n’est pas toujours nécessaire car si le corpus est petit, nous pouvons stocker tous les mots en triés par leur score.
  • Alternativement, nous pouvons fixer un seuil sur le score. Tous les mots d’un sujet ayant un score supérieur au seuil peuvent être stockés comme son représentant, dans l’ordre de leurs scores.

.

Photo par Anusha Barwa sur Unsplash

Disons que nous avons 2 sujets qui peuvent être classés comme CAT_related et DOG_related. Un sujet a des probabilités pour chaque mot, donc des mots comme lait, miaou et chaton auront une probabilité plus élevée dans le sujet relatif aux chats que dans celui relatif aux chiens. Le topic DOG_related, de même, aura des probabilités élevées pour des mots tels que puppy, bark, et bone.

Si nous avons un document contenant les phrases suivantes :

« Les chiens aiment mâcher des os et rapporter des bâtons ».
« Les chiots boivent du lait. »
« Les deux aiment aboyer. »

Nous pouvons facilement dire qu’il appartient au topic DOG_related car il contient des mots tels que Dogs, bones, puppies, et bark. Même s’il contient le mot lait qui appartient au sujet CAT_related, le document appartient à DOG_related car plus de mots correspondent avec lui.

Assumptions:

  • Chaque document est juste une collection de mots ou un « sac de mots ». Ainsi, l’ordre des mots et le rôle grammatical des mots (sujet, objet, verbes, …) ne sont pas considérés dans le modèle.
  • Des mots comme am/is/are/of/a/the/but/… ne portent aucune information sur les « sujets » et peuvent donc être éliminés des documents comme étape de prétraitement. En fait, nous pouvons éliminer les mots qui apparaissent dans au moins %80 ~ %90 des documents, sans perdre aucune information.
    Par exemple, si notre corpus ne contient que des documents médicaux, des mots comme humain, corps, santé, etc pourraient être présents dans la plupart des documents et donc peuvent être éliminés car ils n’ajoutent aucune information spécifique qui ferait ressortir le document.
  • Nous savons à l’avance combien de sujets nous voulons. ‘k’ est décidé à l’avance.
  • Toutes les affectations de sujets, à l’exception du mot actuel en question, sont correctes, puis mise à jour de l’affectation du mot actuel en utilisant notre modèle de la façon dont les documents sont générés

Comment fonctionne LDA?

Il y a 2 parties dans LDA:

  • Les mots qui appartiennent à un document, que nous connaissons déjà.
  • Les mots qui appartiennent à un sujet ou la probabilité que les mots appartiennent à un sujet, que nous devons calculer.

L’Algorithme pour trouver ce dernier

  • Passer en revue chaque document et assigner aléatoirement chaque mot du document à l’un des k sujets (k est choisi au préalable).
  • Pour chaque document d, parcourir chaque mot w et calculer :
  1. p(topic t | document d) : la proportion de mots du document d qui sont assignés au topic t. Tente de capturer combien de mots appartiennent au topic t pour un document d donné. En excluant le mot courant.
    Si beaucoup de mots de d appartiennent à t, il est plus probable que le mot w appartienne à t.
    ( #mots dans d avec t +alpha/ #mots dans d avec n’importe quel sujet+ k*alpha)
  2. p(mot w| sujet t) : la proportion d’affectations au sujet t sur tous les documents qui proviennent de ce mot w. Tente de capturer combien de documents sont dans le sujet t à cause du mot w.
    LDA représente les documents comme un mélange de sujets. De même, un sujet est un mélange de mots. If a word has high probability of being in a topic, all the documents having w will be more strongly associated with t as well. Similarly, if w is not very probable to be in t, the documents which contain the w will be having very low probability of being in t, because rest of the words in d will belong to some other topic and hence d will have a higher probability for those topic. So even if w gets added to t, it won’t be bringing many such documents to t.
  • Update the probability for the word w belonging to topic t, as
p(word w with topic t) = p(topic t | document d) * p(word w | topic t)

A layman’s example

Suppose you have various photographs(documents) with captions(words). You want to display them in a gallery so you decide to categorize the photographs on various themes(topics) based on which you will create different sections in your gallery.

Photo de Soragrit Wongsa sur Unsplash

Vous décidez de créer k=2 sections dans votre album – nature et ville. Naturellement, la classification n’est pas si claire, car certaines photos de ville contiennent des arbres et des fleurs, tandis que les photos de nature peuvent contenir des bâtiments. Pour commencer, vous décidez d’attribuer les photographies qui ne comportent que des éléments de nature ou de ville dans leurs catégories respectives tandis que vous attribuez les autres au hasard.

Vous remarquez que beaucoup de photographies dans la nature ont le mot arbre dans leur légende. Vous avez donc conclu que le mot arbre et le sujet nature doivent être étroitement liés.

Puis, vous choisissez le mot bâtiment et vérifiez combien de photographies sont dans la nature parce qu’elles ont le mot bâtiment dans leur légende. Vous n’en trouvez pas beaucoup et êtes maintenant moins sûr de l’appartenance de bâtiment à la nature et l’associez plus fortement à la ville.

Vous choisissez ensuite une photographie qui a pour légende « L’arbre est devant le bâtiment et derrière une voiture » et vous voyez qu’elle est dans la catégorie nature actuellement.
Vous choisissez alors le mot arbre, et calculez la première probabilité p(sujet t | document d) : les autres mots de la légende sont bâtiment et voiture, la plupart des photographies ayant des légendes avec bâtiment ou voiture sont dans ville, donc vous obtenez une faible probabilité.
Maintenant la deuxième probabilité p(mot w| sujet t) : nous savons que beaucoup de photographies dans nature ont le mot arbre. Vous obtenez donc un score élevé ici.
Vous mettez à jour la probabilité que l’arbre appartienne à la nature en multipliant les deux. Vous obtenez une valeur inférieure à celle d’avant pour arbre dans le sujet nature parce que maintenant vous avez vu cet arbre et des mots comme bâtiment/voiture dans la même légende, ce qui implique que les arbres peuvent aussi être trouvés dans les villes.
Pour la même raison, lorsque vous mettez à jour la probabilité pour l’arbre appartenant au sujet ville, vous remarquerez qu’elle sera supérieure à ce qu’elle était auparavant.

Après de multiples itérations sur toutes les photographies et pour chaque sujet, vous aurez des scores précis pour chaque mot par rapport à chaque sujet. Vos suppositions seront de mieux en mieux parce que vous conclurez du contexte que des mots tels que bâtiments, trottoir, métro apparaissent ensemble et donc doivent appartenir au même sujet, que nous pouvons facilement deviner être la ville.
Des mots tels que montagnes, champs, plage qui peuvent ne pas apparaître ensemble dans beaucoup de légendes mais qui apparaissent souvent sans les mots de ville et donc auront des scores plus élevés pour la nature.
Alors que des mots tels que arbres, fleurs, chiens, ciel auront presque la même probabilité d’être dans l’un ou l’autre car ils apparaissent dans les deux catégories.

Concernant la photographie, vous voyez qu’elle a 1 mot (avec une probabilité moyenne) de la catégorie nature et 2 mots (avec une forte probabilité) de la catégorie ville, vous en concluez, qu’elle appartient plus fortement à la ville qu’à la nature et donc vous décidez de l’ajouter dans ville.

Note annexe

Les applications de LDA ne doivent pas être limitées au traitement du langage naturel. J’ai récemment mis en œuvre un article où nous utilisons LDA( avec un réseaux neuronaux) pour extraire le contexte spécifique à la scène d’une image. Si vous êtes intéressé à en apprendre davantage à ce sujet, veuillez laisser un commentaire ou un message.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *