2016-11-29 4 views
4
# -*- coding: utf-8 -*- 

''' 
한국어 형태 분석된 자료를 word2Vec모델로 만드는 모듈 
입력은 형태분석된 파일을 취함 
한 줄에 한 문장씩 
출력으로 model을 형성 
''' 

import codecs 
import gensim 
import multiprocessing 
import word2vec 

import sys 
reload(sys) 
sys.setdefaultencoding('utf8') 

# 모델 configuration 설정 
config = { 
    'min_count': 15, # 등장 횟수가 15 이하인 단어는 무시 
    'size': 300, # 300차원짜리 벡터스페이스에 embedding 
    'sg': 1, # 0이면 CBOW, 1이면 skip-gram 
    'batch_words': 10000, # 사전을 구축할때 한번에 읽을 단어 수 
    'iter': 10, # 보통 딥러닝에서 말하는 epoch과 비슷한, 반복 횟수 
    'workers': multiprocessing.cpu_count(), 
} 

modelTwitterNoStop = gensim.models.Word2Vec(**config) 

class SentenceReader: 

    def __init__(self, filepath): 
     self.filepath = filepath 


    def __iter__(self): 
     for line in codecs.open(self.filepath, encoding='utf-8'): 
      yield line.split(' ') 

# 사전과 학습을 형태분석된 파일을 가지고 행함 
sentences_vocab = SentenceReader('corpusAllNewsNoTagNoStop.txt') 
sentences_train = SentenceReader('corpusAllNewsNoTagNoStop.txt') 

#model = gensim.models.Word2Vec() 
modelTwitterNoStop.build_vocab(sentences_vocab) 
modelTwitterNoStop.train(sentences_train) 

#이렇게 학습된 모델을 저장 
modelTwitterNoStop.save('modelTwitterNoStop') 


### 모델 테스트 ########## 
#다음 라인부터는 분리하여 별도로 Test모델 프로그램을 만들어 다양한 관계를 실험해 볼 수 있음 

import codecs 
import gensim 
import multiprocessing 

import sys 
reload(sys) 
sys.setdefaultencoding('utf8') 

##도 포함 


#만들어 놓은 gensim 모델을 로딩 
modelTwitterNoStop = gensim.models.Word2Vec.load('modelTwitterNoStop') 


#most similar Test - 상위 10개의 유사한 벡터를 찾음.. 실제로 '일본'이 가장 높은 것으로 나 
print ' '.join(["{}-{}".format(word, value) for word, value in 
(modelTwitterNoStop.most_similar(positive=[u"한국", u"도쿄"], negative=[u"서 울"], topn=10))]) 

print "\n" 

# positive만 사용해서도 할 수 있으며 cosmul을 이용 
print ' '.join(["{}-{}".format(word, value) for word, value in 
(modelTwitterNoStop.most_similar_cosmul(positive=[u"비선", u"최순실"], topn=20))]) 
print "\n" 

#doesn't match Test 
print modelTwitterNoStop.doesnt_match(u"정윤회 김종 박근혜 최순실".split()) 

print "\n" 

#similarity Test 
print modelTwitterNoStop.similarity(u"비선", u"정윤회") 
print "\n" 

# no.of vocab.. in this model 
print modelTwitterNoStop 
print "\n" 

를 설치 파일 "C : \ gensim \ utils.py \ Python27 \ lib 디렉토리의 \ 사이트 - 패키지", 라인 (840) warnings.warn ("윈도우를 감지, 앨리어싱 chunkize_serial에 chunkize ") UserWarning : detected Windows; 앨리어싱 chunkize_serial chunkize문제 (경고 모듈에서) 경고

+0

설치 및 사용법을 이해하려면 [mcve] (http://stackoverflow.com/help/mcve) 예제를 추가하십시오. –

+0

[gensim 설치 중 청크 경고] (http://stackoverflow.com/questions/41658568/chunkize-warning-while-installing-gensim)의 가능한 복제본 –

답변

0

이것은 문제가되지 않습니다. 창문 만 있으면 다른 방식으로 처리됩니다. 이 메시지가 표시되지 않게하려면 this의 코드를 사용하십시오.

0

이것은 경고가 아닌 경고입니다. 나는 또한 gensim을 가져올 때마다 창에서 가져옵니다. 설치에 문제가 있다고 생각하지 않습니다.