2014-03-05 5 views
3

gensim's lda 모델을 사용하려고합니다. 주어진 코퍼스로 lda 모델을 만든 다음 첫 번째 코퍼스에없는 단어가 들어있는 새 코퍼스로이를 업데이트하려면 어떻게해야합니까? 난 그냥 lda_model.update(new_corpus)를 호출 할 때, 나는 다음과 같은 오류가 발생합니다 :gensim lda 모델 - 보이지 않는 단어가있는 코퍼스에서 업데이트를 호출합니다.

/Library/Python/2.7/site-packages/gensim/models/ldamodel.pyc in inference(self, chunk, collect_sstats) 
    361    Elogthetad = Elogtheta[d, :] 
    362    expElogthetad = expElogtheta[d, :] 
-->363    expElogbetad = self.expElogbeta[:, ids] 
    364 
    365    # The optimal phi_{dwk} is proportional to expElogthetad_k * expElogbetad_w. 
    IndexError: index 57 is out of bounds for axis 1 with size 57 

내가에만 57 단어로 구성된 신체와 lda_model 초기화, 우리는 바인딩 크기 57를 볼 이유가 그래서. 그런 다음 더 많은 단어로 된 코퍼스로 업데이트를 호출하려고했는데 실패합니다.

어떻게이 문제를 해결할 수 있습니까? 새로운 단어로 새로운 코퍼스로 내 lda 모델을 업데이트 할 수 있기를 원하십니까?

답변

2

아니요, 교육, 업데이트 및 추리 모두에 대해 동일한 사전 (단어와 정수 ID 간의 매핑)을 사용해야합니다.

즉, 모델을 새 문서로 업데이트 할 수 있지만 새 단어 유형으로 업데이트 할 수는 없습니다.

이 제한을 해결하기 위해 "해싱 트릭"을 사용하는 HashDictionary 클래스를 확인하십시오 (그러나 해싱 트릭에는 자체주의 사항이 함께 제공됨).