code

NLP 및 Elasticsearch를 사용한 의미 검색

codestyles 2021. 1. 8. 08:15
반응형

NLP 및 Elasticsearch를 사용한 의미 검색


저는 elasticsearch를 검색 서버로 실험하고 있으며 제 임무는 "의미 적"검색 기능을 구축하는 것입니다. "I have a burst pipe"와 같은 짧은 텍스트 문구에서 시스템은 사용자가 배관공을 검색하고 있음을 추론하고 elasticsearch에 색인 된 모든 배관공을 반환해야합니다.

elasticsearch와 같은 검색 서버에서 직접 수행 할 수 있습니까? 아니면 Maui Indexer와 같은 자연어 처리 (NLP) 도구를 사용해야합니까? 내 작업, 텍스트 분류에 대한 정확한 용어는 무엇입니까? 주어진 텍스트는 검색 구문이므로 매우 짧습니다.


구현 복잡성이 다른 몇 가지 접근 방식이있을 수 있습니다.

가장 쉬운 방법 은 토픽 목록 (예 : 배관) 을 만들고 , 단어 모음 (예 : "파이프")을 첨부하고 , 대부분의 키워드로 검색 요청을 식별하고, 지정된 주제에서만 검색 topic하는 것입니다 (탄력적 검색 문서에 필드 추가 하고 설정할 수 있습니다. +검색 중 필수 ).

물론 문서가 많은 경우 주제 목록과 단어 모음을 수동으로 작성하는 데 시간이 많이 걸립니다. 기계 학습사용 하여 일부 작업을 자동화 할 수 있습니다 . 기본적으로 주제 (예 : 데이터 클러스터링 ) 를 자동으로 발견 하고 이러한 주제 중 하나로 쿼리를 분류하기 위해 단어 및 / 또는 문서 간의 거리 측정이 충분 합니다. 이러한 기술을 함께 사용하는 것도 좋은 선택 일 수 있습니다. 예를 들어 수동으로 주제를 만들고 초기 문서를 할당 할 수 있지만 쿼리 할당에는 분류를 사용할 수 있습니다. 아이디어를 더 잘 이해하려면 잠재 의미 분석 에 대한 Wikipedia의 기사를 살펴보십시오 . 또한 데이터 클러스터링문서 분류 . 그리고 예, Maui Indexer 는 이런 식으로 좋은 도우미 도구가 될 수 있습니다.

마지막으로 (단순히 용어 빈도를 사용하는 것이 아니라) 구문의 의미를 "이해"하고 적절한 주제를 검색하는 엔진을 구축 할 수 있습니다. 아마도 이것은 자연어 처리온톨로지 기반 지식 기반을 포함 할 것 입니다. 그러나 사실,이 분야는 여전히 활발한 연구 중이며 이전의 경험이 없으면 이와 같은 것을 구현하기가 매우 어려울 것입니다.


https://blog.conceptnet.io/2016/11/03/conceptnet-5-5-and-conceptnet-io/ 탐색 할 수 있습니다 .

그것은 semantic networksdistributional semantics.

대부분의 개발자가 단어 임베딩을 필요로 할 때 가장 먼저 보이는 유일한 위치는 분산 의미론에서 단어 임베딩을 계산하는 Google의 신경망 알고리즘 인 word2vec입니다. 즉, 주변의 다른 단어에서 문장의 단어를 예측하는 방법을 배우고 임베딩은 최상의 예측을 만드는 단어의 표현입니다. 그러나 테라 바이트 단위의 텍스트 이후에도 분산 의미론만으로는 배울 수없는 단어 의미의 측면이 있습니다.

일부 결과

ConceptNet 5.5에 내장 된 ConceptNet Numberbatch 단어 임베딩은 이전 시스템보다 이러한 SAT 비유를 더 잘 해결합니다. 문제의 56.4 %가 정답입니다. 가장 유사한 이전 시스템 인 Turney의 SuperSim (2013)은 54.8 %를 얻었습니다. 그리고 우리는 SAT 비유에서 "인간 수준"의 성과에 점점 더 가까워지고 있습니다. 특히 똑똑한 인간은 물론 더 많은 질문을 올바르게받을 수 있지만 평균 대학 지원자는 57.0 %를 얻습니다.


시맨틱 검색은 기본적으로 의미 검색입니다. Elasticsearch는 기본적으로 JSON 직렬화를 사용하므로 JSON에 의미가있는 검색을 적용하려면 JSON-LD를 통해 에지 관계를 지원하도록 확장해야합니다. 그런 다음 JSON-LD 스키마를 통해 의미 론적 분석을 적용하여 단어 명확성 배관공 엔티티 및 버스트 파이프 컨텍스트를 주제, 술어, 객체 관계로 사용할 수 있습니다. Elasticsearch는 의미 론적 검색 지원이 매우 약하지만 패싯 검색 및 단어 모음을 사용하여 탐색 할 수 있습니다. 배관 용어에 대한 동의어 사전 스키마를 인덱싱 한 다음 문장의 텍스트 구문에 대해 의미 일치를 수행 할 수 있습니다.


"Elasticsearch 7.3은 벡터 필드를 사용한 텍스트 유사성 검색을 도입했습니다 . " .

이러한 종류의 의미 유사성 측정을 구현하기 위해 텍스트 임베딩 (예 : 단어 임베딩문장 임베딩 )을 사용하는 응용 프로그램을 설명합니다 .

참조 URL : https://stackoverflow.com/questions/8772692/semantic-search-with-nlp-and-elasticsearch

반응형