github

cemoody / lda2vec

  • понедельник, 4 апреля 2016 г. в 03:12:21
https://github.com/cemoody/lda2vec

Python
None



lda2vec: Tools for interpreting natural language

http://img.shields.io/badge/license-MIT-blue.svg?style=flat https://readthedocs.org/projects/lda2vec/badge/?version=latest https://travis-ci.org/cemoody/lda2vec.svg?branch=master https://img.shields.io/twitter/follow/chrisemoody.svg?style=social

The lda2vec model tries to mix the best parts of word2vec and LDA into a single framework. word2vec captures powerful relationships between words, but the resulting vectors are largely interpretable and don't represent documents. LDA on the other hand is quite interpretable by humans, but doesn't model local word relationships like word2vec. We build a model that builds both word and document topics, makes them interpreable, makes topics over clients, times, and documents, and makes them supervised topics.

Resources

See this Jupyter Notebook for an example of an end-to-end demonstration.

See this presentation for a presentation focused on the benefits of word2vec, LDA, and lda2vec.

See the API reference docs

About

images/img00_word2vec.png

Word2vec tries to model word-to-word relationships.

images/img01_lda.png

LDA models document-to-word relationships.

images/img02_lda_topics.png

LDA yields topics over each document.

images/img03_lda2vec_topics01.png

lda2vec yields topics not over just documents, but also regions.

images/img04_lda2vec_topics02.png

lda2vec also yields topics over clients.

images/img05_lda2vec_topics03_supervised.png

lda2vec the topics can be 'supervised' and forced to predict another target.

lda2vec also includes more contexts and features than LDA. LDA dictates that words are generated by a document vector; but we might have all kinds of 'side-information' that should influence our topics. For example, a single client comment is about a particular item ID, written at a particular time and in a particular region. In this case, lda2vec gives you topics over all items (separating jeans from shirts, for example) times (winter versus summer) regions (desert versus coastal) and clients (sporty vs professional attire).

Ultimately, the topics are interpreted using the excellent pyLDAvis library:

images/img06_pyldavis.gif

Requirements

Minimum requirements:

  • Python 2.7+
  • NumPy 1.10+
  • Chainer 1.5.1+
  • spaCy 0.99+

Requirements for some features:

  • CUDA support
  • Testing utilities: py.test