Appliquer des mots incorporés à l'ensemble du document pour obtenir un vecteur de caractéristiques


38

Comment utiliser un mot incorporé pour mapper un document sur un vecteur de caractéristiques approprié pour une utilisation avec apprentissage supervisé?

Un mot incorporant mappe chaque mot w à un vecteur vRd , où d est un nombre non trop grand (par exemple 500). Les mots les plus utilisés sont Word2vec et Glove .

Je veux appliquer l'apprentissage supervisé pour classer les documents. Je mappe actuellement chaque document à un vecteur de caractéristiques à l'aide de la représentation de sac de mots, puis j'applique un classificateur standard. J'aimerais remplacer le vecteur de fonctionnalité de sac de mots par quelque chose basé sur un incorporation de mots pré-formés existants, afin de tirer parti des connaissances sémantiques contenues dans l'incorporation de mots. Y at-il un moyen standard de le faire?

Je peux imaginer des possibilités, mais je ne sais pas s’il ya quelque chose de plus sensé. Approches du candidat que j'ai envisagées:

  • Je pouvais calculer le vecteur pour chaque mot du document et faire la moyenne de tous. Cependant, cela semble perdre beaucoup d’informations. Par exemple, avec la représentation en sac de mots, s'il y a quelques mots qui sont très pertinents pour la tâche de classification et que la plupart des mots ne sont pas pertinents, le classificateur peut facilement apprendre cela; si je fais la moyenne des vecteurs pour tous les mots du document, le classificateur n'a aucune chance.

  • La concaténation des vecteurs de tous les mots ne fonctionne pas, car elle ne conduit pas à un vecteur de caractéristiques de taille fixe. En outre, cela semble être une mauvaise idée car il sera trop sensible au placement spécifique d'un mot.

  • Je pourrais utiliser le mot imbriqué pour regrouper le vocabulaire de tous les mots en un ensemble fixe de groupes, par exemple, 1 000 groupes, où j'utilise la similarité cosinus sur les vecteurs comme mesure de la similarité des mots. Ensuite, au lieu d'un sac de mots, je pourrais avoir un sac de-grappes: l'offre vecteur caractéristique I du classificateur pourrait être un 1000 vecteur, où les e compte composant le nombre de mots dans le document font partie du groupe i .ii

  • Étant donné un mot , ces mots me permettent de calculer un ensemble des 20 mots les plus similaires w 1 , , w 20 et leur score de similarité s 1 , , s 20 . Je pourrais adapter le vecteur de caractéristiques de type sac de mots en utilisant ceci. Quand je vois le mot w , en plus d'incrémenter l'élément correspondant au mot w par 1 , je peux également incrémenter l'élément correspondant au mot w 1 par s 1 , incrémenter l'élément correspondant au mot w 2 parww1,,w20s1,,s20ww1w1s1w2 , et ainsi de suite.s2

Existe-t-il une approche spécifique susceptible de bien fonctionner pour la classification des documents?


Je ne cherche pas paragraphe2vec ou doc2vec; ceux qui nécessitent une formation sur un grand corpus de données, et je n'ai pas un grand corpus de données. Au lieu de cela, je veux utiliser un mot existant incorporant.


1
Avez-vous choisi une méthode spécifique pour représenter des documents à l'aide d'incorporation pré-formée? Peut - être que cela pourrait aider un peu?
Turdus-Merula

1
@ user115202, soigné! Cela ne résout pas tout à fait le problème que j'ai eu, mais c'est une idée intelligente qui mérite d'être connue - merci de l'avoir signalé! Je n'ai jamais trouvé une très bonne solution à ce problème qui était nettement meilleure que la simple utilisation d'un sac de mots. Peut-être que ce n’est pas ce pour quoi les mots-clés sont bons. Merci!
DW

Celui-ci est également lié à votre problème, probablement un peu plus que le précédent: Apprentissage de la représentation pour des textes très courts en utilisant une agrégation incorporant des mots pondérés .
turdus-merula


1
Pourquoi ne pas utiliser un RNN? Les documents de longueur variable ne sont pas un problème pour les RNN. wildml.com/2015/2015/…
kalu

Réponses:


23

One simple technique that seems to work reasonably well for short texts (e.g., a sentence or a tweet) is to compute the vector for each word in the document, and then aggregate them using the coordinate-wise mean, min, or max.

nv1,v2,,vnRdmin(v1,,vn)max(v1,,vn). Here we're taking the coordinate-wise minimum, i.e., the minimum is a vector u such that ui=min(vi1,,vin), and similarly for the max. The feature vector is the concatenation of these two vectors, so we obtain a feature vector in R2d. I don't know if this is better or worse than a bag-of-words representation, but for short documents I suspect it might perform better than bag-of-words, and it allows using pre-trained word embeddings.

TL;DR: Surprisingly, the concatenation of the min and max works reasonably well.

Reference:

Representation learning for very short texts using weighted word embedding aggregation. Cedric De Boom, Steven Van Canneyt, Thomas Demeester, Bart Dhoedt. Pattern Recognition Letters; arxiv:1607.00570. abstract, pdf. See especially Tables 1 and 2.

Credits: Thanks to @user115202 for bringing this paper to my attention.


4
for short text, avg/min/max might work well, but what if long text, such as news article?
avocado

1
For anyone who reads through that paper and gets as confused as me: the paper doesn't focus on the approach mentioned by @D.W., they only mention it briefly under "5.1. Baselines" as a baseline approach. The body of the paper focuses on their own technique, which involves training a classifier using embeddings, which is much more complex than the approach outlined here!
Migwell

16

You can use doc2vec similar to word2vec and use a pre-trained model from a large corpus. Then use something like .infer_vector() in gensim to construct a document vector. The doc2vec training doesn't necessary need to come from the training set.

Another method is to use an RNN, CNN or feed forward network to classify. This effectively combines the word vectors into a document vector.

You can also combine sparse features (words) with dense (word vector) features to complement each other. So your feature matrix would be a concatenation of the sparse bag of words matrix with the average of word vectors. https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html

Another interesting method is to use a similar algorithm to word2vec but instead of predicting a target word, you can predict a target label. This directly tunes the word vectors to the classification task. http://arxiv.org/pdf/1607.01759v2.pdf

For more ad hoc methods, you might try weighing the words differently depending on syntax. For example, you can weigh verbs more strongly than determiners.


6

If you are working with English text and want pre-trained word embeddings to begin with, then please see this: https://code.google.com/archive/p/word2vec/

This is the original C version of word2vec. Along with this release, they also released a model trained on 100 billion words taken from Google News articles (see subsection titled: "Pre-trained word and phrase vectors").

In my opinion and experience of working on word embeddings, for document classification, a model like doc2vec (with CBOW) works much better than bag of words.

Since, you have a small corpus, I suggest, you initialize your word embedding matrix by the pre-trained embeddings mentioned above. Then train for the paragraph vector in the doc2vec code. If you are comfortable with python, you can checkout the gensim version of it, which is very easy to modify.

Also check this paper that details the inner workings of word2vec/doc2vec: http://arxiv.org/abs/1411.2738. This will make understanding the gensim code very easy.


1
Thanks for the suggestions. I'm not asking for a word embedding; I already know how to get a pre-trained word embedding (I mentioned word2vec in my question). My question is how to construct feature vectors from a pre-trained word embedding. I appreciate the reference to doc2vec, but my corpus is quite small and so I suspect/fear that trying to train doc2vec codes will overfit and perform poorly (even if I initialize the matrix with pre-trained embeddings).
D.W.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.