gensim을 위한 환경

TOLL TERRY·2022년 2월 15일
0

error_or_download

목록 보기
1/15

터미널에서

밑에꺼는 터미널에서 가상환경 하나 만들어서 

conda create 000  #<자신의 가상환경>


pip install gensim 하시면 됩니다. 

conda acitvate gensim          #<자신의 가상환경 저는 gensim 활성화>

터미널 prompt

pip install gensim

### 이거는 다른 예시 입니다. 필요하시면 ... 가져가세요 
wget -c "https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz"

### 다른 예시입니다. 필요하시면 쓰세여 
gzip -d GoogleNews-vectors-negative300.bin.gz

gz파일들을 현재 디렉토리 확인 후에

pwd # 주피터에서 내 현재 디렉토리 확인 

#cmd창
cd pwd의 주소를 넣어주세요 

주피터에서 확인후에 넣어서 gzip압축을 풀어주세요

# 터미널에서 
#GoogleNews-vectors-negative300-SLIM.bin gzip 파일이므로 다운받아서 넣으면 됩니다. 
https://github.com/eyaler/word2vec-slim/blob/master/GoogleNews-vectors-negative300-SLIM.bin.gz

gzip -d GoogleNews-vectors-negative300-SLIM.bin.gz

그런 다음에 주피터 들어가셔서 똑같이 해주세요

!pip install spacy 
!pip install gensim
!pip install -U octis
# 여기까지 주피터상에서 

# !conda install pyemd 
# 터미널에서 해야합니다. 
# conda를 먼저 설치하셔야 겠죠 ..

이제 주피터에서 그대로 치시면 됩니다.

여기서 계속 WV 오류가 나시는 분들은 저처럼 주석처리하시면 됩니다.

import gensim 
import time
from nltk.corpus import stopwords

from gensim.models import KeyedVectors
'''
전체 과정을 python으로 표현하면 다음과 같습니다. 
1) LOAD pre-trained key vector: 외부에서 이미 학습된 key-vector, PreTrainedKeyvector를 가져옴 
2) MAKE new word2vec model: 우리가 사용할 새로운 word2vec model, TranferedModel를 만들어줌. 
3) BUILD vocab by PreTrainedKeyvector word Vocabulary: TranferedModel의 vocab을 우선 우리의 데이터 sentences로 업데이트해줌. 
4) UPDATE vocab by sentences: PreTrainedKeyvector로부터 vocab을 업데이트해줌. 
5) INITIALIZED word vector: PreTrainedKeyvector의 wordvector들을 TranferedModel에 업데이트해줌. 
6) TRAIN new data set: 새로운 데이터 sentencs를 업데이트하면서 조정.
'''


if True:
    # LOAD Word2Vec model
    # 내 컴퓨터에서는 읽을 때, 약 10초가 걸림.
    googleNews_filepath = "GoogleNews-vectors-negative300-SLIM.bin"
    start_time = time.time()
    print(f"== LOAD {googleNews_filepath} as word2vec model START")
    GoogleSlimModel = gensim.models.keyedvectors.KeyedVectors.load_word2vec_format(
        googleNews_filepath, binary=True
    )    
#     print(type(GoogleSlimModel))
#     # assert 에 문제가 있으면 제대로 읽혀지지 않은 것임. 
#     assert GoogleSlimModel.wv.most_similar(positive=['car', 'minivan'], topn=5) == [('SUV', 0.8532191514968872), (
#         'vehicle', 0.8175784349441528), ('Jeep', 0.7567334175109863), ('sedan', 0.7446292042732239), ('truck', 0.7273114919662476)]
#     print(f"== LOAD {googleNews_filepath} as word2vec model COMPLETE, {time.time() - start_time}")
#     print("=="*30)

def doc_preprocess(sentence):
    """
    `sentence`를 가져와서, 적합한 word만을 남겨서 리턴
    """
    stop_words = stopwords.words('english')
    word_lst = [w for w in sentence.lower().split() if w not in stop_words]
    return word_lst

sentence_obama = doc_preprocess('Obama speaks to the media in Illinois')
sentence_president = doc_preprocess('The president greets the press in Chicago')

# sentence_obama, sentence_president의 거리.
distance = GoogleSlimModel.wmdistance(sentence_obama, sentence_president)
print(f"distance = {distance}")

# sentence_obama, sentence_orange의 거리.
#distance = GoogleSlimModel.wmdistance(sentence_obama, sentence_orange)
#print(f"distance = {distance}")

gensim 끝.

profile
행복을 찾아서(크리스 가드너)

0개의 댓글