Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

코딩세상

[자연어 처리] 텍스트 전처리 및 단어 임베딩 - wrod2vec 본문

인공지능

[자연어 처리] 텍스트 전처리 및 단어 임베딩 - wrod2vec

필륭 2023. 9. 27. 19:50

앞서 우리는 단어들이 인공지능에서 학습되기 위해 변환시키는 방법인 임베딩에 대해 배웠습니다.

그렇다면 이렇게 임베딩 된 단어는 어떻게 인공지능에서 학습되게 될까요?

이번 내용에서는 그것에 대해 알아보겠습니다.

 

 

 

 

- word2vec

 

word2vec

 

위 그림은 신경망(Neural Network)을 통해 단어 임베딩 벡터를 학습하고 문장에서 빈칸으로 뚫려있는 단어를 신경망이 추론하여 완성시켜주는 과정을 그림으로 나타낸 것입니다.

 

이미지 분류에서 각각의 은닉층이 가중치를 학습하고 해당 가중치를 바탕으로 결과값을 도출 해냈던 것처럼 wrod2vec 역시 각 단어의 벡터가 해당 단어가 입력으로 주어졌을 때 계산되는 은닉층의 값을 사용합니다.

 

그렇다면 직접 코드를 통해 어떻게 단어들이 임베딩되고 앞서 배웠던 내용들을 적용시킬 수 있는지 알아보겠습니다.

 

from gensim.models import Word2Vec

doc = [["서울에", "살고", "있는", "홍길동은", "고양이를", "좋아한다"]]

word2vec_model = Word2Vec(min_count=1, window=2, vector_size=300)

word2vec_model.build_vocab(doc)

word2vec_model.train(doc, total_examples=word2vec_model.corpus_count, epochs=20)

similar_word = word2vec_model.wv.most_similar("홍길동은") # 넣은 단어들과 각각의 단어들의 유사도를 계산
print(similar_word) 
#[('있는', 0.05005083233118057), ('좋아한다', 0.03316839784383774),...]

score = word2vec_model.wv.similarity("홍길동은", "좋아한다") # 두 단어들 간의 유사도 측정
print(score)
# 0.03316839784383774

 

이번 코드에서 Gensim 라이브러리를 사용하여 word2vec을 사용하였습니다.  각각의 단어가 저장되어있는 doc 변수를 생성한 word2vec 모델에 넣어 학습을 시키고 해당 단어와 모든 단어들의 유사도를 비교하거나 두 단어들의 유사도를 측정하는 등 각 단어들과의 상관관계를 비교할 수 있습니다.

 

 

 

 

 

 

# 출처 및 참고자료

 

엘리스 AI 트랙 7기 - [이론] 텍스트 전처리 및 단어 임베딩

Comments