cs Okapi BM25란 무엇인가? (TF-IDF와 비교)
본문 바로가기
  • 매일 한걸음씩
  • 매일 한걸음씩
개발/NLP(Natural Language Processing)

Okapi BM25란 무엇인가? (TF-IDF와 비교)

by 시몬쯔 2020. 7. 29.
728x90

이 포스팅은 Kaggle의 한 notebooks를 보고 추천시스템 공부를 하는 와중에 bm25가 나와서 정리해보고자 작성하게 되었다.


먼저 BM25의 정의를 보자.
en.wikipedia.org/wiki/Okapi_BM25

Okapi BM25 - Wikipedia

In information retrieval, Okapi BM25 (BM is an abbreviation of best matching) is a ranking function used by search engines to estimate the relevance of documents to a given search query. It is based on the probabilistic retrieval framework developed in the

en.wikipedia.org


BM25ranking function 종류 중 하나로 주어진 search쿼리에 대한 문서들의 연관성을 측정하는 함수이다.

먼저 TF-IDF 함수를 살펴보면,

TF-IDF 는 IDF와 TF를 곱한 값인데 TF는 다음과 같다.

IDF는 BM25에서도 쓰이니 TF만 살펴보자.
여러 종류의 TF가 있다. 간단하게 특정 단어가 문서내에 있다면 1, 없다면 0을 주는 방법이나, 등장 횟수를 사용하는 방법등이 있다.
이렇게 TF는 단어 등장 횟수인 ft,d을 이용하는 대신 BM25에는 문서 전체 길이 또한 반영한다.

BM25식을 살펴보면,

사실 이름만 다르지 식으로서는 TF-IDF와 크게 다르지 않다.

f(qi, D)는 문서 D에 있는 qi의 빈도이고 |D|는 문서 D의 길이를 뜻한다. 또한 avgdl는 문서들의 평균 길이이다.
k1, b는 free parameters를 뜻한다. 주로 k1는 [1.2, 2.0]에 있고 b는 0.75로 선택된다.

IDF(qi)는 qi term에 대한 IDF(inverse document frequency) weight이다.

여기서 N는 전체 문서의 수를 뜻하고 n(qi)는 qi를 포함하는 문서들의 수를 뜻한다.




정리해보자면,


1. BM25는 문서 A와 B의 검색어 빈도수가 같을 때 문서의 길이가 길수록 낮은 score를 가진다.( |D|가 식의 분모에 있으므로...)
2. 다른 문서에 잘 등장하지 않는 단어 a를 포함한 문서는 a의 빈도수가 높지 않아도 높은 score를 가진다.

728x90

댓글