2017-04-21 6 views
1

J'utilise les balises Doc2Vec comme identifiant unique pour mes documents, chaque document a une étiquette différente et aucune signification sémantique. J'utilise les étiquettes pour trouver des documents spécifiques afin que je puisse calculer la similitude entre eux.Est-ce que Doc2Vec apprend des représentations pour les balises?

Les étiquettes influencent-elles les résultats de mon modèle?

Dans ce tutorial ils parlent d'un paramètre train_lbls=false, avec cet ensemble à faux il n'y a pas de représentations apprises pour les étiquettes (étiquettes).

Ce tutoriel est un peu daté et je suppose que le paramètre n'existe plus, comment Doc2Vec gère-t-il les balises?

Répondre

4

Pour Doc2Vec de gensim, vos exemples de texte doivent être des objets similaires à la classe TaggedDocument de l'exemple: avec les propriétés words et tags. La propriété tags doit être une liste de 'tags', qui servent de clés aux vecteurs doc qui seront appris à partir du texte correspondant.

Dans le cas classique/original, chaque document a une seule étiquette - essentiellement un identifiant unique pour ce document. (Les balises peuvent être des chaînes, mais pour les très grands corpus, Doc2Vec utilisera un peu moins de mémoire si vous utilisez plutôt des balises Python, à partir de 0, sans valeurs ignorées.)

les vecteurs appris après l'entraînement. Si vous aviez un document au cours de la formation avec l'étiquette unique 'mars', vous regarderait-le vecteur appris:

model.docvecs['mars'] 

Si vous étiez faire un appel model.docvecs.most_similar['mars'], les résultats seront communiqués par leurs clés de tag, comme bien.

Les balises sont seulement clés dans la collection doc-vecteurs - ils ont pas de sens sémantique, et même si une chaîne est répétée du mot-jetons dans le texte, il n'y a aucune relation nécessaire entre cette clé de l'étiquette et la mot. Autrement dit, si vous avez un document dont le seul identifiant est «mars», il n'y a pas de relation essentielle entre le doc-vecteur appris accédé via cette touche (model.docvecs['mars']) et tout mot-vecteur appris accédé avec la même chaîne key (model.wv['mars']) - ils proviennent de collections de vecteurs distinctes.