Quando convertire i dati in incorporamenti di parole in PNL

Aug 21 2020

Quando si addestra una rete utilizzando gli incorporamenti di parole, è normale aggiungere un livello di incorporamento per convertire prima il vettore di input negli incorporamenti.

Tuttavia, supponendo che gli incorporamenti siano pre-addestrati e congelati, esiste un'altra opzione. Potremmo semplicemente preelaborare i dati di addestramento prima di darli al modello in modo che siano già convertiti negli incorporamenti. Ciò accelererà l'addestramento, poiché questa conversione deve essere eseguita solo una volta, anziché al volo per ogni epoca.

Pertanto, la seconda opzione sembra migliore. Ma la prima scelta sembra più comune. Supponendo che gli incorporamenti siano pre-addestrati e congelati, c'è un motivo per cui potrei scegliere la prima opzione rispetto alla seconda?

Risposte

2 Oso Aug 25 2020 at 20:36

Se devi spostare molti dati durante l'addestramento (come il recupero di batch da disco/rete/cosa hai), è molto più veloce farlo come tensore di rango 3 di [batch, documenti, indici] piuttosto che come rango -4 tensore di [batch, documenti, indici, vettori]. In questo caso, mentre l'incorporamento è O(1) ovunque lo metti, è più efficiente farlo come parte del grafico.

1 SauravMaheshkar Aug 25 2020 at 08:40

Esistono diversi modi per ottenere l'incorporamento di parole da un corpus.

  • Count Vectorizer: è possibile utilizzare CountVectorizer()from sklearn.feature_extraction.texte quindi utilizzare the fit_transform()se il corpus è stato convertito in un elenco di frasi
  • Vettorizzatore TF-IDF: puoi usare TfidfVectorizerfrom sklearn.feature_extraction.texte poi usare di nuovo the fit_transform()su un elenco di frasi
  • word2vec: puoi creare un word2vecmodello gensim.modelsutilizzando word2vec.Word2vec.
ddaedalus Aug 25 2020 at 04:29

Supponendo che il dizionario delle parole, fornito dal tuo modello, sia un sottoinsieme degli incorporamenti preaddestrati, ad esempio la parola2vec preaddestrata di Google, allora è forse un'opzione migliore seguire questi incorporamenti, se il tuo modello è in grado di gestire quella dimensione della dimensione .

Tuttavia, a volte questa non sarebbe sempre la soluzione migliore, tenendo conto della natura del problema. Ad esempio, se stai cercando di utilizzare la PNL su testi medici che contengono parole rare e speciali, allora forse dovresti usare il tuo livello di incorporamento, supponendo che tu abbia una dimensione di dati adeguata, o entrambi. Questo è solo un mio pensiero. Di sicuro, ci possono essere molti altri casi d'uso che dovrebbero proporre il livello di incorporamento.