유사도 계산 방법
TF-IDF
- TF-IDF = 문서별 단어(토큰/Term)의 TF값과 IDF 값을 곱한 값 (=TF * IDF)
Score(D,Q)=Σterm∈QTFIDF(t,Q)∗TFIDF(t,D)
D : Document
Q : Query
t : Term
- 유사도 계산 절차
- 질의 토큰화
- 단어 사전에 없는 토큰 제외
- 토큰화된 질의의 TF-IDF 게산
- 질의 TF-IDF값과 문서별 TF-IDF 값을 곱해 유사도 계산
TF (Term Frequency)
- 정의 : 문서내 대상 단어의 빈도를 동일 문서내 최빈 단어의 빈도로 나눈값
- 역할 : 문서내 자주 나오는 단어의 가중치를 높임
TF(t,d)=0.5+max{f(w,d):w∈d}f(t,d)
t : term
w : term of all case
d : document
IDF (Inverse Document Frequency)
- 정의 : 대상 단어가 문서 집합 전체에서 얼마나 공통적으로 나타나는지를 나타내는 값 (~전체 문서 대비 특정 단어가 나오는 문서의 비율의 역수)
- 역할 : 다수의 문서에서 나오는 단어의 가중치를 낮춤
IDF(t,D)=ln∣{d∈D:t∈d}∣∣D∣
IDFLucene(t,D)=ln(∣DF(t)∣+0.5∣D∣+1)
t : term
d : a document
D : all documents
|D| : 모든 문서의 개수
|DF(t)| : 특정 단어가 나오는 문서의 개수
ln : 전체 문서의 수가 많은데 비해 특정 단어가 나오는 문서가 매우 적은 경우, 값이 매우 커지는 것을 방지
1+df(t) : 분모가 0이 되는 것을 방지하기 위해 +1
BM25
- 정의 : 쿼리의 각 토큰에대한 대상 문서와의 유사도 점수
- 의미 : TF-IDF는 문서내 토큰이 반복해서 나오는 경우 점수가 계속 올라가는 반면, BM25는 k상수값을 정의해 상승 한계치를 조정할 수 있다.
Score(D,Q)=Σt∈QIDF(t,D)∗TFIDF(t,D)+k1∗(1−b+b∗Lenavg(Docs))Len(D))TFIDF(t,D)∗(k1+1)
D : Document
Q : Query
t : Term
Len(D) : Length of the document
Len_avg(Docs) : Average length of all documents
b : 문서의 길이 가중치 (0인 경우 문서의 길이는 점수에 미반영)
일반적으로 0.75 사용
k_1 : TF 값이 k_1 보다 작은 경우 점수를 빠르게 증가시키나, 반대의 경우 점수에 주는 영향도가 작음
일반적으로 1.2~2.0 사용
k_1 (in Elastic Search) = 1.2
TF-IDF vs BM25
- TF-IDF : 자주 나오는 단어가 점수에 영향을 준다 (가중치가 높아진다.)
- BM25 : 단어의 빈도가 점수에 영향을 주는 것을 어느정도 제한한다. (빈도가 높아지더라도 가중치가 급격하게 오르는 것을 막는다.)
용어설명
REF.
TF-IDF 살세설명
WIKI - tf-idf
BM25 알고리즘 설명