53
word2Vec dla Polskiego Internetu 24 listopada 2015 Wojciech Stokowiec [email protected] http://opi-lil.github.io/ Ośrodek Przetwarzania Informacji - Państwowy Instytut Badawczy

allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

Embed Size (px)

Citation preview

Page 1: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

word2Vec dla Polskiego Internetu

24 listopada 2015

Wojciech [email protected]://opi-lil.github.io/

Ośrodek Przetwarzania Informacji - Państwowy Instytut Badawczy

Page 2: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

1Agenda

word2VecCBOWSkip-GramOptymalizacje

Hierarchical SoftmaxNegative Sampling

InternetyCommon CrawlAkka

PrzykładyCommon CrawlWiki

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 3: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

2Przykład motywujący

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 4: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

2Przykład motywujący

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 5: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

2Przykład motywujący

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 6: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

2Przykład motywujący

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 7: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

2Przykład motywujący

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 8: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

3word2vec + Google News

Korzystając z gotowego modelu ze stronyhttps://code.google.com/p/word2vec/:

from gensim.models.word2vec import Word2Vec

model = Word2Vec.load_word2vec_format(’GoogleNews-vectors-negative300.bin’,binary=True)

model.most_similar(positive=[’woman’, ’king’],negative=[’man’], topn=5)

[(u’queen’, 0.711819589138031),(u’monarch’, 0.618967592716217),(u’princess’, 0.5902432799339294),(u’crown_prince’, 0.5499461889266968),(u’prince’, 0.5377323031425476)]

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 9: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

4word2vec + Google News

Co ciekawe, poza semantycznymi relacjami, word2vec jest w stanie"wyłapać"podstawy gramatyki, takie jak stopniowanieprzymiotników:

model.most_similar(positive=[’biggest’,’small’],negative=[’big’], topn=5)

[(u’smallest’, 0.6086569428443909),(u’largest’, 0.6007465720176697),(u’tiny’, 0.5387299656867981),(u’large’, 0.456944078207016),(u’minuscule’, 0.43401968479156494)]

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 10: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

5Word2vec

Należy pamiętać, że:I Word2vec to nie jeden model!I Word2vec to nie deep learning !

Rysunek: CBOW oraz Skip-gram

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 11: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

6Continuous Bag of Words

Rysunek: CBOW z jednym słowem w kontekście

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 12: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

7CBOW

Dla danego kontekstu x, zakładając kodowanie 1 z N , tj xk = 1 orazxk′ = 0 dla xk 6= xk′ możemy obliczyć wartości warstwy ukrytej:

h = xTW = W(k,·) := vwI(1)

Następnie wyliczamy wartość funkcji oceny uj dla każdego słowa wj wsłowniku:

uj = v′wj

T · h. (2)

Aby wyznaczyć prawdopodobieństwo wyemitowania słowa wj podwarunkiem zaobserwowania danego kontekstu korzystamy z funkcjisoftmax:

p(wO | wI) =exp(uO)∑Vi=1 exp(ui)

=exp

(v′wO

T · vwI

)∑V

i=1 exp(v′wi

T · vwI

) . (3)

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 13: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

8CBOW

Rysunek: CBOW z dłuższym kontekstem

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 14: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

9CBOW

Analogicznie, tylko że warstwa ukryta wygląda w sposób następujący:

h =1

CW · (x1 + x2 + . . .+ xC)

=1

C· (vw1

+ vw2+ . . .+ vwC

).

(4)

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 15: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

10Skip-Gram

Rysunek: Skig-gram

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 16: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

11Skip-Gram

Skip-gram jest lustrzanym odbiciem architektury CBOW, tj. napodstawie słowa staramy się przewidzieć jego kontekst.Niech dany będzie ciąg słów: w1, w2, . . . , wT oraz długość kontekstu c,wtedy staramy się maksymalizować następującą funkcję:

1

T

T∑t=1

∑−c≤j≤c, j 6=0

log p(wt+j|wt), (5)

a prawdopodobieństwa p(wt+j|wt) zdefinowane są w sposób

następujący:

p(wO|wI) =exp

(v′wO

TvwI

)∑Ww=1 exp

(v′w

T vwI,) (6)

gdzie vw oraz v′w oznaczają "wejściowe"i "wyjścioweżeprezentacjewektorowe słowa "w", a W jest liczbą słów w słowniku.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 17: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

12Optymalizacje

Przypomnijmy, że w wzorze 7 w mianowniku znajduje się czynniknormalizujący:

p(wO|wI) =exp

(v′wO

TvwI

)∑Ww=1 exp

(v′w

T vwI,) (7)

