2016-06-10 2 views
0

나는 파이썬에서 gensim 라이브러리에 구현 된 word2vec 모델을 적용하려고합니다. 나는 문장의 목록을 가지고있다. (각 문장은 단어의 목록이다.)다른 모델과 gensim Word2Vec (파이썬)

sentences=[['first','second','third','fourth']]*n 

을 나는 두 개의 동일한 모델 구현 :

예를 들어 우리가 보자 내가 모델이 때로는 동일하고, 때로는 값에 따라 다르다는 것을 깨닫게

model = gensim.models.Word2Vec(sententes, min_count=1,size=2) 
model2=gensim.models.Word2Vec(sentences, min_count=1,size=2) 

을 n의.

print(model['first']==model2['first']) 
False 

방법이 가능하다 : N

경우

는 예를 들어, 100 = I는

print(model['first']==model2['first']) 
True 

하면서 대한 N = 1000 수득?

대단히 감사합니다! 당신이 Word2Vec을 실행할 때 gensimdocumentation 보면

+0

두 번째 경우, 텍스트의 결과에 해당하는 경우, N으로 = 5000 – Valentina

+0

을에서입니다 붙여 넣은 코드, 모델은 sententes, 모델 2는'문장'에 대한 교육입니다. 이것은 복사 오류입니까 아니면 실제 코드입니까? –

+0

불행히도 이는 단지 복사 오류 일뿐입니다. – Valentina

답변

1

, 일부 무작위있다 :

seed = 난수 생성기. 각 단어의 초기 벡터에는 word + str (seed)의 연결 해시가 포함됩니다. 완전히 결정 론적으로 재생성 가능한 런의 경우 OS 쓰레드 스케줄링에서 순서 지터를 제거하기 위해 모델을 단일 작업자 스레드로 제한해야합니다.

당신이 재현 가능한 결과를 갖고 싶어 따라서, 당신은 씨앗 설정해야합니다 : 사실

In [1]: import gensim 

In [2]: sentences=[['first','second','third','fourth']]*1000 

In [3]: model1 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2) 

In [4]: model2 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2) 

In [5]: print(all(model1['first']==model2['first'])) 
False 

In [6]: model3 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2, seed = 1234) 

In [7]: model4 = gensim.models.Word2Vec(sentences, min_count = 1, size = 2, seed = 1234) 

In [11]: print(all(model3['first']==model4['first'])) 
True 
+0

파이썬 3에서 인터프리터 실행 사이의 재현성은 해시 무작위 화를 제어하기 위해 PYTHONHASHSEED 환경 변수를 사용해야합니다. 따라서 Evan.oman의 스크립트를 터미널'PYTHONHASHSEED = 0 python .py'에 입력해야합니다. – Andrei

관련 문제