Před necelým rokem—koncem března 2018—jsem spustil robota Babišobota; tento hodný robot každý den ráno pročeše sítě internetu a podá zprávu o vašich hláškách o našem premiérovi.

Za rok činnosti robot Babišobot nasbíral 175 933 unikátních tweetů, obsahujících bratru 5 a ¼ milionu slov. Objemem textu to odpovídá přibližně třem stovkám diplomek (na VŠE klidně 350).

Přišlo mi zajímavé na tento archiv uplatnit techniku strojového učení word2vec. Tato technika je založena na překladu slov do vektorového prostoru.

Například pojem Babiš se do 64-rozměrného vektorového prostoru přeloží takto:

##  [1] -0.54397660  0.35715886  0.16126413 -0.38039915 -0.32043993
##  [6] -0.02361583  0.19568971 -0.12450046 -0.43878543  0.22967364
## [11] -0.41581790 -0.66033250 -0.02544054 -0.17578487 -0.09361476
## [16] -0.05071064  0.64078537 -0.83645621  0.43255401  0.56849062
## [21]  0.21203353 -0.30436601  0.49867787 -0.36530502  0.24742102
## [26]  0.30216619  0.70570219 -0.22938091  0.52095577 -0.32056165
## [31]  0.67504853  0.45135541  0.51813766 -0.14564115  0.82305723
## [36]  0.17063262  0.55249590 -0.57851888 -0.46394466 -0.32545721
## [41]  0.02843169 -0.65831184 -0.12829191  0.10772407 -0.19332501
## [46]  0.61317688  0.18671698  0.30298087  0.08984997 -0.21685517
## [51]  0.14850831 -0.08159480  0.63042441  0.32634119  0.44974133
## [56]  0.21550229  0.27516487  0.81579185  0.26047512  0.08226460
## [61] -0.38546924 -0.42014155 -0.11452926 -0.30458058

Když se takový překlad provede šikovně, tak dovede vektory přiřadit způsobem, který dává hlubší smysl—z původního word2vec je slavný příklad king - man + woman = queen.

A něco podobného platí i pro archiv robota Babišobota, samozřejmě s přihlédnutím k odlišnostem kontextu, ve kterém se robot Babišobot pohybuje.

Pár zajímavých příkladů, o která bych se rád podělil, přikládám:

babiš - hnutí + firma   = agrofert

babiš - ano + spd       = okamura
babiš - ano + pirát     = bartoš
babiš - ano + čssd      = hamáček
babiš - ano + ods       = kalousek # co tohle říká o Fialovi?? :)

zeman - hrad + rusko    = putin
zeman - hrad + usa      = trump

zeman - hrad + televize = soukup

S tím, že další kombinace si můžete vyzkoušet sami v přiložené shiny aplikaci. Pro každou kombinaci vstupů uvádím tři výstupy, s klesající mírou podobnosti (první je nejtrefnější).

Jedno varování: babiš - premiér + agent = ... je pro skutečné znalce.

Pro technicky zaměřené: projekt Babišobot je napsaný v erku a bydlí na GitHubu. Embeddingy jsem spočetl pomocí text2vec package, tokenizaci a lemmatizaci jsem udělal přes udpipe.

Pro fandy AI, ML a NLP: matrix of word embeddings pro 29 413 českých slov v 64 dimenzích dávám k dispozici jako zazipovaný texťák. CC-BY prosím :)