Colab으로 하루에 하나씩 딥러닝

자연어 전처리_3.임베딩_1) 희소 표현 기반 임베딩(원-핫 인코딩) 본문

딥러닝_개념

자연어 전처리_3.임베딩_1) 희소 표현 기반 임베딩(원-핫 인코딩)

Elleik 2022. 12. 12. 22:06
728x90

임베딩(Embedding)

  • 사람이 사용하는 언어(자연어)를 컴퓨터가 이해할 수 있는 언어(숫자) 형태인 벡터(vector)로 변환한 결과 혹은 일련의 과정
  • 단어 및 문장 간 관련성 계산
  • 의미적 혹은 문법적 정보의 함축
  • 임베딩 방법에 따라 희소 표현 기반 임베딩, 횟수 기반 임베딩, 예측 기반 임베딩, 횟수/예측 기반 임베딩이 존재

희소 표현 기반 임베딩(sparse representation embedding)

  • 대부분의 값이 0으로 채워져 있음
  • 대표적으로 원-핫 인코딩이 있음

원-핫 인코딩(one - hot encoding)

  • 주어진 단어 N개를 각각 N차원의 벡터로 표현하는 방식
  • 단어가 포함되어 있는 위치에 1을 넣고 나머지에는 0 값을 채움
    • 딕셔너리에 [apple, banana, cherry]의 값이 있으면 apple을 표현하는 벡터는 [1, 0, 0]
  • 단점
    • 원-핫 벡터들은 하나의 요소만 1 값을 갖고 나머지는 모두 0인 희소 백터를 갖습니다. 이로 인하여, 단어끼리 관계성(유의어, 반의어) 없이 서로 독립적인 관계가 됨
    • 하나의 단어를 표현하는데 말뭉치에 있는 수만큼 차원이 존재하기 때문에 '차원의 저주(curse of dimmensionality)'  문제가 발생함
더보기

<데이터 셋 가져오기>

아래의 코드 중 class2.txt는 출처의  유방 조영술 관련 데이터셋을 수정하여 사용하였습니다.

 

출처: http://peipa.essex.ac.uk/info/mias.html

### 원-핫 인코딩 적용

import pandas as pd
class2 = pd.read_table('/content/drive/MyDrive/class2.txt', sep=' ', names=['id','tissue','class','class2','x','y','r']) # 데이터셋을 메모리로 로딩

from sklearn import preprocessing
label_encoder = preprocessing.LabelEncoder()  # 데이터를 인코딩하는 데 사용하며, OneHotEncoder와 함께 사용
onehot_encoder = preprocessing.OneHotEncoder()  # 데이터를 숫자 형식으로 표현

train_x = label_encoder.fit_transform(class2['class2'])
train_x

원-핫 인코딩 적용 결과

출처: 서지영, 『딥러닝 텐서플로 교과서』, 길벗(2022)