2017-01-12 8 views
-3

이 github 자습서에 따르면 : gensim/docs/notebooks/doc2vec-lee.ipynb 약 96 %의 정확도를 얻고 있습니다.gensim/docs/notebooks/doc2vec-lee.ipynb 결과가 반복 가능하지 않음

아나콘다 네비게이터의 jupyter 4.3.1 노트북에서 gensim 0.13.4를 사용하는 코드는 다음과 같습니다.

이들의 출력은 다음과 같습니다 : 모델의 평가를위한 튜토리얼에서는

import gensim 
import os 
import collections 
import smart_open 
import random 


# Set file names for train data 
test_data_dir='{}'.format(os.sep).join \ 
([gensim.__path__[0],'test','test_data']) 
lee_train_file = test_data_dir + os.sep + 'lee_background.cor' 

def read_corpus(fname, tokens_only=False): 
    with smart_open.smart_open(fname, encoding="iso-8859-1") as f: 
     for i, line in enumerate(f): 
      if tokens_only: 
       yield gensim.utils.simple_preprocess(line) 
      else: 
       # For training data, add tags 
       yield gensim.models.doc2vec.TaggedDocument \ 
         (gensim.utils.simple_preprocess(line), [i]) 
train_corpus = list(read_corpus(lee_train_file)) 
model = gensim.models.doc2vec.Doc2Vec(size=50, min_count=2, iter=10) 
model.build_vocab(train_corpus) 
model.train(train_corpus) 

ranks = [] 
second_ranks = [] 
for doc_id in range(len(train_corpus)): 
    inferred_vector = model.infer_vector(train_corpus[doc_id].words) 
    sims = model.docvecs.most_similar([inferred_vector] \ 
      , topn=len(model.docvecs)) 
    rank = [docid for docid, sim in sims].index(doc_id) 
    ranks.append(rank) 
    second_ranks.append(sims[1]) 
collections.Counter(ranks) 

내가 근처에 아무것도 못하고있는 이유

Counter({0: 292, 1: 8}) 

나는

Counter({0: 31, 
    1: 24, 
    2: 16, 
    3: 19, 
    4: 16, 
    5: 8, 
    6: 8, 
    7: 10, 
    8: 7, 
    9: 10, 
    10: 12, 
    11: 12, 
    12: 5, 
    13: 9, 
     ... 

을 얻고 자신의 정확성?

+0

에 오신 것을 환영합니다 SO에! 귀하의 질문에 기본 서식이 없으며 귀하가 무엇을 요구하고 있는지 명확하지 않습니다. 질문을 편집하고 문제를 해결하기 위해 취한 단계를 보여줍니다. 또한, 완전히 필요한 경우가 아니면 외부 링크를 참조하지 마십시오. 읽으십시오 : http://stackoverflow.com/help/how-to-ask – bman

답변

0

감사합니다. 정확도와 유사한 문서는 무작위 초기화와 다른 OS 수치 라이브러리로 인해 작은 코퍼스에서 많이 다릅니다. 튜토리얼에서 정확성에 대한 참조를 삭제했습니다.

재현 가능한 doc2vec 결과를 얻으려면 많은 자료와 수십 시간의 훈련이 필요합니다. 또한 answered Gensim 메일 링리스트

0

나는 위의 @Lev Konst의 응답을 주셔서 감사합니다. 그는 또한 Gensim 메일 링리스트에서 답변을 언급했다.

모델 = gensim.models.doc2vec.Doc2Vec (크기 = 55, min_count = 2, ITER = 60, HS = 1 마이너스 = 0) 제조 :

Wall time: 12.5 s 
Counter({0: 292, 1: 8}) 
Wall time: 12 s 
Counter({0: 291, 1: 9}) 
Wall time: 16.4 s 
Counter({0: 290, 1: 10}) 
Wall time: 20.6 s 
Counter({0: 295, 1: 5}) 
Wall time: 21.3 s 
Counter({0: 292, 1: 8}) 
Wall time: 20.6 s 
Counter({0: 292, 1: 8}) 
Wall time: 16.7 s 
Counter({0: 296, 1: 4}) 
Wall time: 15.4 s 
Counter({0: 292, 1: 8}) 
Wall time: 15.3 s 
Counter({0: 295, 1: 5}) 
Wall time: 14.8 s 
Counter({0: 292, 1: 8}) 

반복 횟수를 늘리거나 hs = 1, negative = 0을 추가하면 결과가 노트북에 가깝게 나타납니다.

hs = 1, negative = 0은 평균적으로 더 좋은 결과를 산출하는 것으로 보입니다. 반복을 증가 시키면 일부 실행에서는 0 또는 1 이외의 순위가됩니다.

그러나 hs = 1, 음수 = 0에서 볼 수 있듯이 순위는 모두 상위 두 순위 내에 있습니다.

그러나 gensim google 그룹 목록에이 크기의 데이터 세트로 최적의 정확도와 변형이 예상보다 적음을 알렸습니다.

googlegroups discussion

덕분에 존