Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
GENSIM
TOPIC MODELLING FOR HUMANS
Ivan Menshikh, Lev Konstantinovskiy
ABOUT
Ivan Menshikh
● Current community manager of
gensim
● Analyst at SkyDNS (2015-2017)
menshikh_iv
menshikh-iv
Lev Kons...
GENSIM: academia and industry
● Numerous Industry Adopters
● 200+ code contributors
● 4K+ Github stars,1.8k+ forks
● 580+ ...
SOLVES THESE PROBLEMS
● Content classification
● Recommendation systems
● Search engine
● …ANYTHING…
IPython Notebook:
goo...
TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE
WHAT IS THE INPUT?
● Mails
● Messages
● Logs
● Images (why not?)
WHAT IS TEXT (DOCUMENT)?
● Words AKA “tokens”
● Word order
WHAT IS CORPUS?
● Several documents
AKA “Dataset”
TEXTS, TEXTS,...
Тренируемся на кошках
№1: Пушистый котенок мурлыкал.
№2: Пушистый кот мурлыкал и мяукал.
№3: Пушистый котенок мяукал.
№4: ...
TERM-DOCUMENT MATRIX
№1: Пушистый котенок мурлыкал.
№2: Пушистый кот мурлыкал и мяукал.
№3: Пушистый котенок мяукал.
№4: Г...
TEXT REPRESENTATION
from gensim.corpora import Dictionary
from gensim.utils import tokenize
texts = [u"Пушистый котенок му...
WHAT DO WE WANT TO KNOW?
● Topics in the text
● Find similar documents
● Cluster similar documents
TEXTS, TEXTS, TEXTS, … ...
SVD/LSA/LSI WITH 2 TOPICS
1 1 0 0
1 1 1 0
1 0 1 0
0 1 0 1
0 1 1 0
0 1 0 0
0 0 0 1
0 0 0 1
0 0 0 1
0 0 0 1
0 0 0 1
0.45 0.6...
SVD/LSA/LSI
from gensim.models import LsiModel
model = LsiModel(corpus=corpus,
num_topics=2,
id2word=dictionary)
Topics ar...
SVD/LSA/LSI
FIT LDA = FIND THE DICE THAT FIT MY TEXT
Which topic will I talk
about? Throw big dice to
decide
(Topics in a document are...
LDA ALWAYS GIVES INTERPRETABLE TOPICS
import gensim
texts = [u"Пушистый котенок мурлыкал." , u"Пушистый кот мурлыкал и
мяу...
LDA: COLORED TEXT
Автор: М. Игнатова, 8 лет http://vsookoshkax.ru/istorii/korotkie_rasskazi.htm
У меня живут кот и пудель:...
LDA AFTER T-SNE
CO-OCCURRENCE MATRIX FOR DOC2VEC
котенок context words: [пушистый, мурлыкал, мяукал].
кот context words: [пушистый, мурлык...
котенок context words: [пушистый, мурлыкал, мяукал].
кот context words: [пушистый, мурлыкал, мяукал].
пудель context words...
DOC2VEC: NEURAL NETWORK, NOT INTERPRETABLE
from gensim.models import Doc2Vec
from gensim.models.doc2vec import
LabeledSent...
DOC2VEC VISUALIZED
link
SUMMARY
Interpretable
topics
Speed
Output
vectors
LSI No Fast Dense
LDA Yes Slow Sparse
D2V No Medium Dense
WHAT IS THE USE?
● Content classification
● Recommendation systems
ARCHITECTURE
Cassandra
Hadoop FS
PostgreSQL
Annoy
Gensim
Keras
Web
CONTENT CLASSIFICATION
Input: Web pages
Output: Categories
L D A L S I D 2 V
Domain Category Probability
pikabu.ru 30 0.95
rutracker.or
g
20 0.83
rutracker.or
g
21 0.77
CONTENT CLAS...
RECOMMENDATION SYSTEM
Input: DNS logs
Output: Profiles/Clusters/...
user1 facebook.com google.com narkotiki.biz twitter.com cdn.tw.com
user2 google.com qrwcbtwb.com qrwcbtwc.com qrwcbtwd.com...
RESULTS, WHY “GENSIM” RATHER THAN...
● Big community (gitter, mailing
list, github)
● Streaming support
● Stable API (defa...
STUDENT INCUBATOR
https://rare-technologies.com/incubator/
student-projects@rare-technologies.com
RaRe Technologies
● Professional trainings:
ML, NLP, sklearn, gensim, tensorflow, etc ...
● Consulting services:
design & ...
RaRe-Technologies/gensim
gensim_py
menshikh.iv@gmail.com
lev.konst@gmail.com
info@rare-technologies.com
THANK YOU
FOR YOUR...
Upcoming SlideShare
Loading in …5
×

«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense

218 views

Published on

Выступление на PYCON RUSSIA 2017

Published in: Internet
  • Be the first to comment

  • Be the first to like this

«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense

  1. 1. GENSIM TOPIC MODELLING FOR HUMANS Ivan Menshikh, Lev Konstantinovskiy
  2. 2. ABOUT Ivan Menshikh ● Current community manager of gensim ● Analyst at SkyDNS (2015-2017) menshikh_iv menshikh-iv Lev Konstantinovskiy ● Past community manager of gensim (2015-2017) ● ML Researcher at WorldSense teagermylk tmylk
  3. 3. GENSIM: academia and industry ● Numerous Industry Adopters ● 200+ code contributors ● 4K+ Github stars,1.8k+ forks ● 580+ academic citations
  4. 4. SOLVES THESE PROBLEMS ● Content classification ● Recommendation systems ● Search engine ● …ANYTHING… IPython Notebook: goo.gl/n8xWqM
  5. 5. TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE WHAT IS THE INPUT? ● Mails ● Messages ● Logs ● Images (why not?)
  6. 6. WHAT IS TEXT (DOCUMENT)? ● Words AKA “tokens” ● Word order WHAT IS CORPUS? ● Several documents AKA “Dataset” TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE
  7. 7. Тренируемся на кошках №1: Пушистый котенок мурлыкал. №2: Пушистый кот мурлыкал и мяукал. №3: Пушистый котенок мяукал. №4: Громкий пушистый пудель бегал и лаял.
  8. 8. TERM-DOCUMENT MATRIX №1: Пушистый котенок мурлыкал. №2: Пушистый кот мурлыкал и мяукал. №3: Пушистый котенок мяукал. №4: Громкий пушистый пудель бегал и лаял. №1 №2 №3 №4 котенок 1 0 1 0 пушистый 1 1 1 1 мяукал 0 1 1 0 X =
  9. 9. TEXT REPRESENTATION from gensim.corpora import Dictionary from gensim.utils import tokenize texts = [u"Пушистый котенок мурлыкал." , u"Пушистый кот мурлыкал и мяукал.", u"Пушистый котенок мяукал.", u"Громкий пушистый пудель бегал и лаял."] tokenized_texts = [list(tokenize(text.lower())) for text in texts] dictionary = Dictionary(tokenized_texts) corpus = [dictionary.doc2bow(text) for text in tokenized_texts] corpus(doc-term matrix): [[(0, 1), (1, 1), (2, 1)], [(1, 1), (2, 1), (3, 1), (4, 1), (5, 1)], [(0, 1), (1, 1), (5, 1)], [(1, 1), (4, 1), (6, 1), (7, 1), (8, 1), (9, 1)]]
  10. 10. WHAT DO WE WANT TO KNOW? ● Topics in the text ● Find similar documents ● Cluster similar documents TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE
  11. 11. SVD/LSA/LSI WITH 2 TOPICS 1 1 0 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0.45 0.694 0.45 0.33 0.25 0.11 0.25 -0.92 0.402 0.151 0.561 0.257 0.317 0.211 0.361 -0.335 0.402 0.151 0.244 0.0463 0.117 -0.381 0.117 -0.381 0.117 -0.381 0.117 -0.381 0.117 -0.381 DOCUMENTS words DOCUMENTS dimensions DIMENSIONS words =
  12. 12. SVD/LSA/LSI from gensim.models import LsiModel model = LsiModel(corpus=corpus, num_topics=2, id2word=dictionary) Topics are usually NOT interpretable but here we are lucky: 0: 0.637*"пушистый" + 0.381*"и" + 0.324*"мяукал" + 0.324*"мурлыкал" + 0.256*"котенок" 1: 0.387*"пудель" + 0.387*"бегал" + 0.387*"громкий" + 0.387*"лаял" + -0.343*"котенок"
  13. 13. SVD/LSA/LSI
  14. 14. FIT LDA = FIND THE DICE THAT FIT MY TEXT Which topic will I talk about? Throw big dice to decide (Topics in a document are modeled as a Dirichlet probability distribution) Про собак Which word will I say from the topic “Собаки”? Throw small dice to decide. (Words in a topic are modeled as another Dirichlet probability distribution) “Громкий” For example: Громкий пудель кот пудель мурлыкал
  15. 15. LDA ALWAYS GIVES INTERPRETABLE TOPICS import gensim texts = [u"Пушистый котенок мурлыкал." , u"Пушистый кот мурлыкал и мяукал.", u"Пушистый котенок мяукал.", u"Громкий пушистый пудель бегал и лаял." u"Большой пудель лаял и кусался.", u"Громкий большой пудель бегал."] model = gensim.models.LdaMulticore(corpus=corpus, id2word=dictionary, num_topics=2) Topics: 0: 0.185*"пушистый" + 0.134*"мяукал" + 0.134*"котенок" + 0.116*" мурлыкал" + 0.075*"кот" 1: 0.136*"пудель" + 0.125*"и" + 0.102*"лаял" + 0.099*"пушистый" + 0.099*" громкий"
  16. 16. LDA: COLORED TEXT Автор: М. Игнатова, 8 лет http://vsookoshkax.ru/istorii/korotkie_rasskazi.htm У меня живут кот и пудель: старшему коту Афину 2 года 3 месяца, а пуделю Мисти 8 месяцев. Первым в наш дом попал Мисти тогда ему было не больше 2 месяцев. Потом попал кот когда ему было 6 месяцев. Он много мурлыкал, был пушистый и добрый. В это время у нас уже жил пудель Мисти и он много на кота лаял и кусался. Topic 0: Про собак 0.64 Topic 1: Про кошек 0.36
  17. 17. LDA AFTER T-SNE
  18. 18. CO-OCCURRENCE MATRIX FOR DOC2VEC котенок context words: [пушистый, мурлыкал, мяукал]. кот context words: [пушистый, мурлыкал, мяукал]. пудель context words: [пушистый, бегал]. Credit: Ed Grefenstette https://github.com/oxford-cs-deepnlp-2017/ №1: Пушистый котенок мурлыкал. №2: Пушистый кот мурлыкал и мяукал. №3: Пушистый котенок мяукал. №4: Громкий пушистый пудель бегал и лаял.
  19. 19. котенок context words: [пушистый, мурлыкал, мяукал]. кот context words: [пушистый, мурлыкал, мяукал]. пудель context words: [ пушистый, бегал]. пушистый мурлыкал лаял мяукал громкий бегал котенок 2 1 0 1 0 0 кот 1 1 0 1 0 0 пудель 1 0 0 0 0 1 X = CO-OCCURRENCE MATRIX FOR DOC2VEC
  20. 20. DOC2VEC: NEURAL NETWORK, NOT INTERPRETABLE from gensim.models import Doc2Vec from gensim.models.doc2vec import LabeledSentence corpus = [LabeledSentence(sent, [idx]) for (idx, sent) in enumerate(texts)] model = Doc2Vec(size=5, window=2, min_count=1) model.build_vocab(corpus) model.train(corpus, epochs=5, total_examples=len(corpus))
  21. 21. DOC2VEC VISUALIZED link
  22. 22. SUMMARY Interpretable topics Speed Output vectors LSI No Fast Dense LDA Yes Slow Sparse D2V No Medium Dense
  23. 23. WHAT IS THE USE? ● Content classification ● Recommendation systems
  24. 24. ARCHITECTURE Cassandra Hadoop FS PostgreSQL Annoy Gensim Keras Web
  25. 25. CONTENT CLASSIFICATION Input: Web pages Output: Categories
  26. 26. L D A L S I D 2 V Domain Category Probability pikabu.ru 30 0.95 rutracker.or g 20 0.83 rutracker.or g 21 0.77 CONTENT CLASSIFICATION
  27. 27. RECOMMENDATION SYSTEM Input: DNS logs Output: Profiles/Clusters/...
  28. 28. user1 facebook.com google.com narkotiki.biz twitter.com cdn.tw.com user2 google.com qrwcbtwb.com qrwcbtwc.com qrwcbtwd.com google.com user3 instagram.co m cdninstagram.co m statix.facebook. com graph.instagra m.com facebook.com LDA / LSI Clustering DNS logs RECOMMENDATION SYSTEM
  29. 29. RESULTS, WHY “GENSIM” RATHER THAN... ● Big community (gitter, mailing list, github) ● Streaming support ● Stable API (default + sklearn) ● Fixed memory ● Multi-core ● Multi-machine ● pip install -U gensim
  30. 30. STUDENT INCUBATOR https://rare-technologies.com/incubator/ student-projects@rare-technologies.com
  31. 31. RaRe Technologies ● Professional trainings: ML, NLP, sklearn, gensim, tensorflow, etc ... ● Consulting services: design & development ML systems https://rare-technologies.com/ radim@rare-technologies.com info@rare-technologies.com
  32. 32. RaRe-Technologies/gensim gensim_py menshikh.iv@gmail.com lev.konst@gmail.com info@rare-technologies.com THANK YOU FOR YOUR ATTENTION! RaRe-Technologies/gensim #!forum/gensim

×