word2vec dla Polskiego Internetu

Podobne dokumenty
Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska

Praca magisterska Jakub Reczycki. Opiekun : dr inż. Jacek Rumiński. Katedra Inżynierii Biomedycznej Wydział ETI Politechnika Gdańska

Języki programowania imperatywnego

Wyszukiwanie informacji w internecie. Nguyen Hung Son

OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak

Zasady programowania Dokumentacja

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Architektura rozproszonych magazynów danych

Temat: Algorytm kompresji plików metodą Huffmana

akademia androida Pierwsze kroki w Androidzie część I

Strumienie, pliki. Sortowanie. Wyjątki.

Korpusomat narzędzie do tworzenia przeszukiwalnych korpusów języka polskiego

Strumienie, pliki. Sortowanie. Wyjątki.

Hurtownie danych - przegląd technologii

Witryny i aplikacje internetowe - rozkład godzin dla technikum informatycznego

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Programowanie Komponentowe WebAPI

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Metody systemowe i decyzyjne w informatyce

Ekstrakcja informacji oraz stylometria na usługach psychologii Część 2

Metody systemowe i decyzyjne w informatyce

XML i nowoczesne technologie zarządzania treścią 2007/08

Uczenie sieci typu MLP

Rozpoznawanie obrazów

Opcje raportów. łatwe i czytelne raportowanie

SZKOLENIA DLA EDUKACJI

Maciej Piotr Jankowski

Zdalne monitorowanie i zarządzanie urządzeniami sieciowymi

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Metody systemowe i decyzyjne w informatyce

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

Kompresja bezstratna. Entropia. Kod Huffmana

Narzędzia do automatycznego wydobywania słowników kolokacji i do oceny leksykalności połączeń wyrazowych

0 + 0 = 0, = 1, = 1, = 0.

Drugie kolokwium z Rachunku Prawdopodobieństwa, zestaw A

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Sieci neuronowe - projekt

Rozkład materiału nauczania informatyki w klasie 5a, 5b, 5c i 5d.

Analiza danych tekstowych i języka naturalnego

Lokalizacja Oprogramowania

Text mining w programie RapidMiner Michał Bereta

Dlaczego GML? Gdańsk r. Karol Stachura

Teoria Informacji i Metody Kompresji Danych

CLUSTERING. Metody grupowania danych

Zaawansowany kurs języka Python

1. Wybierz File New Application. Pojawi się nowa aplikacja w Delphi.

Tworzenie języków specyfikacji dla zagadnień numerycznych

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

System wspomagania harmonogramowania przedsięwzięć budowlanych

Writer wzory matematyczne

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Pojęcie bazy danych. Funkcje i możliwości.

TABLET - UDOSTĘPNIANIE DOKUMENTÓW

Kwantyzacja wektorowa. Kodowanie różnicowe.

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Ćw. IV. Tworzenie stron internetowych. Podstawy projektowania, wprowadzenie do języka HTML

Google Web Toolkit. Piotr Findeisen

Architektury i protokoły dla budowania systemów wiedzy - zadania PCSS w projekcie SYNAT

AUTOMATYKA INFORMATYKA

Wykorzystanie innowacyjnego programu komputerowego AnalizatorOZE do oceny bilansów energii w budynkach mieszkalnych

Analizy na podstawie danych sprawozdawczych - Moduł Analiz dla Banków Spółdzielczych

WYMAGANIA EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH DLA KLASY SZÓSTEJ W ZAKRESIE WIADOMOŚCI I UMIEJĘTNOŚCI UCZNIÓW

Programowanie obiektowe

Podstawy technologii WWW

MOJA FIRMA PLUS. bankowość elektroniczna dla małych i średnich firm

Programowanie w języku Java

Ćwiczenie 3: Wprowadzenie do programu Matlab

KRYTERIA OCENIANIA Z JĘZYKA ANGIELSKIEGO DLA KLASY VI

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Instytut Technik Innowacyjnych Semantyczna integracja danych - metody, technologie, przykłady, wyzwania

Synteza strukturalna automatu Moore'a i Mealy

Zbieranie kontaktów.

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Systemy operacyjne. Laboratorium 8. Perl find

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

