주어진 도메인에 대한 의미 검색을 작성하는 방법


19

데이터 세트에서 시맨틱 검색을 수행하려는 위치에서 해결하려는 문제가 있습니다. 예를 들어, 도메인 특정 데이터 (예 : 자동차에 관한 문장)

우리의 데이터는 문장의 한 묶음이며 우리가 원하는 것은 문구를주고 다음과 같은 문장을 다시 얻는 것입니다.

  1. 그 문구와 비슷
  2. 문구와 유사한 문장의 일부가 있음
  3. 문맥 상 유사한 의미를 갖는 문장


"구매 경험"이라는 문구를 검색한다고 가정하면 다음과 같은 문장이 표시됩니다.

  • 자동차 구매에 서명하고 구매하는 데 30 분도 걸리지 않을 것이라고 생각한 적이 없습니다.
  • 내가 좋아하는 자동차를 찾았고 구매 과정이
    간단하고 쉬웠다

  • 나는 자동차 쇼핑을하는 것을 절대적으로 싫어했지만 오늘 나는 기뻤다.


나는 우리가 단지 무차별적인 단어 검색이 아니라 문맥상의 유사성을 찾고 있다는 사실에 중점을두고 싶습니다 .

문장이 다른 단어를 사용하면 그것을 찾을 수 있어야합니다.

우리가 이미 시도한 것들 :

  1. Open Semantic Search 여기서 직면 한 문제는 우리가 보유한 데이터에서 온톨로지를 생성하거나 관심있는 다른 영역에서 사용 가능한 온톨로지를 검색하는 것입니다.

  2. Elastic Search (BM25 + Vectors (tf-idf)), 우리는 몇 문장을 제공했지만 정밀도는 그다지 좋지 않은 곳에서 이것을 시도했습니다. 정확도도 나빴습니다. 우리는 인간이 다루는 데이터 세트에 대해 시도했지만 문장의 약 10 % 만 얻을 수있었습니다.

  3. 우리는 문장- 변형기에서 한 번 언급 한 것과 같은 다른 삽입을 시도 했으며 또한 예제를 통해 인간이 만든 세트에 대해 평가를 시도했으며 정확도도 매우 낮았습니다.

  4. 우리는 ELMO를 시도했다 . 이것은 우리가 예상했던 것보다 낫지 만 여전히 정확도가 낮으며 코사인 값을 결정하는인지 부하가 ​​있습니다. 이것은 포인트 3에도 적용됩니다.

도움을 주시면 감사하겠습니다. 미리 도움을 주셔서 감사합니다


잘 쓰여진 질문-검색어의 5 가지 예를 더 추가 할 수 있습니까? 항상 1 ~ 3 개의 단어 문구입니까, 아니면 검색어가 더 길 수 있습니까? 당신은 바른 길
Adnan S

안녕하세요 Adnan, 검색어는 항상 1 ~ 3 단어입니다. 예 : 구매 경험, 운전의 안락함, 인포테인먼트 시스템, 인테리어, 마일리지, 성능, 편안한 좌석, 직원 행동.
Jickson

이 문서에서는 경우에 흥미로운 일이 될 수 있습니다 elastic.co/blog/...을 (힌트 : 레버리지 word2vec)

@Val 이것은 당신이 언급 한 것과 동일한 기사를 언급 한 다음 의견을 보았습니다. 나는이 방법이 당신이 원하는 것에 더 가까이 갈 것이라고 생각합니다.
nima

코사인 유사성을 조사하고 싶을 수도 있습니다. 아래에서 설명하는 것처럼 문자열을 2D 공간으로 표현할 수있는 벡터로 변환하는 작업이 포함됩니다. 이 두 벡터의 코사인 각도가 계산됩니다. 이 각도는 두 문자열 사이의 "유사성"을 나타냅니다. 여기에 좋은 기사가 있습니다. medium.com/swlh/playing-with-word-vectors-308ab2faa519
sagar1025

답변:


5

의미 검색 시스템을 구축하는 방법에 대한 Trey Grainger의 강의 => https://www.youtube.com/watch?v=4fMZnunTRF8 을 시청하는 것이 좋습니다 . 그는 시맨틱 검색 시스템의 구조와 최종 솔루션을 제공하기 위해 함께 사용되는 각 조각에 대해 이야기합니다.

문맥 상 유사성의 좋은 예는 Bing의 검색 엔진입니다. 여기에 이미지 설명을 입력하십시오

원래 검색어에는 {통조림 음료수}라는 용어가 포함되어 있으며 bing의 검색 결과는 {통조림 음료수 음료수}, {소프트 드링크}, {개방되지 않은 실내 온도 팝} 또는 {탄산 음료수}를 참조 할 수 있습니다. 빙은 어떻게 했습니까? :

