본문 바로가기
  • 공부 기록 인생 기록
Python/NLP

언어 모델 - 통계적 언어 모델

by 티권 2023. 3. 14.

언어 모델(Languagel Model, LM)

- 단어 시퀀스(문장)에 확률을 할당하는 모델 - by 이전 단어들이 주어졌을 때 다음 단어 예측

- 가장 자연스러운 단어 시퀀스를 찾아내는 모델

- 만드는 방법 : 통계를 이용한 방법, 인공신경망

- 언어모델링 : 주어진 단어들로부터 아직 모르는 단어를 예측하는 작업

 

언어모델의 유형

- 이전 단어들이 주어졌을 때 다음 단어를 예측

- 주어진 양쪽의 단어들로부터 가운데 비어있는 단어를 예측(BERT)

 

언어모델은 확률을 통해 보다 적절한 문장을 판단한다!

- 기계 번역 ex) P(나는 버스를 탔다) > P(나는 버스를 태운다)

- 오타 교정 ex) 선생님이 교실로 부리나케   P(달려갔다) > P(잘려갔다)

- 음성 인식 ex) P(나는 메롱을 먹는다) < P(나는 메론을 먹는다)

 

 

하나의 단어 : w

단어 시퀀스 : W

n개의 단어가 등장하는 단어 시퀀스의 확률

단어 시퀀스의 확률

조건부확률을 통해 n-1개의 단어가 나열된 상태에서 n번째 단어의 확률 계

다음 단어 등장 확률

 

전체 단어 시퀀스 W의 확률은 모든 단어가 예측되고 나서야 알 수 있다

 

조건부 확률의 연쇄 법칙

 

언어모델의 약점

: 훈련에 사용된 도메인 코퍼스가 무엇이냐에 따라서 성능이 비약적으로 달라짐

 

 

통계적 언어모델(Statistical Language Model, SLM)

: 언어 모델의 전통적인 접근 방법

 

문장에 대한 확률

각 단어는 문맥이라는 관계로 인해 이전 단어의 영향을 받아 나옴

모든 단어로부터 하나의 문장 완성

 

 

chain rule에 의해

 

통계적 언어모델 즉 SLM은 이전 단어로부터 다음 단어에 대한 확률을 어떻게 구할까? 

: 카운트에 기반한 확률 계산

 

기계가 학습한 코퍼스 데이터에서 An adorable little boy가 100번 등장

그 다음에 is가 등장한 경우는 30번이라고 한다면

P(is|An adorable little boy) = 0.3

 

카운트에 기반한 확률 계산의 한계 : 희소 문제(Sparsity Problem)

-> 트렌드가 SLM에서 인공신경망으로 넘어감

 

희소문제

- 충분한 데이터를 관측하지 못하여 언어를 정확히 모델링하지 못하는 문제

 

언어 모델은 실생활에서 사용되는 언어의 확률 분포를 근사 모델링 한다!

실제로도 An adorable little boy가 나왔을 때 is가 나올 확률이라는 것이 존재함

기게에게 많은 코퍼스를 훈련시켜서 언어모델을 통해 현실에서의 확률 분포를 근사하는 것이 언어모델의 목표

 

P(is|An adorable little boy) 를 구할 때 훈련한 코퍼스에 An adorable little boy is라는 단어 시퀀스가 없었다면?

이 단어 시퀀스에 대한 확률은 0

현실에선 An adorable little boy is 라는 단어 시퀀스가 존재, 문법에도 적합하므로 정답일 가능성 또한 높음

: 희소 문제

 

 

한국어에서의 언어 모델

- 한국어는 어순이 중요하지 않음

  : 의미가 통하기 때문에 다음 단어로 어떤 단어든 등장 가능. 확률에 기반한 언어모델이 다음 단어 예측하기 어려움.

- 한국어는 교착어

  : 어절 단위(띄어쓰기)로 토큰화하면 단어 수 매우 늘어남. 한국어에는 조사가 있어서 단어가 다양한 형태로 존재.

  : 한국어에서는 토큰화를 통해 접사, 조사 분리가 중요함

- 한국어는 띄어쓰기가 제대로 지켜지지 않음

  : 띄어쓰기를 제대로 하지 않아도 의미 전달됨. 띄어쓰기 규칙도 까다로움.

  : 토큰이 제대로 분리 되지 않았다면 언어모델은 제대로 동작 안함.

'Python > NLP' 카테고리의 다른 글

펄플렉서티(Perplexity, PPL)  (0) 2023.03.14
N-gram 언어 모델  (0) 2023.03.14
정제, 정규화  (0) 2023.02.19
konlpy 사용 시 오류  (0) 2023.02.18
토큰화(Tokenization)  (0) 2023.02.17