문서, 질의 유사도 계산 정리

DH Song·2023년 6월 20일
0

유사도 계산 방법

TF-IDF

  • TF-IDF = 문서별 단어(토큰/Term)의 TF값과 IDF 값을 곱한 값 (=TF * IDF)
Score(D,Q)=ΣtermQTFIDF(t,Q)TFIDF(t,D)Score(D,Q) = \Sigma_{term\in Q}{TFIDF(t,Q) * TFIDF(t,D)}

D : Document
Q : Query
t : Term

  • 유사도 계산 절차
    1. 질의 토큰화
    2. 단어 사전에 없는 토큰 제외
    3. 토큰화된 질의의 TF-IDF 게산
    4. 질의 TF-IDF값과 문서별 TF-IDF 값을 곱해 유사도 계산

TF (Term Frequency)

  • 정의 : 문서내 대상 단어의 빈도를 동일 문서내 최빈 단어의 빈도로 나눈값
  • 역할 : 문서내 자주 나오는 단어의 가중치를 높임
TF(t,d)=0.5+f(t,d)max{f(w,d):wd}TF(t,d) = 0.5 + \frac{f(t,d)}{max\{f(w,d) : w \in d\}}

t : term
w : term of all case
d : document

IDF (Inverse Document Frequency)

  • 정의 : 대상 단어가 문서 집합 전체에서 얼마나 공통적으로 나타나는지를 나타내는 값 (~전체 문서 대비 특정 단어가 나오는 문서의 비율의 역수)
  • 역할 : 다수의 문서에서 나오는 단어의 가중치를 낮춤
IDF(t,D)=lnD{dD:td}IDF(t,D) = ln\frac{|D|}{|\{d\in D : t\in d\}|}
IDFLucene(t,D)=ln(D+1DF(t)+0.5)IDF_{Lucene}(t,D) = ln(\frac{|D|+1}{|DF(t)|+0.5})

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)=ΣtQIDF(t,D)TFIDF(t,D)(k1+1)TFIDF(t,D)+k1(1b+bLen(D)Lenavg(Docs)))Score(D, Q) = \Sigma_{t\in Q}{IDF(t,D) * \frac{TFIDF(t,D)*(k_1+1)}{TFIDF(t,D) + k_1 * (1-b+b*\frac{Len(D)}{Len_{avg}(Docs))})}}

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 알고리즘 설명

0개의 댓글

관련 채용 정보