There are several tools for LDA. But I don't know which one is better and when? I wonder if anyone could guide me in choosing one toolbox. My priorities are ease-of-use and supporting various variations and extensions of LDA.

Some but not all of the candidates are:

  1. MALLET (Java)
  2. gensim (Python)
  3. topicmodels (R)
  4. Stanford Topic Modeling Toolbox
  5. Matlab Topic Modeling Toolbox
  6. scikit-learn
  • $\begingroup$ scikit-learn has LDA, which also works with Spark. $\endgroup$
    – Alex R.
    Jun 8, 2016 at 21:13

1 Answer 1


I don't believe there is such thing as the "best" tool for topic modelling. They all use they same approach as you mentioned: LDA. You can choose one of these tools depending on your expertise of the language you will be using. Mallet for example has the advantage that can be used without coding (if you don't know how to code), but if you are an expert in java this could also be a good choice. Same happens with gensim, if you are an expert in python, this should be your choice, or even scikit-learn. If you are an expert in R then use topicmodels. These tools will let you play with LDA's parameters in such a way that you will get similar results, and it will then depend on performance rather than the solution. I imagine some of these tools will have a small part that others won't cover, but usually for topic modelling you would use any of these tools to get a topic distribution and use one of the best tools available out there: human knowledge and understanding.

My suggestion is that you play with a couple of them (not all of them) to see if you can tweak the parameters for your particular needs, and to see if you can get some useful results (some have very useful results with the default values). I use Mallet and scikit-learn, and I only choose one or the other depending on the programming language my application is being developed on.

Remember that to get repeatable results when you run these tools you would have to set a random seed different from the default value. A value of 1 in that random seed would suffice. If you don't set a random seed, you will get different results each time you run the topic modelling, even if you use the same parameters for the same documents.

Hope this helps.

  • $\begingroup$ What do you mean by 'depend on the performance than solution"? $\endgroup$
    – BlackSwan
    Jul 18, 2017 at 6:33
  • $\begingroup$ Depending on the language you choose you will have a difference in performance (speed, memory allocation, etc), but the solution to the problem will be the same: topic modelling using LDA. $\endgroup$
    – c-chavez
    Jul 22, 2017 at 10:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.