applicando word2vec su piccoli file di testo


11

Sono totalmente nuovo in word2vec, quindi ti prego di sopportarlo. Ho un set di file di testo ciascuno contenente un set di tweet, tra 1000-3000. Ho scelto una parola chiave comune ("kw1") e voglio trovare termini semanticamente rilevanti per "kw1" usando word2vec. Ad esempio, se la parola chiave è "apple", mi aspetterei di vedere termini correlati come "ipad" "os" "mac" ... in base al file di input. Quindi questo insieme di termini correlati per "kw1" sarebbe diverso per ogni file di input poiché word2vec verrebbe addestrato su singoli file (ad es. 5 file di input, esegui word2vec 5 volte su ciascun file).

Il mio obiettivo è trovare set di termini correlati per ciascun file di input data la parola chiave comune ("kw1"), che verrebbe utilizzata per altri scopi.

Le mie domande / dubbi sono:

  • Ha senso usare word2vec per un'attività come questa? è tecnicamente corretto utilizzare considerando le dimensioni ridotte di un file di input?

Ho scaricato il codice da code.google.com: https://code.google.com/p/word2vec/ e l'ho appena eseguito come segue:

 time ./word2vec -train $file -output vectors.bin -cbow 1 -size 200 -window 10 -negative 25 -hs 1 -sample 1e-3 -threads 12 -binary 1 -iter 50

./distance vectors.bin 
  • Dai miei risultati ho visto che sto ricevendo molti termini rumorosi (parole d'ordine) quando sto usando lo strumento "distanza" per ottenere termini correlati a "kw1". Quindi ho rimosso le parole d'ordine e altri termini rumorosi come le menzioni dell'utente. Ma non ho visto da nessuna parte che word2vec richiede dati di input puliti ...?

  • Come scegli i parametri giusti? Vedo che i risultati (dall'esecuzione dello strumento distanza) variano notevolmente quando cambio parametri come '-window', '-iter'. Quale tecnica dovrei usare per trovare i valori corretti per i parametri. (la prova manuale e l'errore non sono possibili per me poiché ingrandirò il set di dati).

Risposte:


9

Word2Vec non è una buona scelta per un set di dati di tali dimensioni. Dalle ricerche che ho visto, scatenerà il suo potere se si alimentano almeno un paio di milioni di parole, i tweet 3k non sarebbero sufficienti per una concisione simile alla parola.


dobbiamo rimuovere le password come fase di pre-elaborazione dei dati?
samsamara,

2
No, nell'approccio word2vec non è necessario farlo, poiché l'algoritmo stesso si basa su un ampio contesto per trovare somiglianze nelle parole, quindi fermare le parole (la maggior parte delle quali sono preposizioni, pronomi e simili) sono un asino importante per l'algoritmo .
Chewpakabra,

ma quando stavo usando lo strumento distanza per trovare la maggior parte delle parole simili a una determinata parola, la versione con le parole d'ordine rimosse mi ha dato parole sensate rispetto alla versione senza. puoi indovinare cosa significa?
samsamara,

Probabilmente stai usando un contesto troppo ristretto: se il tuo modello esamina, diciamo, due parole avanti e indietro, avrai un massimo di 2 parole chiave nel contesto e ciò potrebbe dare risultati peggiori. Se allargherai il contesto (che renderà il modello più grande e il tempo di addestramento più lungo), suppongo che il modello with-stopwords ti darà risultati migliori.
chewpakabra,

grazie per l'input, ora ha più senso. Inoltre, poiché word2vec elabora la frase di input frase per frase, cosa accadrebbe se mescolassi le frasi nel documento di input? questo dovrebbe cambiare totalmente i vettori di output giusto? Inoltre, dato che l'elaborazione è stata inviata da send, in che modo word2vec differisce da doc2vec? grazie ancora.
samsamara,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.