욱이의 냉철한 공부

[NLP 개념정리] Word Representation : 카운트 기반 단어표현 본문

데이터과학/개념 : NLP

[NLP 개념정리] Word Representation : 카운트 기반 단어표현

냉철한 욱 2020. 4. 16. 19:04

* Word Representation 분류체계

1. Discrete Representation : Local Representation

    1) One - hot Vector

         - One - hot Vector

    2) Count Based

         - Bag of Words (BoW)

         - Document-Term Matrix (DTM)

         - (TDM)

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

         - N-gram Language Model (N-gram)

2. Continuous Representation

     1) Prediction Based (Distributed Representation)

         - Neural Network Language Model (NNLM) or Neural Probabilistic Language Model (NPLM)

         - Word2Vec

         - FastText

         - Embedding from Language Model (ELMo) (Bidirecional Language Model (biLM) 활용)

    2) CountBased (Full Document)

         - Latent Semantic Analysis (LSA)) <-DTM

    3) Prediction Based and CountBased (Windows)

        - GloVe

*

Discrete Representation은 값 그 자체를 표현, 정수로 표현된 이산표현

Continuous Representation은 관계, 속성의미를 내포하여 표현, 실수로 표현된 연속표현

 

 


* 목차

- Word Representation : Discrete Representation(Count Based)

1. Bag of Words

2. DTM(Document-Term Matrix) : 문서 단어 행렬

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

 


 

1. Bag of Words

- Bag of Words 개요

두 set {donguk, minyoung, donguk, donguk, minyoung, higwon},

{minyoung, minyoung, donguk, higwon, donguk, donguk}은 같은 set입니다.

각 단어의 빈도들이 같기 때문에 같은 set이라고 합니다.

bag of words는 이와 같습니다.

이처럼 bag of words는 단어들의 순서는 고려하지 않고, 단어들의 빈도만 고려한 수치화 표현 방법입니다.

bag of words의 그대로의 직역 뜻은 '단어들의 가방'입니다

즉 가방에 있는 단어들이 순서 가리지 않고 놓여져 있다라고 생각하시면 됩니다.

그리고 이 가방에 있는 단어의 빈도수 N개를 집계한 것이 최종적인 bag of words라고 할 수 있겠습니다.

 

- Bag of Words 예시

doc1(가방) : "나는 천재다. 하지만 나는 공부가 필요하다. 나의 공부는 딥러닝이다."

단어

doc1  단어빈도

3

3

천재

1

3

하지만

1

공부

2

1

필요

1

1

1

딥러닝

1

1

 

2. DTM(Document-Term Matrix) : 문서 단어 행렬

- DTM(Document-Term Matrix) 개요

bag of words는 하나의 가방이었습니다.

DTM은 하나의 가방이 아닌 여러개의 가방에서 단어를 꺼내 빈도수를 집계한 것입니다.

즉 여러개의 문서(가방)에서 각 단어들의 빈도수를 집계하고 행렬(Matrix)로 표현한것입니다.

- DTM(Document-Term Matrix) 예시

doc1(가방) : "나는 천재다. 하지만 나는 공부가 필요하다. 나의 공부는 딥러닝이다."

doc2(가방) : "나는 공부를 못한다."

doc3(가방) : "하지만 나는 딥러닝 공부에 재미를 느낀다"

단어

doc1 단어빈도

doc2 단어빈도

doc3 단어빈도

3

1

1

3

1

1

천재

1

0

0

3

1

2

하지만

1

0

1

공부

2

1

1

1

0

0

필요

1

0

0

1

1

0

1

0

0

딥러닝

1

0

1

1

0

0

재미

0

0

1

0

0

0

0

0

0

* 불용어(조사)를 제거하거나, 단어들을 표준화하는 등의 '텍스트 전처리'를 거친 후 만들어도 됨

- DTM(Document-Term Matrix) 의 문제점

1) Sparse representation

단어들이 많아질 수록 빈도수 0도 많아진다. 즉 DTM의 형태는 1이상의 빈도수가 듬성듬성 있는

회소표현(Sparse representation)이 되어진다.

