Allocation de Dirichlet latente, pièges, conseils et programmes
j'expérimente avec Allocation De Dirichlet Latente pour le sujet désambiguïsation et affectation, et je suis à la recherche de conseils.
- quel programme est le "meilleur", où le meilleur est une combinaison de plus facile à utiliser, meilleure estimation préalable, rapide
- Comment puis-je incorporer mes intuitions sur l'actualité. Disons que je pense que je sais que certains articles du corpus sont vraiment dans la même catégorie, comme tous les articles du même auteur. Puis-je ajouter que dans l' l'analyse?
- y a-t-il des pièges inattendus ou des conseils que je devrais connaître avant d'embarquer?
je préférerais qu'il y ait des r ou des python front ends pour n'importe quel programme, mais je m'attends (et j'accepte) que je m'occupe de C.
5 réponses
http://mallet.cs.umass.edu/ est IMHO le plug-n-play plus impressionnant package LDA là-bas.. Il utilise L'échantillonnage de Gibbs pour estimer les sujets et a une interface en ligne de commande très simple avec beaucoup de cloches supplémentaires-n-sifflets (quelques modèles plus compliqués, l'optimisation de l'hyper-paramètre, etc)
il est préférable de laisser l'algorithme faire son travail. Il peut y avoir des variantes de LDA (et pLSI, etc) qui vous permettent de faire une sorte de semi-supervisé chose.. Je ne sais pas du tout pour le moment.
j'ai trouvé que supprimer des mots-arrêts et d'autres mots très fréquents semblait améliorer la qualité de mes sujets beaucoup (évalué en regardant les premiers mots de chaque sujet, pas n'importe quelle métrique rigoureuse).. Je devine découlant/lemmatisation permettrait ainsi.
vous avez mentionné une préférence pour R, Vous pouvez utiliser deux paquets topicmodels (lent) ou lda (rapide). Python a deltaLDA,pyLDA,Gensim, etc.
la modélisation de sujet avec des sujets ou des mots spécifiés est délicate,David Andrzejewski a un code Python qui semble le faire. Il y a une implémentation C++ de Lda supervisée ici. Et beaucoup de documents sur les approches connexes ( Divulda, étiqueté LDA mais pas sous une forme facile à utiliser, pour moi en tout cas...
comme le dit @adi92, enlever les mots d'arrêt, les espaces blancs, les nombres, la ponctuation et le bourrage améliore beaucoup les choses. Un écueil possible est d'avoir le nombre erroné (ou inapproprié) de sujets. Actuellement, il n'y a pas de diagnostic simple pour combien de sujets sont optimaux pour un coprus d'une taille donnée, etc. Il y a quelques-uns mesures de la qualité du sujet disponible en MALLET (le plus rapide), qui sont très pratiques.
à la comme d'habitude sources, il semble que la zone la plus active parlant de cela est sur le thèmes-les modèles de listes de diffusion. D'après mon enquête initiale, le paquet le plus facile à comprendre est le Lda Matlab package.
Ce n'est pas léger trucs, donc je ne suis pas surpris qu'il est difficile de trouver de bonnes ressources.
Pour ce type d'analyse, j'ai utilisé LingPipe: http://alias-i.com/lingpipe/index.html. C'est un open source Java de la bibliothèque, les pièces dont j'utilise directement ou port. Incorporer vos propres données, vous pouvez utiliser un classifieur, comme naive bayes, en conjonction. mon expérience de la PNL statistique est limitée, mais elle suit habituellement un cycle de mise en place de classificateurs, de formation et de recherche de résultats, de peaufinage.
je seconde. Le lda de Mallet utilise une structure de données sparselda et l'apprentissage distribué, donc son V rapide. la mise en marche de l'optimisation de l'hyperparamètre donnera un meilleur résultat, imo.