그동안 좀 봐뒀던 Language Model을 정리하고자 한다.
사실 Language Model은 예전에 내가 보던 Information Retrival : Algorithm and Heuristic이라는 책에서 봤었지만, 정리까지는 안해봤다.(난 뭐든 정리가 필요하다.)
Language Model이라함은 정보검색을 하다보면 나오는 unigram, bigram trigram이라는 말과 전혀 다르지 않다. 위 자체가 그대로 문서를 표현하는 모델링 방법이 될수 있는것이다.
각 문서 내에서 빈도수 및 여러 factor를 가지고 아래와 같은 모델링 방법을 기반으로 수치로 표현할 수 있을것이다.
uingram : P(w1,w2,w3,w4) = P(w1)*P(w2)*P(w3)*P(w4)
bigram : P(w1,w2,w3,w4) = P(w1)*P(w2|w1)*P(w3|w2)*P(w4|w3)
unigram은 정보검색에서 잘 써먹는 색인어 독립 가정과 관련을 시켜봐도 크게 무리는 없을듯 하다.
이런식으로 문서들을 모델링하는게 Language Model에서 중요점이고, 이것을 정보 검색의 개념으로 가져오기 위해서 베이지언 룰을 사용해 Likelihood를 유도하고 그것을 랭킹의 중요 점으로 사용하게 된다.
query와 document 모델의 확률적인 Likelihood를 이용하는게 기본적인 개념이다. 이 Likelihood를 추출하는데, 전체 문서 collection을 이용하느냐 아니면 개별의 문서를 이용해서 계산을 하느냐에 따라서 많은 파생 기술로 발전되기도 하고 실제 그렇기도 하다.
일반적으로 랭킹이라하면 사용자가 의도한 쿼리가 있을때 이 쿼리에 상응하는 문서 d의 존재 확률로 볼수 있어서 P(d|q) 표시할 수 있는데, 이 확률은 아래와 같이 베이지 룰로 다시 표현할 수 있다.
P(d|q) = P(q|d) P(d) / P(q)
P(d)는 문서 웹문서를 본다면 기본적으로 동일한 확률로 문서가 나타날테니 일단 생략, P(q)도 쿼리가 나올 확률인데, 기본적으로 모든 쿼리는 발생확률이 같으니 이것도 결과 값에 영향을 안준다. 그래서 남는게 P(q|d)
그러니까. P(q|d)의 확률을 구하는게 목적이다.
일반적으로 unigram의 Modeling 방법을 쓴다면 아래와 같은 식을 만들 수 있다.
쿼리는 사람들이 문장형식으로 많이 입력하지는 않아서 unigram을 가장 많이 애용한다.(구현도 편하다.) 하지만 term의 출현 위치에 따른 문장의 의미를 검색하고 싶다고 하면 다른 모델링 방법을 써야할 것이다. (하지만 연구 결과에 따르면 크게 성능 향상은 없다고 알려진다.)
Process는 이렇다.
1. 각 문서에 따른 적용 Language model을 정한다.(term의 빈도를 계산해서 확률을 계산.)
2. 각 문서 모델과 주어진 쿼리를 이용해 Likelihood Probability를 구한다.
3. 주어진 결과로 랭킹을 한다.
이 랭킹 모델의 핵심은 사람들이 어떤 문서를 알고 있고 이 문서를 검색하고자 할때 떠오르는 단어를 query로 만든다는 개념이다. (물론 문서에서 나오는 단어일 확률이 높다.) 현재 아주 basic한 Language Model을 설명했는데 이 모델로는 특정 문서에서만 나오는 독창적인 단어를 알 방법이 없다. 그래서 collection 개념의 Language model이 소개되었다.
이 collection 정보가 포함되어있는 Language Model에 대해서는 다음 포스팅에서 설명하도록 하겠다. ^^;
Language Model (1) by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.