반응형
<gensim라이브러리를 이용하여 doc2vec모델만들기 >
1. train함수 이용하기
2. class를 만들고, iter함수를 이용하여 객체를 만드는식으로 학습하기 : sosoeasy.tistory.com/327
1. 라이브러리 다운
okt: 한국어 형태소 분석을 위한 라이브러리
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
from konlpy.tag import Okt
2. 데이터 전처리
taggedDocument 타입으로 만들어야 학습이 가능하다. 이때 형태소 단위로 문장을 분해해야 의미적으로 학습하기 좋다.
#데이터 전처리
okt=Okt() #형태소 분해 객체 생성
data = ["나는 학교에 간다",
"나는 친구를 만난다",
"나는 영화보러 간다",
"영화가 재밌다",
"나는 공부를 하러 왔다",
"나는 영화관을 갔다"]
# 학습은 taggedDocument 타입으로 해야하므로 아래와 같이 전처리한다.
tagged_data = [TaggedDocument(words=okt.morphs(_d), tags=[str(i)]) for i, _d in enumerate(data)]
for i in tagged_data:
print(i)
3. 모델 학습
* build_vocab을 이용해서 단어를 추가하고 학습을 하는데, 사실이 단어를 추가한다는게 정확히 뭔진 모르겠다.
build_vocab을 한것과 하지않은 모델을 각각 만들어놓고 하나의 문장을 벡터화했는데 똑같이 나온다...
# 모델 설계
max_epochs = 1000
model = Doc2Vec(vector_size=20,
alpha=0.025,
min_alpha=0.00025,
min_count=1,
dm=1)
#??
model.build_vocab(tagged_data)
# 학습
for epoch in range(max_epochs):
model.train(tagged_data,
total_examples=model.corpus_count,
epochs=model.iter)
# decrease the learning rate
model.alpha -= 0.0002
# fix the learning rate, no decay
model.min_alpha = model.alpha
4. 테스트
sample="영화가 보고싶군".split()
print(model.infer_vector(sample))
반응형