Încorporări de cuvinte pentru mănuși

regularități lingvistice

acum să examinăm cum funcționează încorporările pentru mănuși. După cum se știe în mod obișnuit, vectorii de cuvinte word2vec captează multe regularități lingvistice. Pentru a da exemplul canonic, dacă luăm vectori de cuvinte pentru cuvintele „paris”, „Franța” și „Germania” și efectuăm următoarea operație:

\

vectorul rezultat va fi aproape de vectorul pentru „berlin”

să descărcăm aceleași date Wikipedia folosite ca demo de word2vec:

în pasul următor vom crea un vocabular, un set de cuvinte pentru care vrem să învățăm vectori de cuvinte. Rețineți că toate funcțiile text2vec care funcționează pe date text brute(create_vocabulary, create_corpus, create_dtm, create_tcm) aveți un API de streaming și ar trebui să iterați peste jetoane ca prim argument pentru aceste funcții.

aceste cuvinte nu ar trebui să fie prea neobișnuite. Fot exemplu nu putem calcula un vector cuvânt semnificativ pentru un cuvânt pe care am văzut doar o singură dată în întregul corpus. Aici vom lua doar cuvinte care apar de cel puțin cinci ori. text2vec oferă opțiuni suplimentare pentru a filtra vocabularul (vezi ?prune_vocabulary).

acum avem 71.290 de termeni în vocabular și suntem gata să construim matricea de co-apariție a Termenilor (TCM).

acum avem o matrice TCM și o putem factoriza prin algoritmul mănușii.
text2vec utilizează un algoritm de coborâre gradient stochastic paralel. În mod implicit, va utiliza toate nucleele de pe mașina dvs., dar puteți specifica numărul de nuclee dacă doriți.

să ne potrivim modelul. (Poate dura câteva minute pentru a se potrivi!)

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

rețineți că modelul învață două seturi de vectori de cuvinte – principal și context. În esență, ele sunt aceleași, deoarece modelul este simetric. Din experiența noastră, Învățarea a două seturi de vectori de cuvinte duce la încorporări de calitate superioară. Modelul mănușii este modelul „descompunere” (moștenește de la mlapiDecomposition – clasă generică de modele care descompun matricea de intrare în două matrice de rang inferior). Deci, la egalitate cu orice alt model mlapiDecomposition a doua matrice de rang inferior (vectori de cuvinte contextuale) este disponibilă în câmpul components :

## 50 71290

rețineți că, la fel ca în toate modelele care moștenesc de la mlapiDecomposition matricea transformată va avea nrow = nrow(input), ncol = rank și a doua component matricea va avea nrow = rank, ncol = ncol(input).

în timp ce ambele matrici word-vectori pot fi utilizate ca rezultat, de obicei, mai bine (idee din hârtie mănușă) la medie sau de a lua o sumă de vector principal și context:

putem găsi cei mai apropiați vectori de cuvinte pentru exemplul nostru paris – Franța + Germania:

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

puteți obține rezultate mult mai bune experimentând cu skip_grams_window și parametrii clasei GloVe (inclusiv dimensiunea vectorilor de cuvinte și numărul de iterații). Pentru mai multe detalii și experimente la scară largă pe date wikipedia, consultați această postare veche pe blogul meu.

You might also like

Lasă un răspuns

Adresa ta de email nu va fi publicată.