2016-08-16 4 views
0

Je veux avoir des expressions dans doc2vec et j'utilise gensim.phrases. dans doc2vec nous avons besoin de document étiqueté pour former le modèle et je ne peux pas étiqueter les phrases. Comment puis-je faire ceci?Comment utiliser doc2vec avec des expressions?

ici est mon code

text = phrases.Phrases(text) 
for i in range(len(text)): 
    string1 = "SENT_" + str(i) 

    sentence = doc2vec.LabeledSentence(tags=string1, words=text[i]) 
    text[i]=sentence 

print "Training model..." 
model = Doc2Vec(text, workers=num_workers, \ 
      size=num_features, min_count = min_word_count, \ 
      window = context, sample = downsampling) 

Répondre

0

L'invocation de Phrases() forme une phrase-création-modèle. Vous utiliserez plus tard ce modèle sur du texte pour récupérer du texte combiné à une phrase.

Ne remplacez pas votre text d'origine par le modèle formé, comme sur la première ligne de votre code. Aussi, n'essayez pas d'assigner dans le modèle Phrases, comme cela se produit dans votre boucle actuelle, ni d'accéder au modèle Phrases par des entiers. Le gensim docs for the Phrases class a des exemples d'utilisation correcte de la classe Phrases; Si vous suivez ce modèle, vous ferez bien.

De plus, notez que LabeledSentence a été remplacé par TaggedDocument, et son argument tags devrait être une liste de balises. Si vous fournissez une chaîne, elle la verra comme une liste de tags à un caractère (au lieu de l'étiquette que vous voulez).

+0

merci pour votre réponse. dans ce cas, l'utilisation de "LabeledSentence" au lieu de TaggedDocument ne fait aucune différence. mon problème est où et comment utiliser Phrases avec doc2vec? –

+0

L'utilisation de Phrases avec Doc2Vec n'a rien de spécial; c'est juste une étape de prétraitement pour changer certaines paires de mots en «word_pairs» combinés. Je vous recommande donc d'ignorer l'aspect Doc2Vec, d'éviter les erreurs spécifiques que j'ai signalées dans votre code existant, et de faire correspondre la manière dont cela est fait dans les exemples de la documentation de gensim. – gojomo

+0

Je résous l'erreur que vous avez dite mais le problème principal est la sortie de 'LabeledSententces' ne fonctionne pas avec comme entrée de' Phrases'. donc je ne peux pas construire une phrase avec 'LabeledSentenses'. L'inverse de ce processus ne peut pas être fait car 'LabeledSentences' ne peut pas taguer les phrases! –