https://datascienceschool.net/view-notebook/a0c848e1e2d343d685e6077c35c4203b/ 여기를 참고하면 다양한 확률론적 언어 모형을 볼 수 있다.
이야~ 구글에서는 책에서 n-gram 데이터를 싹 뽑아서 제공해주네 ㅋㅋ https://books.google.com/ngrams
n-gram 모델은 위에서 참고하면 알겠지만 unigram, bigram, 경우에따라서 trigram 등으로 나뉘며, unigram을 제외하곤 n-gram이라고 부른다.
결과적으로 이게 독립적인 단어로써 활용할지(unigram), 바로 이전 단어 하나에 의존할 것인지(bigram), 바로 이전 2개의 단어에 대해 의존할지(trigram) 아니면 n개의 단어에 의존할지(n-gram)에 따라 명칭이 달라진다.
조건부 확률론적으로 사건의 갯수를 단어의 갯수로 표현하면 된다.
아이거 그림을 업로드해야하는데 플래시 업데이트하라고하네 안해 ㅡㅡ
말뭉치 사전에서 확률 추정 방법으론 P(w_i|w_i-1) = C(w_i, w_i-1)/C(w_i-1) 이라고한다. C(w_i-1)은 전체 말뭉치에서 유니그램이 나타내는 횟수. C(w_i, w_i-1)은 바이그램이 나타내는 횟수라고 한다. 이 때 말뭉치 문장 앞 뒤로 토큰을 추가하라고 하는데 왜징?
아무튼 결론적으로 말해서 n-gram은 '나는 맛있는 파스타를' 이라는 미완성 문장이 주어졌을 때 마지막에 오는 '먹었다'를 예측하는 것으로, bigram을 예로 들었을 때 '파스타를'이라는 단어+조사 형태가 주어지면 '파스타를' 다음에 오는 사전을 말뭉치 사전에서 조사한 후 가장 등장 빈도가 높은 단어를 아웃풋으로 내놓는 모델이라고 보면 된다.
먹었다 외에도 샀다 팔았다 버렸다 대접했다 등등 다양한 사전이 있겠지만 이는 말뭉치 사전의 특성도 중요하기 때문에 결과적으로 말뭉치 사전의 적절한 조합이 필요하다. 아무래도 결과적으론 가장 빈도 수가 높은 단어가 아웃풋으로 나오기 때문이다.
참고로 n-gram 모델은 n이 커질수록 더 정확한 결과가 나오겠지만, 그만큼 계산량도 높아져서 아웃풋까지 시간이 오래걸린다는 특성도 있다.