SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
word2Vec dla Polskiego Internetu
24 listopada 2015
Wojciech Stokowiec
wojciech.stokowiec@opi.org.pl
http://opi-lil.github.io/
Ośrodek Przetwarzania Informacji - Państwowy Instytut Badawczy
1
Agenda
word2Vec
CBOW
Skip-Gram
Optymalizacje
Hierarchical Softmax
Negative Sampling
Internety
Common Crawl
Akka
Przykłady
Common Crawl
Wiki
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
2
Przykład motywujący
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
2
Przykład motywujący
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
2
Przykład motywujący
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
2
Przykład motywujący
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
2
Przykład motywujący
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
3
word2vec + Google News
Korzystając z gotowego modelu ze strony
https://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 wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
4
word2vec + Google News
Co ciekawe, poza semantycznymi relacjami, word2vec jest w stanie
"wyłapać"podstawy gramatyki, takie jak stopniowanie
przymiotnikó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 wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
5
Word2vec
Należy pamiętać, że:
Word2vec to nie jeden model!
Word2vec to nie deep learning!
Rysunek: CBOW oraz Skip-gram
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
6
Continuous Bag of Words
Rysunek: CBOW z jednym słowem w kontekście
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
7
CBOW
Dla danego kontekstu x, zakładając kodowanie 1 z N, tj xk = 1 oraz
xk = 0 dla xk = xk możemy obliczyć wartości warstwy ukrytej:
h = xT
W = W(k,·) := vwI
(1)
Następnie wyliczamy wartość funkcji oceny uj dla każdego słowa wj w
słowniku:
uj = vwj
T
· h. (2)
Aby wyznaczyć prawdopodobieństwo wyemitowania słowa wj pod
warunkiem zaobserwowania danego kontekstu korzystamy z funkcji
softmax:
p(wO | wI) =
exp(uO)
V
i=1 exp(ui)
=
exp vwO
T
· vwI
V
i=1 exp vwi
T
· vwI
. (3)
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
8
CBOW
Rysunek: CBOW z dłuższym kontekstem
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
9
CBOW
Analogicznie, tylko że warstwa ukryta wygląda w sposób następujący:
h =
1
C
W · (x1 + x2 + . . . + xC)
=
1
C
· (vw1
+ vw2
+ . . . + vwC
).
(4)
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
10
Skip-Gram
Rysunek: Skig-gram
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
11
Skip-Gram
Skip-gram jest lustrzanym odbiciem architektury CBOW, tj. na
podstawie 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=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 vwO
T
vwI
W
w=1 exp vw
T
vwI
,
(6)
gdzie vw oraz vw oznaczają "wejściowe"i "wyjścioweżeprezentacje
wektorowe słowa "w", a W jest liczbą słów w słowniku.
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
12
Optymalizacje
Przypomnijmy, że w wzorze 7 w mianowniku znajduje się czynnik
normalizujący:
p(wO|wI) =
exp vwO
T
vwI
W
w=1 exp vw
T
vwI
,
(7)
Przy dużym słowniku (a takie występują w przyrodzie) metody
optymalizacyjne oparte na prostym gradiencie są co najmniej
nieefektywne.
Można sobie z tym radzić na parę sposobów!
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
13
Hierarchical Softmax
Jest to efektywny sposób na znalezienie szukanego
prawdopodobieństwa
Model używa drzewa binarnego do reprezentacji słów ze słownika
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
14
Hierarchical Softmax
Rysunek: Przykład drzewa binarnego dla hierarchicznego sofmax’u
Prawdopodobieństwo, że dane słowo w jest słowem wyjściowym
zadane jest następującym wzorem:
p(w = wO) =
L(w)−1
j=1
σ n(w, j + 1) = ch(n(w, j)) · vn(w,j)
T
h (8)
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Można użyć zewnętrznych źródeł, np. WordNet
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Można użyć zewnętrznych źródeł, np. WordNet
Można użyć metod klastrowania hierarchicznego:
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Można użyć zewnętrznych źródeł, np. WordNet
Można użyć metod klastrowania hierarchicznego:
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Można użyć zewnętrznych źródeł, np. WordNet
Można użyć metod klastrowania hierarchicznego:
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Można użyć zewnętrznych źródeł, np. WordNet
Można użyć metod klastrowania hierarchicznego:
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Można użyć zewnętrznych źródeł, np. WordNet
Można użyć metod klastrowania hierarchicznego:
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
15
Hierarchical Softmax
Skąd wziąć to drzewo?
Użyć losowo wygenerowanego
Rozwiązanie w najlepszym przypadku nieoptymalne
Można użyć zewnętrznych źródeł, np. WordNet
Można użyć metod klastrowania hierarchicznego:
Mikolov w swojej implementacji Word2vec’a używa drzew
Huffmana
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
16
Negative Sampling
W swojej pracy Mikolov2013b, używają następującej funkcji celu:
log σ vwO
T
vwI
+
k
i=1
Ewi∼Pn(W ) log σ − vwi
T
vwI
, (9)
Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9
można zapisać w trochę czytelniejszy sposób:
Prawidłowy rozkład
log σ vwO
T
vwI
+
Rozkład szumu
i∼Pn(W )
log σ − vwi
T
vwI
(10)
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
16
Negative Sampling
W swojej pracy Mikolov2013b, używają następującej funkcji celu:
log σ vwO
T
vwI
+
k
i=1
Ewi∼Pn(W ) log σ − vwi
T
vwI
, (9)
Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9
można zapisać w trochę czytelniejszy sposób:
Prawidłowy rozkład
log σ vwO
T
vwI
+
Rozkład szumu
i∼Pn(W )
log σ − vwi
T
vwI
(10)
maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistego
kontekstu
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
16
Negative Sampling
W swojej pracy Mikolov2013b, używają następującej funkcji celu:
log σ vwO
T
vwI
+
k
i=1
Ewi∼Pn(W ) log σ − vwi
T
vwI
, (9)
Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9
można zapisać w trochę czytelniejszy sposób:
Prawidłowy rozkład
log σ vwO
T
vwI
+
Rozkład szumu
i∼Pn(W )
log σ − vwi
T
vwI
(10)
maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistego
kontekstu
minimalizujemy prawdopodobieństwo wystąpienia losowych słów
w kontekście
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
16
Negative Sampling
W swojej pracy Mikolov2013b, używają następującej funkcji celu:
log σ vwO
T
vwI
+
k
i=1
Ewi∼Pn(W ) log σ − vwi
T
vwI
, (9)
Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9
można zapisać w trochę czytelniejszy sposób:
Prawidłowy rozkład
log σ vwO
T
vwI
+
Rozkład szumu
i∼Pn(W )
log σ − vwi
T
vwI
(10)
maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistego
kontekstu
minimalizujemy prawdopodobieństwo wystąpienia losowych słów
w kontekście
Pn(w) ∼ U(w)3/4
/Z
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
17
Common Crawl
“Fundacja Common Crawl to organizacja non-profit której
celem jest demokratyzacja dostępu do informacji zawartej
w internecie poprzez stworzenie i utrzymanie otwartego
repozytorium tekstowych danych internetowych, które są
powszechnie dostępne i łatwe do analizy.”
— strona fundacji Common Crawl
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
18
Common Crawl
Mnóstwo danych!
Jeden dump "ważyókoło 140TB danych i zawiera 1.80 mld stron
internetowych
Około 17 dumpów, zrobionych na przestrzeni lat 2013-2015
Każdy dump składa się z plików:
WARC - zawierających nieobrobione dane
WAT - zawierających meta-dane opisujące dany rekord
WET - zawierających wyłuskany ze strony tekst
Jeden dump zawiera około 10TB danych w formacie WET
Do tej pory przetworzyliśmy 9 dumpów, co daje około 90TB
danych tekstowych, ale ...
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
18
Common Crawl
Mnóstwo danych!
Jeden dump "ważyókoło 140TB danych i zawiera 1.80 mld stron
internetowych
Około 17 dumpów, zrobionych na przestrzeni lat 2013-2015
Każdy dump składa się z plików:
WARC - zawierających nieobrobione dane
WAT - zawierających meta-dane opisujące dany rekord
WET - zawierających wyłuskany ze strony tekst
Jeden dump zawiera około 10TB danych w formacie WET
Do tej pory przetworzyliśmy 9 dumpów, co daje około 90TB
danych tekstowych, ale ...
... około 0.3% jest w języku polskim.
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
19
WET
Format WET zawiera minimalną ilość meta-danych, główną jego
zawartością jest czysty tekst ze strony.
Rysunek: Przykład pliku w formacie WET
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
20
Narzędzia
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
21
Akka
Obowiązkowe Hello World (cz. 1):
// definiujemy protokol rozmowy
case class Hello(who: String)
// minimalny aktor
class Greeter extends Actor {
def receive = {
case Hello(who) => println(s"It’s a you, a $who!")
case _ => println("Name, please!")
}
}
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
22
Akka
Obowiązkowe Hello World (cz. 2):
object Main extends App {
// inicjalizacja systemu aktorow
val system = ActorSystem("HelloWorldSystem")
// stworzenie aktora
val greeter = system.actorOf(Props[Greeter],
name = "helloactor")
// przeslanie wiadomosci
greeter ! "Mario!"
}
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
23
Nasi aktorzy
System aktorów do zarządzania aplikacją
1 File Master tworzący File Workerów oraz rozdzielający im prace
1 Terminator monitorujący cykl życia aktorów, oraz zamykający
system
24 File Workerów do przetwarzania sturumienia danych oraz
wysyłania kawałków tekstu reprezentujących stronę do
identyfikacji języka
36 Bouncerów
filtrują teksy z języka polskiego przy pomocy biblioteki CLD2
zapis do Cassandry
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
24
Nasi aktorzy
M wR
w1
w2
...
wN
Workers
DbbR
...
b1
bM
Bouncers
Rysunek: Architektura crawlera
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
25
word2vec na zbiorze Common Crawl
Tablica: Najbliższe słowa
Słowo Najbliższy Wektor Dystans
Król Cesarz 0.7349
Tusk Donald 0.7382
Kobieta Dziewczyna 0.7998
Mężczyzna Chłopak 0.84556
Sushi Pizza 0.75798
Apple Tablety 0.78932
Dziewczyna Rozochocona :-) 0.81743
Kaczyński Palikot :-) 0.83625
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
26
word2vec 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 Mniejszy
Włochy – Rzym + Francja Paryż
Dżungla + Król tarzantarzan
lewkról
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
27
word2vec na polskiej Wikipedii
Tablica: Najbliższe słowa
Słowo Najbliższy Wektor Dystans
Król Władca 0.61166
Tusk Ramotar :-) 0.54940
Kobieta Dziewczyna 0.74277
Mężczyzna Chłopak 0.70107
Sushi Chowder 0.52896
Apple Iphone 0.6675
Dziewczyna Kobieta 0.7428
Kaczyński Wałęsa | Kwaśnieswki | Komorowski 0.83625
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
28
word2vec na polskiej
Tablica: Algebra wektorów
Wyrażenie Najbliższy wektor
Król – Mężczyzna + Kobieta Królowa
Większy – Duży + Mały Mniejszy
Włochy – Rzym + Francja Szwajcaria :-(
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
29
Podsumowanie
Udało się stworzyć największy korpus języka polskiego filtrując
zbiory fundacji Commmon Crawl, ale ...
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
29
Podsumowanie
Udało się stworzyć największy korpus języka polskiego filtrując
zbiory fundacji Commmon Crawl, ale ...
... to straszny śmietnik.
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
29
Podsumowanie
Udało się stworzyć największy korpus języka polskiego filtrując
zbiory fundacji Commmon Crawl, ale ...
... to straszny śmietnik.
Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
29
Podsumowanie
Udało się stworzyć największy korpus języka polskiego filtrując
zbiory fundacji Commmon Crawl, ale ...
... to straszny śmietnik.
Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.
Wektorowe reprezentacje słów uzyskane poprzez uczenie
word2veca na naszym korpusie są przesycone seksem :-)
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
29
Podsumowanie
Udało się stworzyć największy korpus języka polskiego filtrując
zbiory fundacji Commmon Crawl, ale ...
... to straszny śmietnik.
Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.
Wektorowe reprezentacje słów uzyskane poprzez uczenie
word2veca na naszym korpusie są przesycone seksem :-)
Wektorowe reprezentacje słów na polskiej wiki są nieznacznie
lepsze.
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
29
Podsumowanie
Udało się stworzyć największy korpus języka polskiego filtrując
zbiory fundacji Commmon Crawl, ale ...
... to straszny śmietnik.
Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.
Wektorowe reprezentacje słów uzyskane poprzez uczenie
word2veca na naszym korpusie są przesycone seksem :-)
Wektorowe reprezentacje słów na polskiej wiki są nieznacznie
lepsze.
Zastosowanie word2veca do uzupełniania leksykonów sentymentu
w zagadnieniu analizy wydźwięku
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
29
Podsumowanie
Udało się stworzyć największy korpus języka polskiego filtrując
zbiory fundacji Commmon Crawl, ale ...
... to straszny śmietnik.
Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem.
Wektorowe reprezentacje słów uzyskane poprzez uczenie
word2veca na naszym korpusie są przesycone seksem :-)
Wektorowe reprezentacje słów na polskiej wiki są nieznacznie
lepsze.
Zastosowanie word2veca do uzupełniania leksykonów sentymentu
w zagadnieniu analizy wydźwięku
Polska język, trudna język.
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
30
Uwagi
Informacje kontaktowe
W razie jakichkolwiek uwag, komentarzy lub wątpliwości proszę o
kontakt:
Wojciech Stokowiec
wojciech.stokowiec@opi.org.pl
http://opi-lil.github.io/
Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
Dziękuje za uwagę!

