Repozytorium zawiera narzedzia służace do wygenerowania polskich korpusów językowych oraz modeli reprezentacji werktorowej słów word2vec. Do pracy wykorzystano następujące korpusy:
- polskie napisy do filmów OpenSubtitles
- polska Wikipedia
- polskie Wikibooks
- polskie Wictionary
Szczególnej uwadze polecam korpus OpenSubtitles gdyż jako jedyny zawiera prawie wyłącznie dialogi. Tego typu korpus może mieć zastosowanie np. przy budowie interfejsów słownych czy głosowych typu człowiek-maszyna.
Proces generowania modeli składa się z dwóch kroków. Pierwszym jest przygotoeanie pliku z korpusem tekstowym na podstawie danych źródłowych. Drugi to uczenie modelu word2vec na podstawie przygotowanego uprzednio korpusu.
Do utworzenia korpusów opartych o Wikipedię służy notatnik Build Corpus.ipynb, dla korpusu OpenSubtitles jest to Build OpenSubtitles Corpus.ipynb. W wyniu ich działania do katalogu data
zostaną pobrane dane wejściowe w postaci archiwów a następnie zostaną one rozpakowane i wyekstraktowane z nich korpusy do plików z rozszerzeniem .txt
.
Pliki te mają wiele gigabajtów dla tego niezbędna jest odpwiednia ilość miejsca na dysku. Dla korpusu OpenSubtitles jest to ok 20GB, dla korpusów Wikipedii ok. 15GB. Pliki wynikowe zawierają jedno zdanie w każdej linii. Szczegółowy opis działania znajduje się w notatniku.
Do tworzenia reprezentacji wektorowej słów, czyli modelu word2vec służy notatnik Make WordVectors.ipynb.
Jego centralną częścią jest wywołanie funkcji make_wordvectors()
. Parametry zostały dobrane tak aby wygenerować następujące modele:
- OpenSubtitles - Słownik milion słów, algorytm skip-gram, wektory w przestzeni 300 wymiarowej, okno 5, negatywny sampling 5
- Wikipedia - Słownik 50000 słów, algorytm skip-gram, wektory 300D, okno 5, neg. samppling 5
- Wikibooks - Słownik 50000 słów, algorytm skip-gram, wektory 300D, okno 5, neg. samppling 5
- Wiktionary - Słownik 50000 słów, algorytm skip-gram, wektory 300D, okno 5, neg. samppling 5
Modele wynikowe zapisane są w postaci plików o nazwach w formacie:
w2v-773752559-1000000-300-5-5-OpenSubtitles2016.bin
- gdzie poszczególne elementy oznaczają:
w2v
- skrót word2vector773752559
- ilość słów korpusie (w korpusie OpenSubtitles jako słowa traktowane są też niektóre znaki interpunkcyjne kończące zdanie, takie jak kropka, wykrzyknik, znak zapytania)1000000
- ilość unikalnych słów w korpusie300
- wymiarowość przestrzeni5
- wielkość okna5
- nwgatywny samplingOpenSubtitles2016
- nazwa korpusu źródłowego
Oryginalnie projekt powstał ze sklonowania repoztorium: https://github.com/Kyubyong/wordvectors Aktualnie zawiera jednak znaczą część zupełnie nowego kodu oraz optymalizacje powastałe na potrzeby obróbki polskich korpusów, w szczególnośći korpusu OpenSubtitles.