루씬 6.0이전의 기본 유사도 모델은 TF-IDF 모델이었지만 루씬 6.0이후의 기본 유사도 모델은 BM25로 변경되었다.


일래스틱서치 5.0부터 루씬 6.0을 사용하면서 기본 유사도 모델이 BM25로 변경되었다. 



BM25 외에 사용할 수 있는 다른 유사도 모델은 다음과 같다.



* TF-IDF(기존 방식) : TF-IDF 모델을 기반으로 하고 일래스틱서치 5.0 이전 버전의 기본 유사도 모델로 사용되었다. 일래스틱서치에 해당 유사도 모델을 사용하려면 classic 이름을 사용해야 한다.



* DFR(divergence from randomness) : 동일 이름의 확률적 모델을 기반으로 한다. 일래스틱서치에서 해당 유사도 모델을 사용하려면 DFR 이름을 사용해야 한다. 랜덤 유사성 모델로부터 나온 디버전스는 자연어 텍스트와 비슷한 데이터에서도 잘 동작한다고 알려져 있다.



* DFI(Divergence from independence) :  동일한 이름의 확률적 모델을 기반으로 한다. 일래스틱서치에서 해당 유사도를 사용하려면 DFI 이름을 사용해야 한다. 

참조

http://trec.nist.gov/pubs/trec21/papers/irra.web.nb.pdf



* IB(Information-based) : DFR에서 사용되는 모델과 매우 유사한다. 해당 유사도를 일래스틱서치에서 사용하려면 IB 이름을 사용해야 한다. DFR 유사도과 마찬가지로 정보 기반 모델은 자연어 텍스트와 비슷한 데이터에서 잘 수행된다고 알려져 있다.



* LM Dirichlet : Bayesian 스무딩과 Dirichlet 사전을 사용한다. 해당 유사도 모델을 사용하려면 LM Dirichlet 이름을 사용해야 한다. 

참조 

https://lucene.apache.org/core/6_2_0/core/org/apache/lucene/search/similarities/LMDirichletSimilarity.html




* LM Jelinek Mercer : Jelinek Mercer 스무딩 방법을 기반으로 한다. 해당 유사도를 사용하려면 LMJelinekMercer 이름을 사용해야 한다. 

참조https://lucene.apache.org/core/6_2_0/core/org/apache/lucene/search/similarities/LMJelinekMercerSimilarity.html







일래스틱서치에서는 유사도 모델과  관련 매개배수를 사용해 매핑할 때 유사도 모델을 설정할 수 있다.


https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html



예)


* IB 모델


"similarity" : { 

  "esserverbook_ib_similarity" : { 

    "type" : "IB", 

    "distribution" : "ll", 

    "lambda" : "df", 

    "normalization" : "z", 

    "normalization.z.z" : "0.25" 

  } 



*  LM Dirichlet 모델


"similarity" : { 

  "esserverbook_lm_dirichlet_similarity" : { 

    "type" : "LMDirichlet", 

    "mu" : "1000" 

  } 




* LM Jelinek Mercer 모델


"similarity" : { 

  "esserverbook_lm_jelinek_mercer_similarity" : { 

    "type" : "LMJelinekMercer", 

    "lambda" : "0.7" 

  } 



Posted by '김용환'
,