Contenu connexe

En vedette

Hp kurs information
Hp kurs informationHp kurs information
Hp kurs informationisch
 
Social Point
Social PointSocial Point
Social Pointbetabeers
 
ECONOMÍA DE LA UNIÓN EUROPEA
ECONOMÍA DE LA UNIÓN EUROPEAECONOMÍA DE LA UNIÓN EUROPEA
ECONOMÍA DE LA UNIÓN EUROPEADune Arguijo Diaz
 
Fiebre Verde Extra Verde
Fiebre Verde Extra VerdeFiebre Verde Extra Verde
Fiebre Verde Extra VerdeGAlleHAs
 
First Resort Group FZ LLC - Company Profile - IRAN Linked In
First Resort Group FZ LLC - Company Profile - IRAN Linked InFirst Resort Group FZ LLC - Company Profile - IRAN Linked In
First Resort Group FZ LLC - Company Profile - IRAN Linked InVictoria Cruickshank
 
Right Turn e Design - BNI 8 Min Presentation
Right Turn e Design - BNI 8 Min Presentation Right Turn e Design - BNI 8 Min Presentation
Right Turn e Design - BNI 8 Min Presentation Right Turn e Design
 
Txesus Zubiate | landscape version portfolio
Txesus Zubiate | landscape version portfolioTxesus Zubiate | landscape version portfolio
Txesus Zubiate | landscape version portfolioTxesus Zubiate
 
Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...
Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...
Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...Bibliotecadicoruna
 
