Word2vec è un insieme di modelli che sono utilizzati per produrre word embedding, il cui pacchetto fu originariamente creato in C da Tomas Mikolov, poi implementato anche in Python e Java. Word2vec è una semplice rete neurale artificiale a due strati progettata per elaborare il linguaggio naturale, l'algoritmo richiede in ingresso un corpus e restituisce un insieme di vettori che rappresentano la distribuzione semantica delle parole nel testo. Per ogni parola contenuta nel corpus, in modo univoco, viene costruito un vettore in modo da rappresentarla come un punto nello spazio multidimensionale creato. In questo spazio le parole saranno più vicine se riconosciute come semanticamente più simili.
Il pacchetto originale di Word2vec permette di lanciare da shell l'algoritmo scritto in C. Il file demo-word.sh infatti riporta questo comando:
$BIN_DIR/word2vec -train $TEXT_DATA -output $VECTOR_DATA -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
Dove $BIN_DIR/word2vec è il percorso delle cartelle per arrivare al file word2vec nella cartella bin; $TEXT_DATA va sostituito invece con il corpus formato testo con cui si vuole fare l'addestramento e $VECTOR_DATA sarà il nome del file che l'algoritmo andrà a creare.
Successivamente possiamo vedere dei parametri modificabili:
Vi sono vari parametri che si possono modificare per personalizzare il processamento dell'algoritmo, alcuni sono scritti di seguito:
Il tutorial di gensim inizializza i parametri (n) in questo modo:
class gensim.models.word2vec.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=<built-in function hash>, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)
I parametri spiegati sulla documentazione di DL4J sono:
La documentazione di DL4J inizializza i parametri in questo modo:
Word2Vec vec = new Word2Vec.Builder()
.minWordFrequency(5)
.iterations(1)
.layerSize(100)
.seed(42)
.windowSize(5)
.iterate(iter)
.tokenizerFactory(t)
.build();