I Przy dużym słowniku (a takie występują w przyrodzie) metodyoptymalizacyjne oparte na prostym gradiencie są co najmniejnieefektywne.

I Można sobie z tym radzić na parę sposobów!

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 18: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

13Hierarchical Softmax

I Jest to efektywny sposób na znalezienie szukanegoprawdopodobieństwa

I Model używa drzewa binarnego do reprezentacji słów ze słownika

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 19: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

14Hierarchical Softmax

Rysunek: Przykład drzewa binarnego dla hierarchicznego sofmax’u

Prawdopodobieństwo, że dane słowo w jest słowem wyjściowymzadane jest następującym wzorem:

p(w = wO) =

L(w)−1∏j=1

σ(Jn(w, j + 1) = ch(n(w, j))K · v′n(w,j)

Th)

(8)

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 20: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalne

I Można użyć zewnętrznych źródeł, np. WordNetI Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 21: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalneI Można użyć zewnętrznych źródeł, np. WordNet

I Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 22: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalneI Można użyć zewnętrznych źródeł, np. WordNetI Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 23: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalneI Można użyć zewnętrznych źródeł, np. WordNetI Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 24: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalneI Można użyć zewnętrznych źródeł, np. WordNetI Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 25: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalneI Można użyć zewnętrznych źródeł, np. WordNetI Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 26: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalneI Można użyć zewnętrznych źródeł, np. WordNetI Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 27: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

15Hierarchical Softmax

Skąd wziąć to drzewo?I Użyć losowo wygenerowanego

I Rozwiązanie w najlepszym przypadku nieoptymalneI Można użyć zewnętrznych źródeł, np. WordNetI Można użyć metod klastrowania hierarchicznego:

I Mikolov w swojej implementacji Word2vec’a używa drzewHuffmana

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 28: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

16Negative Sampling

W swojej pracy Mikolov2013b, używają następującej funkcji celu:

log σ(v′wO

TvwI

)+

k∑i=1

Ewi∼Pn(W )

[log σ

(− v′wi

TvwI

)], (9)

Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W ). Równanie 9można zapisać w trochę czytelniejszy sposób:

Prawidłowy rozkład︷ ︸︸ ︷log σ

(v′wO

TvwI

)+

Rozkład szumu︷ ︸︸ ︷∑i∼Pn(W )

log σ(− v′wi

TvwI

)(10)

I maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistegokontekstu

I minimalizujemy prawdopodobieństwo wystąpienia losowych słóww kontekście

I Pn(w) ∼ U(w)3/4/Z

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 29: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

16Negative Sampling

W swojej pracy Mikolov2013b, używają następującej funkcji celu:

log σ(v′wO

TvwI

)+

k∑i=1

Ewi∼Pn(W )

[log σ

(− v′wi

TvwI

)], (9)

Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W ). Równanie 9można zapisać w trochę czytelniejszy sposób:

Prawidłowy rozkład︷ ︸︸ ︷log σ

(v′wO

TvwI

)+

Rozkład szumu︷ ︸︸ ︷∑i∼Pn(W )

log σ(− v′wi

TvwI

)(10)

I maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistegokontekstu

I minimalizujemy prawdopodobieństwo wystąpienia losowych słóww kontekście

I Pn(w) ∼ U(w)3/4/Z

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 30: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

16Negative Sampling

W swojej pracy Mikolov2013b, używają następującej funkcji celu:

log σ(v′wO

TvwI

)+

k∑i=1

Ewi∼Pn(W )

[log σ

(− v′wi

TvwI

)], (9)

Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W ). Równanie 9można zapisać w trochę czytelniejszy sposób:

Prawidłowy rozkład︷ ︸︸ ︷log σ

(v′wO

TvwI

)+

Rozkład szumu︷ ︸︸ ︷∑i∼Pn(W )

log σ(− v′wi

TvwI

)(10)

I maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistegokontekstu

I minimalizujemy prawdopodobieństwo wystąpienia losowych słóww kontekście

I Pn(w) ∼ U(w)3/4/Z

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 31: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

16Negative Sampling

W swojej pracy Mikolov2013b, używają następującej funkcji celu:

log σ(v′wO

TvwI

)+

k∑i=1

Ewi∼Pn(W )

[log σ

(− v′wi

TvwI

)], (9)

Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W ). Równanie 9można zapisać w trochę czytelniejszy sposób:

Prawidłowy rozkład︷ ︸︸ ︷log σ

(v′wO

TvwI

)+

Rozkład szumu︷ ︸︸ ︷∑i∼Pn(W )

log σ(− v′wi

TvwI

)(10)

I maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistegokontekstu

I minimalizujemy prawdopodobieństwo wystąpienia losowych słóww kontekście