Formulario proyectos de_aula
Formulario proyectos de_aulaFormulario proyectos de_aula
Formulario proyectos de_aulapraes-tic
 
L’oroneta i el rei
L’oroneta i el reiL’oroneta i el rei
L’oroneta i el reiconxanoverjes
 
Einblicke in die Zukunft von Big Data
Einblicke in die Zukunft von Big DataEinblicke in die Zukunft von Big Data
Einblicke in die Zukunft von Big DataTrivadis
 
Cyber Insurance
Cyber InsuranceCyber Insurance
Cyber InsuranceClubHack
 
International Librarians Network: peer mentoring para bibliotecarios
International Librarians Network: peer mentoring para bibliotecariosInternational Librarians Network: peer mentoring para bibliotecarios
International Librarians Network: peer mentoring para bibliotecariosSocialBiblio
 

En vedette (19)

AppDev-Booklet-Email
AppDev-Booklet-EmailAppDev-Booklet-Email
AppDev-Booklet-Email
 
Hp kurs information
Hp kurs informationHp kurs information
Hp kurs information
 
Social Point
Social PointSocial Point
Social Point
 
OmParkash
OmParkashOmParkash
OmParkash
 
ECONOMÍA DE LA UNIÓN EUROPEA
ECONOMÍA DE LA UNIÓN EUROPEAECONOMÍA DE LA UNIÓN EUROPEA
ECONOMÍA DE LA UNIÓN EUROPEA
 
