Comment obtenir un vecteur pour une phrase à partir du mot2vec des jetons dans la phrase

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

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

    1. Doc2Vec : vous pouvez former votre jeu de données en utilisant Doc2Vec, puis utiliser les vecteurs de phrase.
    2. Moyenne de vecteurs Word2Vec : Vous pouvez simplement prendre la moyenne de tous les vecteurs de mots dans une phrase. Ce vecteur moyen représentera votre vecteur de phrase.
    3. Moyenne de vecteurs Word2Vec avec TF-IDF : c’est l’une des meilleures approches que je recommanderai. Il suffit de prendre les mots vecteurs et de les multiplier avec leurs scores TF-IDF. Prenez juste la moyenne et cela représentera votre vecteur de phrase.

    C’est possible, mais pas de word2vec. La composition des vecteurs de mots afin d’obtenir des représentations de haut niveau pour les phrases (et plus loin pour les paragraphes et les documents) est un sujet de recherche très actif. Il n’y a pas une meilleure solution pour cela, cela dépend vraiment de la tâche à laquelle vous voulez appliquer ces vecteurs. Vous pouvez essayer la concaténation, la sommation simple, la multiplication ponctuelle, la convolution, etc. Vous pouvez apprendre de plusieurs publications, mais en fin de compte, il vous suffit d’expérimenter et de voir ce qui vous convient le mieux.

    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 de l’un dépend de la tâche que vous souhaitez effectuer avec vos vecteurs.

    Tout d’abord, vous pouvez simplement calculer la moyenne des vecteurs à partir de word2vec. Selon Le et Mikolov , cette approche fonctionne mal pour les tâches d’parsing des sentiments, car elle «perd l’ordre des mots de la même manière que les modèles standard de mots-clés» et «échoue à reconnaître de nombreux phénomènes linguistiques complexes, par exemple le sarcasme “. Par contre, selon Kenter et al. En 2016 , «il suffit de faire la moyenne des mots incorporés à tous les mots d’un texte pour constituer une base de référence ou une fonctionnalité solide dans une multitude de tâches», telles que les tâches de similarité de texte court. Une variante serait de pondérer les vecteurs de mots avec leur TF-IDF pour diminuer l’influence des mots les plus courants.

    Une approche plus sophistiquée développée par Socher et al. consiste à combiner des vecteurs de mots dans un ordre donné par un arbre d’parsing d’une phrase, en utilisant des opérations masortingcielles-vectorielles. Cette méthode fonctionne pour l’parsing des sentiments de phrases, car elle dépend de l’parsing.

    Cela dépend de l’usage:

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

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

    AM Dai, C. Olah et QV Le. 2015. DocumentEmbedding with Paragraph Vectors. E-copies 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 at SemEval-2016 Tâche 4: représentation des phrases basée sur i-vector. In Proceedings of the 10th International Workshop on Semantic Evaluation (SemEval 2016), San Diego, États-Unis

    3) Le chercheur recherche également la sortie de certaines couches dans le réseau RNN ou LSTM, un exemple récent est:

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

    4) Pour le gensim doc2vec, de nombreux chercheurs ne pouvaient pas obtenir de bons résultats, pour résoudre ce problème, en suivant le papier utilisant doc2vec basé sur des vecteurs de mots 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 l’incorporation de documents. Dans Actes du 1er atelier sur l’apprentissage de la représentation pour la PNL, 2016.

    5) tweet2vec ou sent2vec .

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

    https://github.com/facebookresearch/SentEval

    Vous pouvez obtenir des représentations vectorielles des phrases pendant la phase d’entraînement (joindre les phrases de test et de train dans un seul fichier et exécuter le code word2vec obtenu à partir du lien suivant).

    Le code de phrase2vec a été partagé par Tomas Mikolov ici . Il suppose que le premier mot d’une ligne est id-phrase. Comstackz 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 

    MODIFIER

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

    J’ai eu de bons résultats de:

    1. La sum des mots vecteurs (avec pondération tf-idf). Cela ignore l’ordre des mots, mais pour de nombreuses applications est suffisant (en particulier pour les documents courts)
    2. Fastsent

    Le réseau de moyenne profondeur (DAN) peut fournir des enchaînements de phrases dans lesquels les mots bi-grammes sont moyennés et transmis via un réseau neuronal approfondi d’anticipation (DNN).

    On constate que l’apprentissage par transfert utilisant des enchaînements de phrases a tendance à surpasser le transfert de niveaux de mots car il préserve la relation sémantique.

    Vous n’avez pas besoin de commencer l’entraînement à partir de zéro, les modèles DAN prétraités sont disponibles pour lecture (consultez le module Universal Sentence Encoder dans google hub).