A.I./NLP

Word Representation ② Local Representation

공부하는 2023. 3. 10. 15:42

컴퓨터가 자연어를 이해하고 처리할 수 있도록, 단어를 숫자로 표현해야 한다. 이번 포스팅에서는 표현하고 싶은 단어에만 집중해서 특정값에 매핑하는 Local Representation에 대해 이야기한다.

 

목차

1. One-hot vector 원-핫 벡터
2. Count Based Representation 빈도수 기반 단어 표현
  2.1. Bag of Words (BoW)
  2.2. Document-Term Matrix (DTM)
  2.3. Term Frequency - Inverse Document Frequency (TF-IDF)

 

1. One-hot vector 원-핫 벡터

one-hot encoding

  1. 각 단어에 고유한 정수를 부여한다. → 정수 인코딩
  2. 단어의 고유한 정수를 인덱스로 간주하여 해당 인덱스면 1, 아니면 0을 부여한다.

위와 같이, 단어 집합(vocabulary)의 크기를 벡터의 차원으로 하고 표현하고 싶은 단어의 인덱스에 1, 그 외에는 0을 부여하는 단어의 표현 방식이 One-Hot Encoding 원-핫 인코딩이다. one-hot encoding을 사용하여 생성한 벡터를 one-hot vector 원-핫 벡터라고 한다.

 

one-hot vector의 문제점

  • 단어의 개수가 늘어날수록, 벡터를 위한 공간이 늘어난다. → 메모리 비용
  • 하나의 값만 1이고 그 외에는 0 → sparse vector 비효율적
  • 단어의 유사도를 표현하지 못한다.

 

 

2. Count Based Representation 빈도수 기반 단어 표현

단어의 빈도수를 카운트하여 단어를 수치화하는 표현 방법

 

2.1. Bag of Words (BoW)

단어의 순서는 고려하지 않고, 출현 빈도(frequency)에만 집중한 단어 표현 방법이다.

  1. 각 단어에 고유한 정수 인덱스를 부여
  2. 각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록 → BoW vector

 

2.2. Document-Term Matrix (DTM)

다수의 문서에 대한 BoW를 하나의 행렬로 만들어 표현하는 방법이다.

 

2.3. Term Frequency - Inverse Document Frequency (TF-IDF)

DTM 내에 있는 각 단어의 중요도를 계산하여 가중치를 주는 방법
( = DTM을 만든 후, TF-IDF 가중치 부여 )

① tf (d, t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수 ⇒ DTM

② df (t) : 특정 단어 t가 등장한 문서의 수

  ex. df(바나나) = 2

 

③ idf (d, t) : df (t) 에 반비례하는 수

idf (d, t) = log(n/(1+df(t))) (n: 총 문서의 수)

  log 안의 식에서 분모에 1을 더해주는 이유는 분모가 0이 되는 상황을 방지하기 위함

  → 이러한 이유로 라이브러리마다 TF-IDF 계산식 약간 조정될 수 있음

결과적으로 말하면, DTM을 구하고 각 요소에 해당하는 IDF를 곱해주면 된다.

 

 

 

본 포스팅은 딥러닝을 이용한 자연어 처리 입문을 참고하여 작성되었습니다.