2016-12-19 4 views
0
내가 gensim 라이브러리에서 Doc2Vec 모델을 학습하고 다음과 같이 사용하고

:Gensim Doc2Vec 예외 AttributeError는 'STR'객체가 어떤 속성의 말씀 없다 '

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

    def __iter__(self): 
     for fname in os.listdir(self.dirname): 
      with open(os.path.join(self.dirname, fname),encoding='utf-8') as fin: 
       print(fname) 
       for item_no, sentence in enumerate(fin): 
        yield LabeledSentence([w for w in sentence.lower().split() if w in stopwords.words('english')], [fname.split('.')[0].strip() + '_%s' % item_no]) 
sentences = MyTaggedDocument(dirname) 
model = Doc2Vec(sentences,min_count=2, window=10, size=300, sample=1e-4, negative=5, workers=7) 

입력 dirname이 들어있는 디렉토리 경로입니다 단순함을 위해 각 파일에 100 개 이상의 회선이 포함 된 2 개의 파일 만 있습니다. 나는 예외를 따르고있다.

Output

또한, print 문을 나는 반복자가 디렉토리에 6 번 이상 반복 것을 볼 수 있었다. 이게 왜 그렇게?

모든 종류의 도움을 주시면 감사하겠습니다.

+0

불행히도 정지 단어가 없으면 한 가지를 원하십니까? 지금 문장은 불용어 만 포함합니다. – datawrestler

+0

예. 실수입니다. 문제를 해결했지만 여전히 똑같은 문제가 계속됩니다. –

답변

0

그것은, (이전 LabeledSentence라고 wordstags 속성 포함) TaggedDocument 모양해야 할 텍스트 - 예를 들어 객체의 하나처럼 보이는 대신 어떻게 든 일반 문자열입니다. 스크린 샷의 오류가 포함 된 반복 가능한 코드에 의해 생성 된 것을 100 % 확신합니까? 이 코드는 허용되는 LabeledSentece 개체 만 방출 할 수있는 것처럼 보입니다.

모든 단어/태그를 발견 한 초기 검사를 수행하기 위해 반복 자료를 한 번 읽은 다음 훈련을 위해 여러 번 다시 읽습니다. iter 매개 변수에 의해 제어되는 횟수는 기본값 (최근 gensim 버전에서)이 5입니다. 따라서 초기 스캔 + 5 회의 교육 단계는 총 6 회 반복됩니다. (10 회 이상의 반복은 Doc2Vec에서 흔히 볼 수 있습니다.)

관련 문제