2014-04-24 2 views
13

elasticsearch에서 인덱싱 된 두 문서의 유사성을 계산하고 싶습니다. 용어 벡터를 사용하여 lucene에서 수행 할 수 있음을 알고 있습니다. 직접적인 방법은 무엇입니까?문서 ElasticSearch의 유사성

내가 유사성 모듈이하고 있다는 것을 발견 정확히 : http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-similarity.html

가 어떻게 내 시스템이 통합합니까? elasticsearch 명령을 호출하기 위해 pyelasticsearch를 사용하고 있지만 필요할 경우 유사성을 위해 REST API를 사용하고 있습니다.

+0

내가 나에게 당신이 질문을주고, 내 대답은 도움 바랍니다 :

여기에 대략 KNN 솔루션의 평가를위한 훌륭한 자원이다. –

+0

@ Michaelatqbox.io 대답은 내가 직면하고있는 문제를 해결하지 못했습니다. MLT 쿼리와 MLT API 모두 "가까운"문서를 검색하는 데 도움이됩니다. 두 문서 사이의 친밀도를 측정하고 싶습니다. 첫 번째 문제는 더 어렵다는 것을 알아야하지만 두 번째 문제를 해결할 방법이 없습니다. 귀하의 회신을 기대하겠습니다. 이 문제는 http://grokbase.com/t/gg/elasticsearch/131b9aa8xg/term-vectors-for-computing-document-similarity –

+0

에도 기록됩니다. Javanna는 MLT 쿼리와 MLT API의 차이점에 대한 훌륭한 글을 가지고 있습니다. . 이렇게하면 차이를 분명히하고 작동 방식에 대한 자세한 정보를 얻을 수 있습니다. http://stackoverflow.com/a/15320512/3075507 –

답변

5

나는 Elasticsearch 문서가 쉽게 잘못 해석 될 수 있다고 생각합니다.

여기 "유사성"은 문서 또는 입력란을 비교하는 것이 아니라 쿼리와 일치하는 용어를 기반으로 일치하는 문서를 채점하는 메커니즘입니다.

문서 상태 : Elasticsearch 지지체가 코퍼스 (인덱스)의 기간에 기초하여 확률 분포 모델이다

A similarity (scoring/ranking model) defines how matching documents are scored.

유사성 알고리즘.

용어 벡터와 관련하여 이것은 또한 잘못 해석 될 수 있습니다.

여기에서 "용어 벡터"는 쉽게 쿼리 할 수있는 문서의 용어에 대한 통계를 나타냅니다. 용어 벡터에 걸친 유사성 측정은 응용 프로그램의 사후 쿼리에서 수행되어야합니다. 용어에 대한 문서는 벡터 상태 :

Returns information and statistics on terms in the fields of a particular document.

매우 큰 신체 이상 메트릭 성능이 좋은 (빠른) 유사성을해야 할 경우 인덱스에 저장된 문서의 낮은 순위 삽입을 고려해 볼 수 있습니다 대략적인 가장 가까운 이웃 탐색을 수행하기 위해. 후보 집합을 크게 줄이는 KNN 조회 후에는 순위에 대해 더 많은 비용이 드는 메트릭 계산을 수행 할 수 있습니다. https://github.com/erikbern/ann-benchmarks