Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska
Czym jest znaczenie Reprezentacja wektorowa Ograniczenia modelu BOW Słowa w kontekście Redukcja wymiarów Word2vec GloVe Materiały sporządzone częściowo na podstawie wykładów Richarda Sochera Reprezentacja wektorowa słów 2
Znaczenie (Słownik Języka Polskiego, PWN): 1. «myśl zawarta w czyjejś wypowiedzi, zachowaniu itp.» 2. «wartość, ważność czegoś» 3. «treść, której znakiem jest wyraz lub wyrażenie» Jak reprezentować znaczenie? Użyć taksonomii takiej jak np. słowosieć Dobra reprezentacja hiperonimów i synonimów Przykłady: dobry, uzdolniony, guru Reprezentacja wektorowa słów 3
Świetny zasób, ale nie bierze pod uwagę kontekstu Brakuje języka potocznego i nowych słów kozak, geek, nerd, mistrz, pro Znaczenie jest subiektywne Pielęgnacja słowosieci wymaga ludzkiej pracy Ciężko dokładnie obliczyć podobieństwo słów Reprezentacja wektorowa słów 4
Większość metod przetwarzania tekstu pracuje na reprezentacji Bag Of Words (BOW) Jest to reprezentacja wektorowa, w której każde słowo ma swoją pozycję (ang. one-hot-encoding) Wektory mogą mieć: od 20 tys. pozycji (mowa) [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] do 13 mln. pozycji (Google 1T) Problem: motel [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0] & hotel [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] = 0 Reprezentacja wektorowa słów 5
Reprezentacja słów za pomocą ich sąsiadów i nasiona kawowca to właśnie kawa którą parzymy i tak chętnie pijemy ziaren tego gatunku powstaje łagodniejsza kawa o znacznie niższym poziomie goryczki Te słowa reprezentują termin kawa Wyłapuje zależności składniowe i znaczeniowe Jak to zakodować? Za pomocą macierzy współwystępowania słów Dwie opcje: dokument jako kontekst -> ~ topic modeling Okno wokół słowa jako kontekst -> ~ skip-gram model Reprezentacja wektorowa słów 6
Okno o rozmiarze 1 (popularniejsze: 5-10) Macierz symetryczna (słowo po lewej lub po prawej) Podobieństwo słów za pomocą miary kosinusowej Korpus: Ja lubię eksplorację danych. Ja lubię pływać. Ja uwielbiam spać. Reprezentacja wektorowa słów 7
Korpus: Ja lubię eksplorację danych. Ja lubię pływać. Ja uwielbiam spać. Ja lubię eksplorację danych pływać uwielbiam spać. Ja 0 2 0 0 0 1 0 0 lubię 2 0 1 0 1 0 0 0 eksplorację 0 1 0 1 0 0 0 0 danych 0 0 1 0 0 0 0 1 pływać 0 1 0 0 0 0 0 1 uwielbiam 1 0 0 0 0 0 1 0 spać 0 0 0 0 0 1 0 1. 0 0 0 1 1 0 1 0 Reprezentacja wektorowa słów 8
Rosną wraz z rozmiarem słownika Wymagają dużo pamięci Problem rzadkości danych (ang. sparsity problem) Problemy z przenoszeniem wiedzy między domenami Rozwiązanie: Word embeddings Ograniczyć liczbę wymiarów (np. za pomocą SVD) Reprezentacja wektorowa słów 9
An Improved Model of Seman4c Similarity Based on Lexical Co-Occurrence, Rohde et al., 2005 Reprezentacja wektorowa słów 10
An Improved Model of Seman4c Similarity Based on Lexical Co-Occurrence, Rohde et al., 2005 Reprezentacja wektorowa słów 11
An Improved Model of Seman4c Similarity Based on Lexical Co-Occurrence, Rohde et al., 2005 Reprezentacja wektorowa słów 12
SVD jest kosztowne obliczeniowo: O(mn 2 ) Nie da się tego zrównoleglić Nie da się w prosty sposób wprowadzić nowych słów czy dokumentów Słabe rozwiązanie przy milionach słów lub dokumentów Reprezentacja wektorowa słów 13
Inny algorytm tworzący word embedding Idea: naucz klasyfikator przewidywać otoczenie słów Sieć neuronowa (ale nie uczenie głębokie!) Zaproponowane przez Tomasa Mikolova (Google) Reprezentacja wektorowa słów 14
Sztuczny neuron: specyficzny przetwornik sygnału Składowe wejścia neuronu x wraz z wagami w sygnał wyjściowy y pobudzenie e jako suma ważona wejść pomniejszona o próg funkcja aktywacji Reprezentacja wektorowa słów 15
Neurony są łączone w sieci, z reguły wielowarstwowe Sieci neuronów potrafią realizować bardzo złożone obliczenia (trochę jak łączenie bramek logicznych) Uczenie odbywa się zwykle poprzez optymalizację wag neuronów po określeniu błędu na przykładzie uczącym Reprezentacja wektorowa słów 16
Sieć optymalizująca dla otoczenia m słów w funkcję J θ = 1 T T t=1 ) m jm,j 0 log p(w t+j w t Dwie architektury: CBOW (Continuous Bag Of Words), przewiduje brakujące słowo na podstawie okna słów kontekstowych Skip-gram, przewiduje kontekst słowa Reprezentacja wektorowa słów 17
Xin Rong, "word2vec Parameter Learning Explained."arXiv preprint arxiv:1411.2738, 2014 Reprezentacja wektorowa słów 18
Xin Rong, "word2vec Parameter Learning Explained."arXiv preprint arxiv:1411.2738, 2014 Reprezentacja wektorowa słów 19
Skalowalne rozwiązanie Działa dla miliardów słów Można ograniczyć czas działania Można rozproszyć obliczenia Uczenie przyrostowe Reprezentacja wektorowa na jednym zbiorze może z powodzeniem być wykorzystana do innych zbiorów Google wraz z opublikowaniem algorytmu udostępnił model nauczony na 100 miliardach artykułów prasowych Reprezentacja wektorowa słów 20
Słynny przykład: vector(king) vector(man) + vector(woman) = vector(queen) Ogólniej: A jest dla B tym czym C jest dla? Reprezentacja wektorowa słów 21
Model w naturalny sposób koduje relacje między pojęciami Mikolov, et al., More on Skip-gram, negative sampling, hierarchical softmax, and dealing with phrases Reprezentacja wektorowa słów 22
Uzupełnianie zdań Znajdowanie niepasujących słów Tłumaczenie tekstów Wykrywanie synonimów Kategoryzacja słów Wykrywanie kolokacji Reprezentacja wektorowa słów 23
Po word2vec pojawiły się prace analizujące jaka miara podobieństwa odpowiada funkcji realizowanej przez tę sieć Jedno z podejść uogólnia problem rozdzielając słowa od kontekstu (kontekst nie musi być tekstem) Levy and Goldberg (2014), Dependency Based Word Embeddings Inne podejście (GloVe) wyszło od zdefiniowania cech jakie miara podobieństwa słów powinna realizować. W efekcie GloVe: realizuje tę samą funkcję co word2vec potrafi uogólnić kontekst od słów Szybsze uczenie bo opiera się na zliczaniu Pennington, et al. (2014). GloVe: Global Vectors for Word Representation Reprezentacja wektorowa słów 24
Gensim https://radimrehurek.com/gensim/ Google word2vec: https://code.google.com/archive/p/word2vec/ Stanford GloVe: http://nlp.stanford.edu/projects/glove/ Ciekawy tutorial: Porównanie wielu reprezentacji kodujących słowa w gensim Reprezentacja wektorowa słów 25
SVD Semantic Similarity: Rhode, Douglas L. T.; et al. (2006). "An Improved Model of Semantic Similarity Based on Lexical Co-Occurence". Communications of the ACM, 8: 627-633. word2vec: Mikolov, Tomas; et al. (2013). "Distributed Representations of Words and Phrases and their Compositionality", Proc. NIPS 2013, pp. 3111-3119. GloVe: Pennington, Jeffrey; et al. (2014). "GloVe: Global Vectors for Word Representation", Proc. EMNLP 2014, pp. 1532-1543. Reprezentacja wektorowa słów 26
1. Pobierz dane i notatnik ze strony prowadzącego 2. Pobrane pliki rozpakuj do folderu 3. Otwórz nowy projekt PyCharma w tym folderze 4. Otwórz terminal i wpisz jupyter notebook 5. Uruchom notatnik i wykonuj po kolei zadania Reprezentacja wektorowa słów 27