2016-07-07 20 views
1

MySentences 클래스를 사용하여 디렉토리의 모든 파일에서 문장을 추출하고이 문장을 word2vec 모델에 사용합니다. 내 데이터 세트의 라벨이 지정되지 않았습니다.Gensim Doc2Vec - Doc2Vec 함수에 코퍼스 문장 전달하기

class MySentences(object): 
    def __init__(self, dirname): 
     self.dirname = dirname 

    def __iter__(self): 
     for fname in os.listdir(self.dirname): 
      for line in open(os.path.join(self.dirname, fname)): 
       yield line.split() 

sentences = MySentences('sentences') 
model = gensim.models.Word2Vec(sentences) 

지금 나는 doc2vec 모델을 만들기 위해 클래스를 사용하고 싶습니다. 나는 Doc2Vec 레퍼런스 페이지를 읽었다. Doc2Vec() 기능은 매개 변수로 문장을 얻을 수 있지만, 문장 변수와 반환 오류 이상 허용하지 않습니다

AttributeError: 'list' object has no attribute 'words' 

문제가 무엇입니까? 해당 매개 변수의 올바른 유형은 무엇입니까?

는 업데이트 :

내 생각은, 레이블이없는 데이터가 문제입니다. doc2vec에는 레이블이 지정된 데이터가 필요합니다.

+0

나를 위해 찾아 실행 모델을 학습! python 2.7 및 gensim 0.12 – kampta

+0

당신 말이 맞습니다. 이 클래스를 사용하여 doc2vec 모델을 만들고 싶습니다. –

답변

1

추가 클래스를 사용하여 문제를 해결할 이유가 없습니다. 라이브러리의 새로운 업데이트에서, 문장을 벡터로 변환하기 위해 새로운 함수 TaggedLineDocument이 추가되었습니다.

sentences = TaggedLineDocument(INPUT_FILE) 

다음, 코드 위

model = Doc2Vec(alpha=0.025, min_alpha=0.025) 
model.build_vocab(sentences) 

for epoch in range(10): 
    model.train(sentences) 
    model.alpha -= 0.002 
    model.min_alpha = model.alpha 
    print epoch