Packages R pour effectuer la modélisation de sujet / LDA: juste `topicmodels` et` lda` [fermé]

29

Il me semble que seuls deux packages R sont capables d'effectuer l' allocation de Dirichlet latente :

L'un est lda, écrit par Jonathan Chang; et l'autre est topicmodelsécrit par Bettina Grün et Kurt Hornik.

Quelles sont les différences entre ces deux packages en termes de performances, de détails d'implémentation et d'extensibilité?

bit-question
la source

Réponses:

26

Implémentation: le package topicmodels fournit une interface avec le code GSL C et C ++ pour les modèles de sujets de Blei et al. et Phan et al. Pour le premier, il utilise Variational EM, pour le dernier Gibbs Sampling. Voir http://www.jstatsoft.org/v40/i13/paper . Le package fonctionne bien avec les utilitaires du package tm.

Le package lda utilise un échantillonneur Gibbs réduit pour un certain nombre de modèles similaires à ceux de la bibliothèque GSL. Cependant, il a été implémenté par les auteurs du package lui-même, et non par Blei et al. Cette implémentation diffère donc en général de la technique d'estimation proposée dans les articles originaux introduisant ces variantes de modèle, où l'algorithme VEM est généralement appliqué. D'un autre côté, le package offre plus de fonctionnalités que l'autre package. Le package fournit également une fonctionnalité d'exploration de texte.

Extensibilité: En ce qui concerne l'extensibilité, le code du modèle de rubrique peut, par sa nature même, être étendu pour interfacer d'autres codes de modèle de rubrique écrits en C et C ++. Le package lda semble s'appuyer davantage sur l'implémentation spécifique fournie par les auteurs, mais l'échantillonneur Gibbs pourrait permettre de spécifier votre propre modèle de sujet. Pour les problèmes d'extensibilité nota bene, le premier est sous licence GPL-2 et le dernier LGPL, donc cela peut dépendre de ce pour quoi vous devez l'étendre (la GPL-2 est plus stricte en ce qui concerne l'aspect open source, c'est-à-dire que vous ne pouvez pas l'utiliser dans un logiciel propriétaire).

Performance: Je ne peux pas vous aider ici, je n'ai utilisé que des modèles de sujet jusqu'à présent.

Conclusion:
personnellement topicmodels, j'utilise , car il est bien documenté (voir l'article JSS ci-dessus) et je fais confiance aux auteurs (Grün implémente également flexmix et Hornik est le membre principal de R).

Momo
la source
7
Tout d'abord, je suis sûr que les modèles de sujet sont un excellent package, et je conviens qu'il est très bien documenté. En ce qui concerne la «confiance» envers les auteurs du package LDA, Jonathan Chang était mon doctorant et je fais entièrement confiance à son code. Il est à la fois un excellent ingénieur logiciel et un savant. Son package est facile, s'adapte bien à des collections assez importantes et il est agréable d'explorer les résultats dans R. (J'aime et j'ai l'habitude de la représentation matricielle clairsemée des documents.) À noter, LDA implémente d'autres modèles, y compris relationnels modèles de sujet, LDA supervisé (avec GLM) et blockmodel stochastique à membres mixtes.
Merci d'avoir pesé. Je suis sûr que le ldapaquet est génial, je ne voulais pas laisser entendre que le ldacode était inférieur. J'ai déclaré mon impression personnelle (la documentation semblait un peu bâclée). Comme il y a plus de 2 ans, j'ai légèrement modifié la réponse (les fautes de frappe sur la page CRAN sont toujours là, je pense qu'il serait bon qu'elles soient corrigées, mais cet e-mail semble s'être perdu).
Momo
Je suppose que vous avez beaucoup d'expérience avec les deux packages et que vous en savez le plus sur le sujet général, que diriez-vous de fournir une réponse énumérant certains des avantages et des inconvénients des deux packages? Je ne l'ai pas utilisé lda, je ne pouvais donc pas en donner une évaluation empirique. Fournir cela aiderait sûrement le PO et tous les autres ainsi que de corriger les éventuelles injustices (qui n'étaient pas prévues). Merci!
Momo
1
J'ai également essayé les deux et j'ai trouvé que le ldapaquet contenait plus d'options. Cependant, il est difficile de comprendre comment formater vos données afin qu'elles s'intègrent dans le modèle. Le topicmodelspackage fonctionne bien avec le tmpackage, tandis que le ldapackage demande une liste dont la création n'est pas claire.
Omri374
12

+1 pour les modèles de sujet . @ La réponse de Momo est très complète. Je voudrais simplement ajouter que les topicmodelsentrées sont tmutilisées sous forme de matrices de termes de document, qui sont facilement créées avec le package ou en utilisant python. Le ldapackage utilise une forme d'entrée plus ésotérique (basée sur le LDA-C de Blei) et je n'ai pas eu de chance en utilisant les fonctions intégrées pour convertir dtm au ldaformat du package (la documentation lda est très pauvre, comme le note Momo).

J'ai du code qui commence par du texte brut, le pré-traite tmet le passe à travers topicmodels(y compris la recherche du nombre optimal de sujets à l'avance et l'utilisation de la sortie) ici . Pourrait être utile à quelqu'un qui vient topicmodelspour la première fois.

Ben
la source
3
Pour ceux qui n'utilisent pas déjà tm et qui souhaitent jouer avec lda , JFreq met également des textes en clair dans le format préféré de LDA-C.
conjugateprior
Bon à savoir sur JFreq, je ne l'ai jamais vu auparavant. Merci pour le conseil!
Ben
1
Je viens de repérer la read_dtm_Blei_et_alfonction dans le tmpackage qui fait la même chose.
Ben
3

Le package R Structural Topic Model (STM) de Molly Roberts, Brandon Stewart et Dustin Tingley est également un excellent choix. Construit au-dessus du package tm, il s'agit d'un cadre général pour la modélisation de sujets avec des informations de covariables au niveau du document.

http://structuraltopicmodel.com/

Le package STM comprend une série de méthodes (recherche de grille) et de mesures (cohérence sémantique, résidus et exclusivité) pour déterminer le nombre de sujets. La définition du nombre de sujets sur 0 permettra également au modèle de déterminer un nombre optimal de sujets.

Le package stmBrowser est un excellent complément de visualisation de données pour visualiser l'influence des variables externes sur les sujets. Voir cet exemple lié aux débats présidentiels de 2016: http://alexperrier.github.io/stm-visualization/index.html .

Alexis Perrier
la source
0

J'ai utilisé les trois bibliothèques, parmi les 3 à savoir., Modèles de sujet, lda, stm; tout le monde ne travaille pas avec n grammes. La bibliothèque topicmodels est bonne avec son estimation et fonctionne également avec n grammes. Mais si quelqu'un travaille avec des grammes, le praticien peut préférer stm car il donne une sortie structurée.

Ganesh Sonawane
la source