텍스트 검색 알고리즘 : 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.