Come si usa l'incorporamento di parole per mappare un documento su un vettore di caratteristiche, adatto per l'uso con l'apprendimento supervisionato?
Una parola che incorpora mappa ogni parola su un vettore , dove è un numero non troppo grande (ad esempio, 500). Gli incorporamenti di parole popolari includono word2vec e Glove .
Voglio applicare l'apprendimento supervisionato per classificare i documenti. Attualmente sto mappando ogni documento su un vettore di funzione usando la rappresentazione bag-of-word, quindi applicando un classificatore standard. Vorrei sostituire il vettore di funzionalità bag-of-word con qualcosa basato su un incorporamento di parole pre-addestrato esistente, per sfruttare la conoscenza semantica contenuta nel incorporamento di parole. Esiste un modo standard per farlo?
Posso immaginare alcune possibilità, ma non so se c'è qualcosa che abbia più senso. Approcci candidati che ho preso in considerazione:
Potrei calcolare il vettore per ogni parola nel documento e fare una media di tutti. Tuttavia, sembra che potrebbe perdere molte informazioni. Ad esempio, con la rappresentazione bag-of-words, se ci sono alcune parole che sono molto rilevanti per il compito di classificazione e la maggior parte delle parole sono irrilevanti, il classificatore può facilmente apprenderlo; se faccio una media dei vettori per tutte le parole del documento, il classificatore non ha possibilità.
La concatenazione dei vettori per tutte le parole non funziona, perché non porta a un vettore di elementi di dimensioni fisse. Inoltre sembra una cattiva idea perché sarà eccessivamente sensibile al posizionamento specifico di una parola.
Potrei usare la parola embedding per raggruppare il vocabolario di tutte le parole in un insieme fisso di cluster, diciamo 1000 cluster, dove uso la somiglianza del coseno sui vettori come misura della somiglianza delle parole. Quindi, invece di un bag-of-word, potrei avere un bag-of-cluster: il vettore di feature che fornisco al classifer potrebbe essere un vettore di 1000, in cui l' esimo componente conta il numero di parole nel documento che fanno parte del cluster .
Con una parola , queste parole incorporate mi permettono di calcolare una serie delle prime 20 parole più simili e il loro punteggio di somiglianza . Potrei adattare il vettore di funzionalità simile a un sacco di parole usando questo. Quando vedo la parola , oltre a incrementare l'elemento corrispondente alla parola di , potrei anche incrementare l'elemento corrispondente alla parola di , incrementare l'elemento corrispondente alla parola di e così via.
Esiste un approccio specifico che probabilmente funzionerà bene per la classificazione dei documenti?
Non cerco il paragrafo2vec o doc2vec; quelli richiedono una formazione su un corpus di dati di grandi dimensioni e non ho un corpus di dati di grandi dimensioni. Invece, voglio usare un incorporamento di parole esistente.