2017-06-27 1 views
0

Je veux appliquer l'algorithme LDA à un corpus pour trouver des mots similaires si on me donne un mot ou une phrase en entrée. Comment cela peut-il être fait?Mots similaires utilisant LDA

De même, LDA ignore-t-il l'ordre des mots dans un document? Ignore-t-il également l'ordre des documents dans le corpus? Une autre stratégie peut également être utilisée pour rechercher des mots similaires. L'ordre des mots dans le document n'a pas d'importance en raison de la langue des documents que j'utilise, c'est-à-dire Mon document est un sac de mots et l'ordre des mots n'a pas d'importance.

+1

Copie possible de [comment pourrais-je faire correspondre une recherche pour des mots similaires] (https://stackoverflow.com/questions/4064042/how-could-i-make-a-search-match-for-similar-words – Shaido

+0

Ce n'est pas un dupe @Shaido – eliasah

+0

Malheureusement votre question n'est pas très précise et comme si cela sonne que vous demandez un tutoriel hors sujet sur SO. Vous devriez essayer quelque chose, échouer et poster une question plus précise afin que nous puissions vous aider! Je vote pour le fermer en ce moment pour être cette raison. – eliasah

Répondre

1
  1. Est-ce que LDA ignore l'ordre des mots dans un document? OUI
  2. Ignore-t-il également l'ordre des documents dans le corpus? OUI

Le modèle LDA génère 2 distributions (sous la forme de 2 matrices): distribution de sujet de document et distribution de mot de sujet. En bref, vous pouvez transposer la matrice de mot-thème et calculer la similarité de cosinus pour chaque mot

0

Pour répondre à votre question - Oui, LDA peut être utilisé pour retourner une liste de mots similaires avec un mot de requête. Le dans ce cas similitude se réfère à des co-occurrences entre les mots, à savoir si u est un mot similaire à v, il est probable que la probabilité P (u | v, d) est élevée c'est-à-dire pour tout document d, il est probable que vous verriez u si vous avez déjà vu v. Ces cooccurrences statistiques pourraient mettre des mots tels que «Obama», «président» et «USA» dans le même groupe (classe d'équivalence définie par la relation similarité). La manière exacte d'obtenir des mots similaires dans LDA est d'utiliser la sortie phi matrix (une matrice KxV, K = # sujets latents, V = # mots). Chaque vecteur de colonne de cette matrice représente un mot. À partir d'un mot de requête, obtenez son vecteur et renvoyez une liste de mots dont les vecteurs sont les plus similaires (produit-intérieur) à celui de la requête. Cependant, LDA ne sera pas particulièrement un bon choix pour capturer les relations de synonymie entre termes, par ex. "soleil" et "solaire". L'utilisation de vecteur de mot intégrant est un choix particulièrement bon dans un tel scénario. La principale différence entre le vecteur de mot et le LDA est que la notion de similarité utilisée dans le premier est plus contextuelle. Pour être plus précis, les vecteurs de mots u et v sont similaires s'ils sont tous deux similaires à leurs vecteurs de contexte - d'autres mots proches les uns des autres. Pour en revenir à l'exemple, dans les contextes des mots «soleil» et «solaire», vous vous attendez à voir des mots tels que «étoile», «planètes», «énergie», «chaleur», etc. croyance que "soleil" et "solaire" pourraient être utilisés comme synonymes. En outre, d'un point de vue pratique, l'utilisation de l'insertion de vecteurs de mots est un bien meilleur choix car l'entraînement est beaucoup plus rapide que le LDA. Utilisez l'implémentation C word2vec de Mikolov.Il a un distance exécutable utilitaire, qui, avec un mot de requête, vous donnerait une liste de mots classés par des valeurs décroissantes de similarité de cosinus avec le mot de requête.