Hey Tech
[NLP] 문서 단어 행렬(DTM) 개념 이해 본문
📌 Text 빅데이터분석 플랫폼 베타테스트 참가자 모집 중!(네이버페이 4만 원 전원 지급)
👋 안녕하세요, 코딩이 필요 없는 AI/빅데이터 분석 All in One 플랫폼 <DATA101> 개발팀입니다.
😊 저희 서비스를 사용해 보시고 경험담을 들려주세요 :)
💸 참여해 주신 "모든" 분들께 네이버페이 4만 원 쿠폰을 지급해 드립니다.
👨💻 참여 희망 시 카톡플러스친구 1:1 채팅 or 인스타그램 DM 부탁드립니다 :)
📆 참여기간 : 11/25(월)~11/29(금) 11:00~21:00 중 택1 (1시간 1타임)
👉 참여장소 : 강남역 인근 스터디카페 미팅Room
📍 소요시간 : 총 40분 내외(서비스 체험 및 인터뷰 포함)
✅ 참가조건 : Text 빅데이터 분석 업무 경험자
👉 참가 가능일정 조회하기 : https://url.kr/n8k8gu
- 카톡플친 : http://pf.kakao.com/_SxltHG/chat
- 인스타그램 : https://www.instagram.com/data101.official/
본 포스팅에서는 카운트 기반의 단어 표현방법 중 하나인 문서 단어 행렬(DTM)의 개념에 대해 알아봅니다.
📚 목차
1. DTM 개념
2. DTM 예시
3. DTM 한계점
1. DTM 개념
문서 단어 행렬(Document-Term Maxtrix, DTM)은 다수의 문서 데이터(=Corpus)에서 등장한 모든 단어의 출현 빈도수(frequency)를 행렬로 표현한 것입니다. 즉, DTM은 다수의 문서 데이터에 대한 Bag of Words(BoW)를 행렬로 표현한 것입니다. DTM은 국소 표현(Local Representation) 또는 이산 표현(Discrete Representation)의 일종으로 카운트 기반의 단어 표현방법입니다.
2. DTM 예시
DTM 예시를 들어보겠습니다. 아래와 같이 4개의 문서가 있다고 하겠습니다.
문서구분 | 내용 |
문서1 | 배가 부르다 |
문서2 | 배 가격이 비싸다 |
문서3 | 진짜 사과가 진짜 좋다 |
문서4 | 아침엔 사과가 좋다 |
문서 내 띄어쓰기를 기준으로 토큰화(tokenization)한다고 가정하겠습니다. 토큰화는 문장을 여러 단위의 덩어리로 쪼개는 작업이라 생각하시면 됩니다. 문서별 단어의 출현 빈도수를 행렬로 표현하면 아래 표와 같습니다.
가격이 | 배 | 배가 | 비싸다 | 부르다 | 사과가 | 아침엔 | 진짜 | 좋다 | |
문서1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
문서2 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
문서3 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 2 | 1 |
문서4 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
이처럼 DTM을 활용하면 문서별로 어떤 단어가 몇 번씩 등장했는지 비교할 수 있습니다.
3. DTM 한계점
DTM은 단어 표현 원리와 구현 방법이 매우 간단한 만큼 2가지 한계가 존재합니다.
3.1. 희소 행렬 표현(Sparse Matrix Representation)
DTM은 희소 행렬 표현(Sparse Matrix Representation) 문제로 인해 높은 계산 복잡도와 저장공간 낭비 문제가 있습니다. 희소 행렬 표현이란 대부분의 값이 0으로 표현된 행렬을 말합니다. 희소 행렬 표현으로 인한 문제점을 알아봅니다.
3.1.1. 높은 계산 복잡도
DTM은 문서 개수와 문서 내 모든 단어 집합의 크기만큼의 차원을 갖습니다. 즉, 문서 데이터가(=row 개수) 방대해질수록 단어 집합의 크기(=column 개수)는 기하급수적으로 증가하기 때문에, DTM은 수만, 수십만 이상의 차원을 가질 수 있습니다. 차원의 개수가 커진 만큼 계산의 복잡도는 증가하기 때문에 리소스 낭비를 유발합니다.
3.1.2. 저장공간 낭비
DTM은 대부분의 column이 0인 행렬 표현방식임에도 불구하고, 단어 집합의 크기만큼 차원을 갖기 때문에 저장공간의 낭비를 유발합니다. 앞선 예시를 다시 살펴보겠습니다. 대부분의 문서는 최소 2개, 최대 4개의 column 값만 0이 아닌 값을 표현하지만, 나머지 대부분인 6~8개 값은 0으로 표현되어 있습니다. 이러한 행렬을 희소 행렬 표현이라고 부르는데, 불필요하게 많은 차원의 행렬을 사용하기 때문에 저장공간의 낭비를 유발합니다.
3.2. 단순 빈도수 기반 단어 표현
DTM은 문서 데이터에서 단어의 빈도수만 고려하기 때문에 중요 단어와 불필요한 단어를 구분하기 어렵다는 한계가 있습니다. 문장에서 어떤 의미를 갖지 않지만 여러 문서에서 공통적으로 빈출 되는 단어가 있습니다. 바로 불용어(stop word)입니다. 불용어는 한국어에서 '가', '에서'와 같은 조사나 '합니다', '입니다'와 같은 서술어 등을 말하고, 영어에서는 대표적으로 'a'나 'the'와 같은 관사가 대표적입니다.
그럼 문서에서 의미있는 단어를 추출하기 위해서는 어떻게 해야 할까요? 문서에서 단어의 출현빈도뿐만 아니라 단어의 중요도까지 고려하는 방법이 있습니다. 즉, 문서에서 중요한 단어는 높은 가중치를 부여하고, 덜 중요한 단어는 낮은 가중치를 부여하는 방법입니다. 이러한 방법을 적용한 것이 TF-IDF(Term Frequency-Inverse Document Frequency)입니다. 다음 포스팅에서 TF-IDF에 대해 알아봅니다.
📚 참고할 만한 포스팅
1. [NLP] Bag of Words(BoW) 개념 및 실습
2. [NLP] 문서 단어 행렬(DTM) 개념 이해
3. [NLP] TF-IDF 개념 및 계산 방법
4. [NLP] Word Embedding의 이해: (1) 희소표현 및 밀집표현
5. [NLP] 언어모델(Language Model)의 개념 및 특징
6. [NLP] N-gram 언어 모델의 개념, 종류, 한계점
7. [NLP] 언어모델의 평가지표 'Perplexity' 개념 및 계산방법
8. [NLP] Word2Vec: (1) 개념
9. [NLP] Word2Vec: (2) CBOW 개념 및 원리
10. [NLP] Word2Vec: (3) Skip-gram
11. [NLP] Word2Vec: (4) Negative Sampling
12. [NLP] 문서 유사도 분석: (1) 코사인 유사도(Cosine Similarity)
13. [NLP] 문서 유사도 분석: (2) 유클리디안 거리(Euclidean Distance)
14. [NLP] 문서 유사도 분석: (3) 자카드 유사도(Jaccard Similarity)
👨💻 맞춤 서비스
저희 AI/BigData 분석 솔루션 전문 브랜드 <데이터워너원 DATA101>에서는
맞춤형 데이터 수집부터 통계분석, 텍스트마이닝, AI 모델링, 논문작성을 지원해 드립니다 :)
자세한 내용은 아래 링크를 참고해 주세요!
오늘은 카운트 기반의 단어 표현방법 중 하나인 DTM의 개념에 대해 알아봤습니다.
포스팅 내용에 오류가 있거나 보완할 점이 있다면 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다 :)
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다.
고맙습니다😊
'AI & 빅데이터 > 자연어처리(NLP)' 카테고리의 다른 글
[NLP] 언어모델(Language Model)의 개념 및 특징 (2) | 2022.03.31 |
---|---|
[NLP] TF-IDF 개념 및 계산 방법(+Python 코드) (6) | 2022.03.25 |
[NLP] Bag of Words(BoW) 개념 및 실습 (0) | 2022.03.23 |
[논문 리뷰] Leem, B. H., & Eum, S. W. (2021). Using text mining to measure mobile banking service quality. Industrial Management & Data Systems. (0) | 2021.09.20 |
[파이썬/NLP] 문자열 치환하기 (찾아바꾸기) (0) | 2021.02.16 |