Hansikas-sanavalinnat

kielelliset säännönmukaisuudet

nyt tutkitaan, miten käsine-upotukset toimivat. Kuten yleisesti tiedetään, word2vec-sanavektorit vangitsevat monia kielellisiä säännönmukaisuuksia. Kanonisen esimerkin antamiseksi, jos otamme sanavektorit sanoille ”Pariisi”, ”Ranska” ja ”saksa” ja suoritamme seuraavan operaation:

\

tuloksena oleva vektori on lähellä vektoria ”berlin”

ladataanpa sama Wikipedia-data, jota word2vec käytti demona:

seuraavassa vaiheessa luodaan sanasto, sanakokonaisuus, johon haluamme oppia sanavektoreita. Huomaa, että kaikki text2vec: n toiminnot, jotka toimivat raakatekstidatalla (create_vocabulary, create_corpus, create_dtm, create_tcm) on streaming API ja sinun pitäisi iteroida yli tokens kuin ensimmäinen argumentti näitä toimintoja.

näiden sanojen ei pitäisi olla liian harvinaisia. Fot esimerkki emme voi laskea merkityksellistä sanavektoria sanalle, jonka näimme vain kerran koko korpuksessa. Tähän otamme vain sanat, jotka esiintyvät vähintään viisi kertaa. text2vec tarjoaa lisävaihtoehtoja sanaston suodattamiseen (KS. ?prune_vocabulary).

nyt meillä on sanastossa 71 290 termiä ja olemme valmiita rakentamaan termien yhteistoimintamatriisin (TCM).

nyt meillä on TCM-matriisi ja voimme factorisoida sen Hansikasalgoritmin avulla.
text2vec käyttää rinnakkaista stokastista gradientin laskeutumisalgoritmia. Oletuksena se käyttää kaikkia ytimiä koneessasi, mutta voit halutessasi määrittää ytimien määrän.

sovitellaan mallia. (Se voi kestää useita minuutteja sopivaksi!)

## 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

huomaa, että malli oppii Kahdet sanavektorit-pää-ja asiayhteys. Pohjimmiltaan ne ovat samat, koska malli on symmetrinen. Kokemuksemme oppiminen Kahdet sanavektorit johtaa laadukkaampiin upotuksiin. Käsinemalli on ”hajoamismalli” (periytyy mlapiDecomposition – geneerisestä malliluokasta, joka hajottaa tulomatriisin kahdeksi matalaksi matriisiksi). Joten par kaikkien muiden mlapiDecomposition mallin toisen matalan tason matriisin (kontekstisanavektorit) kanssa on components kentässä:

## 50 71290

huomaa, että kuten kaikissa malleissa, jotka perivät mlapiDecomposition muunnetun matriisin on nrow = nrow(input), ncol = rank ja toisen component matriisin on nrow = rank, ncol = ncol(input).

vaikka molempia sanavektorimatriiseja voidaan käyttää tuloksena se yleensä parempi (idea Käsinepaperista) keskiarvoon tai ottaa pää-ja kontekstivektorin summa:

voimme löytää lähimmät sanavektorit Pariisi-Ranska + Saksa-esimerkillemme:

## paris berlin munich germany versailles ## 0.7724678 0.7156243 0.6962157 0.6381500 0.6170311

voit saavuttaa paljon parempia tuloksia kokeilemalla skip_grams_window ja GloVe luokan parametreilla (mukaan lukien sanavektorien koko ja iteraatioiden määrä). Lisätietoja ja laajamittaisia kokeiluja wikipedia tietoja katso tämä vanha viesti blogissani.

You might also like

Vastaa

Sähköpostiosoitettasi ei julkaista.