1 Moduł Modbus ASCII/RTU 3

Uczenie sieci radialnych (RBF)

Projektowanie aplikacji internetowych laboratorium

Sterowanie wielkością zamówienia w Excelu - cz. 3

Klasy abstrakcyjne i interfejsy

Katalog książek cz. 2

użytkownika 1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania

Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego

Instrukcja przygotowania pliku do deponowania

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

STRONA INTERNETOWA oferta

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Praca Magisterska. Automatyczna kontekstowa korekta tekstów na podstawie Grafu Przyzwyczajeń. internetowego dla języka polskiego

Teoria Informacji i Metody Kompresji Danych

SPOTKANIE 6: Klasteryzacja: K-Means, Expectation Maximization

S88 Badanie rzutu kostką sześcienną

LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2

Metody Kompilacji Wykład 3

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

Lingwistyczny system definicyjny wykorzystujący korpusy tekstów oraz zasoby internetowe.

Java Server Faces narzędzie do implementacji w wy prezentacji

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Wymagania na poszczególne oceny w klasach 3 gimnazjum

Transkrypt:

word2vec dla Polskiego Internetu 27 listopada 2015 Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/ Ośrodek Przetwarzania Informacji - Państwowy Instytut Badawczy

Agenda 1 word2vec CBOW Skip-Gram Optymalizacje Hierarchical Softmax Negative Sampling Internety Common Crawl Akka Przykłady Common Crawl Wiki

Przykład motywujący 2

Przykład motywujący 2

Przykład motywujący 2

Przykład motywujący 2

Przykład motywujący 2

word2vec + Google News 3 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)]

word2vec + Google News 4 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)]

word2vec 5 Należy pamiętać, że: word2vec to nie jeden model! word2vec to nie deep learning! Rysunek: CBOW oraz Skip-gram

Continuous Bag of Words 6 Rysunek: CBOW z jednym słowem w kontekście

