BM25

MostlyFor·2023년 9월 30일
0

검색 시스템

목록 보기
2/5

BM25

BM는 검색을 위한 ranking function이다.

이는 TF-IDF 와 마찬가지로 lexical한 의미를 기반으로 점수를 매기는 방법이다.

가장 대표적인 식은 다음과 같이 계산된다.

score(D,Q)=i=1nIDF(qi)f(qi,D)(k1+1)f(qi,D)+k1(1b+bDavgdl)score(D,Q) = \sum^n_{i=1}IDF(q_i)\cdot \frac{f(q_i,D) \cdot(k_1+1)}{f(q_i,D) + k_1\cdot(1-b+b\cdot \frac{|D|}{avgdl})}

DD : document D
QQ : query, q1,...,qnq_1,...,q_n는 query word 들
IDFIDF : Inverse Document Frequency, 많은 문서에 단어가 있으면 덜 중요
Davgdl\frac{|D|}{avgdl} : document D 길이 / 전체 문서 평균 길이, 지금 문서가 얼마나 긴 문서인지 생각
f(qi,D)f(q_i,D) : 단어 q_i가 D에서 얼마나 등장했는지, term frequency

k1,bk_1, b : parameter

b의 역할

b는 문서가 길수록 tf 값이 늘어날 것이므로 이를 보정해주기 위해 있는 Davgdl\frac{|D|}{avgdl} 값의 정도를 나타낸다.

0인 경우 이 값은 반영이 되지 않고, 1인 경우 모두 반영된다.

일반적으로는 0.75를 쓴다고 한다.

k1k_1의 역할

포화속도를 정한다고 이해할 수 있다.

그래프를 보면, k가 작을수록 빠르게 포화되어 tf가 증가되어도 거의 점수 상승이 업슨 것을 볼 수 있다.

즉, 어느 정도 단어가 많이 등장하는 것까지는 의미가 있고 그 이후로는 영향이 미미하게 되는데, 이 임계점을 정하는 것 정도로 해석할 수 있다.

참고자료
https://www.staff.city.ac.uk/~sbrp622/papers/foundations_bm25_review.pdf

IDF는 여러 variations가 있지만 다음과 같이 계산된다.

IDF(qi)=ln(Nn(qi)+0.5n(qi)+0.5+1)=ln(N+1n(qi)+0.5)IDF (q_i)=ln(\frac{N-n(q_i)+0.5}{n(q_i)+0.5}+1)=ln(\frac{N+1}{n(q_i)+0.5})

NN : 전체 문서 수
n(qi)n(q_i) : 해당 단어를 포함한 문서의 개수

식의 의미를 해석해보면 해당 단어를 포함한 문서의 개수가 많아질수록 값은 0에 가까워지는 것을 볼 수 있다.

참고자료
https://en.wikipedia.org/wiki/Okapi_BM25

0개의 댓글