«Gensim — тематическое моделирование для людей» Иван...
Transcript of «Gensim — тематическое моделирование для людей» Иван...
![Page 1: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/1.jpg)
GENSIM TOPIC MODELLING FOR HUMANSIvan Menshikh, Lev Konstantinovskiy
![Page 2: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/2.jpg)
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
![Page 3: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/3.jpg)
GENSIM: academia and industry
● Numerous Industry Adopters● 200+ code contributors● 4K+ Github stars,1.8k+ forks● 580+ academic citations
![Page 4: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/4.jpg)
SOLVES THESE PROBLEMS
● Content classification ● Recommendation systems ● Search engine ● …ANYTHING…
IPython Notebook: goo.gl/n8xWqM
![Page 5: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/5.jpg)
TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE
WHAT IS THE INPUT?
● Mails● Messages● Logs● Images (why not?)
![Page 6: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/6.jpg)
WHAT IS TEXT (DOCUMENT)?
● Words AKA “tokens”● Word order
WHAT IS CORPUS?
● Several documents
AKA “Dataset”
TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE
![Page 7: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/7.jpg)
Тренируемся на кошках
№1: Пушистый котенок мурлыкал.№2: Пушистый кот мурлыкал и мяукал.№3: Пушистый котенок мяукал.№4: Громкий пушистый пудель бегал и лаял.
![Page 8: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/8.jpg)
TERM-DOCUMENT MATRIX
№1: Пушистый котенок мурлыкал.№2: Пушистый кот мурлыкал и мяукал.№3: Пушистый котенок мяукал.№4: Громкий пушистый пудель бегал и лаял.
№1 №2 №3 №4
котенок 1 0 1 0
пушистый 1 1 1 1
мяукал 0 1 1 0
X =
![Page 9: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/9.jpg)
TEXT REPRESENTATION
from gensim.corpora import Dictionaryfrom gensim.utils import tokenizetexts = [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)]]
![Page 10: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/10.jpg)
WHAT DO WE WANT TO KNOW?
● Topics in the text● Find similar documents● Cluster similar documents
TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE
![Page 11: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/11.jpg)
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
wor
ds
DOCUMENTS
dim
ensi
ons
DIMENSIONS
wor
ds
=
![Page 12: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/12.jpg)
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*"котенок"
![Page 13: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/13.jpg)
SVD/LSA/LSI
![Page 14: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/14.jpg)
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: Громкий пудель кот пудель мурлыкал
![Page 15: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/15.jpg)
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*"громкий"
![Page 16: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/16.jpg)
LDA: COLORED TEXT
Автор: М. Игнатова, 8 лет http://vsookoshkax.ru/istorii/korotkie_rasskazi.htm
У меня живут кот и пудель: старшему коту Афину 2 года 3 месяца, а пуделю Мисти 8 месяцев. Первым в наш дом попал Мисти тогда ему было не больше 2 месяцев. Потом попал кот когда ему было 6 месяцев.Он много мурлыкал, был пушистый и добрый. В это время у нас уже жил пудель Мисти и он много на кота лаял и кусался.
Topic 0: Про собак 0.64 Topic 1: Про кошек 0.36
![Page 17: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/17.jpg)
LDA AFTER T-SNE
![Page 18: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/18.jpg)
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: Громкий пушистый пудель бегал и лаял.
![Page 19: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/19.jpg)
котенок 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
![Page 20: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/20.jpg)
DOC2VEC: NEURAL NETWORK, NOT INTERPRETABLE
from gensim.models import Doc2Vecfrom 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))
![Page 21: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/21.jpg)
DOC2VEC VISUALIZED
link
![Page 22: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/22.jpg)
SUMMARY
Interpretable topics Speed Output
vectors
LSI No Fast Dense
LDA Yes Slow Sparse
D2V No Medium Dense
![Page 23: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/23.jpg)
WHAT IS THE USE?
● Content classification ● Recommendation systems
![Page 24: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/24.jpg)
ARCHITECTURE
Cassandra
Hadoop FSPostgreSQL
Annoy
Gensim
Keras
Web
![Page 25: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/25.jpg)
CONTENT CLASSIFICATION
Input: Web pagesOutput: Categories
![Page 26: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/26.jpg)
L D A L S I D 2 V
Domain Category Probability
pikabu.ru 30 0.95
rutracker.org 20 0.83
rutracker.org 21 0.77
CONTENT CLASSIFICATION
![Page 27: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/27.jpg)
RECOMMENDATION SYSTEM
Input: DNS logsOutput: Profiles/Clusters/...
![Page 28: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/28.jpg)
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.com
cdninstagram.com
statix.facebook.com
graph.instagram.com
facebook.com
LDA / LSI Clustering
DNS logs
RECOMMENDATION SYSTEM
![Page 29: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/29.jpg)
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
![Page 31: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/31.jpg)
RaRe Technologies
● Professional trainings: ML, NLP, sklearn, gensim, tensorflow, etc ...● Consulting services: design & development ML systems
https://rare-technologies.com/[email protected]@rare-technologies.com
![Page 32: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense](https://reader037.fdocument.pub/reader037/viewer/2022100301/5a64f9ab7f8b9aa2548b53bf/html5/thumbnails/32.jpg)
RaRe-Technologies/gensim
gensim_py
[email protected]@[email protected]
THANK YOUFOR YOUR ATTENTION!
RaRe-Technologies/gensim
#!forum/gensim