2016-08-16 17 views
0

은 내가 doc2vec의 문구를 갖고 싶어하고 난 gensim.phrases를 사용합니다. doc2vec에서 모델을 교육하기 위해 태그가있는 문서가 필요하며 문구에 태그를 지정할 수 없습니다. 내가 어떻게 할 수 있니?문구에 doc2vec를 사용하는 방법은 무엇입니까?

여기 Phrases()의 호출이 문구 창출 모델을 기차 내 코드

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

입니다. 나중에 해당 모델을 텍스트에 사용하여 구와 결합 된 텍스트를 다시 가져옵니다.

교체하지 마십시오 코드의 첫 번째 줄에서와 훈련 모델 text, 원래. 또한 현재 루프 에서처럼 Phrases 모델에 할당하거나 정수로 Phrases 모델에 액세스하지 마십시오.

gensim docs for the Phrases classPhrases 클래스의 적절한 사용의 예를 가지고; 그 패턴을 따르면 잘 할 수 있습니다.

또한 LabeledSentenceTaggedDocument으로 대체되었으며 그 tags 인수는 태그 목록이어야합니다. 문자열을 제공하면, 그 중 하나를 태그 목록 대신에 하나의 문자 태그로 간주합니다.

+0

당신의 대답에 대한 감사합니다. 이 경우 TaggedDocument 대신 "LabeledSentence"를 사용하면 아무런 차이가 없습니다. 내 문제는 어디서 어떻게 doc2vec와 구문을 사용 하는가? –

+0

Doc2Vec에서 구를 사용하는 데 특별한 것은 없습니다. 그것은 단지 단어 쌍을 결합 된'word_pairs'로 바꾸기위한 전처리 단계 일뿐입니다. 따라서 Doc2Vec 측면을 무시하고 기존 코드에서 지적한 특정 오류를 피하고 gensim 문서의 예제에서 수행 한 방식과 일치시키는 것이 좋습니다. – gojomo

+0

나는 당신이 말한 오류를 해결하지만'LabeledSententces'의 주된 문제는'Phrases'의 입력으로 작동하지 않습니다. 그래서 나는 LabeledSentenses로 문구를 만들 수 없다. 'LabeledSentences'가 문구에 태그를 붙일 수 없기 때문에이 과정의 반대가 될 수 없습니다! –