<영어/한국어 Word2Vec 실습>
실습 코드
https://colab.research.google.com/drive/1gHSsgfaIJb_D65Tydk869kx9Lhu75VWr#scrollTo=qh_36rZrkNA9
print(train_data.insull().values.any())
data에 NULL값 존재 유무 확인 - NaN값이 존재하면 True 반환
train_data = train_data.dropna(how = 'any')#NULL 행 제거
결측값이 존재하는 데이터 제거
train_data['document'] = train_data['document'].str.replace("[^ㄱ-ㅎㅏ-ㅣ가-힣 ]","")
okt = Okt()
형태소 분석 위한 형태소 분석기 OKT 사용
stopwords = ['의','가','이','은','들','는','좀','잘','걍','과',
'도','를','으로','자','에','와','한','하다']
학습 시에 사용하고 싶지 않은 단어들 제거
from tqdm import tqdm
tokenized_data = []
for sentence in tqdm(train_data['document']):#tqdm 객체 생성
tokenized_sentence = okt.morphs(sentence, stem=True) #토큰화 작업
stopwords_removed_sentence = [word for word in tokenized_sentence if not word in stopwords]
#불용어 제거
tokenized_data.append(stopwords_removed_sentence)
tqdm 객체 이용 : 반복 루프를 돌다가 진행이 얼마나 되었는지 - "progress bar + 남은 시간 정보"
from gensim.models import Word2Vec
gensim 라이브러리 : 자연어를 벡터로 변환하는데 필요한 대부분의 편의 기능을 제공하고 있는 라이브러리
model = Word2Vec(sentences = tokenized_data, vector_size = 100,
window = 5, min_count = 5, workers = 4, sg = 0)
#sentences : 사용할 문장
#vector_size : 워드 벡터의 특징 값(임베딩 된 벡터의 차원)
#window : 컨텍스트 윈도우 크기
#min_count : 단어 최소 빈도 수 제한(빈도가 적은 단어들은 학습하지 않음)
#workers : 학습을 위한 프로세스 수
#sg : 0은 CBOW, 1은 skip-gram
#유사한 단어 추출
print(model.wv.most_similar('최민식'))
#두 단어의 유사도 계산
print(word2vec_model.similarity('this','is'))
gensim이용한 word2vec 구현(한겨레 신문 정치기사)
https://github.com/vhrehfdl/Blog_code/blob/master/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4%20%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC/%EC%8A%AC%EA%B8%B0%EB%A1%9C%EC%9A%B4_%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC_%5B8%5D_Word2vec.ipynb