KR20190139970A - 쿼리 세그먼트화를 위한 방법 및 시스템 - Google Patents

쿼리 세그먼트화를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20190139970A
KR20190139970A KR1020197033803A KR20197033803A KR20190139970A KR 20190139970 A KR20190139970 A KR 20190139970A KR 1020197033803 A KR1020197033803 A KR 1020197033803A KR 20197033803 A KR20197033803 A KR 20197033803A KR 20190139970 A KR20190139970 A KR 20190139970A
Authority
KR
South Korea
Prior art keywords
query
tokens
token
hardware processors
classifier
Prior art date
Application number
KR1020197033803A
Other languages
English (en)
Other versions
KR102402340B1 (ko
Inventor
아인캬 고라크나쓰 케일
트리비크라마 타우라
아미트 스리바스타바
산지카 휴아비타라나
Original Assignee
이베이 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이베이 인크. filed Critical 이베이 인크.
Publication of KR20190139970A publication Critical patent/KR20190139970A/ko
Application granted granted Critical
Publication of KR102402340B1 publication Critical patent/KR102402340B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3334Selection or weighting of terms from queries, including natural language queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N5/003
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

쿼리 세그먼트화를 위한 방법들 및 시스템들이 개시된다. 일 양태에서, 방법은 하나 이상의 하드웨어 프로세서에 의해, 쿼리 스트링을 수신하는 단계 - 쿼리 스트링은 복수의 토큰을 포함함 -, 하나 이상의 하드웨어 프로세서에 의해, 복수의 토큰으로부터 제1 토큰 및 제2 토큰을 식별하는 단계, 하나 이상의 하드웨어 프로세서에 의해, 제1 토큰 및 제2 토큰과 제각기 연관된 제1 벡터 및 제2 벡터를 결정하는 단계, 하나 이상의 하드웨어 프로세서에 의해, 제1 및 제2 벡터들에 기초하여 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계, 하나 이상의 하드웨어 프로세서에 의해, 결정에 기초하여 복수의 쿼리 세그먼트를 생성하는 단계; 및 하나 이상의 하드웨어 프로세서에 의해, 복수의 쿼리 세그먼트에 기초하여 쿼리를 처리하는 단계를 포함한다.

Description

쿼리 세그먼트화를 위한 방법 및 시스템
본 개시내용은 일반적으로 텍스트 처리에 관한 것으로, 구체적으로는 검색 쿼리들의 처리에 관한 것이다.
인터넷의 사용이 전 세계에 걸쳐 더 널리 보급됨에 따라, 정보에 대한 쿼리들은 많은 인터넷 기반 서비스들에 액세스하는데 있어서 핵심이 되고 있다. 이러한 서비스들은 결과적인 검색의 정확도를 향상시키기 위해 쿼리를 세그먼트화할 수 있다. 예를 들어, 온라인 쇼핑객은 온라인으로 쇼핑할 때 "긴 소매 여름 드레스(long sleeve summer dress)"와 같은 쿼리를 입력할 수 있다. 쇼핑객은, 단어 "긴" 및 "드레스" 모두가 쿼리에 포함되어 있기는 하지만, 긴 드레스를 찾고 있지 않을 수 있다. 대신에, "긴"은 쿼리가 처리될 때 "소매"와 가장 잘 연관될 수 있다. 쿼리 프로세서가 쿼리 내의 토큰들 사이의 적절한 연관성들을 정확하게 결정하는 정도에 커짐에 따라서, 결과적인 검색 결과들은 사용자의 요구들을 충족시킬 가능성이 더 클 수 있다.
세그먼트화된 쿼리는 또한 추가적인 백 엔드 처리 활동들을 위해 활용되어, 정확한 쿼리 세그먼트화의 중요도를 더 강조할 수 있다. 예를 들어, 세그먼트화된 쿼리는 수위 또는 우세 대상 검출("드레스"), 양상 예측, 및 쿼리 단편 검출을 결정할 수 있다. 적절한 쿼리 세그먼트화의 중요성으로 인해, 쿼리 세그먼트화의 정확도에 대한 추가의 기술적 개선이 필요하다.
쿼리 세그먼트화는 정보 검색 작업에 대한 사용자의 의도를 이해하는 하나의 요소이다. 쿼리 세그먼트화는 검색 쿼리에서의 토큰들을 단어들의 의미있는 문구들로 분리하는데, 이는 다운스트림 작업들이 관련성을 개선하는 것을 돕는다. 개시된 방법들 및 시스템들은 단어 임베딩 모델을 사용하는 것에 의해 더 정확하고 효과적인 쿼리 세그먼트화 솔루션을 제공한다. 개시된 방법들 및 시스템들은 다른 세그먼트화 기술들과 비교할 때 우수한 실효성을 제공한다. 이러한 실효성은 또한 eBay로부터의 3개월의 쿼리 레코드들로 이루어진 훈련 데이터 세트를 이용하여 입증된다.
개시된 일 양태는 쿼리를 세그먼트화하는 방법이다. 이 방법은, 하나 이상의 하드웨어 프로세서에 의해, 쿼리 스트링을 수신하는 단계 -쿼리 스트링은 복수의 토큰을 포함함 -, 하나 이상의 하드웨어 프로세서에 의해, 복수의 토큰으로부터 제1 토큰 및 제2 토큰을 식별하는 단계, 하나 이상의 하드웨어 프로세서에 의해, 제1 토큰 및 제2 토큰과 제각기 연관된 제1 벡터 및 제2 벡터를 결정하는 단계, 하나 이상의 하드웨어 프로세서에 의해, 제1 및 제2 벡터들에 기초하여 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계; 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 결정에 기초하여 상기 단일 쿼리 세그먼트를 포함하는 복수의 쿼리 세그먼트를 생성하는 단계; 및 하나 이상의 하드웨어 프로세서에 의해, 복수의 쿼리 세그먼트에 기초하여 쿼리를 처리하는 단계를 포함한다.
본 방법의 일부 양태들은 또한 제1 벡터와 제2 벡터를 연쇄(concatenate)시킴으로써 특징을 생성하는 단계, 특징을 이진 분류기에 전달함으로써 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계, 및 제1 및 제2 토큰들이 이진 분류기로부터 단일 쿼리 세그먼트에 있는지의 표시를 수신하는 단계를 포함한다. 일부 양태들에서, 방법은 또한 제1 및 제2 벡터들을 포함하는 모델 데이터를 생성하기 위해 복수의 훈련 쿼리에 기초하여 벡터 모델을 구축하는 단계를 포함한다. 일부 양태들에서, 벡터 모델은 word2vec 또는 GloVe 모델이다. 일부 양태들에서, 방법은 모델 데이터에 기초하여 분류기를 훈련하는 단계를 포함하고, 여기서 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함할지의 결정은 훈련된 분류기에 기초한다. 이러한 양태들 중 일부에서, 방법은 훈련 쿼리들의 세그먼트화를 정의하는 주석 데이터에 기초하여 분류기를 훈련하는 단계를 또한 포함한다. 일부 양태들에서, 처리는 복수의 쿼리 세그먼트에 기초하여 데이터베이스를 검색하는 것을 포함한다.
개시된 또 다른 양태는 쿼리를 세그먼트화하기 위한 장치이다. 이 장치는, 쿼리 스트링을 수신하고 - 쿼리 스트링은 복수의 토큰을 포함함 -, 복수의 토큰으로부터 제1 토큰 및 제2 토큰을 식별하고, 제1 토큰 및 제2 토큰과 제각기 연관된 제1 벡터 및 제2 벡터를 결정하고, 제1 및 제2 토큰들에 기초하여 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함할지를 결정하고, 결정에 기초하여 복수의 쿼리 세그먼트를 생성하고 및 복수의 쿼리 세그먼트에 기초하여 쿼리를 처리하도록 구성된 하나 이상의 하드웨어 프로세서를 포함한다. 일부 양태들에서, 하나 이상의 하드웨어 프로세서는 제1 및 제2 벡터들을 포함하는 모델 데이터를 생성하기 위해 복수의 훈련 쿼리에 기초하여 벡터 모델을 구축하도록 추가로 구성된다. 일부 양태들에서, 벡터 모델은 word2vec 또는 GloVe 모델이다.
일부 양태들에서, 하나 이상의 하드웨어 프로세서는 제1 특징 및 제2 특징을 제각기 생성하기 위해 제1 벡터 및 제2 벡터를 패딩(pad)하도록 추가로 구성되고, 여기서 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지의 결정은 제1 및 제2 특징들에 기초한다. 일부 양태들에서, 하나 이상의 하드웨어 프로세서는 모델 데이터에 기초하여 분류기를 훈련하도록 추가로 구성되고, 여기서 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 것은 훈련된 분류기에 기초한다. 일부 양태들에서, 하나 이상의 하드웨어 프로세서는 훈련 쿼리들의 세그먼트화를 정의하는 주석 데이터에 기초하여 분류기를 훈련하도록 추가로 구성된다. 일부 양태들에서, 하나 이상의 하드웨어 프로세서는 제1 및 제2 토큰들의 식별을 복수의 토큰에서의 인접한 토큰들에 제한하도록 추가로 구성된다. 일부 양태들에서, 처리는 복수의 쿼리 세그먼트에 기초하여 데이터베이스를 검색하는 것을 포함한다. 이러한 양태들 중 일부에서, 처리는 복수의 쿼리 세그먼트 중 우세 쿼리 세그먼트를 식별하는 것, 및 우세 쿼리 세그먼트에 기초하여 데이터베이스를 검색하는 것을 포함한다. 장치의 일부 양태들에서, 하나 이상의 하드웨어 프로세서는 제1 토큰과 제2 토큰 사이에서 문자들의 경계를 정하는 하나 이상의 토큰에 기초하여 쿼리 스트링에서 제1 토큰 및 제2 토큰을 식별하도록 추가로 구성된다.
개시된 또 다른 양태는 실행될 때 하나 이상의 하드웨어 프로세서를 구성하여 쿼리를 세그먼트화하는 방법을 수행하게 하는 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체이다. 방법은, 하나 이상의 하드웨어 프로세서에 의해, 쿼리 스트링을 수신하는 단계 - 쿼리 스트링은 복수의 토큰을 포함함 -, 하나 이상의 하드웨어 프로세서에 의해, 복수의 토큰으로부터 제1 토큰 및 제2 토큰을 식별하는 단계, 하나 이상의 하드웨어 프로세서에 의해, 제1 토큰과 제2 토큰과 제각기 연관된 제1 벡터 및 제2 벡터를 결정하는 단계, 제1 및 제2 벡터들에 기초하여 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계, 결정에 기초하여 복수의 쿼리 세그먼트를 생성하는 단계, 및 하나 이상의 하드웨어 프로세서에 의해, 복수의 쿼리 세그먼트에 기초하여 쿼리를 처리하는 단계를 포함한다.
첨부된 도면들 중 다양한 것들은 본 개시내용의 예시적인 실시예들을 나타낸 것에 불과하며 그의 범위를 제한하는 것으로 간주될 수 없다.
도 1은 텍스트 필드에 입력될 수 있는 예시적인 쿼리 스트링(105)을 도시한다.
도 2는 쿼리 세그먼트화 시스템에 대한 예시적인 데이터 흐름도이다.
도 3a는 쿼리를 세그먼트화하기 위해 분류기를 활용하는 방법이다.
도 3b는 분류기를 훈련하는 방법의 흐름도이다.
도 4는 쿼리 세그먼트화 방법의 흐름도이다.
도 5a는 쿼리 세그먼트화의 예시적인 방법의 흐름도이다.
도 5b는 개시된 양태들 중 일부에 대한 주석자 합의 분포를 도시하는 그래프이다.
도 5c는 AOL 데이터세트에 대한 주석자 합의를 도시한다.
도 6은 예시적인 실시예들에 따라, 시각화 시스템이 동작할 수 있는 네트워크 환경을 예시하는 네트워크도이다.
도 7은 일부 실시예들에 따라, 머신 판독가능 매체로부터 명령어들을 판독하여 본 명세서에서 논의되는 방법론들 중 임의의 것을 수행할 수 있는 머신의 컴포넌트들을 예시하는 블록도이다.
도 8은 본 명세서에서 다양한 하드웨어 아키텍처들과 연계하여 사용될 수 있는 대표적인 소프트웨어 아키텍처를 예시하는 블록도이다.
이제, 본 발명 대상을 수행하기 위한 특정 예시적인 실시예들을 상세히 참조할 것이다. 이 특정 실시예들의 예들이 첨부 도면들에 예시되어 있다. 이러한 예들은 청구항들의 범위를 예시된 실시예들로 제한하는 것으로 의도되지 않는다는 점이 이해될 것이다. 반대로, 이들은 본 개시내용의 범위 내에 포함될 수 있는 대안들, 수정들 및 등가물들을 포괄하도록 의도된다. 이하의 설명에서, 발명 대상의 철저한 이해를 제공하기 위해 구체적인 상세 사항들이 제시된다. 실시예들은 이러한 특정 상세 사항들의 일부 또는 전부 없이 실시될 수 있다.
쿼리 세그먼트화는 정보 검색 작업들에서 사용자의 검색 의도를 이해하기 위한 하나의 요소일 수 있다. 이는 검색 쿼리에서의 토큰들을 검색 관련성 및 쿼리 이해와 같은 다운스트림 작업들에 도움이 되는 의미있는 문구들로 그룹화하는 것을 수반할 수 있다. 쿼리 세그먼트화는 검색 정밀도 및 검색 작업들을 보조하기 위해 검색 쿼리를 의미있는 연속 세그먼트들로 분할할 수 있다. 검색 엔진들은 이들이 품질 결과들을 위해 함께 유지될 필요가 있는 검색 쿼리 내의 중요한 문구들을 식별할 수 있을 때 고품질의 가장 관련성있는 결과들을 가져올 수 있다. 이것을 달성하기 위한 한가지 방식은 사용자가 문구들에 관해 명백하다면 문구들을 표시하기 위해 검색 쿼리의 세그먼트들 주위에 인용들을 추가함에 의한 것이다. 그러나, 이것은 당신이 실세계 검색 로그들에서 보는 패턴이 거의 아니다. 사용자들은 검색 엔진이 이러한 문구들을 추론하고 이해할 것을 기대한다. 이동 이름, 노래 제목, 브랜드 등과 같이 검색 동안 전체로서의 구가 함께 유지되는 것이 중요한 대부분의 경우들에서 이것은 결국 나빠진 정밀도로 끝이 난다. 긴 소매 여름 드레스를 찾는 쇼핑객을 고려하자. 쇼핑객은 주로 긴 소매를 갖는 여름 드레스를 찾을 수 있다. 기반 검색 엔진은 쿼리가 드레스에 대한 것이고 또한 구체적으로는 드레스의 추가적인 특징으로서 긴 소매를 갖는 여름 옷에 대한 것임을 알 필요가 있다. 검색 경험은 사용자가 세그먼트들 주위의 인용들 -"긴 소매" "여름" "드레스"- 로 검색한다면 상이한데, 결과들은 짧은 소매들을 갖는 긴 여름 드레스들과 매칭되는 아이템들을 사용자에게 보여주는 경우에 결코 정확하지 않다. 단어 모델의 백(bag)에서 분실되는 순서는 쿼리 세그먼트화에서 중요한 역할을 한다.
word2vec, GloVe, 및 fastext와 같은 단어 임베딩 기술들은 단어들의 저차원 공간 표현을 캡처하기 위해 개시된 방법들, 시스템들, 및 디바이스들에 의해 이용될 수 있다. 이들 표현은 이들의 윈도우 기반 훈련 스타일로 단어 컨텍스트에 대해 최적화하는 동안에 의미를 학습하는 것을 돕는다. 출력 확률들은 입력 단어에 가까운 각각의 어휘 단어를 찾을 가능성이 얼마나 되는지를 예측할 수 있다.
이 단어 임베딩 기술들은 그들의 예측들을 과거 단어들에 기초하는 대다수의 다른 벡터 기반 모델들과 상이하다. 대신에, 이 모델들은 목표 단어 전후의 단어들을 검사하여 예측을 형성한다. 이 방법은 연속적인 표현들을 이용한다는 점에서 CBOW(continuous bag of words)로 알려져 있다. 단어들의 순서는 이들 모델들에서 특별한 관련성이 없다. 일부 양태들에서, 개시된 방법들 및 시스템에 의해 스킵-그램 기술(skip-gram technique)이 이용될 수 있다. 이러한 양태들에서, 중심 단어는 주변 단어들을 예측하기 위해 이용될 수 있다.
개시된 방법들, 디바이스들, 및 시스템들은 이 컨텍스트 최적화를 이용하여 쿼리 내의 가능한 세그먼트 경계들을 식별할 수 있다. 하나의 세그먼트 n-그램에서의 단어들은 하나의 세그먼트에 속하지 않는 단어들과 비교하여 동일한 컨텍스트에서의 쿼리들에서 더 자주 등장한다. 쿼리 임베딩들은 분류기에 입력 특징들로서 제공된다. N개의 토큰의 쿼리에 대해, 토큰들 사이에 (N-1)개의 경계가 존재한다. 이진 분류기는 이들 (N-1) 세그먼트화 결정들을 행하도록 훈련된다. 훈련 쿼리들의 세트가 쿼리 로그들로부터 추출되고, 쿼리 임베딩들을 훈련하기 위해 사용된다. N개의 토큰을 갖는 쿼리 Q=W1W2W3W4...WN을 고려하자. 쿼리 세그먼트화 작업은 임의의 2개의 단어 사이의 세그먼트화 단절을 긋기 위한 독립적인 의사 결정 작업으로서 모델링될 수 있다. 일부 양태들에서, 쿼리 내의 단어들의 모든 쌍 Wi, Wi+1마다에 대해, Wi 및 Wi+1을 나타내는 2개의 벡터(각각 D 차원)를 2D 벡터가 되도록 연쇄시킨다. 이 연쇄된 벡터는 이후 이진 분류기에 입력될 수 있다. 이진 분류기는 이후 Wi와 Wi+1 사이에서 세그먼트를 분할할지의 여부를 판정한다.
일부 양태들에서, 쿼리 내의 토큰들(예를 들어, 단어들)은 서로에 대한 그들의 친화성에 기초하여 그룹화될 수 있다. 일부 양태들에서, 친화성은 쿼리들 자체를 입력하는 사용자들에 의해 이전의 쿼리들에서 단어들이 얼마나 자주 그룹화되는지에 기초할 수 있다. 일부 양태들에서, 이러한 접근법은 쿼리들 내에 입력된 단어들의 연관성들은 이들 단어들이 이전의 쿼리들에서 어느 정도의 인접성을 제공받았다면 관련될 가능성이 더 큰 것으로 인식한다. 일부 접근법들은 쿼리 내의 2개의 단어가 공통 세그먼트에 포함되어야하는지 여부를 결정하기 위해 유사도 점수의 사용에 의존할 수 있다. 예를 들어, 일부 접근법들은 쿼리에서 2개의 토큰의 유사도 점수에 대한 임계값을 결정한다. 유사도 점수가 특정 기준을 충족한다면, 2개의 토큰이 동일 세그먼트에 포함되는 반면, 유사도 점수가 제2 기준을 충족한다면, 2개의 토큰은 상이한 쿼리 세그먼트들에 포함될 수 있다.
일부 다른 구현들에서, 분류기는 이전의 쿼리들에 기초하여 훈련될 수 있다. 주석 데이터는 또한 분류기에 제공될 수 있고, 주석 데이터는 쿼리들 각각에 대한 적절한 세그먼트화를 분류기에게 표시한다. 주석 데이터는 예를 들어, 쿼리들의 인간 세그먼트화의 결과일 수 있다. 일부 양태들에서, 주석 데이터는 머신 및 인간 세그먼트화의 조합으로부터 기인할 수 있다. 이러한 훈련 데이터 및 주석 데이터로부터, 분류기는, 유사도 점수 구현에서와 같은 임의의 미리 결정된 임계값과 무관하게, 어느 토큰들이 공통 세그먼트에 포함되고 어느 토큰들이 상이한 쿼리 세그먼트들에 있는지를 학습할 수 있다. 본 발명자들은 분류기 접근법이 유사도 점수 접근법과 비교할 때 우수한 결과들을 제공한다는 것을 발견했다.
예를 들어, 한 세트의 테스트 데이터에 의해, 유사도 점수 접근법이 73.17%의 정확도를 산출하였던 반면, 분류기 접근법은 79.946%의 정확도를 산출했다. 또 다른 예에서, 유사도 점수 접근법은 79.419%의 정확도를 산출하는 반면, 분류기 접근법은 80.691%의 정확도를 산출했다.
개시된 방법들 및 시스템들은 일부 양태들에서 훈련 쿼리들의 세트를 사용하여 단어 임베딩 모델을 훈련할 수 있다. 일부 양태들에서, 워드 임베딩 모델들은 얕은 2계층 신경망들일 수 있다. 이들 모델들은 단어들의 언어적 컨텍스트를 재구성하도록 훈련될 수 있다. 일부 양태에서, 개시된 방법 및 시스템의 훈련 쿼리들은 하나 이상의 웹 응용 프로그램상에서 하나 이상의 웹 사용자에 의해 입력된 쿼리들을 포함할 수 있다. 훈련 데이터에 기초하여, 단어 임베딩 모델은 쿼리에서 2개의 토큰(예를 들어, 단어) 사이의 유사도 점수를 제공할 수 있다. 유사도 점수는 훈련 데이터에서 서로의 근접성 내에서 이들 2개의 토큰이 발견된 상대 빈도와 관계될 수 있다. 예를 들어, 2개의 단어가 훈련 데이터에서 "종종" 함께 발견되었다면(즉, 미리 결정된 임계값보다 높은 유사도 점수), 개시된 방법들 및 시스템들은 그들 단어들이 상이한 세그먼트들에 있도록 쿼리를 세그먼트화할 가능성이 더 적을 수 있다. 유사하게, 훈련 데이터에서의 근접성 내에서 2개의 단어가 덜 빈번하게 발견되었다면(즉, 미리 결정된 임계값 이하의 유사성 점수), 개시된 방법들 및 시스템들은, 일부 양태들에서, 2개의 단어가 상이한 쿼리 세그먼트들에 있도록 쿼리를 세그먼트화할 가능성이 더 클 수 있다.
도 1은 텍스트 필드(105)에 입력될 수 있는 예시적인 쿼리 스트링(105)을 도시한다. 쿼리 스트링(105)은 복수의 토큰(106a-d)을 포함한다. 토큰들은 한 세트의 토큰 경계기호들에서의 하나 이상의 문자에 의해 쿼리의 다른 문자들로부터 분리되는 쿼리 내의 2개 이상의 연속 문자일 수 있다. 한 세트의 토큰 경계기호들에서의 문자들은 실시예마다 다를 수 있지만 하나 이상의 비-영숫자 문자를 포함할 수 있다. 예를 들어, 토큰 경계기호들은 공간, 세미콜론, 콤마, 포워드 슬래시, 백워드 슬래시, 또는 다른 문자들 중 하나 이상을 포함할 수 있다. 도 1의 예에서, 토큰들은 단어들 "긴", "소매", "여름" 및 "드레스"를 포함하는, 쿼리 내의 단어들과 동등하다.
본 명세서에 개시된 방법들 및 시스템들은 식별된 토큰들(106a-d) 중 어느 것이 쿼리 스트링(105) 내의 다른 토큰들보다 서로 더 큰 친화성을 갖는지를 결정한다. 예를 들어, 도 1은 단어들 "긴" 및 "소매"가 논리적으로 그룹(115)으로 함께 그룹화될 수 있는 반면, "소매" 및 "여름"은 별개의 그룹들(150 및 130)에 배치될 수 있다는 것을 도시한다. "여름" 및 "드레스"는 또한 그룹(130)이 되도록 연관될 수 있고, "긴 소매" 및 "드레스"는 그룹(120)으로 연관될 수 있다.
도 2는 쿼리 세그먼트화 시스템(200)에 대한 예시적인 데이터 흐름도이다. 도 2는 훈련 데이터베이스(205)를 도시한다. 훈련 데이터베이스는 복수의 훈련 쿼리(210)를 포함할 수 있다. 훈련 쿼리들(210)은, 예를 들어, 하나 이상의 웹 사이트들의 사용자들에 의해 입력된 이전의 쿼리들을 포함하여 다양한 소스들로부터 취해질 수 있다. 훈련 쿼리들(210)은 "긴 소매 여름 드레스"와 같은 예시적인 쿼리(211)를 포함한다. 훈련 쿼리들(210)은 모델 훈련 프로세스(215)에 의해 훈련 데이터베이스(205)로부터 판독되어 모델 데이터 세트(220)를 생성한다. 일부 양태들에서, 모델 훈련 프로세스(215)는 다양한 양태들에서 word2vec 또는 GloVe일 수 있다. 모델 구축기(215)는 연속 벡터 공간에서 토큰들의 위치들을 나타내기 위해 벡터 공간 모델을 이용할 수 있다.
도 2는 또한 주석 데이터베이스(208)를 예시한다. 주석 데이터베이스(208)는 훈련 데이터베이스(205)에서 제공되는 쿼리들(210)에 대한 "적절한" 쿼리 세그먼트화를 정의할 수 있다. 다시 말해서, 일부 양태들에서, 주석 데이터베이스(208)에 의해 저장된 적절한 쿼리 세그먼트화는 훈련 데이터베이스(205)에서의 쿼리들(210)에 대한 인간 리뷰를 통해 결정될 수 있다. 다른 양태들에서, 훈련 데이터베이스(205)의 쿼리들(210)에 대한 적절한 쿼리 세그먼트화는 훈련 데이터베이스에서의 쿼리들(210)에 대한 쿼리 결과들의 결과들을 통한 클릭에 기초하여 결정될 수 있다.
도 2는 예시적인 쿼리(211)에 대한 예시적인 주석 데이터(209)를 도시한다. 주석 데이터(209)는 2개의 쿼리 세그먼트가 예시적인 쿼리(211)에 대한 주석(209)에 의해 식별되는 것을 도시한다. 예시적인 주석 데이터(209)에서, 주석 데이터(209)에서의 숫자의 서수 위치는 등가의 서수 위치를 갖는 예시적인 쿼리(211에서의 토큰에 대한 쿼리 세그먼트를 식별한다. 따라서, 주석 데이터(209)는 예시적인 쿼리(211)의 처음 2개의 토큰(예를 들어, "긴", 및 "소매")을 표시한다. 일부 양태들에서, 주석 데이터베이스(208)에 의해 제공되는 쿼리 세그먼트화는 개시된 방법들 및 시스템들이 달성하도록 설계되는 정확도의 레벨일 수 있다.
일부 양태들에서, 훈련 쿼리들(210)로부터 생성된 단어 임베딩 모델(220)은 삼백(350)의 벡터 크기를 이용할 수 있다. 다른 벡터 크기들이 개시된 방법들 및 시스템들 내에서 사용하기 위해 고려된다. 일부 양태들에서 최소 벡터 크기는 5일 수 있지만, 개시된 방법들 및 시스템들에서 사용하기 위해 다른 최소 벡터 크기들이 또한 고려된다.
일부 양태들에서, 모델 구축기(215)는 훈련 데이터베이스(205)의 쿼리들에서 서로의 근접성 내에서 발생할 가능성이 더 큰 단어들을 벡터 공간 내의 근처의 포인트들에 매핑하도록 개시된 방법들 및 시스템들에 의해 튜닝될 수 있다.
다양한 양태들에서, 훈련 쿼리들(210)의 수는 변할 수 있다. 일부 양태들에서, 훈련 쿼리들의 수는 1500만큼 낮을 수 있다. 일부 양태들에서, 훈련 쿼리들의 수는 30,000일 수 있다. 다른 양태들에서, 훈련 쿼리들의 수는 3천6백만일 수 있다. 1500 내지 3천6백만 범위 내에서의, 또는 이 범위의 위 또는 아래의 훈련 쿼리들의 개수들이 또한 고려된다.
모델 데이터(220)는 복수의 레코드(225)를 포함하고, 각각의 레코드는 토큰(225a)의 최소 표현 및 벡터 공간에서의 토큰(225a)에 대한 대응하는 벡터 표현(225b)을 포함한다. 모델 데이터(220)에서의 각각의 토큰(225a)은 훈련 데이터베이스(205)에 존재할 수 있다.
모델 데이터베이스(220)가 생성된 후에, 분류기(235)는 모델 데이터(220) 및 주석 데이터(208)에 기초하여 훈련될 수 있다. 예를 들어, 모델 데이터(220)를 스캐닝함으로써, 분류기는 모델 데이터(225b)에 기초하여 토큰들(225a)이 얼마나 밀접하게 서로 관계되는지를 결정할 수 있다. 또한, 일부 양태들에서, 주석 데이터(208)는 훈련 데이터(205)에서 제공되는 쿼리들에 대한 세그먼트화의 표시들을 제공한다. 이 정보로부터, 분류기는 훈련 데이터(205)에 의해 제공되는 어느 토큰들이 세그먼트에 함께 포함될 수 있는지 및 어느 토큰들이 상이한 세그먼트들에 포함될 수 있는지를 결정할 수 있다. 이 세그먼트화는 특정 쿼리에 존재하는 다른 토큰들과 같이, 컨텍스트에 좌우되어 동일한 토큰들에 대해 변할 수 있다. 일부 양태들에서, 분류기는 모델 데이터에 대해 반복할 수 있다. 예를 들어, 일부 양태들에서, 분류기를 훈련시키기 위해 20회(2)의 반복이 이용될 수 있다. 다른 양태들에서 다른 수의 반복들도 가능하다.
이어서, 분류기(235)는 "새로운" 쿼리들(예를 들어, 웹 페이지에 입력된 쿼리들)을 세그먼트화하기 위해 이용될 수 있다. 주제 쿼리(105)가 수신될 때, 모델 데이터(220)는 새로운 쿼리(105)의 토큰들과 함께 분류기(235)에 제공된다. 분류기(235)는 모델 데이터(220) 및 일부 양태들에서는 주석 데이터(208)에 기초하여 쿼리(105)를 다수의 세그먼트(240a-c)가 되도록 세그먼트화한다. 예를 들어, 일부 양태들에서, 분류기는 주제 쿼리(105)에 포함된 제1 및 제2 토큰들을 식별할 수 있다. 분류기(235)는 모델 데이터(220) 및 주석 데이터(208)에 기초하여 2개의 토큰이 밀접하게 관계되는지를 결정할 수 있다. 예를 들어, 그들의 관계는 훈련 데이터(210)에서 2개의 토큰이 서로 근접하여 얼마나 빈번하게 발생했는지에 기초할 수 있다. 일부 양태들에서, 그들의 관계는 주석 데이터(208)에 기초하여 토큰들이 세그먼트화되거나 세그먼트화되지 않는 방법에 기초할 수 있다.
제1 및 제2 토큰들에 대한 벡터 표현들(225b)은 토큰 표현들(225a)과 벡터 표현들(225b) 뿐만 아니라 개개의 제1 및 제2 토큰들 사이의 연관을 통해 모델 데이터(220)에서 식별될 수 있다. 예를 들어, 일부 양태들에서, 토큰 표현들(225a)은 주제 쿼리(105)에서의 토큰들에 대하여 비교될 수 있는 토큰들의 스트링 표현들과 동등할 수 있다. 일부 양태들에서, 토큰 표현들(225)은 토큰들에 대한 해시 값들일 수 있다. 이러한 양태들에서, 주제 쿼리(105)에서의 토큰들은 해싱되고 이어서 모델 데이터베이스(220) 내의 토큰 표현들(225a)과 비교되어 주제 쿼리(105)에서의 토큰들에 대한 벡터 표현들(225b)을 식별할 수 있다.
도 2에 도시된 모델 구축기(215) 및 분류기(235)는 전자 하드웨어 메모리에 저장될 수 있는 명령어들을 실행하도록 구성되는 하나 이상의 하드웨어 프로세서를 개별적으로 또는 통합 방식으로 포함할 수 있다. 예시적인 구현들이 이하에서 더 논의된다.
도 3a는 쿼리를 세그먼트화하기 위해 분류기를 이용하는 예시적인 방법의 흐름도이다. 일부 양태들에서, 도 3a와 관련하여 이하에서 논의되는 프로세스(300)는 하나 이상의 하드웨어 프로세서에 의해 수행될 수 있다. 예를 들어, 일부 양태들에서, 전자 메모리는, 실행될 때, 도 3a와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록, 하나 이상의 하드웨어 프로세서를 구성하는 하나 이상의 하드웨어 프로세서를 위한 명령어들을 저장할 수 있다. 예를 들어, 도 6과 관련하여 아래에 논의되는 쿼리 분류기(635)에서의 명령어들은 도 7의 처리 유닛(706) 및/또는 도 8의 프로세서들(810) 중 하나 이상과 같은 프로세서를 도 3a와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록 구성할 수 있다.
블록(305)에서, 모델은 훈련 데이터에 기초하여 토큰들에 대해 구축된다. 일부 양태들에서, 토큰들은 훈련 데이터의 일부인 쿼리들에 포함될 수 있다. 도 2와 관련하여 앞서 논의된 바와 같이, 훈련 데이터(205)는 하나 이상의 웹 사이트 또는 애플리케이션에 입력된 이전에 기록된 쿼리들을 포함할 수 있다. 쿼리들은 웹 사이트들의 인간 사용자들에 의해 생성되었을 수 있다. 일부 양태들에서, 모델은 word2vec 또는 GloVe에 의해 구축될 수 있다. 이러한 모델들은 토큰들(예를 들어, 단어들)을 다차원 벡터 공간에 매핑한다. 일부 양태들에서, 모델을 구축하기 위해 젠심 word2vec 래퍼가 이용될 수 있다. 일부 양태들에서, 2와 3(2-3) 사이의 컨텍스트 윈도우가 이용될 수 있다. 더 작은 컨텍스트 모델은, 특히 세그먼트화 작업에 대해, 쿼리들에 대한 더 나은 임베딩들을 학습하는 것으로 도시될 수 있다. 일부 양태들에서, 모델의 벡터 차원은 300에 설정될 수 있다. 그러나, 100, 200, 225, 250, 275, 325, 350, 400, 또는 1-5000의 범위 내의 임의의 수와 같은 다른 차원들이 고려된다. 300이 벡터에 대한 차원으로서 사용될 때, 600의 조합된 벡터는 2개의 벡터가 연쇄될 때 형성된다(2개의 벡터는 쿼리로부터의 2개의 토큰을 나타낸다). 이 조합된 벡터는 이하 논의하는 바와 같이 분류기에 대한 입력 특징 벡터가 된다.
블록(310)에서, 분류기가 모델에 기초하여 훈련된다. 분류기의 훈련은 분류기가 블록(305)의 훈련 데이터에서의 토큰들 사이의 관계들을 결정할 수 있게 한다. 일부 양태들에서, 이진 분류기가 사용될 수 있다. 예를 들어, 분류기는 함께 취해진 2개의 토큰이 정성적 속성을 갖는지를 결정할 수 있다. 정성적 속성은, 예를 들어, 2개의 토큰이 공통 쿼리 세그먼트에 있는지 여부를 나타낼 수 있다. 일부 양태들에서, 분류기는 로지스틱 회귀(Logistic Regression) 또는 XGBoost일 수 있다. 일부 양태들에서, 그래디언드 부스팅 머신(gradient boosting machine)들이 분류를 위해 이용될 수 있다.
블록(315)에서, 2개의 토큰이 분류기에게 제공된다. 예를 들어, 분류기가 훈련된 후에, 분류기는 다수의 토큰을 포함하는 쿼리를 어떻게 세그먼트화할지를 결정하기 위해 사용될 수 있다. 예를 들어, 블록(310)에서 분류기에 제공되는 2개의 토큰이 훈련 데이터에서 연관되는 것으로 비교적 빈번히 발견된다면, 분류기는 이들 2개의 토큰이 다시 제공될 때 이 연관을 식별할 수 있다. 대안적으로, 2개의 다른 토큰이 일반적으로 훈련 데이터에서 연관되지 않는다면, 이들 2개의 다른 토큰이 제공될 때, 분류기는 2개의 다른 토큰이 연관되지 않음을 결정할 수 있고, 따라서 상이한 쿼리 세그먼트들에 있을 수 있다. 일부 양태들에서, 블록(315)은 아래에 논의되는 도 4의 블록(470)에 포함될 수 있다.
블록(320)에서, 분류기는 분류기의 훈련에 기초하여 2개의 토큰이 상이한 세그먼트들에 포함되어야 하는지 또는 단일 세그먼트에 포함되어야 하는지를 결정한다. 예를 들어, 일부 양태들에서, 분류기는 모델에 제공된 훈련 데이터에 대한 세그먼트 경계들을 식별하는 주석화된 훈련 데이터상에서 훈련되었을 수 있다.
다양한 양태들에서, 프로세스(300)의 블록들 중 하나 이상이 존재하지 않을 수 있다. 예를 들어, 일부 양태들에서, 프로세스(300)는 블록들(315 및/또는 320)을 포함하지 않을 수 있다.
아래의 표 1은 앞서 논의한 프로세스(300)를 이용할 때의 세그먼트화 및 쿼리 정확도들을 나타낸다. 표 1에 도시된 벤치마킹의 경우, 단순한 쿼리 세그먼트화 모델은 테스트 데이터 세트에 걸쳐서 구축된다. 표 1은 임베딩 벡터에 대한 단순 로지스틱 회귀가 원시 n-그램 빈도 부스팅 기술보다 더 나은 결과를 제공한다는 것을 보여준다. 일부 양태들은 Wikipedia 타이틀을 사용하여 세그먼트를 부스팅하는 모델을 이용할 수 있지만, 이것은 표 1에 도시된 결과를 생성하는데 이용되지 않았다.
Figure pct00001
배포된 구글의 word2vec는 구글 뉴스상에서 단어 임베딩 벡터들을 사전훈련하였다. 이러한 사전훈련된 임베딩들은, 각각이 300차원 벡터를 갖는, 약 1000억 개의 단어, 및 3백만 개의 단어 및 문구를 갖는 데이터 세트에 대해 구축되었다. 본 발명자들은 웹 쿼리 세그먼트화를 위해 (Google news 데이터 코퍼스로부터의) 이러한 사전훈련된 임베딩들을 사용하기 위해 전송 학습(transfer learning)의 아이디어를 조사했다. 본 발명자들은 임베딩 모델이 스크래치로부터 훈련되었을 때와 유사한 프로세스를 따른다. 이러한 사전훈련된 벡터들은 쿼리에서의 각각의 단어에 대한 특징들로서 작용한다. 이들은 연쇄되고 분류기에게 공급된다. 일부 양태들에서, XGBoost가 분류기로서 사용될 수 있다. 트리의 깊이 및 추정기들의 수에 대한 최상의 하이퍼-파라미터들을 결정하기 위해 그리드 검색이 수행될 수 있다. 이 프로세스는 반복되는데 2.5M 단어 어휘를 갖는 Wikipedia 코퍼스에 걸쳐서 공통 크롤(crawl) 및 페이스북 fasttext 사전 훈련 모델에 대한 사전 훈련된 GloVe 벡터들을 사용하여 그렇게 한다. 표 2는 이 분석의 실험 결과를 나타낸다. 최상의 성능은 Glove 웹 크롤 사전 훈련된 임베딩들로 달성된다.
Figure pct00002
도 3b는 분류기를 훈련하는 예시적인 방법이다. 일부 양태들에서, 도 3b와 관련하여 이하에서 논의되는 프로세스(310)는 하나 이상의 하드웨어 프로세서에 의해 수행될 수 있다. 예를 들어, 일부 양태들에서, 전자 메모리는, 실행될 때, 도 3b와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록 하나 이상의 하드웨어 프로세서를 구성하는 하나 이상의 하드웨어 프로세서를 위한 명령어들을 저장할 수 있다. 예를 들어, 도 6과 관련하여 이하에서 논의되는 쿼리 분류기(635)에서의 명령어들은 도 7의 처리 유닛(706) 및/또는 도 8의 프로세서들(810) 중 하나 이상과 같은 프로세서를 도 3b에 대하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록 구성할 수 있다.
블록(355)에서, 훈련 쿼리가 획득된다. 일부 양태들에서, 훈련 쿼리는 훈련 데이터베이스(205)로부터 획득된다. 훈련 쿼리는 토큰 경계기호에 의해 분리된 단어들 또는 심볼들과 같은 복수의 토큰을 포함할 수 있다.
블록(360)에서, 훈련 쿼리로부터 토큰들의 쌍이 생성된다. 예를 들어, 쿼리는 n개의 토큰을 가질 수 있다. 블록(360)은 쌍을 형성하기 위해 n개의 토큰 중 임의의 2개를 선택할 수 있다. 블록(360)의 다수의 반복은 각각 고유 토큰 쌍들을 생성할 수 있다.
블록(365)은 블록(360)의 2개의 토큰이 공통 쿼리 세그먼트에 포함되는지 여부를 결정한다. 예를 들어, 일부 양태들에서, 주석 데이터(208)는 블록(355)에서 획득된 훈련 쿼리 내의 쿼리 세그먼트들을 식별할 수 있다. 주석 데이터에 의해 식별되는 쿼리 세그먼트들은 각각, 훈련 쿼리에서의 모든 토큰마다 주석 데이터에 의해 특정 쿼리 세그먼트에 부여되거나 할당되도록, 훈련 쿼리의 부분들을 포함할 수 있다. 블록(365)은 2개의 토큰이 훈련 쿼리의 쿼리 세그먼트들의 단일 쿼리 세그먼트에 포함되는지를 결정한다.
블록(370)은 토큰 쌍 및 쌍에서의 2개의 토큰이 공통 쿼리 세그먼트 내에 포함되는지의 표시를 분류기에 제공한다. 일부 양태들에서, 분류기는 이진 분류기이다. 일부 양태들에서, 분류기는 로지스틱 회귀 또는 XGBoost일 수 있다. 일부 양태들에서, 그래디언드 부스팅 머신(gradient boosting machine)들이 분류를 위해 이용될 수 있다.
판정 블록(375)은 블록(355)에서 획득된 훈련 쿼리에 더 고유한 토큰 쌍들이 있는지를 결정한다. 만일 그렇다면, 처리는 블록(355)으로 복귀하고, 훈련 쿼리로부터 새로운 고유한 토큰 쌍이 획득된다. 그렇지 않으면, 프로세스(310)는 판정 블록(380)으로 이동하고, 이 블록은 앞서 논의된 데이터베이스(205)와 같은 훈련 쿼리들의 데이터베이스에서 이용가능한 추가 훈련 쿼리들이 있는지를 결정한다. 어떤 추가적인 훈련 쿼리들도 이용가능하지 않으면, 분류기의 훈련이 완료될 수 있다. 그렇지 않으면, 처리는 블록(355)으로 복귀하고, 훈련 데이터베이스로부터 추가적인 훈련 쿼리가 획득된다.
도 4는 쿼리 세그먼트화의 예시적인 방법의 흐름도이다. 일부 양태들에서, 도 4와 관련하여 이하에서 논의되는 프로세스(450)는 하나 이상의 하드웨어 프로세서에 의해 수행될 수 있다. 예를 들어, 일부 양태들에서, 전자 메모리는, 실행될 때, 도 4와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록 하나 이상의 하드웨어 프로세서를 구성하는 하나 이상의 하드웨어 프로세서를 위한 명령어들을 저장할 수 있다. 예를 들어, 일부 양태들에서, 도 6과 관련하여 이하에서 논의되는, 쿼리 분류기(635)에 저장된 명령어들은, 도 4와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록 하나 이상의 하드웨어 프로세서를 구성할 수 있다. 일부 양태들에서, 쿼리 분류기(635)의 명령어들은 도 7에 도시된 명령어들(708) 및/또는 도 8에 도시된 명령어들(816 및/또는 818)과 동등할 수 있다. 이러한 명령어들은 도 7의 프로세서(706) 및/또는 도 8의 프로세서들(810) 중 하나 이상을 구성하여 도 4와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행할 수 있다. 일부 양태들에서, 명령어들(816)은 도 4와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록 프로세서들(810) 중 하나 이상을 구성할 수 있다.
블록(455)에서, 쿼리 스트링이 수신된다. 일부 양태들에서, 쿼리 스트링은 컴퓨터 네트워크로부터 수신될 수 있다. 예를 들어, 일부 양태들에서, 쿼리 스트링은 http 포스트 트랜잭션의 형태로 수신될 수 있다. 일부 다른 양태들에서, 쿼리 스트링은 데이터베이스 또는 파일 시스템과 같은 데이터 저장소로부터 수신될 수 있다. 일부 양태들에서, 쿼리 스트링은 애플리케이션 프로그래밍 인터페이스로부터 수신될 수 있다. 예를 들어, 쿼리 스트링은 방법에의 입력 파라미터에 있을 수 있다. 이 방법은, 예를 들어, SOAP 또는 rest 프로토콜들을 통해 서비스 지향 아키텍처의 일부로서 API를 통해 노출될 수 있다.
쿼리 스트링은 복수의 토큰을 포함한다. 일부 양태들에서, 토큰들은 단어들 또는 용어들이다. 토큰들은 한 세트의 토큰 경계기호들에 포함되는 하나 이상의 캐릭터에 의해 분리될 수 있다. 토큰들의 경계를 짓는 문자들은, 예를 들어, 비-영숫자 캐릭터, 공간, 콤마, 세미콜론, 포워드 슬래시, 또는 백워드 슬래시 중 하나 이상을 포함할 수 있다.
블록(460)에서, 쿼리 스트링의 복수의 토큰으로부터 제1 토큰 및 제2 토큰이 식별된다. 일부 양태들에서, 블록(460)은 토큰들을 식별하기 위해 쿼리 스트링을 파싱하는 것을 포함할 수 있다.
블록(465)에서, 제1 및 제2 토큰들을 제각기 나타내는 제1 벡터 및 제2 벡터가 식별된다. 도 2와 관련하여 전술한 바와 같이, 일부 양태들에서, 모델은 토큰들을 벡터들과 연관시키도록 훈련될 수 있고, 각각의 벡터는 벡터 공간에서의 그 제각기 토큰의 상대 위치를 나타낸다. 블록(465)은 도 2에 도시된 모델 데이터베이스(220)와 같은 데이터베이스에서 제1 및 제2 토큰들과의 연관성에 기초하여 제1 및 제2 벡터들을 제각기 식별할 수 있다.
블록(470)은 제1 및 제2 벡터들에 기초하여 제1 및 제2 토큰들이 단일 쿼리 세그먼트에 포함되는지를 결정한다. 일부 양태들에서, 제1 및 제2 벡터들은 제각기 제1 및 제2 특징들을 생성하도록 패딩될 수 있다. 이어서, 제1 및 제2 특징들은 분류기에 제공될 수 있다. 분류기는 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함할지를 결정할 수 있다. 예를 들어, 일부 양태들에서, 제1 및 제2 토큰들을 공통 쿼리 세그먼트에 포함할지의 여부는 모델의 다차원 벡터 공간에서의 제1 벡터와 제2 벡터 사이의 거리에 기초할 수 있다. 분류기는 훈련 쿼리들의 데이터베이스를 사용하여 이전에 훈련되었을 수 있다.
블록(475)에서, 쿼리 스트링은 결정에 기초하여 세그먼트화된다. 일부 양태들에서, 제1 및 제2 토큰들은, 제1 및 제2 벡터들 사이의 거리가 미리 결정된 임계값보다 크다면, 상이한 쿼리 세그먼트들에 배치될 수 있다. 일부 다른 양태들에서, 블록(455)에서 수신된 쿼리의 토큰들 사이의 거리들은 그들의 제각기 벡터들 사이의 거리들에 기초하여 그룹화될 수 있다. 예를 들어, 서로의 미리 결정된 임계 거리 내에 있는 벡터들을 갖는 토큰들이 그룹화될 수 있다. 이것은 2개 이상의 토큰 그룹을 낳을 수 있다. 각각의 그룹은 고유한 쿼리 세그먼트의 토큰들을 정의할 수 있다. 클러스터 분석은 일부 양태들에서 그룹들을 결정하기 위해 이용될 수 있다. 예를 들어, 밀도 기반 클러스터링 모델이 일부 양태들에서 이용될 수 있다.
블록(480)은 블록(475)에서 생성된 쿼리 세그먼트들에 기초하여 쿼리를 처리한다. 일부 양태들에서, 쿼리를 처리하는 것은 쿼리 세그먼트들에 기초하여 하나 이상의 데이터베이스를 검색하는 것 및 쿼리의 결과들을 반환하는 것을 포함할 수 있다. 일부 양태들에서, 쿼리를 처리하는 것은 우세한 쿼리 세그먼트, 및 다른 비우세 쿼리 세그먼트(들)를 식별하는 것을 포함할 수 있다. 쿼리를 처리하는 것은 식별된 우세한 쿼리 세그먼트에 기초하여 데이터베이스(예를 들어, 이하에서 논의되는 626)를 검색하는 것을 추가로 포함할 수 있다. 일부 양태들에서, 비우세 쿼리 세그먼트들 중 하나 이상은 데이터베이스의 검색으로부터 배제될 수 있다. 쿼리의 결과들은, 예를 들어, 쿼리를 수행하는 사용자에게 반환될 수 있다. 예를 들어, 블록(455)에서 수신된 쿼리가 웹 인터페이스를 통해 제공되었다면, 블록(480)은 결과 페이지를 생성하고, 결과 페이지를 네트워크를 통해 클라이언트 컴퓨터에 전송하는 것을 포함할 수 있다. 이어서, 클라이언트 컴퓨터는 결과 페이지를 사용자에게 디스플레이할 수 있다. 대안적으로, 일부 양태들에서, 결과들은 애플리케이션 프로그래밍 인터페이스를 통해, 예를 들어, 방법 호출에의 출력 파라미터로서 반환될 수 있다. 앞서 논의한 바와 같이, 일부 양태들에서, SOAP 또는 rest 인에이블된 방법은 쿼리의 결과들을 출력 파라미터로서 제공할 수 있다.
도 5a는 쿼리 세그먼트화의 예시적인 방법의 흐름도이다. 일부 양태들에서, 도 5a와 관련하여 이하에서 논의되는 프로세스(500)는 하나 이상의 하드웨어 프로세서에 의해 수행될 수 있다. 예를 들어, 일부 양태들에서, 전자 메모리는, 실행될 때, 도 5a와 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록, 하나 이상의 하드웨어 프로세서를 구성하는 하나 이상의 하드웨어 프로세서를 위한 명령어들을 저장할 수 있다. 예를 들어, 일부 양태들에서, 도 6과 관련하여 이하에서 논의되는 쿼리 분류기(635)에서의 명령어들은, 도 3 내지 도 5 중 하나 이상과 관련하여 이하에서 논의되는 기능들 중 하나 이상을 수행하도록 프로세서들(810) 및/또는 처리 유닛(706) 중 하나 이상을 구성할 수 있다.
블록(502)에서, 쿼리가 수신된다. 예를 들어, 일부 양태들에서, 도 1에 도시된 쿼리(105)와 같은 복수의 토큰을 포함하는 쿼리가 수신될 수 있다. 일부 양태들에서, 쿼리는 아래에서 논의되는 클라이언트 디바이스(610)로부터 수신될 수 있고, 이하에서 논의되는 쿼리 분류기(635)를 실행하는 애플리케이션 서버(640)에 의해 수신될 수도 있다.
일부 양태들에서, 쿼리 스트링은 컴퓨터 네트워크로부터 수신될 수 있다. 예를 들어, 일부 양태들에서, 쿼리 스트링은 http 포스트 트랜잭션의 형태로 수신될 수 있다. 일부 다른 양태들에서, 쿼리 스트링은 데이터베이스 또는 파일 시스템과 같은 데이터 저장소로부터 수신될 수 있다. 일부 양태들에서, 쿼리 스트링은 애플리케이션 프로그래밍 인터페이스로부터 수신될 수 있다. 예를 들어, 쿼리 스트링은 방법에의 입력 파라미터에 있을 수 있다. 이 방법은, 예를 들어, SOAP 또는 rest 프로토콜들을 통해 서비스 지향 아키텍처의 일부로서 API를 통해 노출될 수 있다.
일부 양태들에서, 토큰들은 단어들 또는 용어들이다. 토큰들은 한 세트의 토큰 경계기호들에 포함되는 하나 이상의 캐릭터에 의해 분리될 수 있다. 토큰들의 경계를 짓는 문자들은, 예를 들어, 비-영숫자 캐릭터, 공간, 콤마, 세미콜론, 포워드 슬래시, 또는 백워드 슬래시 중 하나 이상을 포함할 수 있다.
블록(504)에서, 쿼리로부터 토큰들의 쌍이 생성된다. 다시 말해서, 쿼리의 2개의 토큰은 쌍 관계에서 연관된다. 일부 양태들에서, 인접한 토큰들만이 쌍에서 연관될 수 있다. 일부 다른 양태들에서, 임계 개수의 토큰들 내의 토큰들만이 쌍으로서 연관될 수 있다. 예를 들어, 두 개(2)의 토큰들의 임계 개수를 이용하는 이들 양태들에서, 수신된 쿼리는 쌍의 2개의 토큰 사이의 하나의 다른 토큰을 포함할 수 있다.
블록(506)에서, 다차원 벡터 공간 내의 거리가 결정된다. 블록(506)은 블록(504)의 쌍에 포함된 토큰들 각각에 대응하는 벡터들을 결정하는 것을 포함할 수 있다. 벡터들은 도 2와 관련하여 위에서 설명된 모델 데이터베이스(220)와 같은 모델 데이터베이스로부터 식별될 수 있다.
블록(508)에서, 거리와 토큰 쌍 사이의 연관이 저장된다. 이 정보는 후술되는 바와 같이 나중의 처리를 위해 저장될 수 있다.
판정 블록(510)은 블록(502)에서 수신된 쿼리로부터 이용가능한 추가적인 고유 토큰 쌍이 존재하는지를 결정한다. 만약 그렇다면, 프로세스(500)는 블록(504)으로 복귀하고 새로운 토큰 쌍이 생성된다. 그렇지 않으면, 블록(512)은 임계값 미만의 연관된 거리에 의해 쌍을 이룬 토큰들을 식별한다. 토큰 쌍들 사이의 비교적 낮은 거리(즉, 미리 결정된 거리 임계값 미만의 거리)는 이들 토큰들이 단일 쿼리 세그먼트 내에 포함되어야 한다는 것을 나타낼 수 있다.
블록(514)에서, 식별된 연관된 토큰들이 그룹화된다. 일부 양태들에서, 식별된 연관된 토큰들을 그룹화하기 위해 클러스터 분석이 이용될 수 있다. 예를 들어, 블록(502)에서 수신된 쿼리가 토큰들 a, b, c, d, e, f를 포함하고, 토큰들 a, b, 및 c 각각이 서로로부터 3개의 유닛의 거리를 갖고, 토큰들 d, e, f 각각이 서로로부터 3개의 유닛의 거리를 갖지만, a, b, c 각각이 d, e, 또는 f 중 임의의 것에의 더 큰 거리를 갖는다면, 2개의 그룹이 형성될 수 있다. 하나의 그룹은 토큰들 a, b, c를 포함할 수 있는 반면, 다른 그룹은 토큰들 d, e, f를 포함한다. 이들 2개의 그룹은 2개 이상의 쿼리 세그먼트를 형성할 수 있다.
블록(516)은 블록(514)의 그룹화된 토큰들에 기초하여 쿼리를 처리한다. 일부 양태들에서, 쿼리를 처리하는 것은 쿼리 세그먼트들에 기초하여 하나 이상의 데이터베이스(예를 들어, 이하에서 논의되는 626)를 검색하는 것 및 쿼리의 결과들을 반환하는 것을 포함할 수 있다. 일부 양태들에서, 쿼리를 처리하는 것은 우세 쿼리 세그먼트를 식별하는 것, 및 식별된 우세 쿼리 세그먼트에 기초하여 데이터베이스를 검색하는 것을 포함할 수 있다. 일부 양태들에서, 비우세 쿼리 세그먼트들 중 하나 이상은 데이터베이스의 검색으로부터 배제될 수 있다. 일부 양태들에서, 비우세 쿼리 세그먼트들은 검색되는 아티클의 속성을 정의할 수 있는 반면, 우세 쿼리 세그먼트는 예를 들어, 아티클의 이름 또는 제품 번호를 통해 아티클 자체를 식별할 수 있다.
일부 양태들에서, 블록(516)은, 각각의 쿼리 세그먼트 주위에 인용들을 배치하는 것과, 인용된 쿼리에 기초하여 데이터베이스를 검색하는 것을 포함할 수 있다. 예를 들어, 블록(502)의 쿼리가 "긴 소매 여름 드레스"인 경우, 블록(516)은, 블록(514)이 "긴" 및 "소매"를 제1 쿼리 세그먼트로 그룹화하고, 블록(514)이 "여름" 및 "드레스"를 제2 쿼리 세그먼트로 그룹화한 후에 이 쿼리를 "긴 소매", "여름 드레스"로서 처리할 수 있다. 세그먼트화된 쿼리들의 사용을 위한 다른 접근법들이 또한 고려되는데, 그 중 일부는 본 기술분야에 공지될 수 있다.
쿼리의 결과들은, 예를 들어, 쿼리를 수행하는 사용자에게 반환될 수 있다. 예를 들어, 블록(502)에서 수신된 쿼리가 웹 인터페이스를 통해 제공되었다면, 블록(516)은 결과 페이지를 생성하는 것과, 결과 페이지를 네트워크를 통해 클라이언트 컴퓨터에 전송하는 것을 포함할 수 있다. 이어서, 클라이언트 컴퓨터는 결과 페이지를 사용자에게 디스플레이할 수 있다. 대안적으로, 일부 양태들에서, 결과들은 애플리케이션 프로그래밍 인터페이스를 통해, 예를 들어, 방법 호출에의 출력 파라미터로서 반환될 수 있다. 앞서 논의한 바와 같이, 일부 양태들에서, SOAP 또는 rest 인에이블된 방법은 쿼리의 결과들을 출력 파라미터로서 제공할 수 있다.
도 5b는 개시된 양태들 중 일부에 대한 주석자 합의 분포를 도시하는 그래프이다. 개시된 방법들 및 시스템들의 쿼리 세그먼트화 정확도를 결정하기 위해, 3개월의 기간에 걸쳐 상위 15,000 eBay 카테고리들에 걸쳐 샘플링된 50,000 쿼리 세트에 주석을 달았다. 각각의 쿼리는 각각이 검색 관련성을 염두에 둔 의미있는 세그먼트들을 가진 3개의 주석을 수신하였다. 정확도를 위해, 주석자들은 결과들의 품질이 포스트 세그먼트화를 개선하도록 보장하기 위해 eBay의 검색 엔진상에서 세그먼트화된 쿼리를 검증하도록 요청받았다. 도 5b는 주석자 합의 분포를 도시한다. 본 발명자들은 2개 이상의 주석자들에 의한 쿼리들의 대략 78%에 대한 동의를 관찰한 반면, 3개의 주석자 모두는 시간의 약 25%에 합의한다. 쿼리 세그먼트화는 주석자들마다의 주석들에서의 의견 차이를 반영할 수 있다는 점에서 일부 모호성을 갖는다. 3개의 주석자 모두에 의한 합의의 낮은 백분율은 세그먼트화 작업들이 주관적일 수 있다는 것을 나타낸다. 모델을 훈련하기 위해, 위에서 논의된 방법들, 시스템들, 및 디바이스들의 일부 양태들에서, 본 발명자들은 3개의 주석자 중 적어도 두 주석자가 합의하는 주석들을 이용한다. 도 5c는 AOL 데이터세트에 대한 주석자 합의를 도시한다.
개시된 시스템들, 방법들, 및 디바이스들의 일부 양태들은 훈련을 위한 eBay 쿼리 세트의 80% 및 테스트를 위한 나머지 20%를 이용한다. 80% 훈련 부분은 이 양태들 중 일부에서 80% 훈련 및 20% 검증 세트로 더 분할될 수 있다. 일부 양태들은 fasttext를 사용하여 쿼리 임베딩들을 학습하고, 그 후 세그먼트화 단절을 예측하기 위해 XGBoost 분류기를 훈련시킨다. 하이퍼 파라미터 튜닝을 위한 그리드 검색은 500개의 추정기를 갖는 스킵-그램 모델을 사용하여 그리고 XGBoost 모델에 대한 네 개(4)의 깊이를 가지고 최상의 세그먼트화 정확도를 제공할 수 있다. 여섯 개(6)의 깊이를 가진 800개의 추정기를 갖는 cbow(contiguous bag of words) 모델이 또한 양호한 결과들을 제공하였다. 실제로, 쿼리 정확도 및 세그먼트화 정확도 모두에 대한 최상의 숫자들을 cbow 아키텍처를 사용하여 발견하였다. 아래의 표 3은 단순한 ngram 모델 및 우리의 접근법에 대한 정확도를 요약한다. 우리의 기술을 사용하여 전자 상거래 데이터에 대해 획득하는 정확도는 단순한 ngram 기반 세그먼트화 모델을 명확히 이긴다. 이들 숫자는 또한 AOL 쿼리들을 이용한 임베딩 경험과 필적할만하다.
Figure pct00003
도 6은 예시적인 클라이언트-서버-기반 아키텍처(600)의 블록도이다. 도 6이 클라이언트-서버-기반 아키텍처(600)를 도시하지만, 본 발명의 주제는 물론 이러한 아키텍처로 제한되지 않고, 예를 들어, 이벤트-구동, 분산, 또는 피어-투-피어 아키텍처 시스템에서의 응용을 동등하게 잘 찾을 수 있다. 또한, 불필요한 상세사항으로 발명 주제를 모호하게 하는 것을 회피하기 위해, 본 발명의 주제의 이해를 전달하는 데에 밀접한 관계가 없는 다양한 기능 컴포넌트들은 도 6에서 생략되었다. 더욱이, 도 6에 예시된 다양한 기능적 컴포넌트들이 단수의 의미로 논의되지만, 다양한 기능적 컴포넌트들 중 임의의 하나의 다수의 인스턴스가 이용될 수 있다는 것을 잘 알 것이다.
네트워크 기반 시스템의 예시적인 형태의 콘텐츠 게시 플랫폼(602)은 네트워크(604)(예를 들어, 인터넷 또는 광역 네트워크(WAN))를 통해 서버측 기능성을 하나 이상의 클라이언트 디바이스(610)에 제공한다. 도 6은, 예를 들어, 웹 클라이언트(612)(예를 들어, 브라우저), 클라이언트 애플리케이션(614), 및 클라이언트 디바이스(610)상에서 실행되는 프로그램 클라이언트(616)를 나타내고 있다. 클라이언트 디바이스(610)는 모바일 폰, 데스크톱 컴퓨터, 랩톱, PDA(portable digital assistant)들, 스마트폰들, 태블릿들, 울트라북들, 넷북들, 랩톱들, 멀티 프로세서 시스템들, 마이크로프로세서 기반 또는 프로그램 가능 소비자 가전, 게임 콘솔들, 셋톱 박스들, 또는 사용자가 콘텐츠 게시 플랫폼(602)에 액세스하기 위해 이용할 수 있는 임의의 다른 통신 디바이스를 포함할 수 있지만, 이들로 제한되지는 않는다. 일부 실시예들에서, 클라이언트 디바이스(610)는 (예를 들어, 사용자 인터페이스들의 형태로) 정보를 디스플레이하는 디스플레이 모듈(도시되지 않음)을 포함할 수 있다. 추가의 실시예들에서, 클라이언트 디바이스(610)는 터치 스크린들, 가속도계들, 자이로스코프들, 카메라들, 마이크로폰들, GPS(global positioning system) 디바이스들 등 중 하나 이상을 포함할 수 있다. 일 실시예에서, 콘텐츠 게시 플랫폼(602)은 네트워크 기반 시장에서 이용가능한 제품들의 아이템 리스트들을 포함하는 출판물들(예를 들어, 웹 문서들)을 게시하는 네트워크 기반 시장이다.
하나 이상의 사용자(606)는 사람, 머신, 또는 클라이언트 디바이스(610)와 상호작용하는 다른 수단일 수 있다. 예시적인 실시예들에서, 사용자(606)는 클라이언트-서버 기반 아키텍처(600)의 일부가 아니지만, 클라이언트 디바이스(610) 또는 다른 수단을 통해 클라이언트-서버-기반 아키텍처(600)와 상호작용할 수 있다. 예를 들어, 사용자(606)는 입력(예를 들어, 터치 스크린 입력 또는 영숫자 입력)을 클라이언트 디바이스(610)에 제공할 수 있고, 입력은 네트워크(604)를 통해 콘텐츠 게시 플랫폼(602)에 통신된다. 이 경우, 콘텐츠 게시 플랫폼(602)은 사용자(606)로부터 입력을 수신한 것에 응답하여, 사용자(606)에게 제시될 정보를 네트워크(604)를 통해 클라이언트 디바이스(610)에 통신한다. 이러한 방식으로, 사용자(606)는 클라이언트 디바이스(610)를 사용하여 콘텐츠 게시 플랫폼(602)과 상호작용할 수 있다.
클라이언트 디바이스(610)는 웹 브라우저, 메시징 애플리케이션, 전자 메일(email) 애플리케이션, 전자 상거래 사이트 애플리케이션(시장 애플리케이션이라고도 함) 등과 같은, 그러나 이에 제한되지는 않는 하나 이상의 클라이언트 애플리케이션(614)("앱"이라고도 지칭됨)을 포함할 수 있다. 일부 실시예들에서, 전자 상거래 사이트 애플리케이션이 클라이언트 디바이스(610)에 포함되는 경우, 이 애플리케이션은 국부적으로 이용가능하지 않은 데이터 또는 처리 능력들(예를 들어, 판매를 위해 이용가능한 아이템들의 데이터베이스에 대한 액세스, 사용자(606)를 인증하기 위해, 지불 방법을 검증하기 위해 등)에 대해, 필요에 따라, 콘텐츠 게시 플랫폼(602)과 통신하도록 구성된 클라이언트 애플리케이션(614)에 사용자 인터페이스 및 기능성들 중 적어도 일부를 국부적으로 제공하도록 구성된다. 반대로, 전자 상거래 사이트 애플리케이션이 클라이언트 디바이스(610)에 포함되지 않는 경우, 클라이언트 디바이스(610)는 콘텐츠 게시 플랫폼(102)상에 호스팅되는 전자 상거래 사이트(또는 그의 변형)에 액세스하기 위해 그의 웹 브라우저를 이용할 수 있다.
네트워크(604)의 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설 네트워크(VPN), 근거리 네트워크(LAN), 무선 LAN(WLAN), 광역 네트워크(WAN), 무선 WAN(WWAN), 대도시권 영역 네트워크(MAN), 인터넷의 일부, 공중 교환 전화망(Public Switched Telephone Network, PSTN)의 일부, 셀룰러 전화 네트워크, 무선 네트워크, WiFi 네트워크, WiMax 네트워크, 또 다른 유형의 네트워크, 또는 둘 이상의 그러한 네트워크의 조합일 수 있다.
애플리케이션 프로그램 인터페이스(API) 서버(620) 및 웹 서버(622)는 제각기 애플리케이션 서버(640)에 결합되고, 프로그램 및 웹 인터페이스들을 제공한다. 애플리케이션 서버(640)는 쿼리 분류기(635) 및 데이터베이스 검색 프로세스(623)를 호스팅할 수 있으며, 이들 각각은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로서 구현될 수 있다. 쿼리 분류기(635)는 도 2와 관련하여 앞서 논의된 분류기(234)를 포함할 수 있다. 데이터베이스 검색 프로세스(623)는 개시된 실시예들에 따라 쿼리 분류기(635)로부터 쿼리 세그먼트들을 수신할 수 있다. 애플리케이션 서버(640)는, 다음 차례로, 데이터베이스(626)에의 액세스를 용이하게 하는 데이터베이스 서버(624)에 결합되는 것으로 도시된다. 예시적 실시예에서, 데이터베이스(626)는 데이터베이스 검색 프로세스(623)에 의해 쿼리될 정보(예를 들어, 간행물 또는 리스팅)를 저장하는 저장 디바이스들이다. 데이터베이스들(626)은 또한 예시적인 실시예들에 따라 디지털 아이템 정보를 저장할 수 있다.
추가로, 제3자 서버(630)상에서 실행되는 제3자 애플리케이션(632)은 API 서버(620)에 의해 제공되는 프로그램적 인터페이스를 통해 콘텐츠 게시 플랫폼(602)에 대한 프로그램적 액세스를 갖는 것으로 도시되어 있다. 예를 들어, 제3자 애플리케이션(632)은, 콘텐츠 게시 플랫폼(602)으로부터 검색된 정보를 이용하여, 제3자에 의해 호스팅되는 웹사이트상의 하나 이상의 특징 또는 기능을 지원한다.
쿼리 분류기(635) 및 데이터베이스 검색 프로세스(623) 둘 모두가 쿼리 플랫폼(602)의 일부를 형성하는 것으로 도 6에 도시되어 있지만, 대안적인 실시예들에서, 쿼리 분류기(635) 및 데이터베이스 검색 프로세스(623) 각각은 콘텐츠 쿼리 플랫폼(602)과 별개이고 구별되는 서비스 또는 플랫폼의 일부를 형성할 수 있다는 것이 이해될 것이다.
도 7은 본 명세서에서 설명되는 다양한 하드웨어 아키텍처들과 연계하여 사용될 수 있는 대표적인 소프트웨어 아키텍처(702)를 도시하는 블록도(700)이다. 도 7은 소프트웨어 아키텍처의 비제한적인 예일 뿐이며, 여기서 설명된 기능을 가능하게 하기 위해 많은 다른 아키텍처가 구현될 수 있다는 것을 이해할 것이다. 소프트웨어 아키텍처(702)는, 무엇보다도 프로세서들(810), 메모리(830), 및 I/O 컴포넌트들(850)을 포함하는 도 8의 머신(800)과 같은 하드웨어상에서 실행될 수 있다. 대표적인 하드웨어 계층(704)이 도시되며, 예를 들어, 도 8의 머신(800)을 나타낼 수 있다. 대표적인 하드웨어 계층(704)은 연관된 실행가능 명령어들(708)을 갖는 하나 이상의 처리 유닛(706)을 포함한다. 실행가능 명령어들(708)은 전술한 방법론들 및 모듈들 및 기타 등등의 구현을 포함하는 소프트웨어 아키텍처(702)의 실행가능 명령어들을 나타낸다. 하드웨어 계층(704)은 또한 실행가능 명령어들(708)을 또한 갖는 메모리 및/또는 저장 모듈들(710)을 포함한다. 하드웨어 계층(704)은 또한, 머신(800)의 일부로서 도시된 다른 하드웨어와 같은, 하드웨어 계층(704)의 임의의 다른 하드웨어를 나타내는 (712)에 의해 표시된 바와 같은 다른 하드웨어를 포함할 수 있다.
도 7의 예시적인 아키텍처에서, 소프트웨어 아키텍처(702)는 각 계층이 특정 기능성을 제공하는 계층들의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어 아키텍처(702)는 운영 체제(714), 라이브러리들(716), 프레임워크들/미들웨어(718), 애플리케이션들(720), 및 프레젠테이션 계층(744)과 같은 계층들을 포함할 수 있다. 동작적으로, 계층들 내에서의 애플리케이션들(720) 및/또는 다른 컴포넌트들은 소프트웨어 스택을 통해 API 호출들(724)을 인보크할 수 있고, API 호출들(724)에 응답하여 메시지들(726)로서 예시된 응답, 반환된 값들, 및 등등을 수신할 수 있다. 예시된 계층들은 본질적으로 대표적인 것이며 모든 소프트웨어 아키텍처들이 모든 계층들을 갖는 것은 아니다. 예를 들어, 일부 모바일 또는 특수 목적 운영 체제들은 프레임워크들/미들웨어 계층(718)을 제공하지 않을 수 있는 반면, 다른 것들은 이러한 계층을 제공할 수 있다. 다른 소프트웨어 아키텍처는 추가의 또는 상이한 계층들을 포함할 수 있다.
운영 체제(714)는 하드웨어 자원들을 관리하고 공통 서비스들을 제공할 수 있다. 운영 체제(714)는, 예를 들어, 커널(728), 서비스들(730), 및 드라이버들(732)을 포함할 수 있다. 커널(728)은 하드웨어 계층과 다른 소프트웨어 계층 사이의 추상화 계층으로서 작용할 수 있다. 예를 들면, 커널(728)은 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 컴포넌트 관리, 네트워킹, 보안 설정 등을 담당할 수 있다. 서비스들(730)은 다른 소프트웨어 계층들에 대해 다른 공통 서비스들을 제공할 수 있다. 드라이버들(732)은 기본 하드웨어를 제어하거나 그와 인터페이싱하는 것을 담당할 수 있다. 예를 들어, 드라이버들(732)은 하드웨어 구성에 의존하여 디스플레이 드라이버들, 카메라 드라이버들, 블루투스® 드라이버들, 플래시 메모리 드라이버들, 직렬 통신 드라이버들(예를 들어, 범용 직렬 버스(Universal Serial Bus, USB) 드라이버들), Wi-Fi® 드라이버들, 오디오 드라이버들, 전력 관리 드라이버들 등을 포함할 수 있다.
라이브러리들(716)은 애플리케이션들(720) 및/또는 다른 컴포넌트들 및/또는 계층들에 의해 사용될 수 있는 공통의 인프라스트럭처를 제공할 수 있다. 라이브러리들(716)은 전형적으로 다른 소프트웨어 모듈들이 기본 운영 체제(714) 기능성(예를 들어, 커널(728), 서비스들(730), 및/또는 드라이버들(732))과 직접 인터페이스하는 것보다 쉬운 방식으로 작업들을 수행할 수 있게 하는 기능성을 제공한다. 라이브러리들(716)은 메모리 할당 함수(memory allocation function)들, 스트링 조작 함수(string manipulation function)들, 수학 함수(mathematic function)들 등과 같은 함수들을 제공할 수 있는 시스템(734) 라이브러리들(예컨대, C 표준 라이브러리)을 포함할 수 있다. 게다가, 라이브러리들(716)은 미디어 라이브러리들(예를 들어, MPREG4, H.264, MP3, AAC, AMR, JPG, PNG와 같은 다양한 미디어 포맷의 제시 및 조작을 지원하기 위한 라이브러리들), 그래픽 라이브러리들(예를 들어, 디스플레이상의 그래픽 콘텐츠에서 2D 및 3D를 렌더링하기 위해 사용될 수 있는 OpenGL 프레임워크), 데이터베이스 라이브러리들(예를 들어, 다양한 관계형 데이터베이스 기능들을 제공할 수 있는 SQLite), 웹 라이브러리들(예를 들어, 웹 브라우징 기능성을 제공할 수 있는 WebKit) 등과 같은 API 라이브러리들(736)을 포함할 수 있다. 라이브러리들(716)은 또한 애플리케이션들(520) 및 다른 소프트웨어 컴포넌트들/모듈들에 다른 많은 API들을 제공하기 위해 매우 다양한 다른 라이브러리들(738)을 포함할 수 있다.
프레임워크들/미들웨어(718)(또한 때때로, "미들웨어"로서 지칭됨)는 애플리케이션들(720) 및/또는 다른 소프트웨어 컴포넌트들/모듈들에 의해 사용될 수 있는 더 높은 레벨의 공통 인트라스트럭처를 제공할 수 있다. 예를 들어, 프레임워크들(718)은 다양한 GUI(graphic user interface) 기능들, 고 레벨 리소스 관리, 고 레벨 로케이션 서비스들 등을 제공할 수 있다. 프레임워크들(718)은, 그 중 일부가 특정 운영 체제 또는 플랫폼에 특유할 수 있는, 애플리케이션들(720) 및/또는 다른 소프트웨어 컴포넌트들/모듈들에 의해 이용될 수 있는 광범위한 범위의 다른 API들을 제공할 수 있다.
애플리케이션들(720)은 빌트인 애플리케이션들(740) 및/또는 제3자 애플리케이션들(742)을 포함한다. 대표적인 빌트인 애플리케이션들(740)의 예들은 이것들로 제한되는 것은 아니지만, 연락처 애플리케이션, 브라우저 애플리케이션, 북 리더 애플리케이션, 로케이션 애플리케이션, 미디어 애플리케이션, 메시징 애플리케이션, 및/또는 게임 애플리케이션을 포함할 수 있다. 제3자 애플리케이션들(742)은 빌트인 애플리케이션들은 물론이고 광범위한 구색의 다른 애플리케이션들 중 임의의 것을 포함할 수 있다. 특정 예에서, 제3자 애플리케이션(742)(예를 들어, 특정의 플랫폼의 벤더 이외의 엔티티에 의해 Android™ 또는 iOS™ SDK(software development kit)를 사용하여 개발된 애플리케이션)은 iOS™, Android™, Windows® Phone, 또는 다른 모바일 운영 체제들과 같은 모바일 운영 체제상에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3자 애플리케이션(742)은, 여기서 설명된 기능성을 가능하게 하기 위해 운영 체제(714)와 같은 모바일 운영 체제에 의해 제공되는 API 호출들(736)을 인보크할 수 있다.
애플리케이션들(720)은 시스템의 사용자들과 상호작용하도록 사용자 인터페이스들을 생성하기 위해 빌트인 운영 체제 기능들(예를 들어, 커널(728), 서비스들(730) 및/또는 드라이버들(732)), 라이브러리들(예를 들어, 시스템(734), API들(736), 및 다른 라이브러리들(738)), 프레임워크들/미들웨어(718)를 이용할 수 있다. 대안으로서 또는 추가로, 일부 시스템들에서, 사용자와의 상호작용은 프레젠테이션 계층(744)과 같은 프레젠테이션 계층을 통해 발생할 수 있다. 이들 시스템들에서, 애플리케이션/모듈 "로직"은 사용자와 상호작용하는 애플리케이션/모듈의 양태들로부터 분리될 수 있다.
일부 소프트웨어 아키텍처들은 가상 머신들을 이용한다. 도 7의 예에서, 이것은 가상 머신(748)에 의해 예시된다. 가상 머신은, 마치 애플리케이션/모듈이 하드웨어 머신(예를 들어, 도 8의 머신과 같은 것)상에서 실행되는 것처럼 실행될 수 있는 소프트웨어 환경을 생성한다. 가상 머신은 호스트 운영 체제(도 7에서의 운영 체제(714))에 의해 호스팅되고, 전형적으로, 항상은 아니지만, 가상 머신의 동작은 물론이고 호스트 운영 체제(즉, 운영 체제(714))와의 인터페이스를 관리하는 가상 머신 모니터(746)를 갖는다. 소프트웨어 아키텍처는 운영 체제(714), 라이브러리들(716), 프레임워크들/미들웨어(718), 애플리케이션들(720) 및/또는 프레젠테이션 계층(744)과 같은 가상 머신 내에서 실행된다. 가상 머신(748) 내에서 실행되는 소프트웨어 아키텍처의 이러한 계층들은 앞에서 설명한 대응하는 계층들과 동일하거나 아니면 상이할 수 있다.
도 8은, 머신 판독가능 매체(예를 들어, 머신 판독가능 저장 디바이스)로부터 명령어들을 판독하여 여기서 논의된 방법론들 중 임의의 하나 이상을 수행할 수 있는, 일부 예시적인 실시예에 따른 머신(600)의 컴포넌트들을 나타내는 블록도이다. 구체적으로, 도 6은 머신(600)으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하도록 야기하기 위한 명령어들(616)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿(applet), 앱, 또는 다른 실행가능 코드)이 그 내에서 실행될 수 있는 컴퓨터 시스템의 예시적인 형태로 머신(600)의 도식적 표현을 도시한다. 이러한 명령어들은 일반적인 프로그래밍되지 않은 머신을 본 명세서에 설명되는 방식으로 설명되고 예시된 방법론들을 수행하도록 프로그래밍되는 특정 머신으로 변환한다. 머신(600)은 독립형 디바이스로서 동작할 수 있거나, 또는 다른 머신들에 결합될 수 있다(예를 들어, 네트워크화될 수 있다). 네트워크화된 배치에서, 머신(600)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신의 능력을 가지고, 또는 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 비제한적인 예로서, 머신(600)은 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋톱 박스(STB), 개인 휴대 정보 단말기(PDA), 엔터테인먼트 미디어 시스템, 셀룰러 전화, 스마트폰, 모바일 디바이스, 웨어러블 디바이스(예를 들어, 스마트 시계), 스마트 홈 디바이스(예를 들어, 스마트 폰), 다른 스마트 디바이스들, 웹 어플라이언스, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 머신(600)에 의해 취해질 동작들을 특정하는 명령어들(616)을 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신을 포함하거나 그에 대응할 수 있다. 또한, 하나의 머신(600)만이 도시되어 있지만, 용어 "머신"은 본 명세서에서 논의된 방법론들 중 어느 하나 이상을 실행하기 위해 개별적으로 또는 공동으로 명령어들(616)을 실행하는 머신(600)의 컬렉션을 포함하도록 또한 취해질 수 있다.
머신(600)은 버스(602)를 통해 그런 것처럼 서로 통신하도록 구성될 수 있는 프로세서들(610), 메모리/저장소(630) 및 I/O 컴포넌트들(650)을 포함할 수 있다. 예시적인 실시예에서, 프로세서들(610)(예를 들어, 중앙 처리 유닛(CPU), 축소 명령어 세트 컴퓨팅(Reduced Instruction Set Computing, RISC) 프로세서, 복합 명령어 세트 컴퓨팅(Complex Instruction Set Computing, CISC) 프로세서, 그래픽 처리 유닛(GPU), 디지털 신호 프로세서(Digital Signal Processor, DSP), 주문형 집적 회로(Application Specific Integrated Circuit, ASIC), 무선 주파수 집적 회로(radio-frequency integrated circuit, RFIC), 또 다른 프로세서, 또는 이들의 임의의 적합한 조합)은, 예를 들어, 명령어들(616)을 실행할 수 있는 프로세서(612) 및 프로세서(614)를 포함할 수 있다. "프로세서"라는 용어는 명령어들을 동시에 실행할 수 있는 2개 이상의 독립적 프로세서(때때로 "코어들"이라고 지칭됨)를 포함할 수 있는 다중 코어 프로세서(multi-core processor)(610)를 포함하는 것으로 의도된 것이다. 도 6은 복수의 프로세서를 도시하지만, 머신(600)은 단일 코어를 갖는 단일 프로세서, 다중 코어를 갖는 단일 프로세서(예를 들어, 다중 코어 프로세서), 단일 코어를 갖는 다중 프로세서, 다중 코어를 갖는 다중 프로세서, 또는 이들의 임의의 조합을 포함할 수 있다.
메모리/저장소(630)는, 메인 메모리, 또는 다른 메모리 스토리지와 같은 메모리(632), 및 저장소 유닛(636)를 포함할 수 있는데, 이들 양자는 버스(602)를 통해서 그런 것처럼 프로세서들(610)에 액세스가능하다. 저장 유닛(636) 및 메모리(632)는 본 명세서에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어들(616)을 저장한다. 명령어들(616)은 또한, 머신(600)에 의한 그들의 실행 동안, 메모리(632) 내에, 저장소 유닛(636) 내에, 프로세서들(610) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 이들의 임의의 적절한 조합에, 완전히 또는 부분적으로 상주할 수 있다. 따라서, 메모리(632), 저장소 유닛(636), 및 프로세서들(610)의 메모리는 머신 판독가능 매체의 예들이다.
본 명세서에 사용된 바와 같이, "머신 판독가능 매체"는 명령어들 및 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 디바이스를 의미하며, 이것으로 제한되는 것은 아니지만, 랜덤 액세스 메모리(random-access memory, RAM), 판독 전용 메모리(read-only memory, ROM), 버퍼 메모리, 플래시 메모리, 광학 매체, 자기 매체, 캐시 메모리, 다른 유형들의 저장소(예를 들면, 소거 가능 프로그램 가능 판독 전용 메모리(Erasable Programmable Read-Only Memory, EEPROM)) 및/또는 이들의 임의의 적합한 조합을 포함할 수 있다. "머신 판독가능 매체"라는 용어는, 명령어들(616)을 저장할 수 있는 단일의 매체 또는 복수의 매체(예를 들어, 중앙집중형 또는 분산형 데이터베이스, 및/또는 연관된 캐시 및 서버)를 포함하는 것으로 취해질 것이다. "머신 판독가능 매체"라는 용어는 또한, 명령어들이, 머신의 하나 이상의 프로세서(예를 들어, 프로세서들(610))에 의해 실행될 때, 머신으로 하여금 본 명세서에서 설명된 방법론들 중 임의의 하나 이상을 수행하게 하도록, 머신(예를 들어, 머신(600))에 의한 실행을 위한 명령어들(예를 들어, 명령어들(616))을 저장할 수 있는 임의의 매체 또는 복수의 매체의 조합을 포함하는 것으로 취해질 것이다. 따라서, "머신 판독가능 매체"는 단일 저장소 장치 또는 디바이스 뿐 아니라, 복수의 저장소 또는 디바이스를 포함하는 "클라우드 기반" 저장 시스템 또는 저장 네트워크를 지칭한다. "머신 판독가능 매체"라는 용어가 그 자체로 신호들을 배제한다. 예시적인 실시예들에서, 머신 판독가능 매체는 또한 "머신 판독가능 저장 디바이스"로서 지칭될 수 있다.
I/O 컴포넌트들(650)은 입력을 수신하고, 출력을 제공하며, 출력을 생성하고, 정보를 전송하며, 정보를 교환하고, 측정들을 포착하는 등을 위한 매우 다양한 컴포넌트들을 포함할 수 있다. 특정한 머신에 포함되는 구체적인 I/O 컴포넌트(650)는 머신의 유형에 의존할 것이다. 예를 들어, 모바일 전화와 같은 휴대용 머신은 터치 입력 디바이스 또는 기타의 이러한 입력 메커니즘을 포함할 수 있는 반면, 헤드리스 서버 머신(headless server machine)은 이러한 터치 입력 디바이스를 포함하지 않을 것이다. I/O 컴포넌트들(650)은 도 6에 도시되지 않은 많은 다른 컴포넌트들을 포함할 수 있다는 것을 알 것이다. I/O 컴포넌트(650)들은, 단지 이하의 논의를 간소화하기 위해 기능성에 따라 그룹화되어 있고, 이러한 그룹화는 어떠한 방식으로든 제한하는 것이 아니다. 다양한 예시적인 실시예들에서, I/O 컴포넌트들(650)은 출력 컴포넌트들(652) 및 입력 컴포넌트들(654)을 포함할 수 있다. 출력 컴포넌트들(652)은 시각적 컴포넌트들(예컨대, PDP(plasma display panel), LED(light emitting diode) 디스플레이, LCD(liquid crystal display), 프로젝터, 또는 CRT(cathode ray tube)와 같은 디스플레이), 음향 컴포넌트들(예컨대, 스피커들), 햅틱 컴포넌트들(예컨대, 진동 모터, 저항 메커니즘들), 다른 신호 생성기들 등을 포함할 수 있다. 입력 컴포넌트들(654)은 영숫자 입력 컴포넌트들(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 광-광학 키보드, 또는 다른 영숫자 입력 컴포넌트들), 포인트 기반 입력 컴포넌트들(예를 들어, 마우스, 터치 패드, 트랙볼, 조이스틱, 움직임 센서 또는 다른 포인팅 장비), 촉각 입력 컴포넌트들(예를 들어, 물리적 버튼, 터치들 또는 터치 제스처들의 로케이션 및/또는 힘을 제공하는 터치 스크린, 또는 기타 촉각 입력 컴포넌트들), 오디오 입력 컴포넌트들(예를 들어, 마이크로폰) 등을 포함할 수 있다.
추가의 예시적인 실시예들에서, I/O 컴포넌트들(650)은, 광범위한 다른 컴포넌트들 중에서도, 바이오메트릭 컴포넌트들(656), 움직임 컴포넌트들(658), 환경 컴포넌트들(660), 또는 위치 컴포넌트들(662)을 포함할 수 있다. 예를 들어, 바이오메트릭 컴포넌트들(656)은 표현들(예컨대, 손 표현(hand expression)들, 얼굴 표현(facial expression)들, 음성 표현(vocal expression)들, 보디 제스처(body gesture)들, 또는 눈 추적)을 검출하고, 생체신호들(예를 들어, 혈압, 심박수, 체온, 발한(perspiration), 또는 뇌파)을 측정하고, 사람을 식별하고(예를 들어, 음성 식별, 망막 식별, 얼굴 식별, 지문 식별, 또는 뇌파 기반 식별(electroencephalogram based identification)), 및 기타의 것을 하는 컴포넌트들을 포함할 수 있다. 움직임 컴포넌트들(658)은 가속도 센서 컴포넌트들(예컨대, 가속도계), 중력 센서 컴포넌트들, 회전 센서 컴포넌트들(예컨대, 자이로스코프) 및 기타 등등을 포함할 수 있다. 환경 컴포넌트들(660)은, 예를 들어, 조명 센서 컴포넌트들(예를 들어, 광도계), 온도 센서 컴포넌트들(예를 들어, 주변 온도를 검출하는 하나 이상의 온도계), 음향 센서 컴포넌트들(예를 들어, 배경 잡음을 검출하는 하나 이상의 마이크로폰), 또는 주위의 물리적 환경에 대응하는 표시들, 측정들, 또는 신호들을 제공할 수 있는 다른 컴포넌트들을 포함할 수 있다. 위치 컴포넌트들(662)은 위치 센서 컴포넌트들(예를 들어, GPS(Global Position System) 수신기 컴포넌트), 고도 센서 컴포넌트들(예를 들어, 그로부터 고도가 도출될 수 있는 공기 압력을 검출하는 고도계들 또는 기압계들), 오리엔테이션 센서 컴포넌트들(예를 들어, 자력계들) 등을 포함할 수 있다.
통신은 매우 다양한 기술들을 사용하여 구현될 수 있다. I/O 컴포넌트들(650)은 제각기 커플링(682) 및 커플링(672)을 통해 머신(600)을 네트워크(680) 또는 디바이스들(670)에 결합하도록 동작가능한 통신 컴포넌트들(664)을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(664)은 네트워크(680)와 인터페이싱하기 위한 네트워크 인터페이스 컴포넌트 또는 다른 적당한 디바이스를 포함할 수 있다. 추가의 예들에서, 통신 컴포넌트들(664)은 유선 통신 컴포넌트들, 무선 통신 컴포넌트들, 셀룰러 통신 컴포넌트들, 근접장 통신(Near Field Communication, NFC) 컴포넌트들, 블루투스® 컴포넌트들(예를 들어, 블루투스® 저 에너지), Wi-Fi® 컴포넌트들 및 다른 양상을 통해 통신을 제공하는 다른 통신 컴포넌트들을 포함할 수 있다. 디바이스(670)는 또 다른 머신 또는 임의의 다양한 주변 디바이스들(예를 들어, USB(Universal Serial Bus)를 통해 결합된 주변 디바이스)일 수 있다.
더욱이, 통신 컴포넌트들(664)은 식별자들을 검출할 수 있거나 또는 식별자들을 검출하기 위해 동작가능한 컴포넌트들을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(664)은 RFID(Radio Frequency Identification) 태그 판독기 컴포넌트들, NFC 스마트 태그 검출 컴포넌트들, 광학 판독기 컴포넌트들(예를 들어, UPC(Universal Product Code) 바코드와 같은 1차원 바코드들, QR(Quick Response) 코드, Aztec 코드, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D 바코드와 같은 다차원 바코드, 및 다른 광학 코드들을 검출하는 광학 센서), 또는 음향 검출 컴포넌트들(예컨대, 태깅된 오디오 신호(tagged audio signal)들을 식별하는 마이크로폰들)을 포함할 수 있다. 게다가, 인터넷 프로토콜(IP) 지오로케이션(geolocation)을 통한 로케이션, Wi-Fi® 신호 삼각측량을 통한 로케이션, 특정한 로케이션을 표시할 수 있는 NFC 비콘 신호(beacon signal)를 검출하는 것을 통한 로케이션, 및 기타 등등과 같은 다양한 정보는 통신 컴포넌트들(664)을 통해 도출될 수 있다.
다양한 예시적인 실시예들에서, 네트워크(680)의 하나 이상의 부분은 애드 혹(ad hoc) 네트워크, 인트라넷(intranet), 익스트라넷(extranet), 가상 사설 네트워크(virtual private network, VPN), 로컬 영역 네트워크(local area network, LAN), 무선 LAN(wireless LAN, WLAN), 광역 네트워크(WAN), 무선 WAN(WWAN), 대도시권 영역 네트워크(metropolitan area network, MAN), 인터넷, 인터넷의 부분, 공중 교환 전화 네트워크(public switched telephone network, PSTN)의 부분, 기존 전화 서비스(plain old telephone service, POTS) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, Wi-Fi® 네트워크, 또 다른 유형의 네트워크, 또는 2개 이상의 이러한 네트워크의 조합일 수 있다. 예를 들어, 네트워크(680) 또는 네트워크(680)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(682)은 CDMA(Code Division Multiple Access) 접속, GSM(Global System for Mobile communications) 접속, 또는 다른 타입의 셀룰러 또는 무선 결합일 수 있다. 이 예에서, 커플링(682)은 1xRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G를 포함하는 3GPP(third Generation Partnership Project), 4G(fourth generation) 무선 네트워크, UMTS(Universal Mobile Telecommunications System), HSPA(High Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준, 다양한 표준화 기구(standard setting organization)들에 의해 정의된 다른 표준들, 다른 장거리 프로토콜들, 또는 다른 데이터 전송 기술과 같은, 다양한 유형의 데이터 전송 기술 중 임의의 것을 구현할 수 있다.
명령어들(616)은 네트워크 인터페이스 디바이스(예컨대, 통신 컴포넌트들(664)에 포함된 네트워크 인터페이스 컴포넌트)를 통해 전송 매체를 사용하여 그리고 다수의 널리 공지된 전송 프로토콜들(예컨대, HTTP(hypertext transfer protocol)) 중 임의의 것을 이용하여 네트워크(680)를 거쳐 송신 또는 수신될 수 있다. 유사하게, 명령어들(616)은 디바이스들(670)에 대한 커플링(672)(예를 들어, 피어-투-피어 결합(peer-to-peer coupling))을 통해 전송 매체를 사용하여 송신 또는 수신될 수 있다. "전송 매체(transmission medium)"라는 용어는 머신(600)에 의한 실행을 위해 명령어들(616)을 저장, 인코딩, 또는 운반할 수 있는 임의의 무형의 매체를 포함하는 것으로 취해져야 하고, 디지털 또는 아날로그 통신 신호들 또는 이러한 소프트웨어의 통신을 용이하게 하는 다른 무형의 매체를 포함한다.
특정 실시예들이 본 명세서에서 로직 또는 다수의 컴포넌트, 모듈들, 또는 메커니즘들을 포함하는 것으로서 설명된다. 모듈들은 소프트웨어 모듈들(예를 들어, 머신 판독가능 매체상에 또는 전송 신호에서 구현된 코드) 또는 하드웨어 모듈들을 구성할 수 있다. 하드웨어 모듈은 특정 동작들을 수행할 수 있는 유형의 유닛(tangible unit)이고, 특정 방식으로 구성되거나 배열될 수 있다. 예시적인 실시예들에서, 하나 이상의 컴퓨터 시스템(예를 들어, 단독형, 클라이언트, 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈(예를 들어, 프로세서 또는 프로세서들의 그룹)은 본 명세서에서 설명된 바와 같은 특정 동작들을 수행하도록 동작하는 하드웨어 모듈로서 소프트웨어(예를 들어, 애플리케이션 또는 애플리케이션 부분)에 의해 구성될 수 있다.
다양한 실시예들에서, 하드웨어 모듈은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들어, 하드웨어 모듈은 특정 동작들을 수행하도록 (예를 들어, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)과 같은 특수 목적 프로세서로서) 영구적으로 구성되어 있는 전용 회로 또는 로직을 포함할 수 있다. 하드웨어 모듈은 특정 동작들을 수행하기 위하여 소프트웨어에 의해 일시적으로 구성되는 (예를 들어, 범용 프로세서 또는 다른 프로그램가능 프로세서 내에서 포괄된 바와 같은) 프로그램가능 로직 또는 회로를 또한 포함할 수 있다. 전용 및 영구적으로 구성된 회로에서, 또는 일시적으로 구성된 회로(예를 들어, 소프트웨어에 의해 구성됨)에서 하드웨어 모듈을 기계적으로 구현하기 위한 판정이 비용 및 시간 고려사항들에 이뤄질 수 있다는 것을 알 것이다.
따라서, 용어 "하드웨어 모듈"은 특정 방식으로 동작하고 및/또는 본 명세서에서 설명된 특정 동작들을 수행하도록 물리적으로 구성되거나, 영구적으로 구성(예컨대, 하드와이어드(hardwired))되거나, 또는 일시적으로 구성(예컨대, 프로그래밍)되는 엔티티인, 유형의 엔티티(tangible entity)를 포괄하는 것으로 이해되어야 한다. 하드웨어 모듈들이 일시적으로 구성되는(예를 들어, 프로그래밍된) 실시예들을 고려할 때, 하드웨어 모듈들 각각은 시간상 임의의 한 시점에서 구성되거나 인스턴스화될 필요는 없다. 예를 들어, 하드웨어 모듈들이 소프트웨어를 이용하여 구성된 범용 프로세서를 포함할 경우, 범용 프로세서는 상이한 시간들에서 개개의 상이한 하드웨어 모듈들로서 구성될 수 있다. 따라서, 소프트웨어는, 예를 들어, 시간의 하나의 인스턴스에서 특정한 하드웨어 모듈을 구성하고, 시간의 상이한 인스턴스에서 상이한 하드웨어 모듈을 구성하도록 프로세서를 구성할 수 있다.
하드웨어 모듈들은 다른 하드웨어 모듈들에 정보를 제공하고 다른 하드웨어 모듈로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어 모듈들은 통신가능하게 결합되는 것으로서 간주될 수 있다. 다수의 이러한 하드웨어 모듈들이 동시에 존재할 경우, 통신들은 (예를 들어, 하드웨어 모듈들을 연결하는 적절한 회로들 및 버스들을 통해서) 신호 전송을 통해 달성될 수 있다. 복수의 하드웨어 모듈이 상이한 시간들에서 구성되거나 인스턴스화되는 실시예들에서, 이러한 하드웨어 모듈들 사이의 통신은, 예를 들어, 복수의 하드웨어 모듈이 액세스하는 메모리 구조 내의 정보의 저장 및 검색을 통해 달성될 수 있다. 예를 들어, 하나의 하드웨어 모듈은 동작을 수행하고 그 동작의 출력을 통신가능하게 결합된 메모리 디바이스에 저장할 수 있다. 이후, 추가의 하드웨어 모듈은, 더 나중의 시간에서, 저장된 출력을 검색하고 처리하기 위해 메모리 디바이스에 액세스할 수 있다. 하드웨어 모듈들은 입력 또는 출력 디바이스들과의 통신들을 또한 개시할 수 있고, 자원(예를 들어, 정보의 모음)상에서 동작할 수 있다.
본 명세서에서 설명되는 예시적인 방법들의 다양한 동작들은, 관련 있는 동작들을 수행하도록 일시적으로 구성되거나(예컨대, 소프트웨어에 의함) 또는 영구적으로 구성되는 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 또는 영구적으로 구성되어 있든 간에, 이러한 프로세서들은 하나 이상의 동작 또는 기능을 수행하기 위해 동작하는 프로세서 구현 모듈(processor-implemented module)들을 구성할 수 있다. 본 명세서에서 지칭되는 모듈들은, 일부 예시적인 실시예에서, 프로세서 구현 모듈들을 포함할 수 있다.
이와 유사하게, 명세서에 기술되는 방법들은 적어도 부분적으로 프로세서 구현될 수 있다. 예를 들어, 방법의 동작들 중 적어도 일부가 하나 이상의 프로세서 또는 프로세서 구현 모듈들에 의해 수행될 수 있다. 동작들 중 특정한 동작의 수행은 단일 머신 내에 상주하는 것뿐만 아니라 다수의 머신에 걸쳐 배치되는 하나 이상의 프로세서 중에서 분산될 수 있다. 일부 예시적인 실시예들에서, 프로세서 또는 프로세서들은 단일 로케이션에(예컨대, 홈 환경, 사무실 환경, 또는 서버 팜 내에) 자리잡을 수 있는 한편, 다른 실시예들에서 프로세서들은 다수의 로케이션에 걸쳐 분산될 수 있다.
하나 이상의 프로세서는 "클라우드 컴퓨팅" 환경에서 또는 "SaaS(software as a service)"로서 관련 있는 동작들의 수행을 지원하도록 또한 동작할 수 있다. 예를 들어, 동작들 중 적어도 일부가 (프로세서들을 포함하는 머신의 예들로서) 한 그룹의 컴퓨터들에 의해 수행될 수 있고, 이 동작들은 네트워크(예컨대, 인터넷)를 거쳐 그리고 하나 이상의 적절한 인터페이스(예컨대, API)를 거쳐 액세스 가능하다.
예시적인 실시예들은 디지털 전자 회로로 또는 컴퓨터 하드웨어, 펌웨어, 또는 소프트웨어로, 또는 이것들의 조합들로 구현될 수 있다. 예시적인 실시예들은 데이터 처리 장치, 예를 들어, 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터에 의한 실행을 위해, 또는 데이터 처리 장치의 동작을 제어하기 위해 정보 캐리어(information carrier), 예를 들어, 머신 판독가능 매체에 유형적으로 구현된 컴퓨터 프로그램 제품, 예를 들어 컴퓨터 프로그램을 사용하여 구현될 수 있다.
컴퓨터 프로그램은 컴파일링된 또는 인터프리팅된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 그것은 자립형 프로그램으로서 또는 컴퓨팅 환경에서의 사용에 적합한 모듈, 서브루틴, 또는 다른 유닛으로서를 포함하여 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램이 하나의 컴퓨터상에서 또는 하나의 사이트에 있거나 다수의 사이트에 걸쳐 분산되어 통신 네트워크에 의해 상호접속되는 다수의 컴퓨터상에서 실행되기 위해 배포될 수 있다.
예시적인 실시예들에서, 동작들은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하기 위해 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램가능 프로세서에 의해 수행될 수 있다. 방법 동작들은, 특수 목적 로직 회로(예컨대, FPGA 또는 ASIC)에 의해 또한 수행될 수 있고, 예시적인 실시예들의 장치는 그러한 특수 목적 로직 회로로서 구현될 수 있다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있고, 전형적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 컴퓨터 프로그램들이 각자의 컴퓨터들상에서 실행되고 서로 클라이언트-서버 관계를 갖는 것에 의해 생긴다. 프로그램가능 컴퓨팅 시스템을 배치하는 실시예들에서, 하드웨어 및 소프트웨어 아키텍처 양쪽 모두가 고려할 가치가 있다는 것을 알 것이다. 구체적으로는, 특정 기능을 영구적으로 구성되는 하드웨어(예컨대, ASIC)로 구현할지, 일시적으로 구성되는 하드웨어(예컨대, 소프트웨어 및 프로그램가능 프로세서의 조합)로 구현할지, 또는 영구적으로 및 일시적으로 구성되는 하드웨어들의 조합으로 구현할지의 선택은 설계상의 선택일 수 있다는 것을 알 것이다.
본 개시내용의 실시예들이 특정 예시적인 실시예들을 참조하여 설명되었지만, 본 발명의 주제의 더 넓은 범위로부터 벗어나지 않고 이러한 실시예들에 대해 다양한 수정들 및 변경들이 이루어질 수 있다는 것이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 것으로서 간주된다. 그 일부를 형성하는 첨부 도면들은, 본 발명의 주제가 실시될 수 있는 특정 실시예들을, 제한이 아닌 예시로서 도시한다. 본 기술분야의 통상의 기술자가 본 명세서에 개시된 교시내용을 실시할 수 있게 하기 위해 예시된 실시예들이 충분히 상세히 기술되어 있다. 이로부터 다른 실시예들이 사용되고 도출될 수 있어서, 구조적 및 논리적 치환들 및 변경들이 본 개시내용의 범위로부터 벗어남 없이 만들어질 수 있도록 한다. 따라서, 이 상세한 설명이 제한하는 의미로 해석되어서는 안되고, 다양한 실시예들의 범위는, 첨부된 청구항들에 부여되는 등가물들의 전체 범위와 함께, 첨부된 청구항들에 의해서만 한정된다.
독창적 발명 주제의 그러한 실시예들은 편리성만을 위해 그리고 하나보다 많은 것이 실제로 개시된다면 본 출원의 범위를 임의의 단일 발명 또는 독창적 개념에 자발적으로 제한하도록 의도하는 것 없이 용어 "발명"에 의해 개별적으로 및/또는 집합적으로, 본 명세서에서 언급될 수 있다. 따라서, 특정한 실시예가 본 명세서에서 예시되고 설명되었지만, 동일한 목적을 달성하도록 계산된 임의의 배치가 도시된 특정한 실시예를 대체할 수 있다는 것을 알아야 한다. 이 개시내용은 다양한 실시예에 대한 임의의 및 모든 적응 또는 변경을 커버하기 위한 것이다. 전술한 실시예들의 조합들, 및 본 명세서에 특정적으로 설명되지 않은 다른 실시예들은 전술한 설명을 검토할 때 통상의 기술자에게 명백해질 것이다.
본 문서에서 언급되는 모든 게시물, 특허, 및 특허 문서들은, 마치 참조에 의해 개별적으로 포함되기나 한 것처럼, 그 전체가 참조에 의해 본 명세서에 포함된다. 이 문서와 참조에 의해 그렇게 포함된 문서들 사이의 불일치한 사용의 경우, 포함된 참조들에서의 사용은 본 문서의 사용에 보조적인 것으로 간주되어야 한다; 양립가능하지 않은 불일치에 대해서는, 본 문서에서의 사용이 지배한다.
본 문서에서, 단수 용어("a" 또는 "an")는, 특허 문헌들에서 일반적인 것처럼, "적어도 하나" 또는 "하나 이상"의 임의의 다른 경우들 또는 이용들과는 독립적으로, 하나 또는 하나를 초과하는 것을 포함하는 것으로 이용된다. 이 문서에서, 용어 "또는"은, 달리 지시되지 않는 한, 비배타적인 "또는"을 지칭하기 위해 사용되어, "A 또는 B"가 "B를 제외한 A", "A를 제외한 B" 및 "A와 B"를 포함하도록 된다. 첨부된 청구항들에서, 용어들 "포함하는(including) "및" 여기서(in which)"는 제각기 용어들 "포함하는(comprising) "및" 여기서(wherein)"의 평이한 영어 등가물들로서 사용된다. 또한 이하의 청구항들에서, 용어들 "포함하는(including)" 및 "포함하는(comprising)"은 개방형(open-ended)이다; 즉, 청구항에서의 그러한 용어 이후에 열거된 것들 이외의 요소들을 포함하는 시스템, 디바이스, 물품, 또는 프로세스는 여전히 그 청구항의 범위 내에 속하는 것으로 간주된다.

Claims (19)

  1. 쿼리를 세그먼트화하는 방법으로서: 하나 이상의 하드웨어 프로세서에 의해, 쿼리 스트링을 수신하는 단계 - 상기 쿼리 스트링은 복수의 토큰을 포함함 - ; 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 복수의 토큰으로부터 제1 토큰 및 제2 토큰을 식별하는 단계; 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 제1 토큰 및 상기 제2 토큰과 제각기 연관된 단어 임베딩 모델의 제1 벡터 및 제2 벡터를 결정하는 단계; 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 제1 및 제2 벡터들에 기초하여 상기 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계; 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 결정에 기초하여 상기 단일 쿼리 세그먼트를 포함하는 복수의 쿼리 세그먼트를 생성하는 단계; 및 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 복수의 쿼리 세그먼트에 기초하여 상기 쿼리를 처리하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 제1 벡터와 상기 제2 벡터를 연쇄시킴으로써 특징을 생성하는 단계; 및 상기 특징을 이진 분류기에 전달하고 또한 상기 제1 및 제2 토큰들이 상기 이진 분류기로부터의 상기 단일 쿼리 세그먼트에 있는지의 표시를 수신함으로써 상기 제1 및 제2 토큰들을 상기 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계를 추가로 포함하는 방법.
  3. 제1항에 있어서, 상기 제1 및 제2 벡터들을 포함하는 모델 데이터를 생성하기 위해 복수의 훈련 쿼리에 기초하여 상기 단어 임베딩 모델을 구축하는 단계를 추가로 포함하는 방법.
  4. 제3항에 있어서, 상기 단어 임베딩 모델은 word2vec 또는 GloVe 모델인 방법.
  5. 제3항에 있어서, 상기 모델 데이터에 기초하여 분류기를 훈련하는 단계를 추가로 포함하고, 상기 제1 및 제2 토큰들을 상기 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계는 상기 훈련된 분류기에 기초하는 방법.
  6. 제5항에 있어서, 상기 훈련 쿼리들의 세그먼트화를 정의하는 주석 데이터에 기초하여 상기 분류기를 훈련하는 단계를 추가로 포함하는 방법.
  7. 제6항에 있어서, cbow(contiguous bag of words) 또는 스킵-그램 아키텍처를 이용하여 상기 분류기를 훈련하는 단계를 추가로 포함하는 방법.
  8. 제1항에 있어서, 상기 처리하는 단계는 상기 복수의 쿼리 세그먼트에 기초하여 데이터베이스를 검색하는 단계를 포함하는 방법.
  9. 쿼리를 세그먼트화하기 위한 장치로서, 쿼리 스트링을 수신하고 - 상기 쿼리 스트링은 복수의 토큰을 포함함-; 상기 복수의 토큰으로부터 제1 토큰 및 제2 토큰을 식별하고; 상기 제1 토큰 및 상기 제2 토큰과 제각기 연관된 단어 임베딩 모델의 제1 벡터 및 제2 벡터를 결정하고; 상기 제1 및 제2 벡터들에 기초하여 상기 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하고; 상기 결정에 기초하여 복수의 쿼리 세그먼트를 생성하고; 및 상기 복수의 쿼리 세그먼트에 기초하여 상기 쿼리를 처리하도록 구성되는 하나 이상의 하드웨어 프로세서를 포함하는 장치.
  10. 제9항에 있어서, 상기 하나 이상의 하드웨어 프로세서는 상기 제1 및 제2 벡터들을 포함하는 모델 데이터를 생성하기 위해 복수의 훈련 쿼리에 기초하여 상기 단어 임베딩 모델을 구축하도록 추가로 구성되는 장치.
  11. 제10항에 있어서, 상기 단어 임베딩 모델은 word2vec 또는 GloVe 모델인 장치.
  12. 제10항에 있어서, 상기 하나 이상의 하드웨어 프로세서는 제1 및 제2 특징들을 제각기 생성하기 위해 상기 제1 벡터 및 상기 제2 벡터를 패딩하도록 추가로 구성되고, 상기 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지의 결정은 상기 제1 및 제2 특징들에 기초하는 장치.
  13. 제10항에 있어서, 상기 하나 이상의 하드웨어 프로세서는 상기 모델 데이터에 기초하여 분류기를 훈련하도록 추가로 구성되고, 상기 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 것은 상기 훈련된 분류기에 기초하는 장치.
  14. 제13항에 있어서, 상기 하나 이상의 하드웨어 프로세서는 상기 훈련 쿼리들의 세그먼트화를 정의하는 주석 데이터에 기초하여 상기 분류기를 훈련하도록 추가로 구성되는 장치.
  15. 제9항에 있어서, 상기 하나 이상의 하드웨어 프로세서는 상기 제1 및 제2 토큰들의 식별을 상기 복수의 토큰 내의 인접하는 토큰들에 제한하도록 추가로 구성되는 장치.
  16. 제9항에 있어서, 상기 처리하는 것은 상기 복수의 쿼리 세그먼트에 기초하여 데이터베이스를 검색하는 것을 포함하는 장치.
  17. 제16항에 있어서, 상기 처리하는 것은 상기 복수의 쿼리 세그먼트들 중의 우세 쿼리 세그먼트를 식별하는 것, 및 상기 우세 쿼리 세그먼트에 기초하여 데이터베이스를 검색하는 것을 포함하는 장치.
  18. 제9항에 있어서, 상기 하나 이상의 하드웨어 프로세서는 상기 제1 토큰과 상기 제2 토큰 사이에서 문자들의 경계를 정하는 하나 이상의 토큰에 기초하여 상기 쿼리 스트링에서 상기 제1 토큰 및 상기 제2 토큰을 식별하도록 추가로 구성되는 장치.
  19. 실행될 때 하나 이상의 하드웨어 프로세서를 구성하여 쿼리를 세그먼트화하는 방법을 수행하게 하는 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 방법은: 하나 이상의 하드웨어 프로세서에 의해, 쿼리 스트링을 수신하는 단계 - 상기 쿼리 스트링은 복수의 토큰을 포함함 - ; 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 복수의 토큰으로부터 제1 토큰 및 제2 토큰을 식별하는 단계; 상기 하나 이상의 하드웨어 프로세서에 의해, 상기 제1 토큰 및 상기 제2 토큰과 제각기 연관된 단어 임베딩 모델의 제1 벡터 및 제2 벡터를 결정하는 단계; 상기 제1 및 제2 벡터들에 기초하여 상기 제1 및 제2 토큰들을 단일 쿼리 세그먼트에 포함시킬지를 결정하는 단계; 상기 결정에 기초하여 복수의 쿼리 세그먼트를 생성하는 단계; 및 상기 하나 이상의 하드웨어 프로세서에 의해, 복수의 쿼리 세그먼트에 기초하여 상기 쿼리를 처리하는 단계를 포함하는 비일시적 컴퓨터 판독가능 매체.
KR1020197033803A 2017-05-15 2018-05-02 쿼리 세그먼트화를 위한 방법 및 시스템 KR102402340B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762506132P 2017-05-15 2017-05-15
US62/506,132 2017-05-15
US15/681,663 US11640436B2 (en) 2017-05-15 2017-08-21 Methods and systems for query segmentation
US15/681,663 2017-08-21
PCT/US2018/030618 WO2018212995A1 (en) 2017-05-15 2018-05-02 Methods and systems for query segmentation

Publications (2)

Publication Number Publication Date
KR20190139970A true KR20190139970A (ko) 2019-12-18
KR102402340B1 KR102402340B1 (ko) 2022-05-27

Family

ID=64097753

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197033803A KR102402340B1 (ko) 2017-05-15 2018-05-02 쿼리 세그먼트화를 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US11640436B2 (ko)
EP (1) EP3625706A4 (ko)
KR (1) KR102402340B1 (ko)
CN (1) CN110622153B (ko)
WO (1) WO2018212995A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210138455A (ko) * 2020-05-12 2021-11-19 쿠팡 주식회사 데이터베이스 쿼리 레이턴시를 감소시키기 위한 시스템 및 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392582B2 (en) * 2015-10-15 2022-07-19 Sumo Logic, Inc. Automatic partitioning
US11640436B2 (en) 2017-05-15 2023-05-02 Ebay Inc. Methods and systems for query segmentation
US11216437B2 (en) 2017-08-14 2022-01-04 Sisense Ltd. System and method for representing query elements in an artificial neural network
WO2019035860A1 (en) * 2017-08-14 2019-02-21 Sisense Ltd. SYSTEM AND METHOD FOR APPROXIMATION OF INTERROGATION RESULTS
US11036746B2 (en) 2018-03-01 2021-06-15 Ebay Inc. Enhanced search system for automatic detection of dominant object of search query
US11151325B2 (en) * 2019-03-22 2021-10-19 Servicenow, Inc. Determining semantic similarity of texts based on sub-sections thereof
CN109948340B (zh) * 2019-03-27 2020-09-01 集美大学 一种卷积神经网络和XGBoost相结合的PHP-Webshell检测方法
CN110287329B (zh) * 2019-07-04 2021-01-29 河海大学 一种基于商品文本分类的电商类目属性挖掘方法
US20230044247A1 (en) * 2021-08-06 2023-02-09 Rockwell Collins, Inc. Cockpit display ambient lighting information for improving gaze estimation
US20230096564A1 (en) * 2021-09-29 2023-03-30 Rakuten Group, Inc. Chunking execution system, chunking execution method, and information storage medium
US20240022562A1 (en) * 2022-07-15 2024-01-18 Mastercard International Incorporated Systems, methods, and non-transitory computer-readable media for biometrically confirming trusted engagement

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007512609A (ja) * 2003-11-21 2007-05-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 文書構造化のためのテキストセグメンテーション及びトピック注釈付け
KR20140094003A (ko) * 2011-11-15 2014-07-29 아브 이니티오 테크놀로지 엘엘시 변형 토큰 네트워크들에 기반한 데이터 클러스터링
US20160189047A1 (en) * 2014-12-30 2016-06-30 Yahoo! Inc. Method and System for Entity Linking
KR20170045135A (ko) * 2015-10-16 2017-04-26 바이두 유에스에이 엘엘씨 휴먼 인스파이어드된 간단한 질문 응답(hisqa)을 위한 시스템 및 방법

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671333A (en) * 1994-04-07 1997-09-23 Lucent Technologies Inc. Training apparatus and method
US6236991B1 (en) * 1997-11-26 2001-05-22 International Business Machines Corp. Method and system for providing access for categorized information from online internet and intranet sources
US6363373B1 (en) 1998-10-01 2002-03-26 Microsoft Corporation Method and apparatus for concept searching using a Boolean or keyword search engine
US6657117B2 (en) * 2000-07-14 2003-12-02 Microsoft Corporation System and methods for providing automatic classification of media entities according to tempo properties
CN100485603C (zh) 2003-04-04 2009-05-06 雅虎公司 用于从搜索查询中产生概念单元的系统和方法
US7536382B2 (en) 2004-03-31 2009-05-19 Google Inc. Query rewriting with entity detection
US7603349B1 (en) 2004-07-29 2009-10-13 Yahoo! Inc. User interfaces for search systems using in-line contextual queries
US7680648B2 (en) 2004-09-30 2010-03-16 Google Inc. Methods and systems for improving text segmentation
US20060184625A1 (en) 2005-01-31 2006-08-17 Nordvik Markus A Short query-based system and method for content searching
WO2007064874A2 (en) * 2005-12-01 2007-06-07 Adchemy, Inc. Method and apparatus for representing text using search engine, document collection, and hierarchal taxonomy
JP2007156932A (ja) 2005-12-06 2007-06-21 Just Syst Corp 学習方法、学習装置、および検索方法、検索装置
US20100138451A1 (en) * 2006-04-03 2010-06-03 Assaf Henkin Techniques for facilitating on-line contextual analysis and advertising
US7877389B2 (en) * 2007-12-14 2011-01-25 Yahoo, Inc. Segmentation of search topics in query logs
US7925652B2 (en) * 2007-12-31 2011-04-12 Mastercard International Incorporated Methods and systems for implementing approximate string matching within a database
US8135580B1 (en) * 2008-08-20 2012-03-13 Amazon Technologies, Inc. Multi-language relevance-based indexing and search
US20100094835A1 (en) * 2008-10-15 2010-04-15 Yumao Lu Automatic query concepts identification and drifting for web search
US20100191740A1 (en) 2009-01-26 2010-07-29 Yahoo! Inc. System and method for ranking web searches with quantified semantic features
US20100205198A1 (en) * 2009-02-06 2010-08-12 Gilad Mishne Search query disambiguation
JP5462361B2 (ja) 2009-07-07 2014-04-02 グーグル・インコーポレーテッド マップサーチのためのクエリパーシング
US20110314011A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Automatically generating training data
DE102013003055A1 (de) * 2013-02-18 2014-08-21 Nadine Sina Kurz Verfahren und Vorrichtung zum Durchführen von Suchen in natürlicher Sprache
US9223898B2 (en) * 2013-05-08 2015-12-29 Facebook, Inc. Filtering suggested structured queries on online social networks
EP3158474A1 (en) 2014-06-18 2017-04-26 Google, Inc. Methods, systems, and media for searching for video content
US9690847B2 (en) 2014-08-07 2017-06-27 Google, Inc. Selecting content using query-independent scores of query segments
CN106033466A (zh) 2015-03-20 2016-10-19 华为技术有限公司 数据库查询的方法和设备
US10133729B2 (en) * 2015-08-28 2018-11-20 Microsoft Technology Licensing, Llc Semantically-relevant discovery of solutions
CN107220231A (zh) 2016-03-22 2017-09-29 索尼公司 用于自然语言处理的电子设备和方法以及训练方法
CN107590153B (zh) 2016-07-08 2021-04-27 微软技术许可有限责任公司 使用卷积神经网络的对话相关性建模
US20190207946A1 (en) * 2016-12-20 2019-07-04 Google Inc. Conditional provision of access by interactive assistant modules
US20180232443A1 (en) * 2017-02-16 2018-08-16 Globality, Inc. Intelligent matching system with ontology-aided relation extraction
US11640436B2 (en) 2017-05-15 2023-05-02 Ebay Inc. Methods and systems for query segmentation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007512609A (ja) * 2003-11-21 2007-05-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 文書構造化のためのテキストセグメンテーション及びトピック注釈付け
KR20140094003A (ko) * 2011-11-15 2014-07-29 아브 이니티오 테크놀로지 엘엘시 변형 토큰 네트워크들에 기반한 데이터 클러스터링
US20160189047A1 (en) * 2014-12-30 2016-06-30 Yahoo! Inc. Method and System for Entity Linking
KR20170045135A (ko) * 2015-10-16 2017-04-26 바이두 유에스에이 엘엘씨 휴먼 인스파이어드된 간단한 질문 응답(hisqa)을 위한 시스템 및 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210138455A (ko) * 2020-05-12 2021-11-19 쿠팡 주식회사 데이터베이스 쿼리 레이턴시를 감소시키기 위한 시스템 및 방법
US11210288B2 (en) 2020-05-12 2021-12-28 Coupang Corp. Systems and methods for reducing database query latency
KR20220040446A (ko) * 2020-05-12 2022-03-30 쿠팡 주식회사 데이터베이스 쿼리 레이턴시를 감소시키기 위한 시스템 및 방법
US11681701B2 (en) 2020-05-12 2023-06-20 Coupang Corp. Systems and methods for reducing database query latency

Also Published As

Publication number Publication date
WO2018212995A1 (en) 2018-11-22
EP3625706A4 (en) 2021-01-06
KR102402340B1 (ko) 2022-05-27
US11640436B2 (en) 2023-05-02
CN110622153A (zh) 2019-12-27
EP3625706A1 (en) 2020-03-25
CN110622153B (zh) 2023-12-19
US20180329999A1 (en) 2018-11-15

Similar Documents

Publication Publication Date Title
KR102402340B1 (ko) 쿼리 세그먼트화를 위한 방법 및 시스템
US11227004B2 (en) Semantic category classification
US20230079147A1 (en) Detecting cross-lingual comparable listings
KR102206588B1 (ko) 인공신경망 기계 번역시 메타 정보를 이용하는 기법
KR102214015B1 (ko) 스마트 매치 자동 완성 시스템
WO2017112650A1 (en) Cross-linguistic search using semantic meaning vectors
US20170372398A1 (en) Vector representation of descriptions and queries
US9946703B2 (en) Title extraction using natural language processing
US10318630B1 (en) Analysis of large bodies of textual data
CN110168591B (zh) 确定行业相似性以增强职位搜索
US20210056265A1 (en) Snippet generation and item description summarizer
US20180276302A1 (en) Search provider selection using statistical characterizations
US20190138547A1 (en) Obtaining item listings matching a distinguishing style of an image selected in a user interface
KR102501362B1 (ko) 자동 로트 분류
KR102236889B1 (ko) 결과 피드백을 이용하는 검색 시스템
US20210165838A1 (en) Context Identification For Content Generation
US20190179819A1 (en) Enhancing Search Queries Using User Implicit Data
WO2017160722A1 (en) Catalogue management
US11797587B2 (en) Snippet generation system
US12002077B2 (en) Automatic listing generation for multiple items
US10769695B2 (en) Generating titles for a structured browse page
US20170161814A1 (en) Discovering products in item inventory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant