Tech for good

[딥러닝을 이용한 자연어 처리 입문] 4. 카운트 기반의 단어 표현 - 3) 문서 단어 행렬(Document-Term Matrix, DTM) 본문

IT/Data Science

[딥러닝을 이용한 자연어 처리 입문] 4. 카운트 기반의 단어 표현 - 3) 문서 단어 행렬(Document-Term Matrix, DTM)

Diana Kang 2021. 10. 12. 11:31

목차

4. 카운트 기반의 단어 표현(Count based word Representation) 

 

4.3. 문서 단어 행렬(Document-Term Matrix, DTM)

4.3.1. 문서 단어 행렬(Document-Term Matrix, DTM)의 표기법

4.3.2. 문서 단어 행렬(Document-Term Matrix, DTM)의 한계

  (1) 희소 표현(Sparse representation)

  (2) 단순 빈도 수 기반 접근


4. 카운트 기반의 단어 표현

4.3. 문서 단어 행렬(Document-Term Matrix, DTM)

이번 챕터에서는 각 문서에 대한 BoW 표현 방법을 그대로 갖고와서 서로 다른 문서들의 BoW들을 결합한 표현 방법문서 단어 행렬(Document-Term Matrix, DTM) 표현 방법을 알아본다. (행과 열을 반대로 선택하면 TDM이라고 부르기도 한다.) 문서 단어 행렬을 활용하면 서로 다른 문서들을 비교할 수 있게 된다.

 

4.3.1. 문서 단어 행렬(Document-Term Matrix, DTM)의 표기법

문서 단어 행렬(Document-Term Matrix, DTM)이란 다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것을 말한다. 쉽게 생각하면 각 문서에 대한 BoW를 하나의 행렬로 만든 것으로 생각할 수 있으며, BoW와 다른 표현 방법이 아니라 BoW 표현을 다수의 문서에 대해서 행렬로 표현하고 부르는 용어이다. 예를 들어서 이렇게 4개의 문서가 있다고 하자.

 

문서1 : 먹고 싶은 사과
문서2 : 먹고 싶은 바나나
문서3 : 길고 노란 바나나 바나나
문서4 : 저는 과일이 좋아요

 

이를 문서 단어 행렬로 표현하면 다음과 같다.

각 문서에서 등장한 단어의 빈도를 행렬의 값으로 표기한다. 문서 단어 행렬은 문서들을 서로 비교할 수 있도록 수치화할 수 있다는 점에서 의의를 갖는다. (여기서는 하지 않았으나 원한다면 한국어에서 불용어에 해당되는 조사들 또한 제거하여 더 정제된 DTM을 만들 수도 있다.)

 

4.3.2. 문서 단어 행렬(Document-Term Matrix, DTM)의 한계

문서 단어 행렬(DTM)은 매우 간단하고 구현하기도 쉽지만, 본질적으로 갖는 몇 가지 한계들이 있다.

 

(1) 희소 표현(Sparse representation)

원-핫 벡터는 단어 집합의 크기가 벡터의 차원이 되고 대부분의 값이 0이 된다는 특징이 있었다. 이러한 특징은 공간적 낭비와 계산 리소스를 증가시킬 수 있다는 한계점을 갖는다. DTM도 마찬가지이다. DTM에서의 각 행을 문서 벡터라고 해보자. 각 문서 벡터의 차원은 원-핫 벡터와 마찬가지로 전체 단어 집합의 크기를 가진다. 만약 가지고 있는 전체 코퍼스가 방대한 데이터라면 문서 벡터의 차원은 수백만의 차원을 가질 수도 있다. 또한 많은 문서 벡터가 대부분의 값이 0을 가질 수도 있다. 당장 위에서 예로 들었던 문서 단어 행렬의 모든 행이 0이 아닌 값보다 0의 값이 더 많은 것을 볼 수 있다.

원-핫 벡터나 DTM과 같은 대부분의 값이 0인 표현을 희소 벡터(sparse vector) 또는 희소 행렬(sparse matrix)라고 부르는데, 희소 벡터는 많은 양의 저장 공간과 계산을 위한 리소스를 필요로 한다. 이러한 이유로 전처리를 통해 단어 집합의 크기를 줄이는 일은 BoW 표현을 사용하는 모델에서 중요할 수 있다. 앞서 배운 텍스트 전처리 방법을 사용하여 구두점, 빈도수가 낮은 단어, 불용어를 제거하고, 어간이나 표제어 추출을 통해 단어를 정규화하여 단어 집합의 크기를 줄일 수 있다.

 

(2) 단순 빈도 수 기반 접근

여러 문서에 등장하는 모든 단어에 대해 빈도 표기를 하는 이런 방법은 때로는 한계를 갖기도 한다. 예를 들어 영어에 대해 DTM을 만들었을 때 불용어인 the는 어떤 문서이든 자주 등장할 수 밖에 없다. 그런데 유사한 문서인지 비교하고 싶은 문서1, 문서2, 문서3에서 동일하게 the가 빈도수가 높다고 해서 이 문서들이 유사한 문서라고 판단해서는 안된다.

각 문서에서 중요한 단어와 불필요한 단어들이 혼재되어 있다. 앞서 불용어(stopwords)는 자연어 처리에 있어 의미를 거의 갖지 못하는 단어라고 언급한 바 있다. 그렇다면 DTM에서 불용어와 중요한 단어에 대해 가중치를 줄 수 있는 방법은 없는 것일까? 이를 위해 사용하는 것이 다음 챕터에서 배우게 될 TF-IDF이다.