I Pn(w) ∼ U(w)3/4/Z

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 32: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

17Common Crawl

“Fundacja Common Crawl to organizacja non-profit którejcelem jest demokratyzacja dostępu do informacji zawartejw internecie poprzez stworzenie i utrzymanie otwartegorepozytorium tekstowych danych internetowych, które sąpowszechnie dostępne i łatwe do analizy.”

— strona fundacji Common Crawl

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 33: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

18Common Crawl

I Mnóstwo danych!I Jeden dump "ważyókoło 140TB danych i zawiera 1.80 mld stron

internetowychI Około 17 dumpów, zrobionych na przestrzeni lat 2013-2015I Każdy dump składa się z plików:

I WARC - zawierających nieobrobione daneI WAT - zawierających meta-dane opisujące dany rekordI WET - zawierających wyłuskany ze strony tekst

I Jeden dump zawiera około 10TB danych w formacie WETI Do tej pory przetworzyliśmy 9 dumpów, co daje około 90TB

danych tekstowych, ale ...

I ... około 0.3% jest w języku polskim.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 34: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

18Common Crawl

I Mnóstwo danych!I Jeden dump "ważyókoło 140TB danych i zawiera 1.80 mld stron

internetowychI Około 17 dumpów, zrobionych na przestrzeni lat 2013-2015I Każdy dump składa się z plików:

I WARC - zawierających nieobrobione daneI WAT - zawierających meta-dane opisujące dany rekordI WET - zawierających wyłuskany ze strony tekst

I Jeden dump zawiera około 10TB danych w formacie WETI Do tej pory przetworzyliśmy 9 dumpów, co daje około 90TB

danych tekstowych, ale ...I ... około 0.3% jest w języku polskim.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 35: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

19WET

Format WET zawiera minimalną ilość meta-danych, główną jegozawartością jest czysty tekst ze strony.

Rysunek: Przykład pliku w formacie WET

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 36: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

20Narzędzia

I

I

I

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 37: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

21Akka

Obowiązkowe Hello World (cz. 1):

// definiujemy protokol rozmowycase class Hello(who: String)

// minimalny aktorclass Greeter extends Actor {

def receive = {case Hello(who) => println(s"It’s a you, a $who!")case _ => println("Name, please!")

}}

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 38: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

22Akka

Obowiązkowe Hello World (cz. 2):

object Main extends App {

// inicjalizacja systemu aktorowval system = ActorSystem("HelloWorldSystem")

// stworzenie aktoraval greeter = system.actorOf(Props[Greeter],

name = "helloactor")

// przeslanie wiadomoscigreeter ! "Mario!"

}

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 39: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

23Nasi aktorzy

I System aktorów do zarządzania aplikacjąI 1 File Master tworzący File Workerów oraz rozdzielający im praceI 1 Terminator monitorujący cykl życia aktorów, oraz zamykający

systemI 24 File Workerów do przetwarzania sturumienia danych oraz

wysyłania kawałków tekstu reprezentujących stronę doidentyfikacji języka

I 36 BouncerówI filtrują teksy z języka polskiego przy pomocy biblioteki CLD2I zapis do Cassandry

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 40: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

24Nasi aktorzy

M wR

w1

w2

...

wN

Workers

DbbR ...

b1

bM

Bouncers

Rysunek: Architektura crawlera

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 41: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

25word2vec na zbiorze Common Crawl

Tablica: Najbliższe słowa

Słowo Najbliższy Wektor Dystans

Król Cesarz 0.7349Tusk Donald 0.7382Kobieta Dziewczyna 0.7998Mężczyzna Chłopak 0.84556Sushi Pizza 0.75798Apple Tablety 0.78932

Dziewczyna Rozochocona :-) 0.81743Kaczyński Palikot :-) 0.83625

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 42: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

26word2vec na zbiorze Common Crawl

Tablica: Algebra wektorów

Wyrażenie Najbliższy wektor

Król – Mężczyzna + Kobieta Edyp :-)Większy – Duży + Mały MniejszyWłochy – Rzym + Francja Paryż

Dżungla + Król tarzantarzanlewkról

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 43: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

27word2vec na polskiej Wikipedii

Tablica: Najbliższe słowa

Słowo Najbliższy Wektor Dystans

Król Władca 0.61166Tusk Ramotar :-) 0.54940Kobieta Dziewczyna 0.74277Mężczyzna Chłopak 0.70107Sushi Chowder 0.52896Apple Iphone 0.6675Dziewczyna Kobieta 0.7428

Kaczyński Wałęsa | Kwaśnieswki | Komorowski 0.83625

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 44: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

