문서 단어 행렬(Document-Term Matrix, DTM) 개념 이해
26 Jan 2023 | NLP(Natural Language Processing)
- 문서 단어 행렬(Document-Term Matrix, DTM) 개념
- 문서 단어 행렬(DTM)의 표현
- 문서 단어 행렬(DTM)의 한계점
- 3.1 희소 행렬 표현(Sparse Matrix Representation)
- 3.2 단순 빈도수 기반 단어 표현
카운트 기반의 단어 표현방법 중 하나인 문서 단어 행렬(DTM)의 개념에 대해 알아보겠습니다.
1. 문서 단어 행렬(Document-Term Matrix, DTM) 개념
문서 단어 행렬(Document-Term Maxtrix, DTM) 은 다수의 문서 데이터(=Corpus)에서 등장한 모든 단어의 출현 빈도수(frequency)를 행렬로 표현한 것 입니다. 행과 열을 반대로 선택하면 TDM 이라고 부르기도 합니다. 즉, DTM은 각 문서 데이터에 대한 Bag of Words(BoW)를 행렬로 만든 것으로 생각 할 수 있으며, BoW와 다른 표현 방법이 아니라 BoW 표현을 다수의 문서에 대해서 행렬로 표현하고 부르는 용어 입니다.
DTM은 국소 표현(Local Representation) 또는 이산 표현(Discrete Representation)의 일종으로 카운트 기반의 단어 표현방법입니다.
2. 문서 단어 행렬(DTM)의 표현
DTM 예시를 들어보겠습니다. 예를 들어 4개의 문서가 있다고 하겠습니다.
- 문서 1 : 먹고 싶은 사과
- 문서 2 : 먹고 싶은 바나나
- 문서 3 : 길고 노란 바나나 바나나
- 문서 4 : 저는 과일이 좋아요
문서 내 띄어쓰기를 기준으로 토큰화(tokenization)한다고 가정하겠습니다. 토큰화는 문장을 여러 단위의 덩어리로 쪼개는 작업이라 생각하시면 됩니다. 문서별 단어의 출현 빈도수를 행렬로 표현하면 아래 표와 같습니다.
-
과일이
길고
노란
먹고
바나나
사과
싶은
저는
좋아요
문서1
0
0
0
1
0
1
1
0
0
문서2
0
0
0
1
1
0
1
0
0
문서3
0
1
1
0
2
0
0
0
0
문서4
1
0
0
0
0
0
0
1
1
각 문서에서 등장한 단어의 빈도를 행렬의 값으로 표기 합니다. 문서 단어 행렬(DTM)은 문서들을 서로 비교할 수 있도록 수치화할 수 있다는 점에서 의의를 갖습니다. 만약 필요에 따라서는 형태소 분석기로 단어 토큰화를 수행하고, 불용어에 해당되는 조사들 또한 제거하여 더 정제된 DTM을 만들 수도 있을 것입니다.
3. 문서 단어 행렬(DTM)의 한계점
DTM은 매우 간단하고 구현하기도 쉽지만, 본질적으로 가지는 몇 가지 한계들이 있습니다.
3.1 희소 행렬 표현(Sparse Matrix Representation)
원-핫 벡터는 단어 집합의 크기가 벡터의 차원이 되고 대부분의 값이 0이 되는 벡터로, 공간적 낭비와 계산 리소스를 증가시킬 수 있다는 점에서 단점을 가지는데, DTM도 마찬가지입니다. DTM 은 희소 벡터(sparse vector) 또는 희소 행렬 표현(Sparse Matrix Representation) 문제 로 인해 높은 계산 복잡도와 저장공간 낭비 문제 가 있습니다. 희소 행렬 표현이란 대부분의 값이 0으로 표현된 행렬 을 말합니다. 희소 행렬 표현으로 인한 문제점을 알아보겠습니다.
- 높은 계산 복잡도
- DTM은 문서 개수와 문서 내 모든 단어 집합의 크기만큼의 차원을 갖습니다.
- 즉, 문서 데이터가(=row 개수) 방대해질수록 단어 집합의 크기(=column 개수)는 기하급수적으로 증가하기 때문에, DTM은 수만, 수십만 이상의 차원을 가질 수 있습니다.
- 차원의 개수가 커진 만큼 계산의 복잡도는 증가하기 때문에 리소스 낭비를 유발합니다.
- 저장공간 낭비
- DTM은 대부분의 column이 0인 행렬 표현방식임에도 불구하고, 단어 집합의 크기만큼 차원을 갖기 때문에 저장공간의 낭비를 유발합니다.
- 이러한 행렬을 희소 행렬 표현이라고 부르는데, 불필요하게 많은 차원의 행렬을 사용하기 때문에 저장공간의 낭비를 유발합니다.
이러한 이유로 전처리를 통해 단어 집합의 크기를 줄이는 일은 BoW 표현을 사용하는 모델에서 중요할 수 있습니다. 구두점, 빈도수가 낮은 단어, 불용어를 제거하고, 어간이나 표제어 추출을 통해 단어를 정규화하여 단어 집합의 크기를 줄이는 텍스트 전처리 방법을 사용할 수 있습니다.
3.2 단순 빈도수 기반 단어 표현
DTM은 문서 데이터에서 단어의 빈도수만 고려하기 때문에 중요 단어와 불필요한 단어를 구분하기 어렵다는 한계가 있습니다. 예를 들어 문장에서 어떤 의미를 갖지 않지만 여러 문서에서 공통적으로 빈출 되는 단어가 있는데, 바로 불용어(stop word)입니다. 영어에 대해서 DTM을 만들었을 때, 불용어인 the는 어떤 문서이든 자주 등장할 수 밖에 없습니다. 그런데 유사한 문서인지 비교하고 싶은 문서1, 문서2, 문서3에서 동일하게 the가 빈도수가 높다고 해서 이 문서들이 유사한 문서라고 판단해서는 안 됩니다.
각 문서에는 중요한 단어와 불필요한 단어들이 혼재되어 있습니다. 불용어(stopwords)와 같은 단어들은 빈도수가 높더라도 자연어 처리에 있어 의미를 갖지 못하는 단어입니다. 그럼 문서에서 의미있는 단어를 추출하기 위해서는 어떻게 해야 할까요? 문서에서 단어의 출현빈도뿐만 아니라 단어의 중요도까지 고려하는 방법 이 있습니다. 즉, 문서에서 중요한 단어는 높은 가중치를 부여하고, 덜 중요한 단어는 낮은 가중치를 부여하는 방법 입니다. 이러한 방법을 적용한 것이 TF-IDF(Term Frequency-Inverse Document Frequency) 입니다.
- 문서 단어 행렬(Document-Term Matrix, DTM) 개념
- 문서 단어 행렬(DTM)의 표현
- 문서 단어 행렬(DTM)의 한계점
- 3.1 희소 행렬 표현(Sparse Matrix Representation)
- 3.2 단순 빈도수 기반 단어 표현
카운트 기반의 단어 표현방법 중 하나인 문서 단어 행렬(DTM)의 개념에 대해 알아보겠습니다.
1. 문서 단어 행렬(Document-Term Matrix, DTM) 개념
문서 단어 행렬(Document-Term Maxtrix, DTM) 은 다수의 문서 데이터(=Corpus)에서 등장한 모든 단어의 출현 빈도수(frequency)를 행렬로 표현한 것 입니다. 행과 열을 반대로 선택하면 TDM 이라고 부르기도 합니다. 즉, DTM은 각 문서 데이터에 대한 Bag of Words(BoW)를 행렬로 만든 것으로 생각 할 수 있으며, BoW와 다른 표현 방법이 아니라 BoW 표현을 다수의 문서에 대해서 행렬로 표현하고 부르는 용어 입니다.
DTM은 국소 표현(Local Representation) 또는 이산 표현(Discrete Representation)의 일종으로 카운트 기반의 단어 표현방법입니다.
2. 문서 단어 행렬(DTM)의 표현
DTM 예시를 들어보겠습니다. 예를 들어 4개의 문서가 있다고 하겠습니다.
- 문서 1 : 먹고 싶은 사과
- 문서 2 : 먹고 싶은 바나나
- 문서 3 : 길고 노란 바나나 바나나
- 문서 4 : 저는 과일이 좋아요
문서 내 띄어쓰기를 기준으로 토큰화(tokenization)한다고 가정하겠습니다. 토큰화는 문장을 여러 단위의 덩어리로 쪼개는 작업이라 생각하시면 됩니다. 문서별 단어의 출현 빈도수를 행렬로 표현하면 아래 표와 같습니다.
- | 과일이 | 길고 | 노란 | 먹고 | 바나나 | 사과 | 싶은 | 저는 | 좋아요 |
---|---|---|---|---|---|---|---|---|---|
문서1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
문서2 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
문서3 | 0 | 1 | 1 | 0 | 2 | 0 | 0 | 0 | 0 |
문서4 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
각 문서에서 등장한 단어의 빈도를 행렬의 값으로 표기 합니다. 문서 단어 행렬(DTM)은 문서들을 서로 비교할 수 있도록 수치화할 수 있다는 점에서 의의를 갖습니다. 만약 필요에 따라서는 형태소 분석기로 단어 토큰화를 수행하고, 불용어에 해당되는 조사들 또한 제거하여 더 정제된 DTM을 만들 수도 있을 것입니다.
3. 문서 단어 행렬(DTM)의 한계점
DTM은 매우 간단하고 구현하기도 쉽지만, 본질적으로 가지는 몇 가지 한계들이 있습니다.
3.1 희소 행렬 표현(Sparse Matrix Representation)
원-핫 벡터는 단어 집합의 크기가 벡터의 차원이 되고 대부분의 값이 0이 되는 벡터로, 공간적 낭비와 계산 리소스를 증가시킬 수 있다는 점에서 단점을 가지는데, DTM도 마찬가지입니다. DTM 은 희소 벡터(sparse vector) 또는 희소 행렬 표현(Sparse Matrix Representation) 문제 로 인해 높은 계산 복잡도와 저장공간 낭비 문제 가 있습니다. 희소 행렬 표현이란 대부분의 값이 0으로 표현된 행렬 을 말합니다. 희소 행렬 표현으로 인한 문제점을 알아보겠습니다.
- 높은 계산 복잡도
- DTM은 문서 개수와 문서 내 모든 단어 집합의 크기만큼의 차원을 갖습니다.
- 즉, 문서 데이터가(=row 개수) 방대해질수록 단어 집합의 크기(=column 개수)는 기하급수적으로 증가하기 때문에, DTM은 수만, 수십만 이상의 차원을 가질 수 있습니다.
- 차원의 개수가 커진 만큼 계산의 복잡도는 증가하기 때문에 리소스 낭비를 유발합니다.
- 저장공간 낭비
- DTM은 대부분의 column이 0인 행렬 표현방식임에도 불구하고, 단어 집합의 크기만큼 차원을 갖기 때문에 저장공간의 낭비를 유발합니다.
- 이러한 행렬을 희소 행렬 표현이라고 부르는데, 불필요하게 많은 차원의 행렬을 사용하기 때문에 저장공간의 낭비를 유발합니다.
이러한 이유로 전처리를 통해 단어 집합의 크기를 줄이는 일은 BoW 표현을 사용하는 모델에서 중요할 수 있습니다. 구두점, 빈도수가 낮은 단어, 불용어를 제거하고, 어간이나 표제어 추출을 통해 단어를 정규화하여 단어 집합의 크기를 줄이는 텍스트 전처리 방법을 사용할 수 있습니다.
3.2 단순 빈도수 기반 단어 표현
DTM은 문서 데이터에서 단어의 빈도수만 고려하기 때문에 중요 단어와 불필요한 단어를 구분하기 어렵다는 한계가 있습니다. 예를 들어 문장에서 어떤 의미를 갖지 않지만 여러 문서에서 공통적으로 빈출 되는 단어가 있는데, 바로 불용어(stop word)입니다. 영어에 대해서 DTM을 만들었을 때, 불용어인 the는 어떤 문서이든 자주 등장할 수 밖에 없습니다. 그런데 유사한 문서인지 비교하고 싶은 문서1, 문서2, 문서3에서 동일하게 the가 빈도수가 높다고 해서 이 문서들이 유사한 문서라고 판단해서는 안 됩니다.
각 문서에는 중요한 단어와 불필요한 단어들이 혼재되어 있습니다. 불용어(stopwords)와 같은 단어들은 빈도수가 높더라도 자연어 처리에 있어 의미를 갖지 못하는 단어입니다. 그럼 문서에서 의미있는 단어를 추출하기 위해서는 어떻게 해야 할까요? 문서에서 단어의 출현빈도뿐만 아니라 단어의 중요도까지 고려하는 방법 이 있습니다. 즉, 문서에서 중요한 단어는 높은 가중치를 부여하고, 덜 중요한 단어는 낮은 가중치를 부여하는 방법 입니다. 이러한 방법을 적용한 것이 TF-IDF(Term Frequency-Inverse Document Frequency) 입니다.