2016-09-11 12 views
2

내가 문장을 말 : "요한은 그의 람보르기니 갈라보다 더 자신의 람보르기니 우라 칸에 자신의 애완 동물 을 좋아하는"나는, "람보르기니"를 포함하는 사전을 가지고 " Lamborghini Gallardo "와"Lamborghini Huracan "이있다. "Lamborghini Gallardo"와 "Lamborghini Huracan"이라는 문구가 일치하고 다른 부분 일치 인 "Lamborghini"와 "lamb"이라는 용어를 얻는 좋은 방법은 무엇입니까? 각 키워드에 대한 문구 일치를 선호합니다.부분과 전체 구문 검색

탄성 검색은 정확한 용어 일치, 일치 구문 및 부분 일치를 제공합니다. 정확한 단어는 분명히 여기서 작동하지 않으며, 전체 문장은이 경우 구문으로 간주되기 때문에 일치 문구도 사용되지 않습니다. 나는 그 문장에 관심있는 키워드 만 있다면 부분 일치가 적절하다고 생각한다. 이전 SO 스레드를 거치면서 관련성이있는 것으로 보이는 proximity for relevance을 발견했습니다. 임계 값 설정이 필요하기 때문에 이것이 '최상의 옵션'인지 확실하지는 않습니다. 또는 elasticsearch보다 더 간단하고 나은 대안이 있다고해도 (데이터베이스에 대한 간단한 키워드 매칭보다는 전체 텍스트 검색에 더 많은 것처럼 보입니다)? 당신이 통제 어휘 (업계 용어 및 구문에 당신의 사전)를 사용하여 문서에서 keyphrase를 추출을 수행하고 싶습니다처럼

답변

2

는 소리가 난다.

[위 기울임 꼴 용어는 당신이에 관련된 답변을 찾을 수 있도록 SO와 구글]


분석이 수준의 자연 언어 처리 스택으로 검색 스택 밖으로 조금 걸립니다. NLP는 리소스를 많이 사용하는 경향이 있으므로 오프라인에서 또는 검색 응용 프로그램의 경우 인덱스 시간에 발생하는 경향이 있습니다.

이를 구현하려면 거라고 :

  1. 각 문서에 대한 인식 키 문구의 목록을 생성하는 검색 인덱싱 코드로하는 keyphrase를 추출 도구를 통합 할 수 있습니다.
  2. shingles과 같은 주요 구문을 새로운 Elasticsearch 필드에 인덱싱하십시오.
  3. 쿼리 시간에 검색된 필드 목록에이 shingleled keyphrase 필드를 포함하십시오.

통제 된 keyphrase 추출에 도움이되는 빠른 승리 도구는 KEA (java로 작성)을 확인하십시오.

(당신도 아마 자신을 쓸 수 있지만, 당신은 또한 조절되지 않는 주요 구문을 추출하기 위해 희망하는 경우 (물론, 훈련 추출기가 더 나은 서비스를 제공하지 않습니다) 사전에. More tools here합니다.)

+0

이 주셔서 감사합니다 귀하의 정보 회신 Peter. 내 어휘에는 (문서가 아닌) 일치시키려는 키워드와 구가 포함되어 있으므로 데이터베이스 대상에 대상 포진은 필요하지 않습니다. 나는 대상 포진을 다른 방향으로 돌리는 것을 생각하고있었습니다. 사용자 대상 검색 대상에서 대상 포진을 생성 한 다음 이들 대상 포진과의 '정상적인'완전 일치 검색을 수행하여 bigram 또는 trigram을 식별하거나 부분 일치 및 가장 긴 일치 대상 포진 (기본적으로 완료 됨)에 대한 점수를 높일 수 있습니다. 그렇게하면 철자 오류를 확인할 수있을뿐만 아니라 키 구문을 확인할 수 있습니다. 이게 말이 돼? – dter

+1

수정하십시오.대상 포진은 키 프레이즈 내에서 단일 용어와 일치하지 않도록 쿼리 측면에서 도움이됩니다. 어구 쿼리와 비슷한 것을 할 수도 있지만, 검색자가 입력 한 검색어를 제어 할 수 없기 때문에 대상 포진이 원하는 위치에 가까워 질 수도 있습니다. –

+0

필자는 대상 포진이 bigrams/trigram 매칭을 가능케하고, 퍼지 필터가 오타를 허용하고, 가장 근접한 것을 제공하고, 동의어가 동의어와 잘 일치하기를 바라고있다. 이 접근 방식이 명명 된 엔티티 인식 모델을 교육하는 데보다 간단하고 더/동등하게) 효과적인 지 궁금합니다 ... – dter