음, 비슷한 의미를 가진 단어는 비슷한 벡터를 얻습니다. 그런 다음이 벡터를 2 차원 그래프로 투영하여 쉽게 시각화 할 수 있습니다. 이러한 벡터는 비슷한 의미의 단어가 서로 물리적으로 가까이 있도록하여 훈련됩니다. GloVe 모델 을 훈련하여 자신 만의 벡터 기반 모델을 훈련시킬 수 있습니다여기에 이미지 설명을 입력하십시오

벡터의 거리가 멀수록 멀수록 좋습니다. 이제 벡터의 거리를 기준으로 가장 가까운 인접 쿼리를 검색 할 수 있습니다. 예를 들어, {동물이 내 정원을 파괴하지 못하게하는 방법} 쿼리에 대해 가장 가까운 이웃은 다음과 같은 결과를 제공합니다.

여기에 이미지 설명을 입력하십시오

여기에서 자세히 알아볼 수 있습니다. 귀하의 경우 문장의 벡터가 문맥 상 유사한 문장으로 간주되도록 원래 검색 쿼리에서 문장의 벡터가 될 수있는 최대 거리에 대한 임계 값을 찾을 수 있습니다.

LSI (Latent Semantic Indexing)와 같은 것을 사용하여 어휘 차원을 줄임으로써 상황의 유사성을 수행 할 수도 있습니다. 파이썬 에서이 작업을 수행하려면 Python의 genism 라이브러리를 확인하십시오 : https://radimrehurek.com/gensim/about.html .


1

이 문제를 해결하기 위해 Weaviate 를 살펴 보는 데 관심이있을 수 있습니다 . 데이터 객체벡터화를 기반으로하는 스마트 그래프 입니다.

도메인 별 언어 (예 : 약어)가있는 경우 사용자 정의 개념으로 Weaviate를 확장 할 수 있습니다 .

시맨틱 검색 기능으로 문제를 해결할 수 있습니다 (예 : Explore{} 또는 자동 분류 기능을 사용 있습니다.

탐색 기능

모든 데이터 객체가 벡터화되므로 다음과 같은 의미 검색을 수행 할 수 있습니다 (이 예제는 docs에서 온 것이므로 GraphQL을 사용하여 여기에서 시도해 볼 수 있음).

{
  Get{
    Things{
      Publication(
        explore: {
          concepts: ["fashion"],
          certainty: 0.7,
          moveAwayFrom: {
            concepts: ["finance"],
            force: 0.45
          },
          moveTo: {
            concepts: ["haute couture"],
            force: 0.85
          }
        }
      ){
        name
      }
    }
  }
}

예를 들어 클래스 이름 "문장"을 기반으로 그래프 스키마 를 구성 하면 유사한 쿼리가 다음과 같이 보일 수 있습니다.

{
  Get{
    Things{
      Sentence(
        # Explore (i.e., semantically) for "Buying Experience"
        explore: {
          concepts: ["Buying Experience"]
        }
        # Result must include the word "car" 
        where: {
          operator: Like
          path: ["content"]
          valueString: "*car*"
        }
      ){
        content
      }
    }
  }
}

참고 : 그래프를 탐색
할 수도 있습니다 전체적으로 의미 적으로 .

자동 분류

대안은 상황에 맞는 작업을 할 수 있습니다. 또는 KNN 분류 기능을 있습니다.

귀하의 경우, 문장 클래스를 사용하여 Experience라는 클래스와 관련시킬 수 있습니다. buying (물론 선택할 수있는 다른 많은 구성과 전략이 있습니다).

PS :
이 비디오 는 당신이 원한다면 조금 더 많은 맥락을 제공합니다.


0

내가 아는 한 시맨틱 검색 엔진을 구축하기위한 이론적 모델이 없다고 생각합니다. 그러나 시맨틱 검색 엔진은 현재의 특정 요구 사항을 충족하도록 설계되어야한다고 생각합니다. 그러나 사용자의 의도와 검색어의 문맥을 성공적으로 이해할 수있는 의미 론적 검색 엔진은 자연어 처리 (NLP) 및 기계 학습과 함께 빌딩 블록으로 작동해야합니다.

검색 엔진이 검색 도구와 다르게 작동하더라도 엔터프라이즈 검색 도구를 참조하여 작동하는 의미 론적 검색 모델에 대한 아이디어를 얻을 수 있습니다. 3RDi Search와 같은 새로운 시대 플랫폼은 시맨틱 검색의 원칙에 따라 작동하며 기업이 처리해야하는 비정형 데이터에 대한 이상적인 솔루션으로 입증되었습니다. Google은 검색 엔진에 고급 의미론을 도입하기 위해 모델을 개발하고있을 가능성이 높습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.