web-dev-qa-db-fra.com

Comment obtenir un vecteur pour une phrase à partir de Word2vec de jetons dans une phrase

J'ai généré les vecteurs d'une liste de jetons à partir d'un document volumineux utilisant Word2vec. Étant donné une phrase, est-il possible d'obtenir le vecteur de la phrase à partir du vecteur des jetons dans la phrase.

61
trialcritic

Il existe différentes méthodes pour obtenir les vecteurs de phrases:

  1. Doc2Vec: vous pouvez former votre ensemble de données avec Doc2Vec, puis utiliser les vecteurs de phrases.
  2. Moyenne des vecteurs Word2Vec: Vous pouvez simplement prendre la moyenne de tous les vecteurs Word d'une phrase. Ce vecteur moyen représentera votre vecteur de phrase.
  3. Moyenne des vecteurs Word2Vec avec TF-IDF: c’est l’une des meilleures approches que je recommanderai. Il suffit de prendre les vecteurs Word et de le multiplier avec leurs scores TF-IDF. Il suffit de prendre la moyenne et cela représentera votre vecteur de phrase.
74
neel

Il y a plusieurs façons d'obtenir un vecteur pour une phrase. Chaque approche présente des avantages et des inconvénients. Le choix dépend de la tâche que vous souhaitez effectuer avec vos vecteurs.

Premièrement, vous pouvez simplement moyenner les vecteurs de Word2vec. Selon Le et Mikolov , cette approche fonctionne mal pour les tâches d'analyse de sentiment, car elle "perd l'ordre des mots de la même manière que les modèles standard de sac à mots" et "échec [s] reconnaître de nombreux phénomènes linguistiques sophistiqués, par exemple le sarcasme ". D'autre part, selon Kenter et al. 2016 , "le simple calcul de la moyenne des incorporations de mots de tous les mots dans un texte s'est avéré être une base solide ou une caractéristique pour une multitude de tâches", telles que tâches de similarité de texte. Une variante consisterait à pondérer les vecteurs Word avec leur TF-IDF afin de réduire l'influence des mots les plus courants.

Une approche plus sophistiquée développée par Socher et al. consiste à combiner les vecteurs Word dans un ordre donné par l’arbre d’analyse d’une phrase, en utilisant des opérations matricielles. Cette méthode fonctionne pour l'analyse du sentiment des phrases, car elle dépend de l'analyse.

23
Antoine Dusséaux

C'est possible, mais pas à partir de Word2vec. La composition des vecteurs Word afin d'obtenir des représentations de niveau supérieur pour les phrases (et plus encore pour les paragraphes et les documents) est un sujet de recherche réellement actif. Il n’existe pas de solution optimale, cela dépend vraiment de la tâche à laquelle vous souhaitez appliquer ces vecteurs. Vous pouvez essayer la concaténation, la sommation simple, la multiplication par point, la convolution, etc. Vous pouvez apprendre de nombreuses publications à ce sujet, mais vous devez en fin de compte expérimenter et voir ce qui vous convient le mieux.

23
Claudiu

Cela dépend de l'utilisation:

1) Si vous souhaitez uniquement obtenir un vecteur de phrase pour certaines données connues. Découvrez le vecteur de paragraphe dans ces articles:

Quoc V. Le et Tomas Mikolov. 2014. Représentations distribuées de phrases et de documents. Eprint Arxiv, 4: 1188-1196.

A. M. Dai, C. Olah et Q. V. Le. 2015. DocumentEmbedding avec des vecteurs de paragraphe. E-print ArXiv, juillet.

2) Si vous souhaitez qu'un modèle estime le vecteur de phrase pour les phrases inconnues (test) avec une approche non supervisée:

Vous pouvez consulter ce document:

Steven Du et Xi Zhang. 2016. Aicyber à SemEval-2016 Tâche 4: représentation de phrases basée sur un vecteur i. Dans le compte rendu du 10e atelier international sur l'évaluation sémantique (SemEval 2016), San Diego, États-Unis

3) Les chercheurs recherchent également la sortie de certaines couches d'un réseau RNN ou LSTM, voici un exemple récent:

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

4) Pour le groupe de travail doc2vec, de nombreux chercheurs n’ont pas pu obtenir de bons résultats pour surmonter ce problème. Ils ont ensuite utilisé un document utilisant doc2vec basé sur des vecteurs Word pré-formés.

Jey Han Lau et Timothy Baldwin (2016). Une évaluation empirique de doc2vec avec des informations pratiques sur la génération de documents enchâssement. Dans les actes du premier atelier sur l'apprentissage de la représentation pour la PNL, 2016.

5) Tweet2vec ou envoyé2vec .

Facebook a un projet SentEval pour évaluer la qualité des vecteurs de phrases.

https://github.com/facebookresearch/SentEval

6) Il y a plus d'informations dans le papier suivant:

Modèles de réseaux neuronaux pour l'identification de paraphrases, la similarité textuelle sémantique, l'inférence de langage naturel et la réponse à une question


Et pour l'instant, vous pouvez utiliser 'BERT':

Google publie le code source ainsi que des modèles pré-entraînés.

https://github.com/google-research/bert

Et voici un exemple pour exécuter bert en tant que service:

https://github.com/hanxiao/bert-as-service

16
Steven Du

Vous pouvez obtenir des représentations vectorielles des phrases pendant la phase d’apprentissage (rejoignez le test et entraînez les phrases dans un seul fichier et exécutez le code Word2vec obtenu à partir du lien suivant).

Le code pour phrase2vec a été partagé par Tomas Mikolov ici . Il suppose que le premier mot d'une ligne est phrase-id. Compilez le code en utilisant

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

et l'exécuter en utilisant

./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

[~ # ~] éditer [~ # ~]

Gensim (version de développement) semble avoir une méthode pour déduire des vecteurs de nouvelles phrases. Découvrez la méthode model.infer_vector(NewDocument) dans https://github.com/gojomo/gensim/blob/develop/gensim/models/doc2vec.py

10
kampta

J'ai eu de bons résultats de:

  1. Somme des vecteurs Word (avec pondération tf-idf). Cela ignore l'ordre des mots, mais pour de nombreuses applications, cela suffit (en particulier pour les documents courts)
  2. Fastsent
2
Zach

Les embeddings universels de Google pour les phrases sont une solution actualisée à ce problème. Il n'utilise pas Word2vec mais donne lieu à une solution concurrente.

Voici ne visite avec TFHub et Keras .