gensim을 위한 환경
터미널에서
밑에꺼는 터미널에서 가상환경 하나 만들어서
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 # 주피터에서 내 현재 디렉토리 확인
주피터에서 확인후에 넣어서 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 끝.
Author And Source
이 문제에 관하여(gensim을 위한 환경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@terry_9996/gensim을-위한-환경저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)