Word2Vec 실습

하영영·2023년 4월 19일
0

NLP

목록 보기
5/17

<영어/한국어 Word2Vec 실습>

실습 코드
https://colab.research.google.com/drive/1gHSsgfaIJb_D65Tydk869kx9Lhu75VWr#scrollTo=qh_36rZrkNA9



🎥 영화 리뷰를 이용한 실습

  • konlpy 이용

1. 네이버 영화리뷰 데이터 다운로드


2. 전처리

1) 결측값 존재 유무

print(train_data.insull().values.any())

data에 NULL값 존재 유무 확인 - NaN값이 존재하면 True 반환


train_data = train_data.dropna(how = 'any')#NULL 행 제거

결측값이 존재하는 데이터 제거

2) 한글이 아닌 경우 제거

train_data['document'] = train_data['document'].str.replace("[^ㄱ-ㅎㅏ-ㅣ가-힣 ]","")

3) OKT를 사용한 형태소 분석(토큰화 작업)

okt = Okt()

형태소 분석 위한 형태소 분석기 OKT 사용

4) 불용어 제거

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 + 남은 시간 정보"




3. 학습

1) Word2Vec 라이브러리 불러오기

from gensim.models import Word2Vec

gensim 라이브러리 : 자연어를 벡터로 변환하는데 필요한 대부분의 편의 기능을 제공하고 있는 라이브러리


2) Word2Vec 학습

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


3) 유사한 단어

#유사한 단어 추출
print(model.wv.most_similar('최민식'))
#두 단어의 유사도 계산
print(word2vec_model.similarity('this','is'))
profile
NLP 공부중