28word2vec na polskiej

Tablica: Algebra wektorów

Wyrażenie Najbliższy wektor

Król – Mężczyzna + Kobieta KrólowaWiększy – Duży + Mały MniejszyWłochy – Rzym + Francja Szwajcaria :-(

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 45: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

29Podsumowanie

I Udało się stworzyć największy korpus języka polskiego filtrujączbiory fundacji Commmon Crawl, ale ...

I ... to straszny śmietnik.I Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.I Wektorowe reprezentacje słów uzyskane poprzez uczenie

word2veca na naszym korpusie są przesycone seksem :-)I Wektorowe reprezentacje słów na polskiej wiki są nieznacznie

lepsze.I Zastosowanie word2veca do uzupełniania leksykonów sentymentu

w zagadnieniu analizy wydźwiękuI Polska język, trudna język.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 46: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

29Podsumowanie

I Udało się stworzyć największy korpus języka polskiego filtrujączbiory fundacji Commmon Crawl, ale ...

I ... to straszny śmietnik.

I Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.I Wektorowe reprezentacje słów uzyskane poprzez uczenie

word2veca na naszym korpusie są przesycone seksem :-)I Wektorowe reprezentacje słów na polskiej wiki są nieznacznie

lepsze.I Zastosowanie word2veca do uzupełniania leksykonów sentymentu

w zagadnieniu analizy wydźwiękuI Polska język, trudna język.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 47: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

29Podsumowanie

I Udało się stworzyć największy korpus języka polskiego filtrujączbiory fundacji Commmon Crawl, ale ...

I ... to straszny śmietnik.I Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.

I Wektorowe reprezentacje słów uzyskane poprzez uczenieword2veca na naszym korpusie są przesycone seksem :-)

I Wektorowe reprezentacje słów na polskiej wiki są nieznacznielepsze.

I Zastosowanie word2veca do uzupełniania leksykonów sentymentuw zagadnieniu analizy wydźwięku

I Polska język, trudna język.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 48: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

29Podsumowanie

I Udało się stworzyć największy korpus języka polskiego filtrujączbiory fundacji Commmon Crawl, ale ...

I ... to straszny śmietnik.I Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.I Wektorowe reprezentacje słów uzyskane poprzez uczenie

word2veca na naszym korpusie są przesycone seksem :-)

I Wektorowe reprezentacje słów na polskiej wiki są nieznacznielepsze.

I Zastosowanie word2veca do uzupełniania leksykonów sentymentuw zagadnieniu analizy wydźwięku

I Polska język, trudna język.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 49: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

29Podsumowanie

I Udało się stworzyć największy korpus języka polskiego filtrujączbiory fundacji Commmon Crawl, ale ...

I ... to straszny śmietnik.I Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.I Wektorowe reprezentacje słów uzyskane poprzez uczenie

word2veca na naszym korpusie są przesycone seksem :-)I Wektorowe reprezentacje słów na polskiej wiki są nieznacznie

lepsze.

I Zastosowanie word2veca do uzupełniania leksykonów sentymentuw zagadnieniu analizy wydźwięku

I Polska język, trudna język.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 50: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

29Podsumowanie

I Udało się stworzyć największy korpus języka polskiego filtrujączbiory fundacji Commmon Crawl, ale ...

I ... to straszny śmietnik.I Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.I Wektorowe reprezentacje słów uzyskane poprzez uczenie

word2veca na naszym korpusie są przesycone seksem :-)I Wektorowe reprezentacje słów na polskiej wiki są nieznacznie

lepsze.I Zastosowanie word2veca do uzupełniania leksykonów sentymentu

w zagadnieniu analizy wydźwięku

I Polska język, trudna język.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 51: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

29Podsumowanie

I Udało się stworzyć największy korpus języka polskiego filtrujączbiory fundacji Commmon Crawl, ale ...

I ... to straszny śmietnik.I Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.I Wektorowe reprezentacje słów uzyskane poprzez uczenie

word2veca na naszym korpusie są przesycone seksem :-)I Wektorowe reprezentacje słów na polskiej wiki są nieznacznie

lepsze.I Zastosowanie word2veca do uzupełniania leksykonów sentymentu

w zagadnieniu analizy wydźwiękuI Polska język, trudna język.

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 52: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

30

UwagiInformacje kontaktowe

W razie jakichkolwiek uwag, komentarzy lub wątpliwości proszę okontakt:

Wojciech [email protected]://opi-lil.github.io/

Wojciech Stokowiec [email protected] http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu

Page 53: allegro.tech Data Science Meetup #2: Akka i word2vec, czyli jak nauczyć sieć neuronową polskiego internetu

Dziękuje za uwagę!