Post

텍스트 검색 알고리즘 : TF-IDF와 BM25

TF-IDF

  • TF-IDF(Term Frequency-Inverse Document Frequency)는 텍스트 분석에서 널리 사용되는 통계적 가중치 척도
  • 문서 내에서 특정 단어의 중요성을 평가하는 데 사용함.

TF (Term Frequency)

  • 특정 문서 내에서 단어의 출현 빈도를 측정
  • TF(w, d) = (문서 d 내에서 단어 w의 등장 횟수) / (문서 d의 총 단어 수)

[!info] 다양한 TF 계산 방식

  • 분모를 (문서 d에서 가장 많이 등장한 단어의 등장 횟수) 로 변경하여 normalize 하는 경우도 있다. (Normalized Frequency)
  • 이 외에도 Boolean Frequency, Log-scale Frequency 등의 방법이 있다.

IDF (Inverse Document Frequency)

  • 전체 문서 집합에서 특정 단어의 희소성을 측정
  • IDF(w) = log(총 문서 수 / 단어 w를 포함한 문서 수)

TF-IDF 값

  • TF-IDF(w, d) = TF(w, d) * IDF(w)
  • 값이 클 수록 해당 단어가 특정 문서에서 더 중요하다고 판단

[!info] 즉 TF-IDF(w, d) 값은, 문서 d 내에서는 많이 등장하며 전체 문서들에서는 적게 등장해야 높다.

[!info] 쿼리가 여러 단어로 이루어져 있을 때
각각의 단어에 대해 TF-IDF를 계산하고 이를 합산해 문서의 랭킹을 매긴다.

한계

  • 문서 길이를 고려하지 않음 (BM25에서 보완)
  • 조정 가능한 매개변수가 없어 모델 튜닝이 제한적 (BM25에서 보완)

BM25

  • TF-IDF의 개선판.
  • 검색 분야에서 많이 사용되는 랭킹 함수 알고리즘
  • 문서와 검색 쿼리 간의 관련성을 평가하는 데 사용됨.
  • TF-IDF 계열의 검색 알고리즘 중 SOTA
  • ES에서도 default 유사도 알고리즘으로 BM25 사용 중

input

  • TF, IDF 뿐만 아니라 추가로 문서 길이도 고려함.

참고

  • https://littlefoxdiary.tistory.com/12
  • 소응 - 추천시스템 - ch09 참고
This post is licensed under CC BY 4.0 by the author.