[NLP] 텍스트 벡터화

2023. 11. 3. 10:22ML&DL/NLP

벡터화 (Vectorization)

1. 신경망 사용하지 않을 경우

- 단어 : 원-핫 인코딩

- 문서 : Document Term Matrix, TF-IDF

2. 신경망 사용할 경우

- 단어 : 워드 임베딩 (Word2Vec, GloVe, FastText, Embedding layer)

- 문서 : Doc2Vec, Sent2Vec

3. 문맥을 고려한 벡터 표현 방법

- ELMo,BERT,GPT,T5 (Pre-trained model)

 

단어의 벡터화 : 원-핫 인코딩

- 전체 단어 집합의 크기를 벡터의 차원으로 가진다 (0 과 1로 이루어져있음)

- 각 단어에 고유한 정수 인덱스를 부여, 해당 인덱스의 원소는 1로 나머지 원소는 0을 가지는 벡터

 

ex) 다음과 같이 정수 인코딩이 되었다면,

과일이 0
길고 1
노란 2
먹고 3
바나나 4

 

과일이 = [0,0,0,0,0]

길고 = [0,1,0,0,0]

노란 = [0,0,1,0,0]

먹고 = [0,0,0,1,0]

바나나 = [0,0,0,0,1]

 

각 단어는 이러한 원-핫 벡터를 가짐

 

원-핫 인코딩의 한계

- 각 단어 벡터 간의 유사도를 구할 수 없음

=> 워드 임베딩 방법은 가능

 

단어의 벡터화 : 워드 임베딩

- 인공 신경망을 이용하여 단어의 벡터값을 얻는 방법

- 학습 후에는 각 단어 벡터 간의 유사도를 계산할 수 있음

 

문서의 벡터화 : Document Term Matrix

- DTM은 마찬가지로 벡터가 단어 집합의 크기를 가지며 대부분의 원소가 0을 가진다

- 각 단어는 고유한 정수 인덱스를 가지며, 해당 단어의 등장 횟수를 해당 인덱스의 값을 가진다.

- Bag of Words 가설 기반 방법론 => 순서는 무시하고 단어의 빈도수에만 집중함

 

문서의 벡터화 : TF-IDF

- DTM에서 추가적으로 중요한 단어에 가중치를 주는 방식

- 중요한 단어는 값 ↑ 중요하지 않은 단어는 값 ↓

- 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단

- 문서를 벡터화한다면 각 문서간의 유사도를 구할 수 있다.

 

  문서간의 유사도를 구할 수 있다면? 이런 것이 가능

     1. 문서 클러스팅

     2.유사한 문서 찾기

     3. 문서 분류 문제