2017-02-15 3 views
3

Je ne fais que jouer avec Doc2Vec de gensim, en analysant stackexchange dump pour analyser la similarité sémantique des questions afin d'identifier les doublons.Doc2Vec: Différencier la phrase et le document

Le tutoriel sur Doc2Vec-Tutorial semble décrire l'entrée comme des phrases étiquetées.

Mais l'article original: Doc2Vec-Paper prétend que la méthode peut être utilisée pour déduire des vecteurs de longueur fixe de paragraphes/documents. Est-ce que quelqu'un peut expliquer la différence entre une phrase et un document dans ce contexte, et comment j'irais inférer des vecteurs de paragraphe. Comme une question peut parfois s'étendre sur plusieurs phrases, Je pensais, au cours de la formation, que je vais donner des phrases issues de la même question les mêmes balises, mais comment puis-je faire cela à infer_vector sur des questions invisibles?

Et ce portable: Doc2Vec-Notebook

semble être des vecteurs de formation sur docs TRAIN et TEST, quelqu'un peut-il expliquer la raison d'être et ce que je devrais faire la même chose?

Répondre

1

Doc2Vec de Gensim s'attend à ce que vous fournissiez des exemples de texte de la même forme que l'exemple de classe TaggedDocument: ayant à la fois une propriété words et une propriété tags.

Les words sont une séquence ordonnée de jetons de chaîne du texte - il peut s'agir d'une phrase unique, d'un paragraphe ou d'un document long, à vous de choisir.

Les tags sont une liste d'étiquettes à apprendre du texte - telles que des entiers simples, ou des jetons de chaîne, qui servent en quelque sorte à nommer les textes correspondants. Dans le document « Paragraphe vecteurs » d'origine, ils étaient juste des identifiants uniques pour chaque texte - tels que les entiers augmentant de façon monotone de 0. (La première TaggedDocument pourrait avoir un tags de seulement [0], la prochaine [1], etc.)

L'algorithme fonctionne uniquement sur des blocs de texte, sans aucune idée de ce que pourrait être une phrase/un paragraphe/un document. (Considérez-les simplement comme des 'documents' dans le but de Doc2Vec, et décidez quel est le bon type de 'document' de votre corpus.) Il est même courant que la ponctuation conserve la ponctuation, comme les périodes entre les phrases, comme des jetons autonomes .

Inference se fait par la méthode infer_vector(), qui prend un paramètre obligatoire doc_words, qui devrait être une liste-de-string-jetons, tout comme ceux qui ont été fournis sous forme de texte words pendant la formation.

Vous ne fournissez aucune étiquette sur du texte déduit: Doc2Vec vous restitue un vecteur brut qui, dans les relations apprises par le modèle, correspond bien au texte. (C'est-à-dire que le vecteur est bon pour prédire les mots du texte, de la même manière que les vecteurs et les poids de modèle interne apprises pendant la formation en masse étaient bons pour prédire les mots des textes d'apprentissage.)

résulte de l'inférence en augmentant le paramètre optionnel steps (et en diminuant éventuellement l'inférence commençant alpha pour ressembler plus à l'alpha de départ de l'entraînement en masse, de 0,025 à 0,05).Le cahier de démonstration doc2vec-IMDB essaie de reproduire l'une des expériences de l'article original Paragraph Vectors, donc il suit ce qui est décrit ici, et un script de démo que l'un des auteurs (Mikolov) a publié une fois. Puisque les documents 'test' (sans leurs étiquettes-cibles/sentiments connus) peuvent encore être disponibles, au moment de la formation, pour aider à améliorer la modélisation du texte, il peut être raisonnable d'inclure leurs textes bruts pendant la formation Doc2Vec non supervisée. (Leurs connus labels sont pas utilisés lors de la formation du classificateur qui utilise les doc vecteurs.)

(Notez que pour le moment, Février 2017, le carnet de démonstration doc2vec-IMDB est un peu plus à jour par rapport à la gensim actuelle par défaut Doc2Vec & meilleures pratiques - en particulier les modèles ne sont pas donnés le droit explicite valeur iter=1 pour faire la boucle et- manuelle plus tard train() faire juste la bonne passe de la formation umber)

.