Embeddings parola guanto

Regolarità linguistiche

Ora esaminiamo come funziona embeddings guanto. Come comunemente noto, i vettori di parole word2vec catturano molte regolarità linguistiche. Per dare l’esempio canonico, se prendiamo la parola vettori per le parole “parigi”, “francia”, e “germania” ed eseguire la seguente operazione:

\

il vettore risultante sarà vicino al vettore per “berlin”

andiamo a scaricare lo stesso di Wikipedia utilizzato come demo da word2vec:

Nella fase successiva creeremo un vocabolario, un insieme di parole per le quali vogliamo imparare i vettori di parole. Si noti che tutte le funzioni di text2vec che operano su dati di testo grezzi(create_vocabulary, create_corpus, create_dtm, create_tcm) avere un’API di streaming e dovresti iterare i token come primo argomento per queste funzioni.

Queste parole non dovrebbero essere troppo rare. Per esempio, non possiamo calcolare un vettore di parole significativo per una parola che abbiamo visto solo una volta nell’intero corpus. Qui prenderemo solo parole che appaiono almeno cinque volte. text2vec fornisce opzioni aggiuntive per filtrare il vocabolario (vedere ?prune_vocabulary).

Ora abbiamo 71.290 termini nel vocabolario e siamo pronti a costruire term-co-occurence matrix (TCM).

Ora abbiamo una matrice TCM e possiamo fattorizzarla tramite l’algoritmo del guanto.
text2vec utilizza un algoritmo di discesa del gradiente stocastico parallelo. Per impostazione predefinita userà tutti i core sulla tua macchina, ma puoi specificare il numero di core se lo desideri.

Adattiamo il nostro modello. (Si può richiedere diversi minuti per adattarsi!)

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

Si noti che il modello impara due serie di vettori di parole: main e context. Essenzialmente sono gli stessi poiché il modello è simmetrico. Dalla nostra esperienza l’apprendimento di due serie di vettori di parole porta a incorporamenti di qualità superiore. Il modello di guanto è un modello di” decomposizione ” (eredita da mlapiDecomposition – classe generica di modelli che decompongono la matrice di input in due matrici di basso rango). Quindi, alla pari di qualsiasi altro modello mlapiDecomposition, la seconda matrice di basso rango (vettori di parole contestuali) è disponibile nel campo components :

## 50 71290

Si noti che come in tutti i modelli che ereditano da mlapiDecomposition la matrice trasformata ha nrow = nrow(input), ncol = rank e la seconda component la matrice ha nrow = rank, ncol = ncol(input).

Mentre entrambe le matrici di vettori di parole possono essere utilizzate come risultato, di solito è meglio (idea dalla carta dei guanti) alla media o prendere una somma di vettore principale e contesto:

Possiamo trovare i vettori di parole più vicini per il nostro esempio di parigi – francia + Germania:

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

È possibile ottenere risultati molto migliori sperimentando con skip_grams_window e i parametri della classe GloVe (incluse le dimensioni dei vettori di parole e il numero di iterazioni). Per maggiori dettagli e esperimenti su larga scala sui dati di wikipedia vedere questo vecchio post sul mio blog.

You might also like

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.