-
1-1. 한국어 띄어쓰기 사전조사프로젝트/NLP Core 2019. 3. 9. 17:01
1-1. 이 분야의 전문가
언어공학연구회 : http://www.hclt.kr/note/?lnb=school
대한민국 AI 학자들 : http://www.aistudy.co.kr/pioneer/pioneers_kor.htm
1) 심광섭 교수
CRF를 이용한 한국어 자동 띄어쓰기(2011)
말뭉치와 형태소 분석기를 활용한 한국어 자동 띄어쓰기(2015)
음절간 상호 정보를 이용한 한국어 자동 띄어쓰기 (1996)2) 이창기 교수
딥러닝을 이용한 한국어 자동 띄어쓰기 (1저자 황현선, 2016)
Structural SVM을 이용한 한국어 띄어쓰기 및 품사 태깅 결합 모델(2013)
사용자가 입력한 띄어쓰기 정보를 이용한 Structural SVM 기반 한국어 띄어쓰기(2014)
Structural SVM을 이용한 한국어 자동 띄어쓰기 (2012)
3) 김학수 교수
BiGRU-CRFs를 이용한 2단계 한국어 자동 띄어쓰기 (2018)
저사양 장치에서 자동 띄어쓰기 시스템 구현을 위한 신뢰성 높고 간결한 패턴 매칭 방법(2012)
4) 류법모 교수
5) 강승식 교수
한글 문장의 자동 띄어쓰기 (1998)한글 문장의 자동 띄어쓰기를 위한 어절 블록 양방향 알고리즘(2000)
음절 바이그램 단순화 기법에 의한 한국어 자동 띄어쓰기 시스템의 성능 개선(2003)
확장된 음절 bigram을 이용한 자동 띄어쓰기 시스템 (2005)
1-2. 기법, 알고리즘
1) N-Gram 알고리즘
통계와 확률을 바탕으로 한 색인 알고리즘으로 정해진 길이, 혹은 단위로 문장을 잘라 인덱싱한다.
장점 : 알고리즘이 간단하고 빠르다(다양한 분야에서 사용된다).
단점 : 정보량이 크다(전체 문장 * n 만큼의 데이터가 발생함). 그래서 부분적으로 적용한다고도 함.
1-2) TF-IDF(Term Frequency - Inverse Document Frequency)
TF는 문서 내에 나타나는 단어 빈도이고, DF는 다양한 문서에 나타나는 단어 빈도이다.(한 문서내에 빈도가 아닌, 얼마나 많은 문서에 언급되었는가)
IDF는 이 DF값에 역수(1/DF)를 취한것으로 작을수록 빈도가 높다.
2-1) HMM(Hidden MarKov Model) - 참고 링크
-MarKov Property
n+1 회에서의 상태는 오직 n회에서의 상태, 혹은 그 이전 일정 기간의 상태에만 영향을 받는 것을 의미한다. 즉, 현재 상태에 과거가 영향을 미친다.
-Markov Model - 참고 링크1(블로그), 참고 링크2(위키)
랜덤하게 변하는 상태들이 있을 때 이전 상태에 영향을 받아 현재 상태가 변하는 확률 모델
어떠한 상태가 될 확률을 계산하기 위해 State, Initial Probability, State Transition Probability, Emission Probability가 필요함.시스템이 완전히 관측 가능하다
시스템이 부분적으로 관측 가능하다.
시스템이 자율적이다.
Markov Chain
Hidden Markov Model
시스템이 통제된다.
Markov Decision Process
Partially Observable Markov Decision Process
아래 3개를 보통 HMM 파라미터라 한다.
- Initial Probability : 처음 상태의 확률(이전 상태가 없을때, 제일 처음 상태가 정해질 확률), π
- State Transition Probability : 각각의 상태간 변경될 확률(a -> b, b -> a, a -> c 등등 으로 변할 확률), A
- Emission Probability : 히든 상태에서 관측 상태가 나타날 확률(방출 확률), B
-MarKov Chain - 참고 링크
가장 간단한 Markov Model이다.
MarKov Property에서 이전의 상태에 영향을 받지 않으면 0차(과거에 영향을 ), 이전의 상태에만 영향을 받으면 1차 MarKov Chain, n회 전의 상태에 영향을 받으면 n차라고 한다.
r=0이면, 0차 Markov Chain
r=1이면 1차 Markov Chain
r = 2 이면 2차 Markov Chain
-Hidden Markov Model - 참고 링크1, 참고 링크2
Markov Chain을 기반으로 한 모델로, 관측 가능한 상태들을 활용하여 관측 불가능한(Hidden) 상태들을 추론하는 것이다.1) Likelihood(가능도, 우도) 구하기 - Probability vs Likelihood(youtube), (blog)Likelihood는 관측 값이 고정되었을 때, 이것이 어떤 확률 분포에서 나왔을 지에 대한 확률이다.보통 무한히 많은 사건 중 1개의 사건이 발생할 확률은 0에 수렴하기 때문에(1/∞) 근처 확률의 면적값을 사용한다.(확률밀도분포)이 때 관측값이 고정되었을 때 아래 십자 부분의 값, 확률 분포의 y축 값(0.1즈음)이 Likelihood가 된다.셀 수 있는 사건 : 확률 == 가능도셀 수 없는 사건 : (확률 == PDF(확률밀도분포값)) != 가능도O = 관측 가능한 상태, H = 관측 불가능한 상태Likelihood P(O1, O2, H1, H2) = P(H1 | Start) * P(H2 | H1) * P(O1 | H1) * P(O2 | H2) 인데,각 히든에 대한 모든 경우의 수 2^2개 만큼 계산해서 다 더해줘야 한다.이 확률을 전방확률 α라고 한다.(앞에서부터 계산해서 전방확률인듯)즉, P(O1, O2) = P(O1, O2, H1, H2) + P(O1, O2, H1, H1) + P(O1, O2, H2, H1) + P(O1, O2, H2, H2)이렇게 모든 경우의 수를 다 계산해줘야해서 시간복잡도(O((2O-1)H^O))가 어마무시한데 다이나믹 프로그래밍 기반의 Forward Algorithm을 사용하면 시간복잡도를 O(OH^2)로 줄일 수 있다.2) Decoding(가장 확률이 높은 Hidden을 찾는 것)Likelihood를 구할때와는 반대로 뒤에서부터 계산하는 Viterbi Algorithm을 사용한다.Forward Algorithm은 α를 구하기 위해 모든 확률을 더해주는데, Viterbi는 max를 찾기위해 후방(backtracing)에서부터 검색해온다.이 확률을 후방확률 β라고 한다.3) TrainingLikelihood가 최대가 되도록 파라미터(π, A, B)를 훈련시키는 것, 주로 Baum-Welch Algorithm을 사용한다.2-2) CRF(Conditional Random Field) - 참고 링크
HMM과 비슷한 통계적 모델링 방법으로, 주로 Linear Chain CRF가 많이 사용된다.
CRF는 레이블링 문제(순서, 시퀀스가 있을때 각 아이템에 어떤 레이블, 태그가 적합한지 주변을 보고 판단하는것)에 좋다.
HMM보다 더 다양한 feature와 weight를 설정할 수 있다.
HMM은 local이면(보통 바로 직전만 영향을 미치므로) CRF는 global(멀리 떨어져있어도 영향을 미칠 수 있음)이라고 볼 수 있다.
3) SVM(Support Vector Machine) - 참고 링크
현재 차원에서는 분류하기 힘든 데이터들을 고차원으로 보내 분류하는 기법이다.
장점 : 에러가 적고 계산량이 적다. 결과 해석이 쉽다.
단점 : 이진 분류(Binary Classification)만 가능하고 튜닝에 예민하다.
4) RNN(Recurrent Neural Network)
RNN은 이전 출력이 다음 결과에 영향을 미치는 모든 인공신경망을 통칭한다.
과거의 정보를 활용하기 때문에 순서를 고려해야하는 문제에 주로 사용된다.
FRNN, RMLP, SRN, LSTM 등이 있다.
1-3. 최신 기술
1) 규칙 기반(휴리스틱)의 방법 - 참고 링크
말뭉치와 형태소 분석기를 활용한 한국어 자동 띄어쓰기(심광섭, 2015) - 어절 사전한글 문장의 자동 띄어쓰기를 위한 어절 블록 양방향 알고리즘(강승식, 2000)최장일치, 최단일치, 형태소 분석 규칙, 띄어쓰기 오류 유형 등의 방법이 있는데 주로 언어학적 기술이 필요하다.다양한 휴리스틱을 적용, 구현해야해서 시간적 비용적 측면이 크고, 미등록어에 매우 취약하다.2) 확률 기반의 방법
주로 n-gram 알고리즘을 사용한다.3) 통계 기반의 방법
CRF를 이용한 한국어 자동 띄어쓰기(심광섭, 2011)CRF, HMM 등의 방법이 있다.
인접한 두 음절간의 띄어쓰거나 붙여 쓸 확률을 학습하여 띄어쓰기 오류를 교정하는 방법이다.
구현이 간단하고 미등록어도 어느정도 커버하지만 매우 많은 데이터가 있어야한다.
3) 기계학습 알고리즘(주로 Support Vector Machine)을 이용한 방법
Structural SVM을 이용한 한국어 띄어쓰기 및 품사 태깅 결합 모델(이창기, 2013)
4) 딥러닝을 이용한 방법
BiGRU-CRFs를 이용한 2단계 한국어 자동 띄어쓰기 (김학수, 2018)딥러닝을 이용한 한국어 자동 띄어쓰기 (이창기, 2016)딥러닝쪽은 RNN, LSTM, GRU등을 활용한 연구가 활발하다.
'프로젝트 > NLP Core' 카테고리의 다른 글
Attention Mechanism(어텐션 메커니즘) 요약 설명, 조사 (2) 2019.04.28 Transformer 요약 설명, 조사 (0) 2019.04.18 1-2. DeepLearning(RNN) Result (0) 2019.04.07 1-2. 한국어 띄어쓰기 구현 - N-Gram (0) 2019.03.29 한국어 말뭉치 링크 모음 (0) 2019.03.15