2016-11-29 26 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(「Windowsのを検出し、エイリアシングchunkize_serialにチャンク ") UserWarning:detected Windows;エイリアシングはchunkize_serialにチャンクします問題(警告モジュールからの)警告

+0

インストールと使用方法を理解するには、[mcve](http://stackoverflow.com/help/mcve)の例を追加してください。 –

+0

[gensimのインストール中にチャンクの警告が表示される可能性があります](http://stackoverflow.com/questions/41658568/chunkize-warning-while-installing-gensim) –

答えて

0

これは問題ではありません。窓のためだけに、それは異なって扱われます。 このメッセージが表示されないようにするには、thisのコードを使用してください。

0

これは単なる警告ではありません。私はgensimをインポートするたびに、それを窓で入手します。私はインストールに問題があるとは思わない。