CBOW 7 Dla danego kontekstu x, zakładając kodowanie 1 z N, tj x k = 1 oraz x k = 0 dla x k x k możemy obliczyć wartości warstwy ukrytej: h = x T W = W (k, ) := v wi (1) Następnie wyliczamy wartość funkcji oceny u j dla każdego słowa w j w słowniku: u j = v w j T h. (2) Aby wyznaczyć prawdopodobieństwo wyemitowania słowa w j pod warunkiem zaobserwowania danego kontekstu korzystamy z funkcji softmax: ) p(w O w I ) = exp(u exp (v O) T V i=1 exp(u i) = wo v wi ). (3) V i=1 (v exp w T i v wi

CBOW 8 Rysunek: CBOW z dłuższym kontekstem

CBOW 9 Analogicznie, tylko że warstwa ukryta wygląda w sposób następujący: h = 1 C W (x 1 + x 2 +... + x C ) = 1 C (v w 1 + v w2 +... + v wc ). (4)

Skip-Gram 10 Rysunek: Skig-gram

Skip-Gram 11 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: w 1, w 2,..., w T 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(w t+j wt ), (5) a prawdopodobieństwa p(w t+j wt ) zdefiniowane są w sposób następujący: p(w O w I ) = exp ( v w O T v wi ) W w=1 exp ( v w T v wi, ) (6) gdzie v w oraz v w oznaczają "wejściowe"i "wyjścioweżeprezentacje wektorowe słowa "w", a W jest liczbą słów w słowniku.

Optymalizacje 12 Przypomnijmy, że w wzorze 7 w mianowniku znajduje się czynnik normalizujący: p(w O w I ) = exp ( v w O T v wi ) W w=1 exp ( v w T v wi, ) (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!

Hierarchical Softmax 13 Jest to efektywny sposób na znalezienie szukanego prawdopodobieństwa Model używa drzewa binarnego do reprezentacji słów ze słownika

Hierarchical Softmax 14 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 = w O ) = L(w) 1 j=1 ( ) σ n(w, j + 1) = ch(n(w, j)) v T n(w,j) h (8)

Hierarchical Softmax 15 Skąd wziąć to drzewo? Użyć losowo wygenerowanego Rozwiązanie w najlepszym przypadku nieoptymalne

Hierarchical Softmax 15 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

Hierarchical Softmax 15 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:

Hierarchical Softmax 15 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:

Hierarchical Softmax 15 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:

Hierarchical Softmax 15 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:

Hierarchical Softmax 15 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:

Hierarchical Softmax 15 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

Negative Sampling 16 W swojej pracy z 2013 roku Mikolov używają następującej funkcji celu: log σ ( v w T ) k ( vwi O + E wi P n(w )[ log σ v T )] wi vwi, (9) i=1 Gdzie k, to liczba próbek z rozkładu śzumu"p n (W ). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład Rozkład szumu {}}{ log σ ( { v w T ) }}{ vwi O + log σ ( v w T ) vwi i i P n(w ) (10)

Negative Sampling 16 W swojej pracy z 2013 roku Mikolov używają następującej funkcji celu: log σ ( v w T ) k ( vwi O + E wi P n(w )[ log σ v T )] wi vwi, (9) i=1 Gdzie k, to liczba próbek z rozkładu śzumu"p n (W ). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład Rozkład szumu {}}{ log σ ( { v w T ) }}{ vwi O + log σ ( v w T ) vwi i i P n(w ) maksymalizujemy prawdopodobieństwo wystąpienia rzeczywistego kontekstu (10)

Negative Sampling 16 W swojej pracy z 2013 roku Mikolov używają następującej funkcji celu: log σ ( v w T ) k ( vwi O + E wi P n(w )[ log σ v T )] wi vwi, (9) i=1 Gdzie k, to liczba próbek z rozkładu śzumu"p n (W ). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład Rozkład szumu {}}{ log σ ( { v w T ) }}{ vwi O + log σ ( v w T ) vwi i i P n(w ) (10) maksymalizujemy prawdopodobieństwo wystąpienia rzeczywistego kontekstu minimalizujemy prawdopodobieństwo wystąpienia losowych słów w kontekście

Negative Sampling 16 W swojej pracy z 2013 roku Mikolov używają następującej funkcji celu: log σ ( v w T ) k ( vwi O + E wi P n(w )[ log σ v T )] wi vwi, (9) i=1 Gdzie k, to liczba próbek z rozkładu śzumu"p n (W ). Równanie 9 można zapisać w trochę czytelniejszy sposób: Prawidłowy rozkład Rozkład szumu {}}{ log σ ( { v w T ) }}{ vwi O + log σ ( v w T ) vwi i i P n(w ) (10) maksymalizujemy prawdopodobieństwo wystąpienia rzeczywistego kontekstu minimalizujemy prawdopodobieństwo wystąpienia losowych słów w kontekście P n (w) U(w) 3/4 /Z

Common Crawl 17 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

Common Crawl 18 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...

Common Crawl 18 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.

WET 19 Format WET zawiera minimalną ilość meta-danych, główną jego zawartością jest czysty tekst ze strony. Rysunek: Przykład pliku w formacie WET

Narzędzia 20

Akka 21 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!") } }

Akka 22 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!"

Nasi aktorzy 23 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 strumienia 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

Nasi aktorzy 24 w 1 b 1 M w R w 2 b R. Db. b M w N Workers Bouncers Rysunek: Architektura crawlera

word2vec na zbiorze Common Crawl 25 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

word2vec na zbiorze Common Crawl 26 Wyrażenie Tablica: Algebra wektorów 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

word2vec na polskiej Wikipedii 27 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

word2vec na polskiej 28 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 :-(

Podsumowanie 29 Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale...

Podsumowanie 29 Udało się stworzyć największy korpus języka polskiego filtrując zbiory fundacji Commmon Crawl, ale...... to straszny śmietnik.

Podsumowanie 29 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.

Podsumowanie 29 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 :-)

Podsumowanie 29 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.

Podsumowanie 29 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

Podsumowanie 29 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.

Uwagi Informacje kontaktowe 30 W razie jakichkolwiek uwag, komentarzy lub wątpliwości proszę o kontakt: Wojciech Stokowiec wojciech.stokowiec@opi.org.pl http://opi-lil.github.io/

Dziękuje za uwagę!