nyelvi szabályszerűségek
most vizsgáljuk meg, hogyan működik a kesztyű beágyazása. Mint közismert, a word2vec szóvektorok sok nyelvi szabályosságot rögzítenek. A kanonikus példa megadásához, ha a “Párizs”, “Franciaország” és “Németország” szavakra vektorokat veszünk, és a következő műveletet hajtjuk végre:
\
a kapott vektor közel lesz a “berlin”vektorához
töltsük le ugyanazokat a Wikipedia adatokat, amelyeket a word2vec demóként használt:
a következő lépésben létrehozunk egy szókincset, olyan szavak halmazát, amelyekhez szóvektorokat akarunk megtanulni. Vegye figyelembe, hogy a text2vec összes funkciója, amely nyers szöveges adatokon működik (create_vocabulary
, create_corpus
, create_dtm
, create_tcm
) van egy streaming API, és meg kell iterálni tokenek, mint az első argumentum ezeket a funkciókat.
ezek a szavak nem lehetnek túl ritkák. Fot példa nem tudjuk kiszámítani egy értelmes szó vektor egy szó, amely láttuk csak egyszer az egész corpus. Itt csak olyan szavakat fogunk venni, amelyek legalább ötször megjelennek. a text2vec további lehetőségeket kínál a szókincs szűrésére (lásd ?prune_vocabulary
).
most már 71 290 kifejezésünk van a szókincsben, és készen állunk a term-co-occurence matrix (TCM) felépítésére.
most már van egy TCM mátrixunk, amelyet a kesztyű algoritmuson keresztül faktorizálhatunk.
a text2vec párhuzamos sztochasztikus gradiens leszármazási algoritmust használ. Alapértelmezés szerint a gép összes magját használja, de ha akarja, megadhatja a magok számát.
nézzük illik a modell. (Ez eltarthat néhány percig, hogy illeszkedjen!)
## INFO epoch 1, loss 0.1755 ## INFO epoch 2, loss 0.1228 ## INFO epoch 3, loss 0.1085 ## INFO epoch 4, loss 0.1005 ## INFO epoch 5, loss 0.0954 ## INFO epoch 6, loss 0.0918 ## INFO epoch 7, loss 0.0890 ## INFO epoch 8, loss 0.0869 ## INFO epoch 9, loss 0.0851 ## INFO epoch 10, loss 0.0837
## 71290 50
vegye figyelembe, hogy a modell két szóvektor-készletet tanul meg-fő és kontextus. Lényegében ugyanazok, mivel a modell szimmetrikus. Tapasztalataink tanulás két szó Vektorok vezet jobb minőségű beágyazások. Kesztyű Modell” bomlás ” modell (örökli mlapiDecomposition
– általános osztály modellek, amelyek lebontják bemeneti mátrix két alacsony rangú mátrixok). Tehát par bármely más mlapiDecomposition
modell második alacsony rangú mátrix (kontextus szó Vektorok) áll rendelkezésre components
mező:
## 50 71290
vegye figyelembe, hogy mint minden modellnél, amely mlapiDecomposition
– től örököl transzformált mátrix lesz nrow = nrow(input)
, ncol = rank
és második component
mátrix lesz nrow = rank
, ncol = ncol(input)
.
míg mindkét szó-vektorok mátrixok lehet használni, mint eredményeként általában jobb (ötlet kesztyű papír), hogy az átlagos, vagy hogy egy összeg fő és kontextus vektor:
megtaláljuk a legközelebbi szó Vektorok a mi Párizs-Franciaország + Németország például:
## paris berlin munich germany versailles ## 0.7724678 0.7156243 0.6962157 0.6381500 0.6170311
sokkal jobb eredményeket érhet el a skip_grams_window
és a GloVe
osztály paramétereinek kísérletezésével (beleértve a szó Vektorok méretét és az iterációk számát). További részletekért és a wikipedia adataival kapcsolatos nagyszabású kísérletekért lásd ezt a régi bejegyzést a blogomban.