Fiebre Verde Extra Verde
Fiebre Verde Extra VerdeFiebre Verde Extra Verde
Fiebre Verde Extra Verde
 
11 05-11
11 05-1111 05-11
11 05-11
 
First Resort Group FZ LLC - Company Profile - IRAN Linked In
First Resort Group FZ LLC - Company Profile - IRAN Linked InFirst Resort Group FZ LLC - Company Profile - IRAN Linked In
First Resort Group FZ LLC - Company Profile - IRAN Linked In
 
Hojadescuentocomercios2
Hojadescuentocomercios2Hojadescuentocomercios2
Hojadescuentocomercios2
 
Right Turn e Design - BNI 8 Min Presentation
Right Turn e Design - BNI 8 Min Presentation Right Turn e Design - BNI 8 Min Presentation
Right Turn e Design - BNI 8 Min Presentation
 
Txesus Zubiate | landscape version portfolio
Txesus Zubiate | landscape version portfolioTxesus Zubiate | landscape version portfolio
Txesus Zubiate | landscape version portfolio
 
E posters
E postersE posters
E posters
 
Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...
Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...
Boletin de novas incorporacións na biblioteca da deputación da coruña. marzo ...
 
Robotic JavaScript
Robotic JavaScriptRobotic JavaScript
Robotic JavaScript
 
