Sujet modélisation dans MALLET vs NLTK

je viens de lire un article fascinant sur la façon dont MALLET pourrait être utilisé pour la modélisation de sujets, mais je ne pouvais rien trouver en ligne comparant MALLET à NLTK, que j'ai déjà eu une certaine expérience avec.

Quelles sont les principales différences entre eux? Le MALLET est-il une ressource plus "complète" (p. ex. il y a plus d'outils et d'algorithmes sous le capot)? Où sont les bons articles qui répondent à ces deux premières questions?

28
demandé sur Trindaz 2011-09-19 23:24:04

3 réponses

ce n'est pas que l'un soit plus complet que l'autre, c'est plutôt une question d'avoir quelque chose que l'autre n'a pas et vice versa. Il s'agit également de déterminer le public visé et le but visé.

Mallet est une boîte à outils D'apprentissage machine basée sur Java qui vise à fournir des implémentations robustes et rapides pour diverses tâches de traitement du langage naturel.

NLTK est construit en utilisant Python et est livré avec beaucoup de choses supplémentaires comme des corpus tels que WordNet. Le NLTK s'adresse davantage aux personnes l'apprentissage de la NLP, et en tant que tel, est davantage utilisé comme une plate-forme d'apprentissage et peut-être moins comme une solution d'ingénierie.

à mon avis, la principale différence entre les deux est que le NLTK est mieux positionné comme une ressource d'apprentissage pour les personnes intéressées par l'apprentissage automatique et le NLP car il est livré avec une tonne entière de documentation, d'exemples, de Corpus, etc. etc.

Mallet s'adresse davantage aux chercheurs et aux praticiens qui travaillent dans le domaine et qui savent déjà ce qu'ils veulent faire. Il s'agit avec moins de documentation (bien qu'il y ait de bons exemples et que l'API soit bien documentée) par rapport à la vaste collection de documents généraux de NLTK.

mise à jour: Les bons articles qui les décrivent seraient les Mallet docs et les exemples à http://mallet.cs.umass.edu/ - la barre latérale a des liens vers le balisage de séquence, la modélisation de sujet, etc.

et pour NLTK la NLTK livre traitement du langage naturel avec Python est une bonne introduction à la NLTK et à la NLP.

UPDATE

j'ai récemment trouvé la bibliothèque sklearn Python. Il s'agit de l'apprentissage automatique de manière plus générale, non pas directement pour la NLP, mais également pour cela. Il est livré avec un très grand choix d'outils de modélisation et la plupart d'entre eux semble reposer sur NumPy, il devrait donc être assez rapide. Je l'ai utilisé assez souvent et je peux dire qu'il est très bien écrit et documenté et qu'une communauté de développeurs active le fait avancer (depuis mai 2013 au moins).

UPDATE 2

j'utilise maintenant mallet depuis un certain temps (en particulier L'API mallet) et je peux dire que si vous prévoyez d'intégrer mallet dans un autre projet, vous devriez être très familier avec Java et prêt à passer beaucoup de temps à déboguer une base de code presque totalement non documentée.

si tout ce que vous voulez faire est d'utiliser les outils de ligne de commande mallet, c'est très bien, utiliser L'API demande beaucoup de recherche à travers le code mallet lui-même et généralement corriger quelques bogues ainsi. Soyez averti mallet est livré avec une documentation minimale en ce qui concerne L'API.

23
répondu Matti Lyra 2014-11-18 15:54:22

la question Est de savoir si vous travaillez en Python ou en Java (ou rien de ce qui précède). Mallet est bon pour Java (donc Clojure et Scala) car vous pouvez facilement accéder à son API en Java. Mallet a également une interface de ligne de commande agréable de sorte que vous pouvez l'utiliser en dehors d'une application.

pour la même raison avec Python, NLTK est génial pour python, et vous n'aurez pas à faire de folie Jython pour obtenir ceux-ci pour bien jouer ensemble. Si vous utilisez python, Gensim vient d'ajouter un enveloppeur de maillet c'est la peine de vérifier. Pour l'instant, c'est essentiellement une fonction alpha, mais ça peut faire ce dont vous avez besoin.

2
répondu theclaymethod 2014-04-07 22:48:46

Je ne suis pas familier avec la boîte à outils de NLTK, donc je n'essaierai pas de la comparer. Les sources Mallet de Github contiennent plusieurs algorithmes (dont certains ne sont pas disponibles dans la version "publiée"). À ma connaissance, il y a

  • SimpleLDA (LDA avec effondré à l'échantillonnage de Gibbs)
  • ParallelTopicModel (LDA qui fonctionne le multi-core)
  • Hiérarchicallda
  • LabeledLDA (un semi-supervisé approche LDA)
  • Pachinko Allocation avec LDA.
  • Pightedtopicmodel

Il a aussi

  • quelques cours qui aident au diagnostic des modèles LDA. (TopicModelDiagnostics.java)
  • la capacité de sérialiser et de désérialiser un modèle Lda formé.

dans l'ensemble, c'est un bel outil pour expérimenter avec des modèles de sujet, avec une licence open-source approachable (CPL).

1
répondu shark8me 2015-03-12 09:33:59