Ho bisogno di addestrare una rappresentazione word2vec sui tweet usando gensim. A differenza della maggior parte dei tutorial e del codice che ho visto su gensim, i miei dati non sono grezzi, ma sono già stati preelaborati. Ho un dizionario in un documento di testo contenente 65k parole (incluso un token "sconosciuto" e un token EOL) e i tweet sono salvati come una matrice numpy con indici in questo dizionario. Un semplice esempio del formato dei dati può essere visto sotto:Gensim word2vec sul dizionario predefinito e dati sugli indici delle parole
dict.txt
you
love
this
code
tweets (5 è sconosciuta e 6 è EOL)
[[0, 1, 2, 3, 6],
[3, 5, 5, 1, 6],
[0, 1, 3, 6, 6]]
Sono incerto su come dovrei gestire la rappresentazione degli indici. Un modo semplice è solo convertire l'elenco di indici in un elenco di stringhe (cioè [0, 1, 2, 3, 6] -> ['0', '1', '2', '3', '6 ']) mentre lo leggo nel modello word2vec. Tuttavia, questo deve essere inefficiente poiché gensim tenterà quindi di cercare l'indice interno usato per es. '2'.
Come caricare questi dati e creare la rappresentazione word2vec in modo efficiente utilizzando gensim?
Posso confermare che non posso semplicemente inserire numeri interi nel modello. Come affermato nel post originale (forse non abbastanza chiaramente), funziona semplicemente mappando gli interi alle stringhe. – pir
Per curiosità, come filtrare '5' e' 6' da una matrice numpy 2D? Ogni riga dovrebbe sempre avere la stessa dimensione. Potrebbe essere fatto quando si itera sulla matrice per fornirlo alla parola 2vec, ma ciò sembra molto inefficiente. – pir