2016-08-16 6 views
0

Я хочу иметь фразы в doc2vec и использовать gensim.phrases. в doc2vec нам нужен тег-документ для обучения модели, и я не могу пометить фразы. как я могу это сделать?Как использовать doc2vec с фразами?

вот мой код

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) 

ответ

0

Заклятие Phrases() тренирует фразы создающей-модели. Позднее вы используете эту модель в тексте, чтобы получить фрагментарный текст.

Не заменяйте оригинал text на обученную модель, как на первой строке вашего кода. Кроме того, не пытайтесь назначить в модель фраз, как это происходит в вашем текущем цикле, или получить доступ к модели фраз целыми числами.

У gensim docs for the Phrases class есть примеры надлежащего использования класса Phrases; если вы будете следовать этому шаблону, вы преуспеете.

Кроме того, обратите внимание, что LabeledSentence был заменен на TaggedDocument, а его аргумент tags должен быть списком тегов. Если вы предоставите строку, она увидит это как теги списка-одного-символа (вместо одного тега, который вы намереваетесь).

+0

спасибо за ваш ответ. в этом случае использование «LabeledSentence» вместо TaggedDocument не имеет значения. моя проблема в том, где и как использовать фразы с doc2vec? –

+0

Нет ничего особенного в использовании фраз с Doc2Vec; это всего лишь шаг предварительной обработки, чтобы изменить некоторые пары слов в комбинированные слова word_pairs. Поэтому я рекомендую вам игнорировать аспект Doc2Vec, избегать конкретных ошибок, которые я указал в вашем существующем коде, и соответствовать тому, как это делается в примерах документации gensim. – gojomo

+0

Я решаю ошибку, которую вы сказали, но главная проблема заключается в том, что вывод «LabeledSententces» не работает с вводом «Фразы». поэтому я не могу построить фразу с «LabeledSentenses». инверсия этого процесса тоже не может быть выполнена, потому что «LabeledSentences» не может помечать фразы! –

Смежные вопросы