2015-04-21 15 views

risposta

20

È possibile, ma non da word2vec. La composizione dei vettori di parole al fine di ottenere rappresentazioni di livello superiore per le frasi (e oltre per paragrafi e documenti) è un argomento di ricerca molto attivo. Non esiste una soluzione migliore per farlo, dipende molto da quale attività si desidera applicare questi vettori. Puoi provare la concatenazione, la sommatoria semplice, la moltiplicazione puntuale, la convoluzione ecc. Ci sono diverse pubblicazioni su cui puoi imparare, ma alla fine hai solo bisogno di sperimentare e vedere cosa ti sta meglio.

+0

Sto cercando di classificare i documenti utilizzando i vettori di token. Dato che ho troppi token (200k), ho voluto generare i vettori dei documenti per classificare, questo ridurrà sostanzialmente i fattori (per esempio 500). Mi chiedevo se questo è possibile. – trialcritic

+0

Puoi indicarmi alcune pubblicazioni su questo? – trialcritic

+2

È possibile iniziare da questi: 1. Mitchell, 2008. Modelli basati su vettori di composizione semantica. [collegamento] (http://homepages.inf.ed.ac.uk/s0453356/composition.pdf) 2. Blacoe, 2012. Confronto di rappresentazioni basate su vettori per la composizione semantica. [collegamento] (http://www.aclweb.org/anthology/D12-1050) – Claudiu

10

È possibile ottenere rappresentazioni vettoriali di frasi durante la fase di addestramento (unire il test e formare frasi in un unico file ed eseguire il codice word2vec ottenuto dal seguente collegamento).

Il codice per frase2vec è stato condiviso da Tomas Mikolov here. Assume che la prima parola di una riga sia id-frase. Compilare il codice utilizzando

gcc word2vec.c -o word2vec -lm -pthread -O3 -march=native -funroll-loops 

ed eseguirlo usando

./word2vec -train alldata-id.txt -output vectors.txt -cbow 0 -size 100 -window 10 -negative 5 -hs 0 -sample 1e-4 -threads 40 -binary 0 -iter 20 -min-count 1 -sentence-vectors 1 

EDIT

Gensim (versione di sviluppo) sembra avere un metodo per dedurre vettori di nuove condanne. Scopri model.infer_vector(NewDocument) metodo https://github.com/gojomo/gensim/blob/develop/gensim/models/doc2vec.py

44

Ci sono metodi differet per ottenere i vettori frase:

  1. Doc2Vec: è possibile addestrare il vostro set di dati utilizzando Doc2Vec e quindi utilizzare i vettori di frase.
  2. Media dei vettori Word2Vec: è sufficiente prendere la media di tutti i vettori di parole in una frase. Questo vettore medio rappresenterà il tuo vettore di frase.
  3. Media di vettori Word2Vec con TF-IDF: questo è uno dei migliori approcci che raccomanderò. Prendi la parola vettori e moltiplicala con i loro punteggi TF-IDF. Prendi la media e rappresenterà il tuo vettore di frase.
+3

Perché media contro somma? – Fred

+10

Per gestire le frasi di lunghezza variabile – neel

+2

Si stanno prendendo le medie dei ripetitori w2v di * N * parole per una frase di lunghezza * N *; Ho capito. Ma perché la media rispetto, ad es. la somma? (che potrebbe anche ottenere un rappresentante composto per frasi di lunghezza variabile) – Fred

11

Essa dipende dall'uso:

1) Se si desidera solo per ottenere frase vettore per alcuni dati noti. Controlla il vettore di paragrafo in questi documenti:

Quoc V. Le e Tomas Mikolov. 2014. Rappresentazioni distribuite di frasi e documenti. Eprint Arxiv, 4: 1188-1196.

A. M. Dai, C. Olah e Q. V. Le. 2015. DocumentEmbedding con Vettori di paragrafi. ArXiv e-prints, luglio.

2) Se si desidera un modello per la stima frase vettore di sconosciuti test) frasi con approccio non supervisionato (:

Si potrebbe verificare questa carta:

Steven Du and Xi Zhang. 2016. Aicyber at SemEval-2016 Task 4: i-vector based sentence representation. In Proceedings of the 10th International Workshop on Semantic Evaluation (SemEval 2016), San Diego, US

3) Ricercatore sono anche cercando l'uscita di alcuni strati in RNN o LSTM rete, esempio recente è:

http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12195

4) Per gensim doc2vec, molti ricercatori non hanno potuto ottenere buoni risultati, per superare questo problema, seguendo la carta che utilizza doc2vec basato su vettori di parole pre-formati.

Jey Han Lau and Timothy Baldwin (2016). An Empirical Evaluation of doc2vec with Practical Insights into Document Embedding Generation. In Proceedings of the 1st Workshop on Representation Learning for NLP, 2016.

5) tweet2vec o sent2vec .

Facebook ha il progetto SentEval per la valutazione della qualità dei vettori di frasi.

https://github.com/facebookresearch/SentEval

2

ho avuto buoni risultati da:

  1. sommando i vettori di parole (con ponderazione TF-IDF). Questo ignora l'ordine delle parole, ma per molte applicazioni è sufficiente (in particolare per i documenti brevi)
  2. Fastsent
17

Ci sono diversi modi per ottenere un vettore per una frase. Ogni approccio ha vantaggi e carenze. La scelta di una dipende dall'attività che si desidera eseguire con i propri vettori.

In primo luogo, puoi semplicemente calcolare la media dei vettori da word2vec. Secondo lo Le and Mikolov, questo approccio si comporta male per i compiti di analisi del sentiment, perché "perde l'ordine delle parole nello stesso modo dei modelli standard di bag-of-words" e "fail [s] per riconoscere molti sofisticati fenomeni linguistici, ad esempio sarcasmo". D'altra parte, secondo lo standard Kenter et al. 2016, "la semplice mediazione degli embeddings di parole di tutte le parole in un testo si è dimostrata essere una linea di base forte o una funzionalità attraverso una moltitudine di attività", come le attività di somiglianza del testo breve. Una variante sarebbe quella di pesare i vettori di parole con il loro TF-IDF per diminuire l'influenza delle parole più comuni.

Un approccio più sofisticato sviluppato da Socher et al. consiste nel combinare i vettori di parole in un ordine dato da un albero di analisi di una frase, utilizzando le operazioni del vettore matrice. Questo metodo funziona per l'analisi del sentiment delle frasi, perché dipende dall'analisi.

Problemi correlati