«Gensim — тематическое моделирование для людей» Иван...

32
GENSIM TOPIC MODELLING FOR HUMANS Ivan Menshikh, Lev Konstantinovskiy

Transcript of «Gensim — тематическое моделирование для людей» Иван...

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

GENSIM TOPIC MODELLING FOR HUMANSIvan Menshikh, Lev Konstantinovskiy

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

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

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

SOLVES THESE PROBLEMS

● Content classification ● Recommendation systems ● Search engine ● …ANYTHING…

IPython Notebook: goo.gl/n8xWqM

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

TEXTS, TEXTS, TEXTS, … TEXTS EVERYWHERE

WHAT IS THE INPUT?

● Mails● Messages● Logs● Images (why not?)

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

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

Тренируемся на кошках

№1: Пушистый котенок мурлыкал.№2: Пушистый кот мурлыкал и мяукал.№3: Пушистый котенок мяукал.№4: Громкий пушистый пудель бегал и лаял.

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

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

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

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

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

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

SVD/LSA/LSI

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

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

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

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

LDA AFTER T-SNE

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

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

котенок 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

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 22: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense

SUMMARY

Interpretable topics Speed Output

vectors

LSI No Fast Dense

LDA Yes Slow Sparse

D2V No Medium Dense

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

WHAT IS THE USE?

● Content classification ● Recommendation systems

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

ARCHITECTURE

Cassandra

Hadoop FSPostgreSQL

Annoy

Gensim

Keras

Web

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

CONTENT CLASSIFICATION

Input: Web pagesOutput: Categories

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

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

RECOMMENDATION SYSTEM

Input: DNS logsOutput: Profiles/Clusters/...

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

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

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 30: «Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константиновский, RaRe Technologies, WorldSense

STUDENT INCUBATOR

https://rare-technologies.com/incubator/[email protected]

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

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