Formulario proyectos de_aula
Formulario proyectos de_aulaFormulario proyectos de_aula
Formulario proyectos de_aula
 
L’oroneta i el rei
L’oroneta i el reiL’oroneta i el rei
L’oroneta i el rei
 
Einblicke in die Zukunft von Big Data
Einblicke in die Zukunft von Big DataEinblicke in die Zukunft von Big Data
Einblicke in die Zukunft von Big Data
 
Cyber Insurance
Cyber InsuranceCyber Insurance
Cyber Insurance
 
International Librarians Network: peer mentoring para bibliotecarios
International Librarians Network: peer mentoring para bibliotecariosInternational Librarians Network: peer mentoring para bibliotecarios
International Librarians Network: peer mentoring para bibliotecarios
 

Plus de allegro.tech

Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. allegro.tech
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Scaling infrastructure beyond containers
Scaling infrastructure beyond containersScaling infrastructure beyond containers
Scaling infrastructure beyond containersallegro.tech
 
Confitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ AllegroConfitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ Allegroallegro.tech
 
Confitura 2015 - Mikrousługi nie lubią być samotne
Confitura 2015 - Mikrousługi nie lubią być samotneConfitura 2015 - Mikrousługi nie lubią być samotne
Confitura 2015 - Mikrousługi nie lubią być samotneallegro.tech
 
RxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applicationsRxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applicationsallegro.tech
 
Microservices architecture pitfalls
Microservices architecture pitfallsMicroservices architecture pitfalls
Microservices architecture pitfallsallegro.tech
 
RxJava - introduction & design
RxJava - introduction & designRxJava - introduction & design
RxJava - introduction & designallegro.tech
 
JDD 2014: Adam Dubiel - Import allegro.tech.internal.*
JDD 2014: Adam Dubiel - Import allegro.tech.internal.*JDD 2014: Adam Dubiel - Import allegro.tech.internal.*
JDD 2014: Adam Dubiel - Import allegro.tech.internal.*allegro.tech
 
Fighting with scale
Fighting with scaleFighting with scale
Fighting with scaleallegro.tech
 

Plus de allegro.tech (10)

Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Scaling infrastructure beyond containers
Scaling infrastructure beyond containersScaling infrastructure beyond containers
Scaling infrastructure beyond containers
 
Confitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ AllegroConfitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ Allegro
 
Confitura 2015 - Mikrousługi nie lubią być samotne
Confitura 2015 - Mikrousługi nie lubią być samotneConfitura 2015 - Mikrousługi nie lubią być samotne
Confitura 2015 - Mikrousługi nie lubią być samotne
 
RxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applicationsRxJava & Hystrix - Perfect match for distributed applications
RxJava & Hystrix - Perfect match for distributed applications
 
Microservices architecture pitfalls
Microservices architecture pitfallsMicroservices architecture pitfalls
Microservices architecture pitfalls
 
RxJava - introduction & design
RxJava - introduction & designRxJava - introduction & design
RxJava - introduction & design
 
