일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 대감집
- 머신러닝
- 타입스크립트
- python
- 프론트엔드
- TooBigToInnovate
- r
- 파이썬
- ADP 실기
- frontend
- bigquery
- 구글
- 대감집 체험기
- Kubernetes
- Kaggle
- 최적화
- 쿠버네티스
- do it
- 심층신경망
- 클러스터링
- LDA
- ADP
- Machine Learning
- React
- docker
- 빅쿼리
- 리액트
- 캐글
- DBSCAN
- 차원 축소
- Today
- Total
No Story, No Ecstasy
텍스트마이닝 - 디리클레, 깁스 샘플링 본문
어절, 혹은 문장을 최소 의미 단위인 형태소로 분절하는 것을 뜻한다. 대표적으로는 python의 KoNLPy library가 있으며, Hannanum, Kkma, Komoran, Okt 품사 태깅 옵션을 제공한다.
BERT
사전 훈련 언어 모델을 뜻한다. 각 언어는 서로 비슷한 뜻을 가질 수도, 상반된 뜻을 가질 수도 있다. 단어의 의미를 벡터로 표현(Embedding)하여, 단어 간 유사성을 (비슷한 벡터 값을 가짐으로써) 나타내는 것이 목적이다. BERT는 사전 훈련 Embedding을 통해 단어 간 유사성을 잘 나타내도록 만들어진 모델이다. 한글은 SKT의 KoBERT가 좋은 성능을 보인다고 알려져 있다.
디리클레(Dirichlet) 분포
베타 분포는 사건이 발생한 횟수가 번, 발생하지 않은 횟수가 번 관측되었을 때, 사건이 발생할 확률이 p일 확률을 표현하는 분포다. B(p; )
디리클레 분포는 2가지 경우만을 다루는 베타 분포를 k가지 경우를 다루도록 확장한 버전이다. Dir( )
LDA
디리클레 분포를 활용하여 문헌에서 토픽을 추출하는 Topic Modeling 기법이다. 토픽 별 단어의 분포, 문서 별 토픽의 분포를 모두 추정한다.
K개 주제가 있다면, k개 주제 중 하나를 고르는 행위는 다항 분포이다. 주제에 포함된 단어 v개가 있다면, v개 단어 중 하나를 고르는 행위도 다항분포이다. 이 다항 분포들의 사전 확률을 켤레 사전 분포인 디리클레 분포로 둔다. 즉, 문헌 별 토픽 분포와 주제 별 단어 분포 모두 디리클레 분포를 따른다고 가정한다.
깁스 샘플링
문헌 내의 모든 단어 개수가 N개라면, 단어 벡터 W와 주제 벡터 Z는 모두 N차 벡터로 표현된다. N값이 커질수록 W, Z의 확률 계산이 기하급수적으로 복잡해지기 때문에, 이를 빠르고 쉽게 하기 위하여 깁스 샘플링을 활용한다. N개의 자료 중 N-1개를 고정하고 한 차원에 대한 자료만 샘플링한다.
깁스 샘플링을 활용한 LDA 과정: (1) 각 단어에 임의의 주제 배정, (2) n번째 단어를 골라서 제외, (3) 나머지 단어들만으로 문헌의 주제 분포, P(Topic|Document)를 계산하고, 그 단어가 속한 주제의 단어 분포, P(Word|Topic)를 계산한다. 각 분포를 곱하여 가장 높은 확률을 제공하는 Topic을 제외시켰던 n번째 단어에 재배치한다. (4) 충분히 수렴할 때까지 2, 3단계 반복
샘플링을 이용하기 때문에 매번 결과가 달라질 수 밖에 없다. 토픽 개수 K와 hyper parameter 를 잘 튜닝해야 한다.
'Shallow Series' 카테고리의 다른 글
대시보드, 도커, 컨테이너 (0) | 2021.03.12 |
---|---|
구글 빅쿼리 (0) | 2021.03.12 |
Python 2차원 배열 (list of list) 선언 방법 (0) | 2021.01.21 |
React 기초 (0) | 2021.01.15 |
쿠버네티스 오브젝트 ( Kubernetes Object ) (0) | 2021.01.09 |