언어 모델링(LM)은 입력(Input) ( X ) 를 출력(Output) ( Y ) 로 매핑하는 함수를 만드는 것을 목표로 하는 작업이다. 대표적으로 다음과 같은 태스크(task)들이 있다.
언어 모델링 시스템은 크게 세 가지 방식으로 구축될 수 있다.
규칙 기반 시스템은 영화 리뷰의 감정 분석(sentiment analysis)과 같은 작업에서 사용된다. 이를 위한 프로세스는 다음과 같은 단계로 구성된다.
하지만 규칙 기반 시스템은 몇 가지 한계를 가지고 있다.
빈도수가 낮은 단어 처리 어려움 → 외부의 감정 사전을 활용하여 해결 가능
예를 들어 '환상적'이란 단어는 매우 드물게 나타나므로, 미리 규칙을 설정해두지 않으면 이 단어를 모델이 이해할 수 없다. 그러나 외부 사전에 해당 단어가 +3점이라고 명시되어있으면, 이를 가져와서 점수화할 수 있다.
단어의 활용(conjugation) 형태 문제 → 품사(POS, part-of-speech)를 활용하여 해결 가능
"좋았다"라는 단어를 "좋다"라는 기본형으로 매핑하여 원래 점수를 계산한다.
부정(negation)의 처리 문제 → 구문 분석(syntactic analysis)을 통해 해결 가능
"이 영화는 재미있지 않다."라는 문장을 ["이 영화는", ["재미있다", "않다(부정)"]]으로 구문 분석한 뒤 +2점을 -2점으로 변환하여 최종 점수를 내린다.
학습 기반 방식의 대표적인 방법으로는 단어 모음(Bag of Words, BOW) 모델이 있다. BOW 모델은 텍스트 내 단어의 존재 여부나 빈도를 특징으로 사용하여, 가중치(weight)를 학습하여 예측한다.
하지만 BOW 모델의 문제점은 다음과 같다.
서브워드 모델은 낮은 빈도의 단어들을 여러 개의 토큰(token)으로 나누는 방법이다. 이를 통해 복합어나 단어 변형 간 매개변수(parameter)를 공유하여 전체 단어 사전(vocabulary)의 크기를 줄이고, 연산량(compute)과 메모리를 절약할 수 있다.
대표적인 서브워드 모델로는 바이트 쌍 인코딩(Byte Pair Encoding, BPE)이 있으며, 원리는 다음과 같다.
이전의 단어 표현 방식은 원-핫 벡터(one-hot vector)를 이용한 희소(sparse) 표현이었지만, 최근에는 밀집된(dense) 벡터 형태인 단어 임베딩을 사용한다.

대표적인 임베딩 모델로는 BOW(Continuous Bag of Words)가 있으며, 단어들을 벡터 공간 내의 밀집 벡터로 표현하여, 유사한 의미 또는 문법적 특성을 가진 단어들이 벡터 공간에서 가깝게 위치하도록 한다.
임베딩 행렬(embedding matrix)에서 특정 벡터를 선택하는 작업은 'lookup'으로 표현될 수 있으며, 원-핫 벡터와 행렬 곱으로 구현된다.
즉, 원핫 벡터는 Vocab에 존재하는 토큰 개수의 차원을 가지는 인덱스이며, 임베딩 행렬은 해당 단어의 원핫 벡터를 받아, 그 인덱스에 있는 벡터 정보를 가져오는 역할을 한다.

언어 모델링은 단순히 단어의 집합이 아니라 문장이나 단어 열(sequence)에 확률(probability)을 부여하는 작업이다.
이러한 시퀀스 모델링을 통해, 단순히 단어를 독립적으로 다루는 BOW 모델의 한계를 극복하고 문맥 정보를 반영할 수 있는 개선된(improved) 언어 모델이 만들어질 수 있다.