이것은 많은 양의 저장공간이 필요하고, 많은 양의 계산때문에 비용이 많이 든다.

=> 해결책

DTM자체에서 이 같은 문제를 해결하고자 하면, '텍스트 전처리' 필요하다.

2) 의미없는 단어의 높은 빈도수

불용어(조사)인 '나, 는, 가.... ' 등의 단어들은 별 의미도 없는데 자주 등장한다.

그리하여 DTM에서는 빈도수가 높게 측정면서 의미있는 값으로 추정해버린다....

즉 다른 문서에서 어떤 단어가 같이 빈도수가 높으면 서로 유사한 문서라고 판단해버린다.

=> 해결책

TF-IDF : 의미있는(중요한) 단어에 가중치를 더 주는 방법

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

- TF-IDF 사용목적

문서의 유사도를 구하는 작업을 위해

검색 시스템에서 검색 결과의 중요도를 정하기 위해

문서 내에서 특정 단어의 중요도를 구하기 위해

- TF (Term Frequency) 개요

어떤 단어가 특정 문서에서 등장한 빈도수 = > BoW와 같은 개념

=> tf(d,t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수.

- DF (Document Frequency) 개요

특정 단어가 문서에 등장한 빈도 수

만약 '공부'라는 단어가 doc1, doc2, doc3에 등장했다면 DF는 3이 된다.

즉 DF가 클수록 해당단어('공부')는 범용적으로 쓰이는 단어라 할 수 있다.

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

- IDF (Inverse Document Frequency) 개요

=> idf(d, t) : df(t)에 반비례하는 수.

1. IDF가 DF의 역수로 표현하는 이유"범용성(특정단어가 여러문서에 발견)이 클수록 중요도는 하락한다"를

표현하기 위해서 입니다.

 

2. log를 사용하는 이유는 총 문서의 수 n이 기하급수적으로 커지면 IDF의 값도 마찬가지로 커지기 때문

즉 값의 크기를 조절하기 위해서입니다.

 

3. 분모에 1을 더하는 이유는 특정단어가 전체문서에서 등장하지 않을 경우에 분모가 0이 되는 상황 방지하기

위해서입니다.

- TF-IDF (Term Frequency Inverse Document Frequency) 개요

* w = t

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

TF-IDF 값이 낮으면 중요도가 낮은 것이며, TF-IDF 값이 크면 중요도가 큰 것입니다.

즉, the나 a와 같이 불용어의 경우에는 모든 문서에 자주 등장하기 마련이기 때문에 자연스럽게 불용어의 TF-IDF의 값은 다른 단어의 TF-IDF에 비해서 낮아지게 됩니다.

 

- TF-IDF (Term Frequency Inverse Document Frequency) 예시

1) DTM, DF

 

doc1

doc2

doc3

DF

단어 1

5

0

0

1

단어 2

1

0

0

1

단어 3

5

5

5

3

단어 4

3

4

5

3

2) IDF

 

doc1

doc2

doc3

단어 1

log(3/(1+1))

0

0

단어 2

log(3/(1+1))

0

0

단어 3

log(3/(1+3))

log(3/(1+3))

log(3/(1+3))

단어 4

log(3/(1+3))

log(3/(1+3))

log(3/(1+3))

3) TF - IDF

 

doc1

doc2

doc3

단어 1

5xlog(3/(1+1))

0

0

단어 2

1xlog(3/(1+1))

0

0

단어 3

5xlog(3/(1+3))

5xlog(3/(1+3))

5xlog(3/(1+3))

단어 4

3xlog(3/(1+3))

3xlog(3/(1+3))

3xlog(3/(1+3))

* 5xlog(3/(1+1)) 보충설명

단어1은 doc1에서만 높은 빈도수로 출현되는 것을 확인할 수 있습니다.

특정 문서에만 자주등장하는 단어이기 때문에 값이 가장 높다는 것을 확인할 수 있습니다.

즉 중요도가 가장 높다.

이런 식의 원리에 따라 불용어(ex)조사)는 낮은 값을 갖게 된다.