TF-IDF란?(Document Retriever)

Jaeyeon Kim·2023년 6월 6일

Term Frequency - Inverse Document Frequency

쿼리(Query)와 문서(Document)를 비교할 때 많이 쓰이는 방법이다.

  • Term Frequency(TF): 단어의 등장 빈도
  • Inverse Document Frequency(IDF): 단어가 제공하는 정보의 양

Term Frequency(TF)

측정 방법

  1. 각각의 단어 개수 세기
  2. 정규화 : 위에서 센 값을 전체 단어의 수로 나누기
  3. binary, log normalization 등과 같은 방법으로도 정규화 가능

Inverse Document Frequency(IDF)

측정 방법

IDF(t)=logNDF(t)IDF(t) = log\frac{N}{DF(t)}

Document Frequency(DF): Term t가 등장한 document 개수
N: 총 document 개수

식에 따르면 여러 문서에 등장하는 단어의 점수는 낮게 측정되며, 적은 문서에만 등장하는 단어의 점수는 높게 측정된다.

TF-IDF

TF(t,d)×IDF(t)TF(t,d)\times IDF(t)

별로 의미가 없는 관사(a, the) 같은 경우 점수가 낮게 나오며, 고유명사와 같이 의미가 담긴 단어는 IDF 점수가 높기 때문에 TF-IDF 점수가 높게 측정된다.

TF값은 문서와 단어마다 값이 다르지만 단어의 IDF값은 모든 문서에서 동일하다.

TF-IDF 테이블을 만들어 미리 계산해두면, 쿼리와 가장 유사한 문서를 찾아낼 수 있다. 쿼리의 TF-IDF 값과 문서별 TF-IDF 값을 곱하면 유사도 점수를 계산할 수 있다.

Score(Q,D)=termQTFIDF(term,Q)TFIDF(term,D)Score(Q, D) = \sum_{term\in Q}^{}TFIDF(term, Q)*TFIDF(term, D)

BM25

TF-IDF의 개념을 바탕으로 문서의 길이까지 고려하여 점수를 매긴다.
TF 값에 한계를 지정해두어 일정한 범위를 유지하도록 하고, 평균적인 문서의 길이보다 더 짧은 문서에서 단어가 매칭된 경우 그 문서에 가중치를 부여한다.
현업에서도 많이 사용되는 알고리즘이다.

Score(Q,D)=termQIDF(term)TFIDF(term,D)(k1+1)TFIDF(term,D)+k1(1b+bD)avgdl)Score(Q, D) = \sum_{term\in Q}^{}IDF(term)\cdot \frac{TFIDF(term, D)\cdot (k_1 + 1)}{TFIDF(term, D) + k_1\cdot(1 - b + b\cdot\frac{\left | D \right |)}{avgdl})}
profile
낭만과 열정으로 뭉친 개발자 🔥

0개의 댓글