JDD 2014: Adam Dubiel - Import allegro.tech.internal.*
JDD 2014: Adam Dubiel - Import allegro.tech.internal.*JDD 2014: Adam Dubiel - Import allegro.tech.internal.*
JDD 2014: Adam Dubiel - Import allegro.tech.internal.*
 
Fighting with scale
Fighting with scaleFighting with scale
Fighting with scale
 

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

  • 1. word2Vec dla Polskiego Internetu 24 listopada 2015 Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ Ośrodek Przetwarzania Informacji - Państwowy Instytut Badawczy
  • 2. 1 Agenda word2Vec CBOW Skip-Gram Optymalizacje Hierarchical Softmax Negative Sampling Internety Common Crawl Akka Przykłady Common Crawl Wiki Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 3. 2 Przykład motywujący Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 4. 2 Przykład motywujący Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 5. 2 Przykład motywujący Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 6. 2 Przykład motywujący Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 7. 2 Przykład motywujący Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 8. 3 word2vec + Google News Korzystając z gotowego modelu ze strony https://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 wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 9. 4 word2vec + Google News Co ciekawe, poza semantycznymi relacjami, word2vec jest w stanie "wyłapać"podstawy gramatyki, takie jak stopniowanie przymiotnikó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 wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 10. 5 Word2vec Należy pamiętać, że: Word2vec to nie jeden model! Word2vec to nie deep learning! Rysunek: CBOW oraz Skip-gram Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 11. 6 Continuous Bag of Words Rysunek: CBOW z jednym słowem w kontekście Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 12. 7 CBOW Dla danego kontekstu x, zakładając kodowanie 1 z N, tj xk = 1 oraz xk = 0 dla xk = xk możemy obliczyć wartości warstwy ukrytej: h = xT W = W(k,·) := vwI (1) Następnie wyliczamy wartość funkcji oceny uj dla każdego słowa wj w słowniku: uj = vwj T · h. (2) Aby wyznaczyć prawdopodobieństwo wyemitowania słowa wj pod warunkiem zaobserwowania danego kontekstu korzystamy z funkcji softmax: p(wO | wI) = exp(uO) V i=1 exp(ui) = exp vwO T · vwI V i=1 exp vwi T · vwI . (3) Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 13. 8 CBOW Rysunek: CBOW z dłuższym kontekstem Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 14. 9 CBOW Analogicznie, tylko że warstwa ukryta wygląda w sposób następujący: h = 1 C W · (x1 + x2 + . . . + xC) = 1 C · (vw1 + vw2 + . . . + vwC ). (4) Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 15. 10 Skip-Gram Rysunek: Skig-gram Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 16. 11 Skip-Gram Skip-gram jest lustrzanym odbiciem architektury CBOW, tj. na podstawie 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=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 vwO T vwI W w=1 exp vw T vwI , (6) gdzie vw oraz vw oznaczają "wejściowe"i "wyjścioweżeprezentacje wektorowe słowa "w", a W jest liczbą słów w słowniku. Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 17. 12 Optymalizacje Przypomnijmy, że w wzorze 7 w mianowniku znajduje się czynnik normalizujący: p(wO|wI) = exp vwO T vwI W w=1 exp vw T vwI , (7) Przy dużym słowniku (a takie występują w przyrodzie) metody optymalizacyjne oparte na prostym gradiencie są co najmniej nieefektywne. Można sobie z tym radzić na parę sposobów! Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 18. 13 Hierarchical Softmax Jest to efektywny sposób na znalezienie szukanego prawdopodobieństwa Model używa drzewa binarnego do reprezentacji słów ze słownika Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 19. 14 Hierarchical Softmax Rysunek: Przykład drzewa binarnego dla hierarchicznego sofmax’u Prawdopodobieństwo, że dane słowo w jest słowem wyjściowym zadane jest następującym wzorem: p(w = wO) = L(w)−1 j=1 σ n(w, j + 1) = ch(n(w, j)) · vn(w,j) T h (8) Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 20. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 21. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Można użyć zewnętrznych źródeł, np. WordNet Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 22. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Można użyć zewnętrznych źródeł, np. WordNet Można użyć metod klastrowania hierarchicznego: Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 23. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Można użyć zewnętrznych źródeł, np. WordNet Można użyć metod klastrowania hierarchicznego: Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 24. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Można użyć zewnętrznych źródeł, np. WordNet Można użyć metod klastrowania hierarchicznego: Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 25. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Można użyć zewnętrznych źródeł, np. WordNet Można użyć metod klastrowania hierarchicznego: Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 26. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Można użyć zewnętrznych źródeł, np. WordNet Można użyć metod klastrowania hierarchicznego: Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 27. 15 Hierarchical Softmax Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne Można użyć zewnętrznych źródeł, np. WordNet Można użyć metod klastrowania hierarchicznego: Mikolov w swojej implementacji Word2vec’a używa drzew Huffmana Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 28. 16 Negative Sampling W swojej pracy Mikolov2013b, używają następującej funkcji celu: log σ vwO T vwI + k i=1 Ewi∼Pn(W ) log σ − vwi T vwI , (9) Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład log σ vwO T vwI + Rozkład szumu i∼Pn(W ) log σ − vwi T vwI (10) Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 29. 16 Negative Sampling W swojej pracy Mikolov2013b, używają następującej funkcji celu: log σ vwO T vwI + k i=1 Ewi∼Pn(W ) log σ − vwi T vwI , (9) Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład log σ vwO T vwI + Rozkład szumu i∼Pn(W ) log σ − vwi T vwI (10) maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistego kontekstu Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 30. 16 Negative Sampling W swojej pracy Mikolov2013b, używają następującej funkcji celu: log σ vwO T vwI + k i=1 Ewi∼Pn(W ) log σ − vwi T vwI , (9) Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład log σ vwO T vwI + Rozkład szumu i∼Pn(W ) log σ − vwi T vwI (10) maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistego kontekstu minimalizujemy prawdopodobieństwo wystąpienia losowych słów w kontekście Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 31. 16 Negative Sampling W swojej pracy Mikolov2013b, używają następującej funkcji celu: log σ vwO T vwI + k i=1 Ewi∼Pn(W ) log σ − vwi T vwI , (9) Gdzie k, to liczba próbek z rozkładu śzumu"Pn(W). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład log σ vwO T vwI + Rozkład szumu i∼Pn(W ) log σ − vwi T vwI (10) maksymalizujemy prawdopodbieństwo wystąpienia rzeczywistego kontekstu minimalizujemy prawdopodobieństwo wystąpienia losowych słów w kontekście Pn(w) ∼ U(w)3/4 /Z Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 32. 17 Common Crawl “Fundacja Common Crawl to organizacja non-profit której celem jest demokratyzacja dostępu do informacji zawartej w internecie poprzez stworzenie i utrzymanie otwartego repozytorium tekstowych danych internetowych, które są powszechnie dostępne i łatwe do analizy.” — strona fundacji Common Crawl Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 33. 18 Common Crawl Mnóstwo danych! Jeden dump "ważyókoło 140TB danych i zawiera 1.80 mld stron internetowych Około 17 dumpów, zrobionych na przestrzeni lat 2013-2015 Każdy dump składa się z plików: WARC - zawierających nieobrobione dane WAT - zawierających meta-dane opisujące dany rekord WET - zawierających wyłuskany ze strony tekst Jeden dump zawiera około 10TB danych w formacie WET Do tej pory przetworzyliśmy 9 dumpów, co daje około 90TB danych tekstowych, ale ... Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 34. 18 Common Crawl Mnóstwo danych! Jeden dump "ważyókoło 140TB danych i zawiera 1.80 mld stron internetowych Około 17 dumpów, zrobionych na przestrzeni lat 2013-2015 Każdy dump składa się z plików: WARC - zawierających nieobrobione dane WAT - zawierających meta-dane opisujące dany rekord WET - zawierających wyłuskany ze strony tekst Jeden dump zawiera około 10TB danych w formacie WET Do tej pory przetworzyliśmy 9 dumpów, co daje około 90TB danych tekstowych, ale ... ... około 0.3% jest w języku polskim. Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 35. 19 WET Format WET zawiera minimalną ilość meta-danych, główną jego zawartością jest czysty tekst ze strony. Rysunek: Przykład pliku w formacie WET Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 36. 20 Narzędzia Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 37. 21 Akka Obowiązkowe Hello World (cz. 1): // definiujemy protokol rozmowy case class Hello(who: String) // minimalny aktor class Greeter extends Actor { def receive = { case Hello(who) => println(s"It’s a you, a $who!") case _ => println("Name, please!") } } Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 38. 22 Akka Obowiązkowe Hello World (cz. 2): object Main extends App { // inicjalizacja systemu aktorow val system = ActorSystem("HelloWorldSystem") // stworzenie aktora val greeter = system.actorOf(Props[Greeter], name = "helloactor") // przeslanie wiadomosci greeter ! "Mario!" } Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 39. 23 Nasi aktorzy System aktorów do zarządzania aplikacją 1 File Master tworzący File Workerów oraz rozdzielający im prace 1 Terminator monitorujący cykl życia aktorów, oraz zamykający system 24 File Workerów do przetwarzania sturumienia danych oraz wysyłania kawałków tekstu reprezentujących stronę do identyfikacji języka 36 Bouncerów filtrują teksy z języka polskiego przy pomocy biblioteki CLD2 zapis do Cassandry Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 40. 24 Nasi aktorzy M wR w1 w2 ... wN Workers DbbR ... b1 bM Bouncers Rysunek: Architektura crawlera Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 41. 25 word2vec na zbiorze Common Crawl Tablica: Najbliższe słowa Słowo Najbliższy Wektor Dystans Król Cesarz 0.7349 Tusk Donald 0.7382 Kobieta Dziewczyna 0.7998 Mężczyzna Chłopak 0.84556 Sushi Pizza 0.75798 Apple Tablety 0.78932 Dziewczyna Rozochocona :-) 0.81743 Kaczyński Palikot :-) 0.83625 Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 42. 26 word2vec 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 Mniejszy Włochy – Rzym + Francja Paryż Dżungla + Król tarzantarzan lewkról Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 43. 27 word2vec na polskiej Wikipedii Tablica: Najbliższe słowa Słowo Najbliższy Wektor Dystans Król Władca 0.61166 Tusk Ramotar :-) 0.54940 Kobieta Dziewczyna 0.74277 Mężczyzna Chłopak 0.70107 Sushi Chowder 0.52896 Apple Iphone 0.6675 Dziewczyna Kobieta 0.7428 Kaczyński Wałęsa | Kwaśnieswki | Komorowski 0.83625 Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 44. 28 word2vec na polskiej Tablica: Algebra wektorów Wyrażenie Najbliższy wektor Król – Mężczyzna + Kobieta Królowa Większy – Duży + Mały Mniejszy Włochy – Rzym + Francja Szwajcaria :-( Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 45. 29 Podsumowanie Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale ... Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 46. 29 Podsumowanie Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale ... ... to straszny śmietnik. Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 47. 29 Podsumowanie Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale ... ... to straszny śmietnik. Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem. Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 48. 29 Podsumowanie Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale ... ... to straszny śmietnik. Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem. Wektorowe reprezentacje słów uzyskane poprzez uczenie word2veca na naszym korpusie są przesycone seksem :-) Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 49. 29 Podsumowanie Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale ... ... to straszny śmietnik. Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem. Wektorowe reprezentacje słów uzyskane poprzez uczenie word2veca na naszym korpusie są przesycone seksem :-) Wektorowe reprezentacje słów na polskiej wiki są nieznacznie lepsze. Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 50. 29 Podsumowanie Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale ... ... to straszny śmietnik. Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem. Wektorowe reprezentacje słów uzyskane poprzez uczenie word2veca na naszym korpusie są przesycone seksem :-) Wektorowe reprezentacje słów na polskiej wiki są nieznacznie lepsze. Zastosowanie word2veca do uzupełniania leksykonów sentymentu w zagadnieniu analizy wydźwięku Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 51. 29 Podsumowanie Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale ... ... to straszny śmietnik. Pracujemy nad deduplikacją, korekcją błędów i odśmiecaniem. Wektorowe reprezentacje słów uzyskane poprzez uczenie word2veca na naszym korpusie są przesycone seksem :-) Wektorowe reprezentacje słów na polskiej wiki są nieznacznie lepsze. Zastosowanie word2veca do uzupełniania leksykonów sentymentu w zagadnieniu analizy wydźwięku Polska język, trudna język. Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu
  • 52. 30 Uwagi Informacje kontaktowe W razie jakichkolwiek uwag, komentarzy lub wątpliwości proszę o kontakt: Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ | word2Vec dla Polskiego Internetu