KR20200134311A - 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합 - Google Patents

서로 다른 데이터 소스들에 대한 질의의 응답들의 통합 Download PDF

Info

Publication number
KR20200134311A
KR20200134311A KR1020207030954A KR20207030954A KR20200134311A KR 20200134311 A KR20200134311 A KR 20200134311A KR 1020207030954 A KR1020207030954 A KR 1020207030954A KR 20207030954 A KR20207030954 A KR 20207030954A KR 20200134311 A KR20200134311 A KR 20200134311A
Authority
KR
South Korea
Prior art keywords
processing system
data processing
application
applications
action
Prior art date
Application number
KR1020207030954A
Other languages
English (en)
Other versions
KR102435433B1 (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 구글 엘엘씨
Priority to KR1020227028442A priority Critical patent/KR20220118564A/ko
Publication of KR20200134311A publication Critical patent/KR20200134311A/ko
Application granted granted Critical
Publication of KR102435433B1 publication Critical patent/KR102435433B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/632Query formulation
    • G06F16/634Query by example, e.g. query by humming
    • 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/9532Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/435Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/63Querying
    • G06F16/632Query formulation
    • 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/951Indexing; Web crawling techniques
    • 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/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/165Management of the audio stream, e.g. setting of volume, audio stream path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

서로 다른 데이터 소스 질의들에 대한 통합이 제공된다. 어플리케이션 수신 구성요소는 어플리케이션 패키지 파일을 수신하고, 상기 파일을 프로세싱하여 어플리케이션에 대한 하나 이상의 액션들 및 엔티티들을 식별할 수 있다. 자연어 프로세서 구성요소는 입력 오디오 신호를 수신하여 액션 및 액션이 수행될 엔티티를 식별할 수 있다. 어플리케이션 전달 구성요소는 액션을 수행할 수 있는 어플리케이션들 및 엔티티에 대한 액세스를 갖는 어플리케이션을 식별한 다음, 엔티티에 대해 액션을 수행하도록 구성된 어플리케이션을 선택할 수 있다. 어플리케이션 전달 구성요소는 시스템에 의해 선택된 어플리케이션에 대한 표시를 클라이언트 디바이스에 제공할 수 있다.

Description

서로 다른 데이터 소스들에 대한 질의의 응답들의 통합
관련 출원들에 대한 상호 참조
본 출원은 2018년 11월 21일자로 미국에 출원된 미국 가특허출원(출원번호 62/770,338)에 대한 35 USC §119에 따른 우선권의 이점을 주장하며, 이는 그 전체가 본 명세서에 참조로 포함된다.
서버는 정보 요청을 수신할 수 있다. 서버는 요청된 정보를 얻기 위해 정보 요청을 수많은 데이터베이스 또는 서버로 라우팅할 수 있다.
어플리케이션 또는 모바일 어플리케이션은 컴퓨팅 디바이스 또는 모바일 컴퓨팅 디바이스에서 실행될 수 있다. 어플리케이션은 컴퓨팅 디바이스에서 부분적으로 실행되고 데이터 프로세싱 시스템에서 부분적으로 실행될 수 있다. 어플리케이션은 데이터 프로세싱 시스템에서 실행되고, 컴퓨팅 디바이스로부터 입력을 수신할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 컴퓨팅 디바이스로부터 입력 오디오 신호(예컨대, 음성 입력)를 수신하고 그리고 입력 오디오 신호를 파싱하여 액션(예컨대, 음악 재생) 및 액션이 수행될 엔티티(예: 특정 아티스트 또는 노래)를 식별할 수 있다. 어플리케이션은 서로 다른 유형들의 모바일 디바이스, 컴퓨팅 디바이스, 운영 체제, 대화형 어플리케이션 또는 챗봇 어플리케이션을 포함하는 다양한 플랫폼들 상의 어플리케이션을 참조할 수 있다.
하지만, 어떤 어플리케이션이 액션을 수행할 수 있는지, 뿐만 아니라 어떤 어플리케이션이 엔티티에 대한 액세스를 갖고 있는지를 결정하는 것은 데이터 프로세싱 시스템에게 매우 난해한 일이다. 예를 들어, 각각의 어플리케이션 또는 어플리케이션 개발자는 전자적 데이터 파일들을 상이한 데이터베이스 또는 데이터 저장소에 저장할 수 있다. 각각의 어플리케이션 또는 어플리케이션 개발자는 어플리케이션이 수행할 수 있는 액션들의 유형들을 하나 이상의 기술들을 사용하여 나타낼 수 있다. 액션 및 액션이 수행될 수 있는 전자 데이터 파일 또는 엔티티에 대한 표시는 다양한 포맷들로 수행될 수 있으며 다양한 위치에 있을 수 있다. 따라서, 특정 엔티티에 대해 소정 유형의 액션을 수행하기 위한 요청을 구비한 입력 오디오 신호를 수신하는 음성 기반 컴퓨팅 환경에서, 요청된 엔티티에 대해 그 유형의 액션을 수행할 수 있는 어플리케이션을 효과적으로, 정확하게, 그리고 신뢰성있게 선택하는 것은 어려운 일이다.
일반적으로, 본 발명은 서로 다른(disparate) 데이터 소스들에 대한 질의들의 응답들을 통합하는 것이다. 본 발명의 적어도 하나의 측면은 서로 다른 데이터 소스 질의들을 통합하는 시스템에 관한 것이다. 시스템은 데이터 프로세싱 시스템을 포함할 수 있다. 데이터 프로세싱 시스템은 하나 이상의 프로세서 및 메모리를 포함할 수 있다. 데이터 프로세싱 시스템은 어플리케이션 수신(intake) 구성요소, 자연어 프로세싱 구성요소(이하, '구성요소' 또는 '컴포넌트'라 함) 및 어플리케이션 전달 구성요소를 포함할 수 있다. 데이터 프로세싱 시스템은 어플리케이션 패키지 파일을 수신할 수 있다. 데이터 프로세싱 시스템은 복수의 개발자 컴퓨팅 디바이스로부터 어플리케이션 패키지 파일을 수신할 수 있다. 어플리케이션 패키지 파일은 복수의 컴퓨팅 디바이스에 복수의 어플리케이션을 배포하고 설치하기 위한 명령을 포함할 수 있다. 각 어플리케이션 패키지 파일은 액션 인벤토리(action-inventory) 파일과 연관될 수 있다. 데이터 프로세싱 시스템은 액션 인벤토리 파일을 프로세싱하여, 모바일 어플리케이션이 수행하는 하나 이상의 전자적 액션을 식별할 수 있다. 데이터 프로세싱 시스템은 모바일 어플리케이션이 하나 이상의 전자적 액션을 수행하는 대응하는 하나 이상의 엔티티를 식별하기 위해 액션 인벤토리 파일을 프로세싱할 수 있다. 데이터 프로세싱 시스템은 데이터 프로세싱 시스템의 인터페이스 및 네트워크를 통해 클라이언트 디바이스의 센서에 의해 감지된 입력 오디오 신호를 포함하는 데이터 패킷을 수신할 수 있다. 데이터 프로세싱 시스템은 입력 오디오 신호를 파싱하여 액션 및 액션을 수행할 엔티티를 식별할 수 있다. 데이터 프로세싱 시스템은 액션 인벤토리 파일에 기초하여 입력 오디오 신호에서 식별된 엔티티에 대한 액세스를 갖도록 구성되고 입력 오디오 신호에서 식별된 액션을 수행하도록 구성된 제1의 하나 이상의 어플리케이션들을 복수의 어플리케이션들 중에서 선택할 수 있다. 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 클라이언트 디바이스로 제공하여, 클라이언트 디바이스로 하여금 입력 오디오 신호에서 식별된 엔티티를 사용하여 액션을 수행하도록 어플리케이션의 실행을 개시하게 할 수 있다.
데이터 프로세싱 시스템은 입력 오디오 신호로부터 식별된 액션을 수행하도록 구성된 제1의 하나 이상의 어플리케이션들을 식별할 수 있다. 데이터 프로세싱 시스템은 액션을 수행하도록 구성되고 입력 오디오 신호로부터 식별된 엔티티에 액세스하도록 구성된 어플리케이션을 제1의 하나 이상의 어플리케이션들 및 제2의 하나 이상의 어플리케이션들로부터 선택할 수 있다.
본 발명의 적어도 하나의 측면은 서로 다른 데이터 소스 질의들을 통합하는 방법에 관한 것이다. 상기 방법은 복수의 컴퓨팅 디바이스에 복수의 어플리케이션들 각각을 배포하고 설치하기 위한 명령을 포함하는 어플리케이션 패키지 파일을 데이터 프로세싱 시스템이 수신하는 단계를 포함할 수 있다. 어플리케이션 패키지 파일은 각각 해당 액션 인벤토리 파일과 연결될 수 있다. 데이터 프로세싱 시스템은 복수의 개발자 컴퓨팅 디바이스로부터 어플리케이션 패키지 파일을 수신할 수 있다. 방법은 각각의 어플리케이션이 수행하는 하나 이상의 전자적 액션들 및 모바일 어플리케이션이 하나 이상의 전자적 액션들을 수행하는 대응하는 하나 이상의 엔티티를 식별하기 위해 각각의 액션 인벤토리 파일을 데이터 프로세싱 시스템이 프로세싱하는 단계를 포함할 수 있다. 방법은 데이터 프로세싱 시스템의 인터페이스와 네트워크를 통해 클라이언트 디바이스의 센서에 의해 검출된 입력 오디오 신호를 포함하는 데이터 패킷을 데이터 프로세싱 시스템이 수신하는 단계를 포함할 수 있다. 이 방법은 입력 오디오 신호를 분석하여 액션 및 액션을 수행할 엔티티를 데이터 프로세싱 시스템이 식별하는 단계를 포함할 수 있다. 이 방법은 입력 오디오 신호로부터 식별된 엔티티에 대한 액세스를 갖도록 구성되고 입력 오디오 신호에서 식별된 액션을 수행하도록 구성된 제1의 하나 이상의 어플리케이션을 복수의 어플리케이션 중에서 액션 인벤토리 파일에 기초하여 데이터 프로세싱 시스템이 선택하는 단계를 포함할 수 있다. 이 방법은 클라이언트 디바이스로 하여금 입력 오디오 신호에서 식별된 엔티티를 사용하여 액션을 수행하기 위해 어플리케이션의 실행을 개시하게 하도록, 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 클라이언트 디바이스로 데이터 프로세싱 시스템이 제공하는 단계를 포함할 수 있다.
상기 방법은 다음 특징들 중 하나 이상을 포함할 수 있다. 상기 방법은 입력 오디오 신호로부터 식별된 액션을 수행하도록 구성된 제1의 하나 이상의 어플리케이션을 데이터 프로세싱 시스템이 식별하는 단계를 포함할 수 있다. 상기 방법은 제1의 하나 이상의 어플리케이션 및 제2의 하나 이상의 어플리케이션으로부터, 액션을 수행하고 입력 오디오 신호로부터 식별된 엔티티에 액세스하도록 구성된 어플리케이션을 데이터 프로세싱 시스템이 선택하는 단계를 포함할 수 있다. 입력 오디오 신호로부터 식별된 액션을 수행하도록 구성된 제2의 하나 이상의 어플리케이션들을 식별하는 것. 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 제공하는 것은 다음을 포함할 수 있다: 상기 제1의 하나 이상의 어플리케이션들 및 제2의 하나 이상의 어플리케이션들로부터, 액션을 수행하고 입력 오디오 신호로부터 식별된 엔티티에 액세스하는 어플리케이션을 선택하는 것; 및 상기 제1의 하나 이상의 어플리케이션들 및 제2의 하나 이상의 어플리케이션들로부터 선택된 어플리케이션을 제공하는 것을 포함한다. 확장가능한 마크업 언어 파일을 포함하는 액션 인벤토리 파일을 수신한다. 엔티티들의 목록에 대한 포인터를 포함하는 액션 인벤토리 파일을 수신한다. 복수의 어플리케이션 중 적어도 하나에 대해, 개발자 컴퓨팅 디바이스를 통해 설정된 웹 페이지에 대한 유니폼 리소스 로케이터(uniform resource locator: URL)를 포함하는 액션 인벤토리 파일을 수신하고; 그리고 개발자 컴퓨팅 디바이스의 웹 페이지로부터 엔티티들의 인벤토리를 결정한다. 복수의 어플리케이션 중 적어도 하나에 대해, 엔티티들의 구조화된 마크업(a structured markup of entities)을 포함하는 웹 페이지의 유니폼 리소스 로케이터(URL)를 포함하는 액션 인벤토리 파일을 수신하고; 유니폼 리소스 로케이터(URL)를 통해 웹 페이지에 액세스하고; 엔티티들의 인벤토리를 식별하도록, 상기 엔티티들의 구조화된 마크업으로 웹 페이지를 파싱하고; 데이터베이스에서 엔티티들의 인벤토리와 복수의 어플리케이션들 중 적어도 하나를 연관시킨다. 입력 오디오 신호로부터 어플리케이션을 식별하고; 그리고 상기 제1의 하나 이상의 어플리케이션들, 상기 제2의 하나 이상의 어플리케이션들, 및 입력 오디오 신호에 기초하여 어플리케이션을 선택한다. 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고; 검색 엔진에 의한 웹 검색 출력의 결과에 기초하여 상기 제1의 하나 이상의 어플리케이션들 또는 제2의 하나 이상의 어플리케이션들 중 적어도 하나를 식별한다. 제2의 복수의 어플리케이션들을 식별하도록, 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고; 상기 제2의 복수의 어플리케이션들 각각의 순위를 매기고; 클라이언트 디바이스에 표시를 제공할 어플리케이션으로서 상기 제2의 복수의 어플리케이션들 중 가장 높은 순위의 어플리케이션을 선택한다. 제2의 복수의 어플리케이션들을 식별하도록, 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고; 액션과 관련된 성능 피드백에 기초하여 상기 제2의 복수의 어플리케이션들 각각의 점수를 매기고; 클라이언트 디바이스에 표시를 제공할 어플리케이션으로서 상기 제2의 복수의 어플리케이션들 중 가장 높은 점수의 어플리케이션을 선택한다. 제2의 복수의 어플리케이션들을 식별하도록, 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고; 액션에 대한 클라이언트 디바이스와 관련된 이력 선호 정보에 기초하여 상기 제2의 복수의 어플리케이션들 각각의 점수를 매기고; 클라이언트 디바이스에 표시를 제공할 어플리케이션으로서 상기 제2의 복수의 어플리케이션들 중 가장 높은 점수의 어플리케이션을 선택한다. 도메인, 유형 및 속성으로 구성된 고유 식별자를 각각 갖는 엔티티들의 계층적 분류(hierarchical taxonomy)를 포함하는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별한다. 도메인, 유형 및 속성으로 구성된 고유 식별자를 각각 갖는 엔티티들의 계층적 분류를 포함하는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별하고; 엔티티를 이용한 웹 검색에 기초하여 상기 제1의 하나 이상의 어플리케이션들 또는 제2의 하나 이상의 어플리케이션들을 식별한다. 도메인, 유형 및 속성으로 구성된 고유 식별자를 각각 갖는 엔티티들의 계층적 분류를 포함하는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별하고; 데이터베이스를 통해, 엔티티에 대해 구성된 액션들의 세트를 식별하고; 엔티티에 대해 구성된 액션들의 세트에 기초하여 상기 제2의 하나 이상의 어플리케이션들을 식별한다.
다음을 유의해야 하는바, 본 발명의 양상들은 다양한 편리한 형태로 구현될 수 있다. 예를 들어, 본 발명의 양상들은 유형의 캐리어 매체(예를 들어, 디스크) 또는 무형의 캐리어 매체(예를 들어, 통신 신호)일 수 있는 적절한 캐리어 매체에서 운반될 수 있는 적절한 컴퓨터 프로그램에 의해 구현될 수 있다. 본 발명의 양상들은 또한, 본 발명을 구현하도록 된 컴퓨터 프로그램을 실행하는 프로그램가능한 컴퓨터의 형태를 취할 수 있는 적절한 장치를 사용하여 구현될 수도 있다. 일 양상의 맥락에서 설명된 피처들이 다른 양상에서 구현될 수 있도록 본 발명의 양상들은 조합될 수 있다.
이들 및 다른 양상들 및 구현예들이 아래에서 상세히 설명된다. 전술한 정보 및 다음의 상세한 설명은 다양한 양상들 및 구현예의 예시적인 일례를 포함하고 그리고 청구된 양상들 및 구현예들의 본성 및 특징을 이해하기 위한 개요 또는 프레임워크를 제공한다. 도면들은 다양한 양상들 및 구현들에 대한 예시 및 추가적인 이해를 제공하며, 본 명세서에 통합되어 그 일부를 구성한다.
첨부된 도면들은 축척대로 그려진 것으로 의도되지 않는다. 다양한 도면들에서 유사한 참조 번호와 명칭은 유사한 요소를 나타낸다. 명확성을 위해, 모든 도면에서 모든 구성요소에 라벨이 지정되지는 않았다.
도 1은 구현예에 따른 서로 다른 데이터 소스 질의들을 통합하기 위한 시스템의 예시이다.
도 2는 구현예에 따른 서로 다른 데이터 소스 질의들을 통합하기 위한 시스템의 동작을 예시한다.
도 3은 구현예에 따른 서로 다른 데이터 소스 질의들을 통합하는 방법의 예시이다.
도 4는 도 1 및 도 2에 도시된 시스템의 요소들 도 3에 도시된 방법을 구현하는데 사용될 수 있는 컴퓨터 시스템에 대한 일반적인 아키텍처를 도시하는 블록도이다.
이하에서, 서로 다른 데이터 소스 질의들을 통합하는 방법, 장치, 및 시스템의 구현예들 및 이와 관련된 다양한 개념들에 대한 보다 상세한 설명들이 제공된다. 앞서 소개되고 아래에서 더 상세히 논의될 다양한 개념들은 임의의 다양한 방식으로 구현될 수 있다.
일반적으로, 본 기술적 해법은 서로 다른 데이터 소스 질의들을 통합하는 것이다. 예를 들어, 어플리케이션들은 컴퓨팅 디바이스에서 실행될 수 있다. 어플리케이션은 개발자 디바이스를 통해 제3자 개발자에 의해 개발, 생성 또는 제공될 수 있다. 모바일 어플리케이션과 같은 어플리케이션은 소정 유형의 데이터 파일들, 리소스들 또는 기타 콘텐츠에 대해 소정 유형의 액션들을 실행하거나 수행하도록 구성될 수 있다. 예를 들어, 모바일 어플리케이션은 음악 파일과 같은 디지털 또는 전자적 리소스에 대한 "플레이"와 같은 액션을 수행하기 위해 스마트 폰과 같은 모바일 컴퓨팅 디바이스에서 실행되도록 구성될 수 있다. 모바일 어플리케이션은 음악 어플리케이션이라 지칭될 수도 있다. 개발자는 비디오 플레이어 어플리케이션, 음악 플레이어 어플리케이션, 증강 현실 어플리케이션, 뉴스 어플리케이션, 전자 책 어플리케이션, 비디오 게임 어플리케이션, 레시피 어플리케이션, 티켓 구매 어플리케이션, 의류 어플리케이션, 전자 상거래 어플리케이션 또는 탈것(ride) 공유 어플리케이션과 같은 다양한 유형의 어플리케이션을 제공할 수 있다.
어플리케이션 또는 모바일 어플리케이션은 컴퓨팅 디바이스 또는 모바일 컴퓨팅 디바이스에서 실행될 수 있다. 어플리케이션은 컴퓨팅 디바이스에서 부분적으로 실행되고 데이터 프로세싱 시스템에서 부분적으로 실행될 수 있다. 어플리케이션은 데이터 프로세싱 시스템에서 실행되고, 컴퓨팅 디바이스로부터 입력을 수신할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 컴퓨팅 디바이스로부터 입력 오디오 신호(예컨대, 음성 입력)를 수신하고 그리고 입력 오디오 신호를 파싱하여 액션(예컨대, 음악 재생) 및 액션이 수행될 엔티티(예: 특정 아티스트 또는 노래)를 식별할 수 있다. 어플리케이션은 서로 다른 유형들의 모바일 디바이스, 컴퓨팅 디바이스, 운영 체제, 대화형 어플리케이션 또는 챗봇 어플리케이션을 포함하는 다양한 플랫폼들 상의 어플리케이션을 참조할 수 있다.
하지만, 어떤 어플리케이션이 액션을 수행할 수 있는지, 뿐만 아니라 어떤 어플리케이션이 엔티티에 대한 액세스를 갖고 있는지를 결정하는 것은 데이터 프로세싱 시스템에게 매우 난해한 일이다. 예를 들어, 각각의 어플리케이션 또는 어플리케이션 개발자는 전자적 데이터 파일들을 상이한 데이터베이스 또는 데이터 저장소에 저장할 수 있다. 각각의 어플리케이션 또는 어플리케이션 개발자는 어플리케이션이 수행할 수 있는 액션들의 유형들을 하나 이상의 기술들을 사용하여 나타낼 수 있다. 액션 및 액션이 수행될 수 있는 전자 데이터 파일 또는 엔티티에 대한 표시는 다양한 포맷들로 수행될 수 있으며 다양한 위치에 있을 수 있다. 따라서, 특정 엔티티에 대해 소정 유형의 액션을 수행하기 위한 요청을 구비한 입력 오디오 신호를 수신하는 음성 기반 컴퓨팅 환경에서, 요청된 엔티티에 대해 그 유형의 액션을 수행할 수 있는 어플리케이션을 효과적으로, 정확하게, 그리고 신뢰성있게 선택하는 것은 어려운 일이다.
예를 들어, 어플리케이션 개발자는 그들의 어플리케이션의 기능을 의미론적으로 지정하지 않을 수 있으며(예를 들어, 영화 재생, 뉴스 취득, 음식 주문, 또는 탈것 주문) 그리고 그들의 어플리케이션이 작동하는 엔티티들에 대한 인벤토리를 제공할 수 있다(예컨대, 영화 제목들). 이것은, 사용자로부터의 입력 오디오 신호가 디지털 어시스턴트를 통한 특정 작업들 또는 액션의 수행을 요청하는 경우, 데이터 프로세싱 시스템이 이러한 어플리케이션들을 선택, 트리거 또는 제안하는 것을 어렵게 한다.
따라서, 본 기술적 솔루션의 시스템들 및 방법들은, 어플리케이션이 제공할 수 있는 인텐트들에 관한 정보 및 관련 인벤토리를 제공함으로써 액션 제공자들과 사용자 질의들을 매칭시키는 기술적 문제를 해결할 수 있으며 그리고 사용자 질의를 서비스할 공급자를 찾는 동안 이러한 인벤토리를 이용할 수 있다. 또한, 이러한 기술적 솔루션을 사용하여 사용자 요청에 지정된 엔티티를 기초하여 액션들을 피벗(pivot)하기 위해 엔티티 피벗팅(entity pivoting)을 수행할 수도 있다. 예를 들어, 사용자가 뮤지션의 키(height)에 대해 질문하는 경우, 데이터 프로세싱 시스템은 음악 재생, 뮤지션의 최근 온라인 포스트를 보여주기, 뮤지션 티켓 구매와 같은 뮤지션과 관련된 액션 기반 제안들을 제공할 수 있다.
이를 위하여, 본 발명의 데이터 프로세싱 시스템은 구조화된 데이터 피드들과 웹 페이지들을 조합 또는 통합하여,(1) 질의들을 해당 제공자들과 매칭시키고, 그리고(2) 엔티티 기반 어플리케이션 액션 추천 정보를 생성할 수 있다. 예를 들어, 주어진 엔티티에 대해, 데이터 프로세싱 시스템은 엔티티에 대한 웹 페이지들과 연관된 어플리케이션들과 크로스-랭크된(cross-ranked) 엔티티(예를 들어, 피드를 통해)에 대한 액션을 명확하게(explicitly) 제공하는 어플리케이션을 추천할 수 있다. 이를 위해 데이터 프로세싱 시스템은 예를 들어, 사용자 질의로부터 엔티티를 식별하기 위한 파싱 또는 자연어 프로세싱; 웹 콘텐츠 및 피드로부터 엔티티를 식별하는 웹 검색 기술들; URL(Uniform Resource Locator) 또는 어플리케이션에 대한 딥 링크를 포함하는 구조화된 데이터 피드들; 구조화된 피드 아이템 또는 웹 페이지의 특정 엔티티가 질의와 관련된 레벨에 대한 지식; 또는 어플리케이션에 대한 해당 딥 링크에 대한 웹 URL 인덱스를 포함하는, 다양한 프로세스들, 기법들, 인프라스트럭처들, 또는 데이터 소스들로부터의 결과들을 조합하거나 통합할 수 있다.
데이터 프로세싱 시스템은 이러한 인프라스트럭처들을 구성 중심 방식으로 결합하여 이러한 데이터 소스들을 언제 어떻게 검색할지를 결정하고 이러한 개별 데이터 소스들의 결과들을 조합하고, 결과의 순위를 재지정하고, 사용자 요청을 이행할 수 있는 에이전트들 또는 어플리케이션들의 정렬된 목록을 생성하기 위해 결과가 만족하는 의도(예컨대, GET_RECIPE 또는 PLAY_MOVIE)를 이해하기 위해 결과들을 어플리케이션 개발자가 제공한 인벤토리 사양과 매칭시킬 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스에 설치된 어플리케이션들만으로 추천사항을 필터링함으로써 하여 제안들을 더욱 개선할 수 있다. 각각의 데이터 소스 또는 데이터 소스 내의 버티컬(vertical)은 서로 다른 요청 및 응답 포맷을 가질 수 있으므로, 데이터 프로세싱 시스템은 일련의 설정들을 사용하여 사용자 질의 및 사용자 컨텍스트로부터 요청들을 생성하기 위한 사양을 어플리케이션 개발자 디바이스로부터 수신할 수 있다. 어플리케이션 개발자는 설정들을 사용하여 응답을 공통 포맷으로 변환할 수 있다(추가 프로세싱를 위해). 따라서 데이터 프로세싱 시스템은(1) 구조화된 데이터 피드와 구조화되지 않은 데이터 피드를 결합할 수 있으며;(2) 지식 그래프를 사용하여 임의의 버티컬에서 질의들을 프로세싱하고; 그리고(3) 임의 유형의 디바이스에 대해 임의 유형의 이행을 제공한다. 여기에 설명된 기술은 디바이스가 요청을 이행할 수 있는 어플리케이션만을 오픈하도록 허용할 수 있다. 디바이스에서 어플리케이션을 오픈하는 것은 일반적으로 상당한 컴퓨터 리소스를 사용하며, 어플리케이션을 오픈하기 전에 먼저 어플리케이션이 요청을 이행할 수 있는지를 결정함으로써 본 명세서에 설명된 주제는 컴퓨터 리소스 활용을 감소시킬 수 있다.
도 1은 서로 다른 데이터 소스 질의들을 통합하기 위한 예시적인 시스템(100)을 도시한다. 시스템(100)은 콘텐츠 선택 인프라스트럭처를 포함할 수 있다. 시스템(100)은 데이터 프로세싱 시스템(102)을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 네트워크(105)를 통해 개발자 컴퓨팅 디바이스(106) 또는 클라이언트 컴퓨팅 디바이스(104) 중 하나 이상과 통신할 수 있다. 네트워크(105)는 인터넷, 로컬, 와이드, 메트로 또는 기타 영역 네트워크, 인트라넷, 위성 네트워크 및 음성 또는 데이터 이동 전화 네트워크와 같은 기타 통신 네트워크와 같은 컴퓨터 네트워크를 포함할 수 있다. 네트워크(105)는 랩톱, 데스크탑, 태블릿, 개인용 디지털 비서, 스마트 폰, 휴대용 컴퓨터 또는 스피커 등과 같은 적어도 하나의 컴퓨팅 디바이스(104)에서 제시, 출력, 렌더링 또는 디스플레이될 수 있는 웹 페이지, 웹 사이트, 도메인 이름 또는 URL 등과 같은 정보 리소스에 액세스하는데 사용될 수 있다. 예를 들어, 네트워크(105)를 통해 컴퓨팅 디바이스(104)의 사용자는 개발자 컴퓨팅 디바이스(106)에 의해 제공된 정보 또는 데이터에 액세스할 수 있다. 컴퓨팅 디바이스(104)(또는 클라이언트 디바이스)는 디스플레이를 포함하거나 포함하지 않을 수 있다. 예를 들어, 컴퓨팅 디바이스는 마이크 및 스피커와 같은 제한된 유형의 사용자 인터페이스를 포함할 수 있다. 일부 경우에, 컴퓨팅 디바이스(104)의 주요 사용자 인터페이스는 마이크로폰 및 스피커일 수 있다. 컴퓨팅 디바이스(104)는 음성 기반 컴퓨팅 환경과 인터페이스하거나 그에 포함될 수 있다.
네트워크(105)는 클라이언트 컴퓨팅 디바이스(104)에 의해 제시, 출력, 렌더링 또는 디스플레이될 수 있는 웹 페이지, 웹 사이트, 도메인 이름 또는 URL 등과 같은 정보 리소스에 액세스하는데 프로세싱 시스템(102)에 의해 이용될 수 있다. 예를 들어, 네트워크(105)를 통해, 클라이언트 컴퓨팅 디바이스(104)의 사용자는 개발자 컴퓨팅 디바이스(106)에 의해 제공되는 정보 또는 데이터에 액세스할 수 있다. 네트워크(105)는 콘텐츠 배치 또는 검색 엔진 결과 시스템과 연관되거나 또는 디지털 구성요소 배치 캠페인의 일부로서 제3자 디지털 구성요소를 포함할 수 있는, 인터넷 상에서 이용가능한 정보 리소스들의 서브 네트워크를 포함하거나 구성할 수 있다.
네트워크(105)는 임의의 타입 혹은 형태의 네트워크일 수 있으며, 포인트-투-포인트 네트워크, 방송 네트워크, 광역 네트워크, 로컬 영역 네트워크, 텔레커뮤니케이션 네트워크, 데이터 통신 네트워크, 컴퓨터 네트워크, ATM(Asynchronous Transfer Mode) 네트워크, SONET(Synchronous Optical Network) 네트워크, SDH(Synchronous Digital Hierarchy) 네트워크, 무선 네트워크 및 유선 네트워크 중 임의의 것을 포함할 수 있다. 네트워크(105)는 적외선 채널 또는 위성 대역과 같은 무선 링크를 포함할 수 있다. 네트워크(105)의 토폴로지는 버스, 스타 또는 링 네트워크 토폴로지를 포함할 수 있다. 네트워크는 모바일 디바이스들 사이에서 통신하는데 사용되는 임의의 프로토콜 또는 프로토콜들을 사용하는 모바일 전화 네트워크를 포함할 수 있는바, 고급 이동 전화 프로토콜("AMPS"), 시분할 다중 액세스(" TDMA"), 코드 분할 다중 액세스("CDMA"), 모바일 통신을 위한 글로벌 시스템("GSM"), 일반 패킷 무선 서비스("GPRS") 또는 범용 모바일 텔레커뮤니케이션 시스템("UMTS")을 포함할 수 있다. 서로 다른 유형의 데이터가 서로 다른 프로토콜을 통해 전송되거나 동일한 유형의 데이터가 서로 다른 프로토콜을 통해 전송될 수 있다.
시스템(100)은 적어도 하나의 데이터 프로세싱 시스템(102)을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 네트워크(105)를 통해 가령, 컴퓨팅 디바이스(104), 개발자 컴퓨팅 디바이스(106)(예를 들어, 콘텐츠 제공자)와 통신하는 프로세서를 갖는 컴퓨팅 디바이스와 같은 적어도 하나의 로직 디바이스를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 적어도 하나의 계산 리소스, 서버, 프로세서 또는 메모리를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 적어도 하나의 데이터 센터에 위치한 복수의 계산 리소스 또는 서버를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 논리적으로 그룹화된 다수의 서버를 포함하고 분산 컴퓨팅 기술을 활용할 수 있다. 논리적 서버 그룹은 데이터 센터, 서버 팜 또는 머신 팜이라고할 수 있다. 서버는 지리적으로 분산될 수도 있다. 데이터 센터 또는 머신 팜은 단일 엔티티로 관리될 수 있으며, 또는 머신 팜은 여러 머신 팜을 포함할 수 있다. 각 머신 팜 내의 서버들은 이종(heterogeneous)일 수 있다. 하나 이상의 서버들 또는 머신들은 하나 이상의 운영 체제 플랫폼 유형에 따라 작동할 수 있다.
머신 팜의 서버들은 관련 스토리지 시스템과 함께 고밀도 랙(rack) 시스템에 저장되고, 기업 데이터 센터에 위치될 수 있다. 예를 들어, 이러한 방식으로 서버들을 통합하면, 로컬라이즈된 고성능 네트워크 상에 서버들 및 고성능 스토리지 시스템을 배치함으로써, 시스템 관리 효율성, 데이터 보안, 시스템의 물리적 보안 및 시스템 성능을 향상시킬 수 있다. 서버들 및 저장 시스템을 포함하는 데이터 프로세싱 시스템(102) 구성요소들의 전부 또는 일부를 중앙집중화하고, 이들을 고급 시스템 관리 툴과 결합하면 서버 리소스를 보다 효율적으로 사용할 수 있으며, 이는 전력 및 프로세싱 요구 사항을 절약하고 대역폭 사용을 감소시킨다.
시스템(100)은 적어도 하나의 개발자 컴퓨팅 디바이스(106)를 포함하거나, 액세스하거나, 또는 달리 상호작용할 수 있다. 개발자 컴퓨팅 디바이스(106)는 네트워크(105)를 통해 가령, 컴퓨팅 디바이스(104) 또는 데이터 프로세싱 시스템(102)과 통신하는 프로세서를 갖는 컴퓨팅 디바이스와 같은 적어도 하나의 로직 디바이스를 포함할 수 있다. 개발자 컴퓨팅 디바이스(106)는 적어도 하나의 계산 리소스, 서버, 프로세서 또는 메모리를 포함할 수 있다. 예를 들어, 개발자 컴퓨팅 디바이스(106)는 적어도 하나의 데이터 센터에 위치한 복수의 계산 리소스들 또는 서버를 포함할 수 있다. 개발자 컴퓨팅 디바이스(106)는 데이터 프로세싱 시스템(102)의 하나 이상의 구성요소 또는 기능을 포함할 수 있다. 개발자 컴퓨팅 디바이스(106)는 어플리케이션 개발자 디바이스, 서비스 제공자 디바이스 또는 상품 제공자 디바이스를 포함하거나 참조할 수 있다. 개발자 컴퓨팅 디바이스(106)는 어플리케이션을 개발하기 위해 사용될 수 있다. 개발자 컴퓨팅 디바이스(106)는 어플리케이션을 부분적으로 개발하기 위해 사용될 수 있다. 개발자 컴퓨팅 디바이스(106)는 어플리케이션을 데이터 프로세싱 시스템(102)에 제공하기 위해 사용될 수 있다. 개발자 컴퓨팅 디바이스(106)는 어플리케이션 제공을 달리 용이하게 하거나 또는 어플리케이션과 관련된 기능 제공을 용이하게 하는데 사용될 수 있다.
상기 컴퓨팅 디바이스(104)는 인터페이스를 포함할 수 있거나, 그렇지 않으면 적어도 하나의 센서(134), 트랜스듀서(136), 오디오 드라이버(138), 또는 프리-프로세서(140)와 통신할 수 있다. 센서(134)는 예를 들어, 주위 광 센서, 근접 센서, 온도 센서, 가속도계, 자이로스코프, 동작 감지기, GPS 센서, 위치 센서, 마이크 또는 터치 센서를 포함할 수 있다. 트랜스듀서(136)는 스피커 또는 마이크로폰을 포함할 수 있다. 오디오 드라이버(138)는 하드웨어 트랜스듀서(136)에 소프트웨어 인터페이스를 제공할 수 있다. 오디오 드라이버는 대응하는 음향 파형 또는 사운드 파형을 생성하도록 트랜스듀서(136)를 제어하기 위해 데이터 프로세싱 시스템(102)에 의해 제공되는 오디오 파일 또는 다른 명령을 실행할 수 있다. 프리-프로세서(140)는 트리거 키워드, 미리결정된 핫 워드, 개시 키워드 또는 활성화 키워드를 검출하도록 구성될 수 있다. 일부 경우, 트리거 키워드는 액션을 수행하기 위한 요청을 포함할 수 있다. 일부 경우, 트리거 키워드는 컴퓨팅 디바이스(104)를 인에이블 또는 활성화하기 위해 미리결정된 액션 키워드를 포함할 수 있고, 요청 키워드는 트리거 키워드 또는 핫 워드를 따를 수 있다. 프리 프로세서(140)는 키워드를 검출하고 키워드에 기초하여 액션을 수행하도록 구성될 수 있다. 프리 프로세서(140)는 추가 프로세싱를 위해 데이터 프로세싱 시스템(102)에 용어를 전송하기 전에 하나 이상의 용어를 필터링하거나 용어를 수정할 수 있다. 프리 프로세서(140)는 마이크로폰에 의해 검출된 아날로그 오디오 신호를 디지털 오디오 신호로 변환할 수 있으며, 디지털 오디오 신호를 운반하는 하나 이상의 데이터 패킷들을 네트워크(105)를 통해 데이터 프로세싱 시스템(102)으로 전송할 수 있다. 일부 경우, 프리 프로세서(140)는 이러한 전송을 수행하라는 명령을 검출하는 것에 응답하여 입력 오디오 신호의 일부 또는 전부를 운반하는 데이터 패킷을 전송할 수 있다. 명령은 예를 들어, 트리거 키워드 또는 다른 키워드 또는 입력 오디오 신호를 포함하는 데이터 패킷을 데이터 프로세싱 시스템(102)으로 전송하기 위한 승인을 포함할 수 있다.
클라이언트 컴퓨팅 디바이스(104)는 최종 사용자와 관련될 수 있는데, 최종 사용자는 오디오 입력으로서 음성 질의를 클라이언트 컴퓨팅 디바이스(104)입력하고(센서 134를 통하여) 그리고 데이터 프로세싱 시스템(102)(또는 개발자 컴퓨팅 디바이스 106)으로부터 클라이언트 컴퓨팅 디바이스(104)로 제공되어 트랜스듀서(136)(예를 들어, 스피커)에서 출력되는 컴퓨터로 생성된 음성의 형태로 오디오 출력을 수신한다. 컴퓨터로 생성된 음성은 실제 사람의 녹음 또는 컴퓨터 생성 언어가 포함될 수 있다.
데이터 프로세싱 시스템(102)은 상기 적어도 하나의 계산 리소스 또는 서버를 갖는 콘텐츠 배치 시스템을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스(104)에 의한 실행 또는 상호 작용을 위해 어플리케이션을 선택, 전달 또는 제공하도록 구성된 온라인 어플리케이션 전달 플랫폼을 포함할 수 있다. 어플리케이션은 어플리케이션의 입력 및 출력이 컴퓨팅 디바이스(104)를 통해 제공되지만 어플리케이션은 그렇지 않으면 데이터 프로세싱 시스템(102)에서 실행되도록, 컴퓨팅 디바이스(104)에서, 적어도 부분적으로 컴퓨팅 디바이스(104)에서 그리고 부분적으로는 데이터 프로세싱 시스템(102)에서, 또는 전적으로 데이터 프로세싱 시스템(102)에서 실행될 수 있다. 어플리케이션은 적어도 부분적으로 개발자 컴퓨팅 디바이스(106)에서 실행될 수 있다.
데이터 프로세싱 시스템(102)은 인터페이스를 포함하거나, 그렇지 않으면 적어도 하나의 인터페이스(110)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 인터페이스를 포함하거나, 그렇지 않으면 적어도 하나의 자연어 프로세서 구성요소(112)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 인터페이스를 포함하거나, 그렇지 않으면 적어도 하나의 어플리케이션 수신(intake) 구성요소(114)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 인터페이스를 포함하거나, 그렇지 않으면 적어도 하나의 어플리케이션 전달 구성요소(116)와 통신할 수 있다. 데이터 프로세싱 시스템(102)은 인터페이스를 포함하거나, 그렇지 않으면 적어도 하나의 데이터 저장소(118)와 통신할 수 있다. 적어도 하나의 데이터 저장소(118)는 하나 이상의 데이터 구조 또는 데이터베이스, 어플리케이션 패키지(APK) 파일(120), 인덱스(122), 엔티티(124), 성능 데이터(126) 또는 프로파일(128)을 저장하거나 포함할 수 있다.
APK 파일(120)은 어플리케이션 패키지 키트 또는 어플리케이션 패키지 파일 또는 다른 어플리케이션 연관 파일을 참조할 수 있다. 데이터 프로세싱 시스템(102)은 다수의 어플리케이션을 위한 APK 파일을 데이터 저장소(118)에 저장할 수 있다. 데이터 프로세싱 시스템(102)은 데이터 프로세싱 시스템(102)이 컴퓨팅 디바이스(104)에 전달하도록 구성된 각각의 어플리케이션에 대한 하나 이상의 APK 파일을 저장할 수 있다. APK 파일(120)은 컴퓨팅 디바이스에 어플리케이션을 배포하고 설치할 수 있다. APK 파일(120)은 컴퓨팅 디바이스(104) 상에 설치하기 위해 데이터 프로세싱 시스템(102)으로부터 컴퓨팅 디바이스(104)로 어플리케이션을 배포하기 위해 구성된 포맷일 수 있다. 어플리케이션은 하나 이상의 포맷으로 하나 이상의 APK 파일(120)을 가질 수 있다. 예를 들어, 단일 어플리케이션은 제 1 유형의 컴퓨팅 디바이스(104)에 설치하기 위해 제 1 전달 플랫폼을 사용하여 어플리케이션을 배포하도록 구성된 제 1 포맷의 APK 파일(120) 및 제 2 전달 플랫폼을 통해 제 2 유형의 컴퓨팅 디바이스(104)에 어플리케이션을 배포하도록 구성된 제 2 포맷의 제 2 APK 파일(120)을 가질 수 있다. APK 파일(120)은 명령들, 소스 코드, 실행가능 코드, 머신 판독가능 코드, 스크립트, 함수, 이미지, 오디오 파일, 비디오 파일 또는 설정 파일을 포함할 수 있다. APK 파일은 어플리케이션의 배포 및 설치를 용이하게하는 명령(또는 코드)을 포함할 수 있다.
APK 파일(120)은 액션 인벤토리 파일과 연관될 수 있다. 액션 인벤토리 파일은 APK 파일(120)의 일부일 수 있다. 액션 인벤토리 파일은 APK 파일(120)의 일부로 제공되거나 APK 파일(120)과 함께 제공될 수 있다. 예를 들어, 어플리케이션의 개발자는 어플리케이션에 대한 APK 파일(120)과 함께 액션 인벤토리 파일을 제공할 수 있다. 액션 인벤토리 파일은 별도의 파일일 수 있으며 APK 파일(120)과는 별개일 수 있다. 액션 인벤토리 파일은 APK 파일(120)과 연관될 수 있다(예를 들어, APK 파일(120)의 일부로서 포함되거나, APK 파일에 매칭되거나 대응하는 식별자를 갖거나, 레퍼런스 또는 유니폼 리소스 인디케이터를 통해 APK 파일(120)에 링크되거나, 포인터를 통해, 또는 인덱스에서 서로 매핑되거나 링크됨). 액션 인벤토리 파일은 어플리케이션이 수행할 수 있는 액션을 나타낼 수 있다. 액션 인벤토리 파일은 표시된 액션을 어플리케이션이 수행할 수 있는 엔티티들을 나타낼 수 있다. 액션 인벤토리 파일은 포인터, URI, URL 또는 어플리케이션이 표시된 액션을 수행할 수 있는 엔티티에 대한 정보를 포함하는 다른 데이터 소스에 대한 참조를 포함할 수 있다. 액션 인벤토리 파일은 어플리케이션 내의 엔티티에 대한 딥 링크를 포함할 수 있다. 액션 인벤토리 파일 또는 APK 파일은 어플리케이션의 엔티티에 대한 딥 링크를 구성하는데 사용되는 패턴을 포함할 수 있다.
데이터 저장소(118)에 저장된 인덱스(122)는 액션들에 대한 어플리케이션들의 매핑을 포함할 수 있다. 데이터 저장소(118)에 저장된 인덱스(122)는 엔티티들에 대한 어플리케이션들의 매핑을 포함할 수 있다. 데이터 저장소(118)에 저장된 인덱스(122)는 엔티티들에 대한 액션들의 매핑을 포함할 수 있다. 인덱스(122)는 어플리케이션을 엔티티로 다이렉트하거나 어플리케이션을 론칭하거나 오픈할 때 엔티티를 오픈하도록, 어플리케이션의 엔티티들에 대한 딥 링크를 포함할 수 있다. 인덱스(122)는 시간 간격에 기초하여 주기적으로 업데이트되거나, 또는 새로운 어플리케이션의 수신(intake) 또는 업데이트된 어플리케이션 또는 새로운 인벤토리(예를 들어, 엔티티들)와 같은 다른 이벤트 또는 조건에 응답하여 업데이트될 수 있다. 데이터 프로세싱 시스템(102)은 데이터 프로세싱 시스템(102) 상의 데이터 저장소(118)에 인덱스(122)를 유지할 수 있다. 일부 경우에, 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스(104)에 저장된 로컬 인덱스(122)와 같이, 컴퓨팅 디바이스(104)의 로컬 메모리에 컴퓨팅 디바이스(104)에 대한 인덱스(122)를 유지할 수 있다. 로컬 인덱스(122)는 예를 들어, 데이터 프로세싱 시스템(102)이 액세스할 수 없는 로컬 컴퓨팅 디바이스(104)에서 이용가능하거나 저장될 수 있는 엔티티들 그렇지 않으면, 또는 데이터 프로세싱 시스템(102)이 컴퓨팅 디바이스(104)를 통해 액세스할 수 있는 엔티티들에 대한 정보를 포함할 수 있다.
데이터 프로세싱 시스템(102)은 엔티티들(124) 또는 엔티티들(124)의 표시를 데이터 저장소(118)에 저장할 수 있다. 엔티티에 대한 표시는 엔티티의 고유 식별자를 참조하거나 포함할 수 있다. 고유 식별자는 예를 들어 영숫자 값, 문자열, 문자, 숫자 값 또는 도메인, 속성 및 유형 정보를 포함할 수 있다. 엔티티는 한 사람, 장소 또는 사물이 될 수 있으며 그리고 저장소는 유사한 이름들을 가진 여러 엔티티들(예컨대, 재규어 자동차 대 재규어 동물)을 구별할 수 있는 고유 식별자를 각각 갖는 수백만 개의 엔티티들을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 다양한 소스로부터의 엔티티를 식별하기 위해, 참조 엔티티에 액세스하고 임의의 텍스트 조각들(예를 들어, 웹 페이지들의 텍스트, 키워드들의 텍스트, 콘텐츠들의 텍스트, 광고들의 텍스트)을 스캔할 수 있다. 이러한 하나의 소스는 예를 들어 엔티티 그래프 시스템(142) 일 수 있다. 엔티티 그래프 시스템(142)은 사용자 커뮤니티에 의해 구축된 사람들, 장소들 및 사물들의 엔티티 그래프와 같은 엔티티들의 수동적으로 생성된 분류를 포함할 수 있다. 데이터 프로세싱 시스템(102)은 네트워크(105)를 통해 엔티티 그래프 시스템(142)과 인터페이스, 액세스 또는 통신할 수 있다.
데이터 프로세싱 시스템(102)은 엔티티들을 이용하여, 다양한 방식으로 엔티티에서 액션을 수행하는 어플리케이션들을 선택할 수 있다. 데이터 프로세싱 시스템(102)은 복수의 엔티티의 분류를 획득할 수 있다. 엔티티는 하나의 사람, 장소, 사물 또는 주제일 수 있다. 각 엔티티는 이름이 유사한 여러 엔티티를 구별할 수 있는 고유한 식별자를 가지고 있다(예: 재규어 자동차 대 재규어 동물). 고유 식별자("ID")는 문자, 텍스트, 숫자 또는 기호의 조합일 수 있다. 데이터 프로세싱 시스템은 네트워크(105)를 통해 내부 또는 제3자 데이터베이스로부터 분류를 획득할 수 있다. 일 구현에서, 엔티티는 사용자 디바이스(예를 들어, 컴퓨팅 디바이스(104))의 사용자에 의해 수동으로 분류될 수 있다. 예를 들어, 사용자는 네트워크(105)를 통해 엔티티들의 데이터베이스에 액세스할 수 있다. 사용자는 적어도 하나의 엔티티를 업로드하거나 대량 업로드에서 여러 엔티티를 업로드할 수 있다. 사용자는 업로드된 엔티티를 분류할 수 있거나, 이러한 업로드는 적어도 하나의 엔티티의 분류를 포함할 수 있다. 일부 구현에서, 엔티티를 수신하면, 데이터 프로세싱 시스템(102)은 사용자에게 분류를 촉구할 수 있다.
일부 구현예에서, 엔티티들은 분류될 수 있다. 이러한 분류들은 엔티티들이 카테고리화되거나 구조화되는 방식(예: 온톨로지)을 나타낼 수 있다. 예를 들어, 존재론적 분류(ontological classification)는 엔티티가 가질 수 있는 속성들, 측면들, 성질들, 피처들, 특성들 또는 파라미터들을 포함할 수 있다. 존재론적 분류는 또한, 클래스, 세트, 컬렉션, 개념 또는 유형을 포함할 수 있다. 예를 들어, "vehicle"의 온톨로지는 다음을 포함할 수 있다: 유형-지상 차량, 선박, 항공기; 기능-사람을 운반하고, 화물을 운반한다; 속성-파워, 크기; 구성요소-엔진, 본체; 기타 등등. 일부 구현에서, 수동 분류는 수동으로 생성된 엔티티들의 분류를 제공하는 구조화된 데이터를 포함한다. 엔티티는 예를 들어 사람들, 장소들, 책들 또는 필름들과 같은 엔티티 유형과 연관될 수 있다. 엔티티 유형은 예를 들어, 사람의 생년월일 또는 장소의 위도 및 경도와 같은 추가 속성들을 포함할 수 있다. 엔티티들은 터티는 고유하게 명명된 객체들의 디렉토리(예컨대, 인터넷의 도메인 이름, 유니폼 리소스 로케이터의 경로들 또는 컴퓨터 파일 시스템의 디렉터)를 포함하는, 네임 스페이스를 공유하는 유형 모음과 같은 도메인과도 연관될 수 있다. 엔티티들은 일반적인 관계들의 관점에서 속성들(또는 여러 속성의 사용을 통해 형성된 경로)을 설명하는 메타데이터를 포함할 수도 있다.
데이터 프로세싱 시스템(102) 또는 엔티티 그래프 시스템(142)의 관리자는 도메인, 유형 및 속성에 기초하여 엔티티를 분류할 수 있다. 예를 들어 도메인은 미국 음악가이고 ID "/music"을 가질 수 있다. 이 도메인은 ID "/music/pop_music" 인 음악 유형과 연결될 수 있다. 이러한 유형은 팝 음악 음악가에 대한 속성 "/music/pop_music/musicians" 을 포함할 수 있다. 각각의 도메인, 유형, 속성 또는 기타 카테고리는 설명을 포함할 수 있다. 예를 들어, "/music/pop_music"은 다음과 같은 설명을 포함할 수 있다: "음악은 보컬 또는 기악 사운드를 의미하며 팝 음악은 현재 상업적인 대중 음악을 지칭할 수 있다." 일부 구현에서, 데이터 프로세싱 시스템(102)은 문서의 텍스트 또는 다른 데이터를 스캔하고 자동으로 분류를 결정할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 음악가들에 관한 정보에 대해 네트워크(105)를 통해 정보 리소스들을 스캔하고, 그리고 이러한 정보를 "/music/pop_music/musicians/female_musicians"으로 분류할 수 있다. 데이터 프로세싱 시스템(102)은 또한 이러한 분류를 나타내는 고유 식별자를 엔티티 여성 음악가에게 할당할 수 있다.
엔티티들은 하나 이상의 인간들("엔티티 참여자")에 의해, 적어도 부분적으로 분류될 수 있다. 이를 수동 분류라고 할 수 있다. 일부 구현에서, 엔티티들은 크라우드 소싱(crowd sourcing) 프로세스를 사용하여 분류될 수 있다. 크라우드 소싱은 온라인 또는 오프라인에서 발생할 수 있으며 그리고 사람들의 정의된 그룹, 사람들의 분산된 그룹 또는 사람들의 정의되지 않은 그룹에 작업들을 아웃소싱하는 것을 포함하는 프로세스를 지칭할 수 있다. 온라인 크라우드 소싱의 일례는 엔티티들을 업로드하거나 분류하는 태스크를 정의되지 않은 사용자 세트에 할당하는 엔티티 그래프 시스템(142)의 관리자를 포함할 수 있다. 사용자는 온라인으로 분류들을 추가, 수정 또는 삭제할 수 있다. 오프라인 크라우드 소싱의 일례는 네트워크(105)를 사용함이 없이 정의되지 않은 대중에게 엔티티를 업로드하거나 분류하는 작업을 할당하는 것을 포함할 수 있다.
성능 데이터(126)는, 예를 들어, 어플리케이션이 액션을 얼마나 잘 수행하는지에 관한 정보를 포함할 수 있다. 예를 들어, 성능 데이터(126)는 어플리케이션이 엔티티에 대한 액션을 얼마나 잘 수행하는지에 대한 정보를 포함할 수 있다. 성능 데이터(126)는 이력 성능 또는 사용들에 기초할 수 있다. 성능 데이터(126)는 피드백 또는 등급(rating)에 기초할 수 있다. 성능 데이터(126)는 품질 메트릭, 지연 메트릭(latency metric), 시간 메트릭, 메모리 사용량 메트릭, 프로세서 사용량 메트릭, 네트워크 대역폭 사용량과 같은 메트릭의 형태일 수 있다. 성능 메트릭은 어플리케이션이 작업을 수행하는데 걸리는 시간 또는 어플리케이션을 런칭하는데 걸리는 시간을 나타낼 수 있다. 성능 데이터(126)는 액션을 수행할 때 어플리케이션의 효율성 레벨을 나타낼 수 있다. 액션은 어플리케이션에 인덱싱되거나 매핑된 APK 파일 또는 액션 인벤토리 파일을 통해 식별된 액션일 수 있다. 성능 메트릭은 값들(예컨대, 메모리 소비 값, 프로세서 사용 값 또는 시간) 또는 영숫자 표시자를 포함할 수 있다. 성능 메트릭은 예컨대, 낮음, 중간, 높음 또는 1에서 10까지의 스케일 또는 A, B, C, D, F와 같은 등급 시스템과 같은, 스케일, 등급(grade), 범위 또는 스펙트럼을 포함할 수 있다. 데이터 프로세싱 시스템(102) 성능 메트릭을 사용하여 전달할 어플리케이션들을 선택하거나 순위를 지정할 수 있다.
추가적인 성능 정보(126)는 어플리케이션과 연관된 에러들 또는 실패들을 나타낼 수 있다. 예를 들어, 만일 어플리케이션이 APK 파일 또는 액션 인벤토리 파일을 통해, 특정 유형의 엔티티에 대해 특정 유형의 액션을 수행할 수 있음을 나타내지만, 엔티티에 대해 해당 액션을 수행하려고할 때 어플리케이션이 충돌하거나 실패하거나 에러가 발생하는 경우, 데이터 프로세싱 시스템(102)은 데이터 저장소(118)의 성능 데이터 구조(126)에 에러 로그를 저장할 수 있다. 데이터 프로세싱 시스템(102)은 액션 인벤토리 파일에 표시된 것과는 반대로, 어플리케이션이 엔티티에 대해 액션을 수행하지 못하도록 구성되거나, 수행할 수 없거나 또는 달리 동작가능하지않다고 결정할 수 있다. 따라서, 데이터 프로세싱 시스템(102)은 어플리케이션이 만족스러운 레벨로 엔티티에 대해 액션을 수행할 수 없다고 결정함에 응답하여(예를 들어, 충돌들, 에러들, 과도한 딜레이, 레이턴시 또는 음질이나 비디오 해상도와 같은 매우 낮은 품질), 어플리케이션과 해당 액션 및 엔티티 간의 매핑 또는 링크를 제거하기 위해 인덱스(122)를 업데이트하기로 결정할 수 있다. 데이터 프로세싱 시스템(102)은 개발자가 에러를 해결하거나 수정하기 위해 어플리케이션 또는 액션 인벤토리 파일을 업데이트할 수 있도록, 어플리케이션을 제공한 개발자 컴퓨팅 디바이스(106)에 표시, 통지 또는 경고를 제공할 수 있다. 데이터 프로세싱 시스템(102)은 성능 데이터 구조(126)에 저장된 오류 로그를 사용하여, 어플리케이션이 엔티티에 대해 액션을 수행하도록 구성되어 있음을 나타내는 액션 인벤토리 파일과는 달리, 엔티티에 대한 액션을 수행하기 위한 어플리케이션의 선택을 차단하도록 결정할 수 있다.
데이터 저장소(118)는 프로파일 정보를(128)에 저장할 수 있다. 프로파일 정보는 컴퓨팅 디바이스(104)에 관한 정보를 포함하거나 참조할 수 있다. 프로파일 정보는 컴퓨팅 디바이스(104)에 구성된 계정에 관련되는 정보를 포함하거나 참조할 수 있다. 프로파일 정보는 컴퓨팅 디바이스(104)의 설정을 나타내거나 또는 컴퓨팅 디바이스(104) 상에 활성화된 계정을 나타낼 수 있다. 프로파일 정보는 컴퓨팅 디바이스(104) 상에 어떤 어플리케이션이 설치되었는지를 나타낼 수 있으며 또는 어떤 어플리케이션이 컴퓨팅 디바이스(104)에 대해 이용가능하거나 액세스가능한지를 나타낼 수 있다. 프로파일 정보는 컴퓨팅 디바이스(104) 상에 저장되거나 액세스가능한 엔티티들을 포함하거나 나타낼 수 있다. 프로파일 정보는 어플리케이션들, 액션들 또는 엔티티들에 대한 사용자 선호사항들을 포함하거나 나타낼 수 있다.
데이터 프로세싱 시스템(102)은 검색 엔진 시스템(146)과 인터페이스, 액세스, 사용, 또는 달리 통신할 수 있다. 검색 엔진(146)은 웹 페이지들을 인덱싱하고 인덱스를 데이터베이스에 저장하기 위하여 인터넷 상의 웹 페이지들 또는 웹 사이트들을 크롤링하는 시스템을 참조하거나 포함할 수 있다. 검색 엔진 시스템(146)은 검색 엔진에 대한 입력에 지정된 키워드 또는 문자에 대응하는 데이터베이스의 아이템들을 검색 및 식별하는 하나 이상의 프로그램을 포함할 수 있다.
데이터 프로세싱 시스템(102)은 웹 서버(144)와 인터페이스, 액세스, 사용, 또는 달리 통신할 수 있다. 웹 서버(144)는 웹 사이트 또는 웹 페이지를 호스팅할 수 있다. 웹 서버(144)는 개발자 컴퓨팅 디바이스(106)에 의해 개발되고 인터넷에 게시된 웹 사이트를 호스팅할 수 있다. 예를 들어, 개발자 컴퓨팅 디바이스(106)는 개발자 컴퓨팅 디바이스(106)에 의해 제공된 어플리케이션이 액션을 수행할 수 있는 엔티티들을 표시하기 위해, 구조화된 데이터 태깅 방식을 사용하여 웹 페이지를 마크업할 수 있다.
인터페이스(110), 자연어 프로세싱 구성요소(112), 어플리케이션 수신(intake) 구성요소(114) 또는 어플리케이션 전달 구성요소(116) 각각은 데이터베이스 저장소 또는 데이터 저장소(118)와 통신하도록 구성된 프로그램가능 로직 어레이 엔진 또는 모듈과 같은 적어도 하나의 프로세싱 디바이스 또는 다른 로직 디바이스를 포함할 수 있다. 인터페이스(110), 자연어 프로세서 구성요소(112), 어플리케이션 수신 구성요소(114), 어플리케이션 전달 구성요소(116) 및 데이터 저장소(118)는 개별 구성요소, 단일 구성요소 또는 데이터 프로세싱 시스템(102)의 일부일 수 있다. 시스템(100) 및 가령 데이터 프로세싱 시스템(102)과 같은 그 컴포넌트들은 하나 이상의 프로세서, 논리 디바이스 또는 회로와 같은 하드웨어 요소를 포함할 수 있다.
데이터 프로세싱 시스템(102)은 복수의 컴퓨팅 디바이스들(104)과 관련된 익명의 컴퓨터 네트워크 활동 정보를 획득할 수 있다. 컴퓨팅 디바이스(104)의 사용자는 사용자의 컴퓨팅 디바이스(104)에 대응하는 네트워크 활동 정보를 획득하도록 데이터 프로세싱 시스템(102)을 긍정적으로 인증할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 하나 이상의 유형들의 네트워크 활동 정보를 획득하기 위한 동의에 대하여 컴퓨팅 디바이스(104)의 사용자를 촉구(프롬트프)할 수 있다. 컴퓨팅 디바이스(104)의 사용자의 신원은 익명으로 남아있을 수 있으며 그리고 컴퓨팅 디바이스(104)는 고유 식별자와 연관될 수 있다(예를 들어, 데이터 프로세싱 시스템 또는 컴퓨팅 디바이스의 사용자에 의해 제공되는 사용자 또는 컴퓨팅 디바이스에 대한 고유 식별자). 데이터 프로세싱 시스템은 각각의 관찰과 대응 고유 식별자를 연관시킬 수 있다.
데이터 프로세싱 시스템(102)은 예를 들어, 데이터 패킷을 이용하여 정보를 송신 및 수신하도록, 설계, 구성, 제작 혹은 동작가능한 인터페이스 구성요소(110)를 포함할 수 있다. 인터페이스(110)는 네트워크 프로토콜과 같은 하나 이상의 프로토콜을 사용하여 정보를 수신 및 전송할 수 있다. 인터페이스(110)는 하드웨어 인터페이스, 소프트웨어 인터페이스, 유선 인터페이스 또는 무선 인터페이스를 포함할 수 있다. 인터페이스(110)는 하나의 포맷에서 다른 포맷으로 데이터를 변환 또는 포맷팅하는 것을 용이하게할 수 있다. 예를 들어, 인터페이스(110)는 소프트웨어 구성요소들과 같은 다양한 구성요소들 사이의 통신을 위한 정의들을 포함하는 어플리케이션 프로그래밍 인터페이스를 포함할 수 있다.
데이터 프로세싱 시스템(102)은 어플리케이션 패키지 파일 및 관련 액션 인벤토리 파일을 수신하고 그리고 모바일 어플리케이션이 수행하는 하나 이상의 전자 액션들 및 어플리케이션이 전자 액션을 수행하는 하나 이상의 대응 엔티티들을 식별하기 위하여 액션 인벤토리 파일을 프로세싱하도록 설계, 구성, 제작 또는 동작가능한 어플리케이션 수신 구성요소(114)을 포함할 수 있다. 어플리케이션 수신 구성요소(114)는 개발자 컴퓨팅 디바이스(106)가 어플리케이션 패키지 파일 및 관련 액션-인벤토리 파일을 전송할 수 있는 사용자 인터페이스, 그래픽 사용자 인터페이스, 또는 다른 매커니즘을 제공할 수 있다. 예를 들어, 개발자 컴퓨팅 디바이스(106)는 데이터 프로세싱 시스템(102)의 인터페이스(110)를 통해 어플리케이션 패키지 파일을 업로드할 수 있다. 데이터 프로세싱 시스템(102)은 개발자 컴퓨팅 디바이스(106) 상의 위치로부터 어플리케이션 패키지 파일을 검색할 수 있다.
데이터 프로세싱 시스템(102)은 다수의 개발자 컴퓨팅 디바이스(106)로부터 다수의 어플리케이션 파일을 수신할 수 있다. 어플리케이션 패키지 파일은 컴퓨팅 디바이스(104)에 어플리케이션을 배포 및 설치하기 위한 명령들을 포함할 수 있다. 명령들은 소프트웨어 코드, 실행가능 파일, 프로그램, 스크립트 또는 함수를 포함하거나 참조할 수 있다. 어플리케이션 패키지 파일은 어플리케이션이 컴퓨팅 디바이스(104)에서 실행되기 위해 충족되어야하는 기준 또는 시스템 요구 사항을 추가로 제공할 수 있다. 예를 들어, 어플리케이션 패키지 파일은 운영 체제 유형, 컴퓨팅 디바이스 유형, 필요한 인터페이스(예: 키보드, 마우스, 터치 스크린, 센서, 디스플레이, 스피커, 마이크), 프로세서 요구 사항, 스토리지 요구 사항, 메모리 요구 사항과 같은 호환성 정보를 지정할 수 있다. 어플리케이션 전달 구성요소(116)는 호환성 정보를 사용하여 컴퓨팅 디바이스(104)에 전달할 어플리케이션을 선택할 수 있다.
각각의 어플리케이션 패키지 파일은 액션 인벤토리 파일과 연관될 수 있다. 액션 인벤토리 파일은 어플리케이션이 수행하도록 된 액션들의 유형을 나타낼 수 있다. 액션들은 전자적 액션이라 지칭될 수 있는데, 이는 이들이 컴퓨팅 디바이스에서 실행되는 프로그램에 의해 수행되기 때문이다. 액션들은 예를 들어, 오디오 재생, 비디오 재생, 멀티미디어, 뉴스 제공, 레시피 제공, 날씨 정보 제공, 차량 공유 서비스 주문, 전자 상거래, 티켓 구매 등을 포함할 수 있다.
액션 인벤토리 파일은 또한, 어플리케이션이 액션을 수행하도록 구성된 엔티티를 나타낼 수 있다. 엔티티들의 세트는, 어플리케이션의 인벤토리라고 지칭될 수 있다. 액션 인벤토리 파일은 데이터 파일, 텍스트 파일, 쉼표로 구분된 파일, 테이블, 데이터 구조 또는 기타 파일이 될 수 있거나 또는 액션 및 인벤토리 정보를 나타내도록 구성된 모든 임의의 포맷일 수 있다. 액션 인벤토리 파일 포맷은 사용자가 그들 자신의 커스터마이즈된 마크업 언어를 정의할 수 있는 메타언어와 같은 확장가능한 마크업 언어 XML 파일이 될 수 있다.
액션 인벤토리 파일은 엔티티들의 목록에 대한 포인터를 포함할 수 있다. 액션 인벤토리 파일은 개발자 컴퓨팅 디바이스를 통해 설정된 웹 페이지에 대한 유니폼 리소스 로케이터를 포함할 수 있으며, 데이터 프로세싱 시스템(102)은 개발자 컴퓨팅 디바이스의 웹 페이지로부터 엔티티들의 인벤토리를 결정할 수 있다. 액션 인벤토리 파일은 엔티티 목록에 대한 참조, 포인터, URL 또는 기타 표시를 포함할 수 있다. 예를 들어, 액션 인벤토리 파일은 어플리케이션이 하나 이상의 액션을 수행하도록 구성된 엔티티 목록을 자체적으로 저장하지 않을 수 있지만, 웹 페이지 또는 웹 사이트 또는 액션 인벤토리 파일과는 별개이고 혹은 원격으로 저장되는 기타 데이터 파일에 대한 링크를 포함할 수 있다. 예를 들어, 액션 인벤토리 파일은 액션들의 세트를 포함할 수 있지만, 어플리케이션이 액션을 수행할 수 있는 엔티티들을 나타내는 웹 페이지에 대한 URL을 포함할 수 있다. 예를 들어, 액션은 "음악 재생"일 수 있고, 엔티티들의 인벤토리(예를 들어, 노래 카탈로그)는 웹 페이지(예를 들어, 웹 서버 144에 의해 호스팅됨)에 저장될 수 있다. 웹 페이지에 엔티티들의 인벤토리를 저장함으로써, 개발자 컴퓨팅 디바이스(106)는 새로운 액션 인벤토리 파일 또는 어플리케이션 패키지 파일을 데이터 프로세싱 시스템(102)에 제공할 필요없이 인벤토리 목록을 업데이트할 수 있으며, 이에 의해, 데이터 프로세싱 시스템(102)에 의해 수행되는 어플리케이션 수신(intake) 프로세스의 횟수를 감소시킬 수 있으며, 이는 데이터 프로세싱 시스템(102)에 의한 프로세서 사용을 감소시킬 수 있다.
데이터 프로세싱 시스템(102)은 액션 인벤토리 파일을 파싱 또는 프로세싱하여, 웹 페이지에 대한 링크 또는 참조를 식별할 수 있다. 웹 페이지는 구조화된 데이터를 포함할 수 있다. 구조화된 데이터는 HTML 페이지에 대한 추가적인 마크업을 구비한 웹 페이지를 참조할 수 있어, 봇, 스파이더 또는 웹 크롤러가 웹 페이지의 정보를 더 잘 이해할 수 있게 한다. 데이터 프로세싱 시스템(102)(예를 들어, 어플리케이션 수신 구성요소 114를 통해)은 웹 페이지의 구조화된 데이터를 파싱하거나 프로세싱하여 개발자가 어플리케이션에 이용가능하고 어플리케이션이 액션을 수행하는데 사용할 수 있는 엔티티들의 인벤토리를 식별할 수 있다. 구조화된 데이터는 엔티티의 고유 식별자(예: 도메인, 속성 및 유형), 엔티티의 영숫자 식별자, 엔티티 설명, 엔티티와 관련된 키워드 또는 기타 다른 정보와 같은 엔티티에 대한 정보를 나타낼 수 있다.
데이터 프로세싱 시스템(102)은 웹 페이지의 구조화된 데이터를 활용하여(leverage) 엔티티를 식별할 수 있으며, 그리고 엔티티 그래프 시스템(142)을 또한 활용하여 엔티티에 대한 추가 정보를 식별할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 구조화된 데이터를 파싱하여 엔티티를 식별한 다음, 엔티티 그래프 시스템(142)에 액세스하여 엔티티에 대한 추가 정보를 얻을 수 있다. 웹 페이지 상의 구조화된 데이터는 엔티티의 고유 식별자를 포함할 수 있으며, 데이터 프로세싱 시스템(102)은 이를 이용하여 엔티티 그래프 시스템(142)을 통해, 식별된 엔티티와 연관된 추가 엔티티들을 식별할 수 있다. 예를 들어, "Artist_A" 라는 엔티티는 웹 페이지로부터 식별될 수 있지만, 데이터 프로세싱 시스템(102)은 "Artist_A"와 연관된 앨범, 노래, 콘서트, 티켓 또는 밴드를 식별하기 위해 엔티티 그래프 시스템(142)에 질의할 수 있다.
일부 경우, 웹 페이지는 엔티티의 고유 식별자를 제공하지 않을 수 있으며, 이러한 경우 데이터 프로세싱 시스템(102)은 웹 페이지를 프로세싱하여 키워드 또는 후보 엔티티를 식별할 수 있으며, 다음으로 엔티티 그래프 시스템에 질의하여 엔티티와 관련된 정보와 함께 고유 엔티티 식별자를 결정할 수 있다. 예를 들어, 웹 페이지에는 엔티티들의 구조화된 인벤토리가 포함되지 않거나 부족할 수 있다. 데이터 프로세싱 시스템(102)은 구조화된 식별자 패턴이 웹 페이지에 없다고 결정하는 것에 기초하여 엔티티들의 구조화된 인벤토리가 웹 페이지에 없다라고 결정할 수 있다. 다음으로, 데이터 프로세싱 시스템(102)은 웹 페이지가 구조화되지 않은 정보를 포함하고 있다고 결정할 수 있으며, 그리고 엔티티 그래프 시스템(142)을 활용하여, 엔티티 그래프 시스템(142)에서 대응 엔티티를 결정하도록 웹 페이지에서 식별된 키워드들 또는 용어들로 엔티티 그래프 시스템(142)에 질의함으로써 웹 페이지에서 어떤 엔티티들이 이용가능한지를 결정할 수 있다. 데이터 프로세싱 시스템(102)은 웹 페이지 상의 구조화되지 않은 데이터와 엔티티 그래프 시스템(142)의 구조화된 데이터를 조합 또는 통합하여, 엔티티 및 관련 엔티티들을 식별할 수 있다. 따라서, 데이터 프로세싱 시스템(102)은 액션 인벤토리 파일, 웹 페이지로부터의 구조화된 데이터, 또는 액션 인벤토리 파일에서 식별된 웹 페이지로부터의 구조화되지 않은 데이터를 프로세싱하여, 어플리케이션에 대한 엔티티들의 인벤토리 뿐만 아니라 어플리케이션이 수행하거나 실행하도록 구성된 액션들을 식별할 수 있다.
데이터 프로세싱 시스템(102)은 어플리케이션이 엔티티들에서 수행할 수 있는 액션들과 함께 어플리케이션의 엔티티들의 인벤토리를 인덱스(122)에 저장할 수 있다. 인덱스(122)는 고유 어플리케이션 식별자(예를 들어, 영숫자 식별자)와 같은 어플리케이션의 식별자를 포함할 수 있다. 인덱스(122)는 어플리케이션 식별자를 액션 및 대응하는 엔티티들 또는 엔티티들의 인벤토리와 연관시킬 수 있다. 어플리케이션은 하나 이상의 엔티티들에 대해 하나 이상의 액션들을 수행하도록 구성될 수 있다.
따라서, 데이터 프로세싱 시스템(102)은, 어플리케이션에 대하여, 엔티티들의 구조화된 마크업을 갖는 웹 페이지에 대한 유니폼 리소스 로케이터를 포함하는 액션 인벤토리 파일을 수신할 수 있다. 데이터 프로세싱 시스템(102)은 유니폼 리소스 로케이터를 통해 웹 페이지에 액세스한 다음, 엔티티들의 인벤토리를 식별하기 위해 엔티티들의 구조화된 마크업으로 웹 페이지를 파싱할 수 있다. 데이터 프로세싱 시스템(102)은 데이터베이스에서 엔티티들의 인벤토리를 복수의 어플리케이션들 중 적어도 하나와 연관시킬 수 있다.
어플리케이션 수신(intake) 구성요소(114)는 검증 또는 에러 체크 프로세스를 수행하여, 어플리케이션이 엔티티들에 대해 액션을 수행할 수 있는지 여부를 검증 또는 결정할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 액션 및 엔티티를 선택하고 그리고 어플리케이션이 엔티티에 대한 액션을 수행하도록 지시할 수 있다. 만일, 어플리케이션이 실패하거나, 충돌하거나, 지연을 갖거나, 과도한 메모리, 저장소 또는 프로세싱을 이용하는 경우, 데이터 프로세싱 시스템(102)은 어플리케이션이 엔티티에 대한 액션을 수행하도록 구성되지 않았거나 또는 품질 체크 프로세스에서 실패한 것으로 결정할 수 있다. 데이터 프로세싱 시스템(102)은 품질 체크 프로세스의 실패에 응답하여, 어플리케이션에 대한 액션 또는 엔티티를 비활성화할 수 있다. 데이터 프로세싱 시스템(102)은 후속 전달을 위해 어플리케이션을 완전히 비활성화할 수 있다. 데이터 프로세싱 시스템(102)은 인덱스(122)에서 어플리케이션과 액션 또는 엔티티 간의 연관성을 제거(또는 추가를 차단)할 수 있다. 데이터 프로세싱 시스템(102)은 개발자 컴퓨팅 디바이스(106)에 에러를 통지하여, 개발자가 에러를 수정하거나 해결할 수 있게한다.
데이터 프로세싱 시스템(102)은 입력 오디오 신호를 데이터 프로세싱 시스템(102)의 인터페이스(110)로 통신하고 출력 오디오 신호를 렌더링하도록 클라이언트 컴퓨팅 디바이스의 컴포넌트들을 구동하는 앱(app)과 같은, 클라이언트 컴퓨팅 디바이스(104)에 설치된 어플리케이션, 스크립트, 또는 프로그램을 포함할 수 있다. 데이터 프로세싱 시스템(102)은 오디오 입력 신호를 포함하거나 식별하는 데이터 패킷 또는 다른 신호를 수신할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 오디오 신호를 수신하거나 획득하고 오디오 신호를 파싱하기 위해 NLP 컴포넌트(112)를 실행하거나 구동할 수 있다. 예를 들어, NLP 컴포넌트(112)는 인간과 컴퓨터 사이의 상호작용을 제공할 수 있다. NLP 컴포넌트(112)는 자연어를 이해하고 데이터 프로세싱 시스템(102)이 인간 또는 자연어 입력으로부터 의미를 도출할 수 있도록하는 기술들로 구성될 수 있다. NLP 컴포넌트(112)는 통계적 머신 러닝과 같은 머신 러닝에 기초한 기술들을 포함하거나 이러한 기술들로 구성될 수 있다. NLP 컴포넌트(112)는 입력 오디오 신호를 분석하기 위해 결정 트리, 통계적 모델 또는 확률 모델을 이용할 수 있다. NLP 컴포넌트(112)는 예를 들어, 명명된 엔티티 인식(named entity recognition)(예를 들어, 텍스트 스트림이 주어지면, 텍스트 내의 어떤 아이템들이 사람 또는 장소와 같은 적절한 이름들에 매핑되는지를 결정하고, 이러한 각 이름의 유형이 가령 사람, 위치 또는 조직과 같은 유형인지를 결정)과 같은 기능들, 자연어 생성(예컨대, 컴퓨터 데이터베이스 또는 의미론적 의도들로부터의 정보를 이해할 수 있는 인간 언어로 변환함), 자연어 이해(예컨대, 컴퓨터 모듈이 조작할 수 있는 1차 논리 구조와 같은 보다 정형적인 표현으로 텍스트를 변환함), 머신 번역(예컨대, 하나의 인간 언어로부터 다른 하나의 인간 언어로 텍스트를 자동으로 번역), 형태학적 분할(morphological segmentation)(예컨대,단어들을 개별 형태소로 분리하고 형태소의 클래스 식별함, 이는 고려되는 언어의 단어들의 형태나 구조의 복잡성에 따라 어려울 수 있음), 질문 답변(예컨대, 인간 언어 질문에 대한 답변을 결정하는 것, 이것은 구체적이거나 개방형일 수 있음), 의미론적(semantic) 프로세싱(예를 들어, 식별된 단어를 유사한 의미를 가진 다른 단어와 연관시키기 위해 단어를 식별하고 그 의미를 인코딩한 후 발생할 수 있는 프로세싱) 등을 수행할 수 있다.
NLP 컴포넌트(112)는 저장된, 오디오 파형들(예컨대, 데이터 저장소 118 내에)의 대표 세트와 입력 신호를 비교하고 그리고 가장 가까운 매치들을 선택함으로써, 오디오 입력 신호를 인식된 텍스트로 변환할 수 있다. 오디오 파형들의 세트는 데이터 저장소(118) 또는 데이터 프로세싱 시스템(102)에 액세스할 수 있는 다른 데이터베이스에 저장될 수 있다. 대표 파형들은 대규모 사용자 세트에 걸쳐 생성된 다음, 사용자의 음성 샘플로 증강될 수 있다. 오디오 신호가 인식된 텍스트로 변환된 후, NLP 컴포넌트(112)는 예를 들어 사용자들에 걸친 트레이닝을 통해 또는 수동 특정을 통해 데이터 프로세싱 시스템(102)이 제공할 수 있는 액션들과 연관된 단어들에 텍스트를 매칭시킨다.
오디오 입력 신호는 클라이언트 컴퓨팅 디바이스(104)의 센서(134) 또는 트랜스듀서(136)(예를 들어, 마이크로폰)에 의해 검출될 수 있다. 트랜스듀서(136), 오디오 드라이버(138), 또는 다른 컴포넌트를 통해, 클라이언트 컴퓨팅 디바이스(104)는 오디오 입력 신호를 데이터 프로세싱 시스템(102)에 제공할 수 있으며(예를 들어, 네트워크(105)를 통해), 여기서 이것은 (예를 들어, 인터페이스(110)에 의해) 수신될 수 있으며 그리고 NLP 컴포넌트(112)에 제공되거나 또는 데이터 저장소(118)에 저장될 수 있다.
NLP 컴포넌트(112)는 입력 오디오 신호를 얻을 수 있다. 입력 오디오 신호로부터, NLP 컴포넌트(112)는 적어도 하나의 요청 또는 요청에 대응하는 적어도 하나의 트리거 키워드를 식별할 수 있다. 요청은 입력 오디오 신호의 의도 또는 주제를 나타낼 수 있다. 트리거 키워드는 취해질 수 있는 액션의 유형을 나타낼 수 있다. 예를 들어, NLP 컴포넌트(112)는 입력 오디오 신호를 파싱하여, 저녁 식사 및 영화에 참석하기 위해 집을 떠나라는 적어도 하나의 요청을 식별할 수 있다. 트리거 키워드는 수행할 작업을 나타내는 적어도 하나의 단어, 구, 어근 또는 부분 단어 또는 파생어를 포함할 수 있다. 예를 들어, 입력 오디오 신호로부터의 트리거 키워드 "go" 또는 "to go to"는 교통수단(transport)이 필요함을 나타낼 수 있다. 본 일례에서, 입력 오디오 신호(또는 식별된 요청)는 교통수단에 대한 의도를 직접적으로 표현하지는 않지만, 트리거 키워드는 교통수단이 상기 요청에 의해 표시되는 적어도 하나의 다른 액션에 대하여 보조 액션(ancillary action)임을 나타낸다.
NLP 컴포넌트(112)는 요청 및 트리거 키워드를 식별, 결정, 검색하거나 그렇지 않으면 획득하기 위해 입력 오디오 신호를 파싱할 수 있다. 예를 들어, NLP 컴포넌트(112)는 트리거 키워드 또는 요청을 식별하기 위해 입력 오디오 신호에 의미 론적 프로세싱 기술을 적용할 수 있다. NLP 컴포넌트(112)는 제 1 트리거 키워드 및 제 2 트리거 키워드와 같은 하나 이상의 트리거 키워드를 포함하는 트리거 문구를 식별하기 위해 입력 오디오 신호에 의미론적 프로세싱 기술을 적용할 수 있다. 예를 들어, 입력 오디오 신호는 "나는 나의 세탁 및 드라이 클리닝을 할 사람이 필요하다"라는 문장을 포함할 수 있다. NLP 컴포넌트(112)는 상기 문장을 포함하고 있는 데이터 패킷에 의미론적 프로세싱 기술 또는 다른 자연어 프로세싱 기술을 적용하여, "do my washing" 및 "do my dry cleaning" 이라는 트리거 문구를 식별할 수 있다. 또한, NLP 컴포넌트(112)는 세탁 및 드라이 클리닝과 같은 다수의 트리거 키워드를 추가로 식별할 수 있다. 예를 들어, NLP 컴포넌트(112)는 트리거 문구가 트리거 키워드 및 제 2 트리거 키워드를 포함한다고 결정할 수 있다.
NLP 컴포넌트(112)는 검색 질의 또는 정보에 대한 검색 또는 다른 요청을 수행하는 대응 트리거 어구를 식별할 수 있다. NLP 컴포넌트(112)는 입력 오디오 신호가 주제, 이벤트, 현재 이벤트, 뉴스 이벤트, 사전적 정의, 역사적 이벤트, 사람, 장소 또는 사물에 대한 정보 요청에 대응한다고 결정할 수 있다. 예를 들어, NLP 컴포넌트(112)는 입력 오디오 신호가 "미국 혁명이 언제 일어났습니까?"와 같은 역사적 이벤트에 대한 정보에 대한 검색 질의에 대응한다고 결정할 수 있다.
NLP 컴포넌트(112)는 입력 오디오 신호를 필터링하여, 키워드들, 검색 질의, 또는 트리거 키워드를 식별할 수 있다. 예를 들어, 입력 오디오 신호를 운반하는 데이터 패킷은 "공항에 가는데 도움을 줄 수 있는 사람이 있으면 좋겠다(It would be great if I could get someone that could help me go to the airport)"이 포함될 수 있으며, 이 경우 NLP 컴포넌트(112)는 다음과 같이 하나 이상의 용어들을 필터링할 수 있다. "it", "would", "be", "great", "if", "I", "could", "get", "someone", "that", "could" 또는 "help". 이러한 용어를 필터링함으로써, NLP 컴포넌트(112)는 "go to airport"와 같은 트리거 키워드를 보다 정확하고 신뢰성있게 식별할 수 있으며 그리고 이것이 택시 또는 탈것 공유 서비스에 대한 요청이라고 결정할 수 있다.
다른 일례에서, 입력 오디오 신호를 운반하는 데이터 패킷은 "아티스트_A에 의한 123번 노래를 재생해줘(Can you please play song123 by Artist_A)"를 포함할 수 있으며, 이 경우 NLP 컴포넌트(112)는 다음과 같은 하나 이상의 용어를 필터링할 수 있다: "can" , "you" ,"play." 이러한 용어들을 필터링함으로써, NLP 컴포넌트(112)는 트리거 키워드, 의도, 액션 및 엔티티를 보다 정확하고 신뢰성있게 식별할 수 있다. 예를 들어, 의도는 음악을 재생하는 것이 될 수 있고, 액션은 "play"가 될 수 있으며, 엔티티는 "Artist_A에 의한 123번 노래"가 될 수 있다. 따라서, 자연어 프로세싱 컴포넌트(112)는 액션 및 액션을 수행할 엔티티를 결정하기 위해, 입력 오디오 신호 또는 입력 오디오 신호를 운반하는 데이터 패킷을 파싱 및 분석함으로써 의도를 결정할 수 있다. 데이터 프로세싱 시스템(102)은 그 각각이 도메인, 유형 및 속성으로 형성된 고유 식별자를 갖는 엔티티들의 계층적 분류를 포함하는 엔티티 그래프 시스템(142)에 의해 제공되는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별할 수 있다.
다른 일례에서, 입력 오디오 신호를 운반하는 데이터 패킷은, "어플리케이션 A가 아티스트 A에 의한 123번 노래를 재생하게 해주세요(Can Application_A please play song123 by Artist_A)" 을 포함할 수 있으며, 이 경우 NLP 컴포넌트(112)는 "can" , "please" 와 같은 하나 이상의 용어를 필터링할 수 있다. 이들 용어들을 필터링함으로써, NLP 컴포넌트(112)는 트리거 키워드, 의도, 액션, 엔티티 및 요청 어플리케이션을 보다 정확하고 신뢰성있게 식별할 수 있다. 예를 들어, 의도는 음악을 재생하는 것이 될 수 있고, 액션은 "play"가 될 수 있으며, 엔티티는 "song123 by Artist_A"가 될 수 있으며, 엔티티에 대해 사용자가 액션을 수행하도록 요청하는 어플리케이션은 "Application_A"일 수 있다. 따라서, 자연어 프로세싱 컴포넌트(112)는 액션을 수행할 어플리케이션 및 어플리케이션이 액션을 수행할 엔티티를 결정하기 위해, 입력 오디오 신호 또는 입력 오디오 신호를 운반하는 데이터 패킷을 파싱 및 분석하여 의도를 결정할 수 있다.
따라서, 데이터 프로세싱 시스템(102)은 (예를 들어, 인터페이스(110) 및 자연 언어 프로세싱 컴포넌트(112)를 통해) 클라이언트 디바이스의 센서에 의해 검출된 입력 오디오 신호를 포함하는 데이터 패킷들을 수신할 수 있으며, 그리고 입력 오디오 신호를 파싱하여 액션 및 액션이 수행될 엔티티를 식별할 수 있다. 데이터 프로세싱 시스템(102)은 의도를 식별할 수 있는데, 의도는 액션 및 엔티티로 형성되거나 이에 기초할 수 있다. 입력 오디오 신호는 엔티티에 대해 액션을 수행할 어플리케이션을 나타낼 수 있고, 데이터 프로세싱 시스템(102)은 입력 오디오 신호로부터 어플리케이션을 식별할 수 있다.
데이터 프로세싱 시스템(102)은 어플리케이션 전달 구성요소(116)를 포함, 실행, 또는 아니면 이와 통신하여, 액션을 실행할 수 있는 어플리케이션 및 입력 오디오 신호로부터 식별되는 엔티티를 식별할 수 있으며, 이후 포함할 수 있고, 실행 또는 작업 및 입력 오디오 신호로부터 식별되는 엔티티를 실행할 수 있는 어플리케이션을 식별하고, 클라이언트 디바이스에 표시를 제공하거나 아니면 어플리케이션으로 하여금 엔티티에 대해 액션을 실행하게 한다. 예를 들어, 어플리케이션 전달 구성요소(116)는 입력 오디오 신호로부터 식별된 액션을 수행하도록 구성된 하나 이상의 제 1 어플리케이션, 입력 오디오로부터 식별된 엔티티에 대한 액세스를 구비하도록 구성된 복수의 어플리케이션들 중 하나 이상의 제 2 어플리케이션을 식별할 수 있으며 그리고 하나 이상의 제 1 어플리케이션 및 하나 이상의 제 2 어플리케이션으로부터, 액션을 수행하고 입력 오디오 신호로부터 식별된 엔티티에 액세스하도록 구성된 어플리케이션을 선택한다. 다음으로, 데이터 프로세싱 시스템(102)은 데이터 프로세싱 시스템에 의해 선택된 어플리케이션의 표시를 클라이언트 디바이스에 제공하여, 클라이언트 디바이스로 하여금 입력 오디오 신호에서 식별된 엔티티를 사용하여 액션을 수행하도록 어플리케이션의 실행을 개시하게할 수 있다.
어플리케이션 전달 구성요소(116)는 실시간으로 선택을 수행할 수 있다. 실시간 선택 프로세스는 요청을 수신하는 시간 간격(예컨대, 1초, 2 초, 5 초, 10 초, 20 초, 30 초, 1 분, 2 분, 3 분, 5 분, 10 분 또는 20 분) 내에서 수행(예컨대, 개시 또는 완료)될 수 있다. 실시간 콘텐츠 선택 프로세스는 클라이언트 컴퓨팅 디바이스(104)와의 통신 세션 동안 또는 통신 세션이 종료된 후 시간 간격 내에서 수행될 수 있다.
엔티티에 대해 액션을 실행하는 어플리케이션을 선택하기 위하여, 데이터 프로세싱 시스템(102)은 액션을 수행하도록 구성된 어플리케이션들을 식별할 수 있다. 데이터 프로세싱 시스템(102)은 하나 이상의 시스템 또는 기술을 사용하여 액션을 수행할 수 있는 어플리케이션들을 식별할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 입력 오디오 신호로부터 식별된 액션과 연관된 어플리케이션들을 식별하도록 인덱스(122)에서 검색(lookup)을 수행할 수 있다. 데이터 프로세싱 시스템(102)은 인덱스(122)에서의 검색에 응답하여 고유 어플리케이션 식별자를 결정할 수 있다.
데이터 프로세싱 시스템(102)은 어플리케이션을 식별하기 위해 검색 엔진(146)에 질의를 입력한다. 예를 들어, 데이터 프로세싱 시스템(102)은 검색 엔진(146)에 액션을 입력할 수 있다. 데이터 프로세싱 시스템(102)은 어플리케이션을 식별하기 위한 액션에 기초하여 질의를 구성하거나 생성할 수 있다. 예를 들어, 질의는 "어떤 어플리케이션들이 <액션>을 수행할 수 있습니까?(what applications can perform <action>?)" 또는 "어떤 어플리케이션들이 <엔티티>에 대해 <액션>을 수행할 수 있습니까?" 또는 "<컴퓨팅 디바이스 유형>에서 <액션>을 수행할 수 있는 어플리케이션들을 식별하라(identify applications that can perform <action> on <computing device type>)" 일 수 있다. 데이터 프로세싱 시스템(102)은 검색 결과를 수신할 수 있다. 데이터 프로세싱 시스템(102)은 결과를 프로세싱하여 액션을 수행할 수 있는 하나 이상의 어플리케이션을 식별할 수 있다.
따라서, 데이터 프로세싱 시스템(102)은 인덱스(122)에 저장된 구조화된 데이터를 사용하여 액션을 식별할 수 있을 뿐만 아니라, 액션을 수행하도록 구성된 하나 이상의 어플리케이션을 식별하기 위한 검색 엔진(146)으로부터의 구조화되지 않은 웹 검색 결과를 이용하여 액션을 식별할 수 있다. 데이터 프로세싱 시스템(102)은 상기 결과들을 제 1 세트의 어플리케이션들로 통합할 수 있으며, 상기 제 1 세트의 어플리케이션들은 액션을 수행하도록 구성된다.
또한, 데이터 프로세싱 시스템(102)은 어떤 어플리케이션들이 엔티티에 대해 액션을 수행하도록 구성되었는지를 식별할 수 있다. 데이터 프로세싱 시스템(102)은 어떤 어플리케이션이 엔티티와 연관되는지를 결정하기 위해 엔티티 식별자를 사용하여 인덱스(122)에서 검색을 수행할 수 있다. 데이터 프로세싱 시스템(102)은 어떤 어플리케이션이 엔티티에 액세스할 수 있는지를 결정하기 위해 검색 엔진에 질의를 입력할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 "어떤 어플리케이션이 <엔티티>를 가지고 있는가?"와 같은 질의를 구성할 수 있다.
일부 경우, 데이터 프로세싱 시스템(102)은 엔티티에 대해 액션을 수행하는 어플리케이션들을 식별하기 위해 단일 룩업(lookup) 또는 검색(search)을 실행 혹은 수행할 수 있는 반면에, 다른 경우에서 데이터 프로세싱 시스템(102)은 먼저 액션을 수행하는 어플리케이션들을 식별하고, 이후 엔티티에 대한 액세스를 갖는 어플리케이션들을 식별하고, 이후 어떤 어플리케이션들이 결과들의 2개의 세트들 모두에 해당하는지를 식별한다. 예를 들어, 데이터 프로세싱 시스템(102)은 "어떤 어플리케이션이 <엔티티>에 대해 <액션>을 수행할 수 있는가?"와 같은 질의를 구성할 수 있다.
따라서, 데이터 프로세싱 시스템(102)은 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진(146)을 통해 웹 검색을 실행하고, 그리고 검색 엔진에 의해 출력된 웹 검색 결과에 기초하여 하나 이상의 제 1 어플리케이션들 또는 하나 이상의 제 2 어플리케이션들 중 적어도 하나를 식별할 수 있다. 데이터 프로세싱 시스템(102)은 도메인, 유형 및 속성으로 구성된 고유한 식별자를 각각 갖는 엔티티들의 계층적 분류를 포함하는 엔티티 그래프 시스템(142)에 의해 제공되는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별할 수 있다. 데이터 프로세싱 시스템(102)은 엔티티 그래프 시스템(142)으로부터 식별된 엔티티를 이용하는 웹 검색에 기초하여 하나 이상의 제 1 어플리케이션 또는 하나 이상의 제 2 어플리케이션을 식별할 수 있다. 일부 경우에, 데이터 프로세싱 시스템(102)은 인덱스(122)를 사용하여 엔티티에 대해 구성된 액션들의 세트를 식별할 수 있다. 데이터 프로세싱 시스템은 엔티티에 대해 구성된 액션들의 세트에 기초하여 하나 이상의 제 2 어플리케이션들을 식별할 수 있다.
데이터 프로세싱 시스템(102)은 액션을 수행하도록 구성된 제 1 세트의 어플리케이션들, 및 엔티티에 액세스하도록 구성된 제 2 세트의 어플리케이션들을 식별할 수 있다. 제 2 세트의 어플리케이션들은 제 1 세트의 어플리케이션들을 식별하는데 사용되는 프로세스와 독립적으로 식별될 수 있다. 예를 들어, 컴퓨팅 프로세스로 인한 레이턴시 및 딜레이를 줄이기 위해, 데이터 프로세싱 시스템(102)은 여러 프로세스들 또는 질의들을 병렬로 실행할 수 있다. 데이터 프로세싱 시스템(102)은 액션을 수행하도록 구성된 제 1 세트의 어플리케이션을 식별할 수 있고 그리고 병렬 또는 중첩 프로세스에서 엔티티에 액세스하도록 구성된 제 2 세트의 어플리케이션들을 식별할 수 있다.
일부 경우, 데이터 프로세싱 시스템(102)은 제 1 세트의 어플리케이션들과 제 2 세트의 어플리케이션들을 연속해서(serially) 식별할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 액션을 수행하도록 구성된 제 1 세트의 어플리케이션들을 식별한 다음, 제 1 세트의 어플리케이션들로부터, 제 1 세트의 어플리케이션들 중 어느 것이 엔티티에 액세스할 수 있는지를 식별하여, 엔티티에 대해 액션을 수행할 수 있는 어플리케이션들의 세트를 생성할 수 있다. 데이터 프로세싱 시스템(102)은 이용가능한 모든 어플리케이션들의 서브세트일 수 있는, 제 1 세트의 어플리케이션들에 대하여 엔티티들에 관련된 제 2 검색 또는 프로세스를 수행함으로써 메모리 또는 스토리지 이용량을 감소시킬 수 있다.
일부 경우, 데이터 프로세싱 시스템(102)은 엔티티에 대해 액션을 수행하도록 구성된 어플리케이션들을 식별하는 단일 프로세스 또는 질의를 수행할 수 있다. 예를 들어, 데이터 프로세싱 시스템은 여러 값들(예컨대, 액션 및 엔티티)로 룩업을 수행하거나 또는 여러 요청들로 검색 엔진에 검색 질의를 입력할 수 있다.
데이터 프로세싱 시스템(102)은 인덱스(122)에서 룩업을 수행한 것으로부터 획득된 결과들과 검색 엔진(146)으로부터의 결과들을 통합할 수 있다. 데이터 프로세싱 시스템(102)은 어플리케이션이 엔티티에 대해 액션을 수행할 수 있는지의 여부를 확인함으로써, 검색 엔진(146)으로부터의 결과들을 입증할 수 있다.
만일, 데이터 프로세싱 시스템(102)이 엔티티에 대해 액션을 수행할 수 있는 다수의 어플리케이션들을 식별한다면, 데이터 프로세싱 시스템(102)은 다수의 어플리케이션들에 대한 표시를 컴퓨팅 디바이스(104)에 제공하여, 상기 컴퓨팅 디바이스(104)의 사용자가 여러 어플리케이션들 중 하나를 선택할 수 있게한다. 만일, 데이터 프로세싱 시스템(102)이 엔티티에 대해 액션을 수행할 수 있는 다수의 어플리케이션들을 식별한다면, 데이터 프로세싱 시스템(102)은 다수의 어플리케이션들을 순위화하여(rank) 하나 이상의 어플리케이션을 제안할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 복수의 제 2 어플리케이션을 식별하기 위해 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진(146)을 통해 웹 검색을 실행할 수 있다. 그 다음, 데이터 프로세싱 시스템(102)은 복수의 제 2 어플리케이션들 각각의 순위를 매기고, 액션과 연관된 성능 피드백에 기초하여 복수의 제 2 어플리케이션 각각에 점수를 매기거나, 과거 선호도 정보에 기초하여 복수의 제 2 어플리케이션 각각에 점수를 매길 수 있다. 데이터 프로세싱 시스템(102)은 클라이언트 디바이스에 표시를 제공할 어플리케이션으로서, 상기 복수의 제 2 어플리케이션들 중 최고 순위 또는 최고 점수의 어플리케이션을 선택할 수 있다.
데이터 프로세싱 시스템(102)은 다양한 기준을 사용하여 다수의 어플리케이션들의 순위를 매길 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 어플리케이션의 순위를 매기기 위해, 성능 데이터 구조(126)에 저장된 성능 정보를 사용할 수 있다. 데이터 프로세싱 시스템(102)은 성능 메트릭에 기초하여 각 어플리케이션에 점수를 매길 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 가장 높은 성능의 어플리케이션에 가장 높은 순위를 할당할 수 있으며, 두 번째로 높은 성능의 어플리케이션에 두 번째로 높은 순위를 할당할 수 있으며, 기타 등등을 할당할 수 있다.
예를 들어, 데이터 프로세싱 시스템(102)은 어플리케이션과 관련된 피드백 또는 등급(ratings), 또는 성능 메트릭(예를 들어, 최소 레이턴시, 가장 빠른 런칭 시간, 가장 적은 메모리 또는 프로세스 또는 대역폭 사용량)에 기초하여, 소정의 어플리케이션이 가장 높은 성능의 어플리케이션이라고 결정할 수 있다. 만일, 데이터 프로세싱 시스템(102)이 어플리케이션 성능이 임계값(예를 들어, 피드백 등급 또는 다른 성능 메트릭) 미만이라고 결정한다면, 데이터 프로세싱 시스템(102)은 어플리케이션을 제거할 수 있으며 그리고 어플리케이션을 제안하지 않거나 순위에 어플리케이션을 포함하지 않기로 결정할 수 있다. 일부 경우에, 데이터 프로세싱 시스템(102)은 상위 N 개의 어플리케이션들(예를 들어, 상위 3 개의 어플리케이션, 상위 2 개의 어플리케이션, 또는 상위 5 개의 어플리케이션)만을 제공하거나 제안하도록 결정할 수 있다.
데이터 프로세싱 시스템(102)은 어떤 어플리케이션들이 컴퓨팅 디바이스(104)에 설치되어있는지를 결정할 수 있다. 데이터 프로세싱 시스템(102)은 어떤 어플리케이션들이 컴퓨팅 디바이스(104)에 이미 설치되었는지에 기초하여 어플리케이션들을 순위화할 수 있으며, 이에 의해서 컴퓨팅 디바이스(104)가 새로운 어플리케이션을 다운로드 및 설치할 필요성을 회피할 수 있다. 따라서, 식별된 어플리케이션 세트들 중 상위 랭크의 어플리케이션들은 컴퓨팅 디바이스(104)에 이미 설치된 어플리케이션들일 수 있다. 식별된 어플리케이션 세트들 중에서 그 어떤 어플리케이션도 컴퓨팅 디바이스(104)에 설치되지 않은 경우, 데이터 프로세싱 시스템(102)은 성능에 기초하여 어플리케이션들의 순위를 매기고, 이후 순위 목록으로부터의 어플리케이션을 설치하도록 컴퓨팅 디바이스(104)에 표시를 제공할 수 있는데, 이는 엔티티에 대해 액션을 실행하기 위한 것이다.
입력 오디오 신호가 어플리케이션에 대한 표시를 포함하는 경우, 데이터 프로세싱 시스템(102)은 입력 오디오 신호로부터 어플리케이션을 식별하고 그리고 하나 이상의 제 1 어플리케이션, 하나 이상의 제 2 어플리케이션 및 입력 오디오 신호에 기초하여 어플리케이션을 선택한다. 예를 들어, 데이터 프로세싱 시스템(102)은 입력 오디오 신호에서 식별된 어플리케이션이 어플리케이션들의 세트(엔티티에 대해 액션을 수행하도록 구성된 것으로서 데이터 프로세싱 시스템(102)에 의해 식별된)에 포함되는지 여부를 결정할 수 있으며, 그리고 매칭이 식별되면 실행할 어플리케이션을 선택할 수 있다.
도 2는 서로 다른 데이터 소스 질의들을 통합하기 위한 시스템(100)의 동작(200)에 대한 예시이다. 시스템은 예를 들어 컴퓨팅 디바이스(104) 및 데이터 프로세싱 시스템(102)을 포함하여 도 1에 도시된 시스템(100)의 하나 이상의 구성요소를 포함할 수 있다. 205에서, 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스(104)에 의해 검출된 입력 오디오 신호를 수신할 수 있다. 데이터 프로세싱 시스템(102)은 입력 오디오 신호 또는 입력 오디오 신호에 대한 표시들을 포함하는 데이터 패킷을 수신할 수 있다. 데이터 프로세싱 시스템(102)은 입력 오디오 신호로부터 사전-프로세싱된(pre-processed) 용어, 키워드 또는 어구들을 수신할 수 있다. 데이터 프로세싱 시스템(102)은 입력 오디오 신호의 필터링된 버전을 수신할 수 있다.
210에서, 데이터 프로세싱 시스템(102)은 수신된 입력 오디오 신호(또는 사전-프로세싱된 또는 필터링된 버전의 입력 오디오 신호)를 파싱할 수 있다. 데이터 프로세싱 시스템(102)은 수신된 데이터를 파싱하여 입력 오디오 신호에서 액션 및 엔티티를 식별할 수 있다. 데이터 프로세싱 시스템은 입력 오디오 신호에 대응하는 데이터를 파싱하기 위해 하나 이상의 프로세싱 기술, 머신 러닝 또는 자연어 프로세싱 기술을 사용할 수 있다. 데이터 프로세싱 시스템(102)은 액션 및 엔티티를 식별하기 위해 데이터를 파싱할 수 있다. 액션은 엔티티에 대해 수행할 수 있다. 일부 경우에, 입력 오디오 신호는 엔티티에 대해 액션을 수행하는데 사용할 어플리케이션의 표시를 포함할 수도 있다.
데이터 프로세싱 시스템(102), 액션 또는 엔티티를 식별하기 위해, 다수의 데이터 소스들 또는 데이터베이스에 질의할 수 있다. 다수의 데이터베이스들 또는 데이터 소스들은 서로 다르거나, 서로 분리되어 있거나, 서로 다른 포맷들로, 상이한 유형들의 데이터(예: 구조화 대 비구조화 데이터)를 포함하거나 또는 다른 데이터 소스들일 수 있다. 215에서, 데이터 프로세싱 시스템은 예를 들어, 엔티티 그래프 시스템(142), 웹 서버(144), 검색 엔진 시스템(146) 또는 인덱스(122)를 포함하는 다수의 데이터베이스들 또는 데이터 소스들에 다수의 질의들을 전송할 수 있다.
예를 들어, 데이터 프로세싱 시스템(102)은 대응하는 엔티티를 결정하기 위해, 210에서 입력 오디오 신호로부터 파싱된 키워드들 또는 용어들로 엔티티 그래프 시스템(142)에 질의할 수 있다. 데이터 프로세싱 시스템(102)은 엔티티에 대한 추가 정보를 결정하거나 엔티티와 연관된 엔티티들을 식별하기 위해, 엔티티의 고유 식별자로 엔티티 그래프 시스템(142)에 질의할 수 있다.
데이터 프로세싱 시스템(102)은 엔티티들의 목록 또는 엔티티들의 인벤토리를 가진 웹 페이지에 대한 포인터를 인덱스(122)에서 식별함에 응답하여, 웹 서버(144)에 질의할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 입력 오디오 신호에서 액션을 식별하고, 액션을 수행하도록 구성된 어플리케이션을 식별하기 위해 인덱스(122)에서 룩업을 수행할 수 있다. 그 후 데이터 프로세싱 시스템(102)은 어플리케이션의 APK 파일과 관련된 액션 인벤토리 파일을 식별할 수 있다. 액션 인벤토리 파일은 어플리케이션이 액션을 수행할 수 있는 엔티티들의 인벤토리를 포함하거나 나타내는 웹 서버(144)에 의해 호스팅되는 웹 페이지에 대한 포인터 또는 참조를 포함할 수 있다. 따라서, 데이터 프로세싱 시스템(102)은 엔티티들의 인벤토리를 식별하기 위해 웹 페이지를 크롤링하거나 파싱할 수 있다.
데이터 프로세싱 시스템(102)은 어플리케이션을 식별하기 위해 검색 엔진(146)에 질의할 수 있다. 데이터 프로세싱 시스템(102)은 입력 오디오 신호를 파싱함으로써 210에서 결정된 액션을 수행할 수 있는 어플리케이션을 식별하기 위해 검색 질의를 구성할 수 있다. 데이터 프로세싱 시스템은 입력 오디오 신호를 파싱함으로써 210에서 결정된 엔티티에 대해 액션을 수행할 수 있는 어플리케이션을 식별하기 위해 검색 질의를 구성할 수 있다.
215에서, 데이터 프로세싱 시스템(102)은 다수의 데이터베이스, 시스템 또는 데이터 소스들로 전송된 다수의 질의들에 대한 응답을 수신할 수 있다. 220에서, 데이터 프로세싱 시스템은 입력 오디오 신호에서 요청되거나 표시된 엔티티에 대해 액션을 수행하도록 구성된 하나 이상의 어플리케이션을 생성, 식별 또는 결정하기 위해 상기 응답을 통합할 수 있다. 응답을 통합하는 것은, 액션을 수행하도록 구성된 제 1 세트의 어플리케이션들, 엔티티에 액세스하도록 구성된 제 2 세트의 어플리케이션들, 상기 제 1 세트 및 제 2 세트 둘다에 포함된, 엔티티에 대해 액션을 수행하도록 구성된 최종 세트의 어플리케이션들을 식별하는 것을 참조하거나 포함할 수 있다.
응답을 통합하는 것은, 응답들에 기초하여 추가 질의들을 생성하는 것을 참조하거나 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 일련의 어플리케이션을 식별하는 액션을 이용하여 룩업을 수행하도록 인덱스(122)에 질의할 수 있다. 데이터 프로세싱 시스템(102)은 또한 검색 엔진 결과 페이지를 통해 어플리케이션을 식별하는 액션을 사용하여 검색 엔진(146)에 질의할 수 있다. 따라서, 데이터 프로세싱 시스템(102)은 액션을 수행할 수 있는 어플리케이션들을 식별하기 위해, 2 개의 상이한 데이터베이스들, 데이터 소스들 또는 시스템들에 질의할 수 있다. 데이터 프로세싱 시스템(102)은 검색 엔진(146)을 통해, 액션을 수행하는 상위 순위의 어플리케이션들이 Application_A 및 Application_B 라고 결정할 수 있다. 데이터 프로세싱 시스템(102)은 인덱스(122)에서의 룩업을 통해 20 개의 서로 다른 어플리케이션들이 있음을 결정할 수 있으며, 상기 20 개의 서로 다른 어플리케이션들은 각각의 액션 인벤토리 파일을 통해 이들이 액션을 수행하도록 구성되어 있음을 나타낸다. 데이터 프로세싱 시스템(102)은 검색 엔진(146)으로부터의 검색 엔진 결과에 기초하여 Application_A 및 Application_B를 더 높게 순위를 매기거나, 점수를 주거나, 가중치를 부여하도록 결정할 수 있다.
질의들을 통합하는 다른 실시예에서, 데이터 프로세싱 시스템(102)은 엔티티에 대해 액션을 수행할 수 있는 어플리케이션들을 식별하기 위해 액션 및 엔티티로 인덱스(122)에 질의할 수 있다. 또한, 데이터 프로세싱 시스템(102)은 룩업을 통해, 웹 서버(144)에 의해 호스팅되는 웹 페이지에 대한 포인터를 식별할 수 있다. 다음으로, 데이터 프로세싱 시스템(102)은 웹 서버(144) 상의 웹 페이지에 액세스하여 웹 페이지에 나열된 엔티티들을 식별하기 위해 웹 페이지를 크롤링할 수 있으며 그리고 어플리케이션에 대한 엔티티들의 인벤토리를 생성할 수 있다. 데이터 프로세싱 시스템(102)은 인덱스(122)의 어플리케이션과 연관된 엔티티들과 함께 웹 페이지로부터 결정된 엔티티들의 목록을 통합할 수 있다. 데이터 프로세싱 시스템(102)은 웹 페이지를 파싱함으로써 획득한 엔티티들을 포함하도록 인덱스(122)를 업데이트할 수 있다.
서로 다른 데이터 소스들(예를 들어, 상이한 유형들의 데이터를 구비한 상이한 유형들의 데이터 소스들)로부터의 질의들에 대한 응답들을 통합함으로써, 데이터 프로세싱 시스템(102)은 입력 오디오 신호에서 요청된 엔티티에 대해 액션을 수행하도록 구성된 하나 이상의 어플리케이션들을 식별할 수 있다. 225에서, 데이터 프로세싱 시스템(102)은 엔티티에 대해 액션을 수행할 하나의 어플리케이션을 선택할 수 있다. 데이터 프로세싱(102)는 엔티티에 대해 액션을 수행하도록 제안할 하나 이상의 어플리케이션들을 선택할 수 있다. 데이터 프로세싱 시스템(102)은 식별된 어플리케이션들의 순위를 매기거나 식별된 어플리케이션들을 스코어링하는 것에 기초하여 어플리케이션을 선택할 수 있다. 예를 들어, 데이터 프로세싱 시스템(102)은 성능 정보, 선호도 정보, 검색 엔진(146) 결과들, 피드백, 또는 컴퓨팅 디바이스(104)에 어떤 어플리케이션이 이미 설치되어 있나 등과 같은 다른 요인에 기초하여 어플리케이션의 순위를 매기거나 점수를 매길 수 있다.
230에서, 데이터 프로세싱 시스템(102)은 선택된 어플리케이션에 대한 표시를 컴퓨팅 디바이스(104)로 전송할 수 있다. 일부 경우에서, 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스로 하여금 엔티티에 대해 액션을 수행하기 위해 어플리케이션을 실행하게 하는 커맨드 또는 명령을 포함하는 표시를 235에서 전송할 수 있다(예를 들어, "Song_A"라는 제목의 노래를 재생하기 위해 Application_A를 론칭함). 일부 경우에, 데이터 프로세싱 시스템(102)은 컴퓨팅 디바이스(104)가 사용자에게 제시할 수 있는(예를 들어, 디스플레이 또는 오디오 인터페이스를 통해) 다수의 제안 어플리케이션들을 포함하는 표시를 전송할 수 있으며, 이후 사용자는 컴퓨팅 디바이스(104) 상에서 론칭 또는 실행하도록 어플리케이션을 선택할 수 있다(235).
일부 경우, 상기 표시는 어플리케이션 내의 엔티티에 대한 딥 링크를 포함할 수 있다. 딥 링크를 선택하면 어플리케이션이 시작되고 어플리케이션이 어플리케이션 내에서 엔티티를 열거나 실행하도록 지시할 수 있다.
도 3은 서로 다른 데이터 소스들을 통합하기 위한 예시적인 방법을 도시한다. 방법(300)은 시스템(100, 200) 또는 시스템(400)의 하나 이상의 구성요소, 시스템 또는 요소에 의해 수행될 수 있다. 방법(300)은 305에서 어플리케이션 패키지 파일을 수신하고 프로세싱하는 것을 포함할 수 있다. 데이터 프로세싱 시스템은 다수의 개발자 컴퓨팅 디바이스로부터 어플리케이션 패키지 파일을 수신할 수 있다. 어플리케이션 패키지 파일은 복수의 컴퓨팅 디바이스에 복수의 어플리케이션을 배포하고 설치하기 위한 명령을 포함할 수 있다. 각 어플리케이션 패키지 파일은 액션 인벤토리 파일과 연관될 수 있다. 데이터 프로세싱 시스템은 액션 인벤토리 파일을 프로세싱하여, 어플리케이션이 수행하는 하나 이상의 전자적 액션들과 어플리케이션이 상기 하나 이상의 전자적 액션들을 수행하는 하나 이상의 대응 엔티티들을 식별할 수 있다.
310에서, 데이터 프로세싱 시스템은 입력 오디오 신호를 수신 및 파싱할 수 있다. 데이터 프로세싱 시스템은 클라이언트 디바이스의 센서에 의해 감지된 입력 오디오 신호에 해당하는 데이터 패킷을 데이터 프로세싱 시스템의 인터페이스를 통해 수신할 수 있다. 데이터 프로세싱 시스템은 액션 및 액션이 수행될 엔티티를 식별하도록 입력 오디오 신호를 파싱할 수 있다(예를 들어, 자연어 프로세싱 기술을 통해).
315에서, 데이터 프로세싱 시스템은 액션 및 엔티티에 기초하여 하나 이상의 어플리케이션을 식별할 수 있다. 데이터 프로세싱 시스템은 입력 오디오 신호로부터 식별된 액션을 수행하도록 구성된 하나 이상의 제 1 어플리케이션들을 식별할 수 있다. 데이터 프로세싱 시스템은 액션 인벤토리 파일에 기초하여, 입력 오디오 신호로부터 식별된 엔티티에 액세스할 수 있는 복수의 어플리케이션들 중 하나 이상의 제 2 어플리케이션들을 식별할 수 있다. 320에서, 데이터 프로세싱 시스템은 하나 이상의 제 1 어플리케이션들 및 하나 이상의 제 2 어플리케이션들로부터, 액션을 수행하고 입력 오디오 신호로부터 식별된 엔티티에 액세스하도록 구성된 어플리케이션을 선택할 수 있다(예를 들어, 순위 매김(ranking) 또는 점수 매김(scoring) 프로세스에 기초하여).
325에서, 데이터 프로세싱 시스템은 상기 선택된 어플리케이션에 대한 표시를 제공할 수 있다. 데이터 프로세싱 시스템은 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 클라이언트 디바이스로 제공하여 클라이언트 디바이스가 입력 오디오 신호에서 식별된 엔티티를 사용하여 액션을 수행하도록 어플리케이션의 실행을 개시하게할 수 있다. 표시는 클라이언트 컴퓨팅 디바이스가 엔티티를 포함하는 어플리케이션의 뷰 또는 부분에 직접 어플리케이션을 열기 위해 딥 링크를 실행하거나 론칭하게 하는 어플리케이션의 엔티티에 대한 딥 링크를 포함할 수 있다.
도 4는 예시적인 컴퓨터 시스템(400)의 블록도이다.컴퓨터 시스템 또는 컴퓨팅 디바이스(400)는 시스템(100) 또는 데이터 프로세싱 시스템(102)과 같은 그것의 구성요소를 포함하거나 구현하는데 사용될 수 있다. 컴퓨팅 시스템(400)은 버스(405) 또는 정보를 통신하기 위한 다른 통신 컴포넌트 그리고 프로세서(410) 또는 정보를 프로세싱하기 위해 버스(405)에 결합된 프로세싱 회로를 포함할 수 있다. 컴퓨팅 시스템(400)은 또한 정보를 프로세싱하기 위해 버스에 연결된 하나 이상의 프로세서(410) 또는 프로세싱 회로를 포함할 수 있다. 컴퓨팅 시스템(400)은 또한 정보를 저장하기 위해 버스(405)에 연결된 랜덤 액세스 메모리(RAM)와 같은 주 메모리(415) 또는 다른 동적 저장 디바이스 및 프로세서(410)에 의해 실행될 명령들을 포함한다. 메인 메모리(415)는 데이터 저장소(118)이거나 이를 포함할 수 있다. 메인 메모리(415)는 또한 프로세서(410)에 의한 명령의 실행 동안 위치 정보, 임시 변수들 또는 다른 중간 정보를 저장하기 위해 사용될 수 있다. 컴퓨팅 시스템(400)은 판독 전용 메모리(ROM)(420) 또는 정보를 저장하기 위해 버스(405)에 연결된 다른 정적 저장 디바이스 및 프로세서(410)에 대한 명령들을 포함할 수 있다. 솔리드 스테이트 디바이스, 자기 디스크 또는 광 디스크와 같은 저장 디바이스(425)는 버스(405)에 연결되어 정보 및 명령을 지속적으로 저장할 수 있다. 저장 디바이스(425)는 데이터 저장소(118)를 포함하거나 그 일부일 수 있다.
컴퓨팅 시스템(400)은 사용자에게 정보를 디스플레이하기 위해 액정 디스플레이 또는 능동 매트릭스 디스플레이 등의 디스플레이(435)에 버스(405)를 통해 연결될 수 있다. 영숫자 및 기타 키를 포함하는 키보드와 같은 입력 디바이스(430)는 정보 및 명령 선택을 프로세서(410)에 통신하기 위해 버스(405)에 연결될 수 있다. 입력 디바이스(430)는 터치 스크린 디스플레이(435)를 포함할 수 있다. 입력 디바이스(430)는 또한, 프로세서(410)에 방향 정보 및 명령 선택을 전달하고 디스플레이(435) 상의 커서 이동을 제어하기 위한 마우스, 트랙볼 또는 커서 방향 키와 같은 커서 콘트롤을 포함한다. 디스플레이(435)는 예를 들어 데이터 프로세싱 시스템(102), 클라이언트 컴퓨팅 디바이스(104) 또는 도 1의 다른 구성요소의 일부일 수 있다.
본 명세서에 서술된 프로세스, 시스템 및 방법은 메인 메모리(415)에 포함된 명령들의 배열을 실행하는 프로세서(410)에 응답하여 컴퓨팅 시스템(400)에 의해 구현될 수 있다. 이러한 명령들은 저장 디바이스(425)와 같은 다른 컴퓨터 판독가능 매체로부터 메인 메모리(415)로 기입될 수 있다. 메인 메모리(415)에 포함된 명령들의 배열의 실행은 컴퓨팅 시스템(400)으로 하여금 본 명세서에 기재된 예시적인 프로세스를 수행하게 한다. 또한, 메인 메모리(415)에 포함된 명령들을 실행하기 위해 다중 프로세싱 구성의 하나 이상의 프로세서들이 사용될 수 있다. 하드-와이어드 회로는 본 명세서에 설명된 시스템 및 방법과 함께 소프트웨어 명령 대신에 또는 이와 조합하여 사용될 수 있다. 여기에 설명된 시스템 및 방법은 하드웨어 회로 및 소프트웨어의 특정 조합으로 제한되지 않는다.
비록, 예시적인 컴퓨팅 시스템이 도 4에 설명되었지만, 본 명세서에서 설명된 동작들을 포함하는 본 발명의 주제는 본 명세서에 서술된 구조들 및 이들의 구조적 등가물들을 포함하여 다른 유형의 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어 또는 이들 중 하나 이상의 조합에서 구현될 수 있다.
여기에 논의된 시스템이 사용자들에 대한 개인 정보를 수집하거나 또는 개인 정보를 이용할 수 있는 경우, 프로그램들 또는 피처들이 개인 정보(예를 들어, 사용자의 소셜 네트워크, 소셜 액션 또는 활동들에 대한 정보, 사용자의 선호도 또는 사용자의 위치)를 수집할 수 있는지의 여부를 제어할 수 있는 기회, 또는 사용자와 보다 관련이 있을 수 있는 콘텐츠 서버 또는 기타 데이터 프로세싱 시스템으로부터 콘텐츠를 수신할지 여부 또는 그 방법을 제어할 수 있는 기회가 사용자에게 제공될 수 있다. 또한, 소정 데이터는 저장 또는 사용되기 전에 하나 이상의 방법으로 익명화될 수 있으므로 파라미터들을 생성할 때 개인 식별 정보가 제거된다. 예를 들어, 사용자의 신원을 익명화하여 개인 식별 정보가 사용자에 대해 결정되지 않도록 하거나, 위치 정보가 획득된 사용자의 지리적 위치를 일반화할 수 있어(예: 도시, 우편 번호 또는 주 레벨로), 사용자의 특정 위치가 확인될 수 없다. 따라서 사용자는 자신에 대한 정보가 어떻게 수집되고 콘텐츠 서버에서 어떻게 사용되는지를 제어할 수 있다.
본 명세서에서 설명된 본 발명의 주제 및 동작들은 본 명세서에 서술된 구조들 및 이들의 구조적 등가물들을 포함하여 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어 또는 이들 중 하나 이상의 조합에서 구현될 수 있다. 본 명세서에 서술된 주제는 데이터 프로세싱 장치에 의해 실행되거나 데이터 프로세싱 장치의 동작을 제어하도록 하나 이상의 컴퓨터 저장 매체에 인코딩된, 하나 이상의 컴퓨터 프로그램, 예를 들어, 하나 이상의 컴퓨터 프로그램 명령의 회로로서 구현될 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령은 인공적으로 생성된 전파 신호, 예를 들어 데이터 프로세싱 디바이스에 의한 실행을 위해 적절한 수신기 디바이스로 전송하기 위해 정보를 인코딩하도록 생성되는 머신 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 이에 포함될 수 있다. 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령들의 소스 또는 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 개별 컴포넌트 또는 매체(예를 들어, 다수의 CD, 디스크 또는 다른 저장 디바이스)일 수 있거나 이에 포함될 수 있다. 본 명세서에 설명된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스에 저장되거나 다른 소스로부터 수신된 데이터에 대해 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
"데이터 프로세싱 시스템" , "컴퓨팅 디바이스" , "구성요소" 또는 "데이터 프로세싱 장치" 라는 용어는, 일례로서 프로그램가능 프로세서, 컴퓨터, 시스템 온 칩 또는 전술한 다수의 것들 혹은 조합을 포함하여, 데이터를 프로세싱하기 위한 다양한 장치, 디바이스, 및 머신을 포괄한다. 상기 장치는 예컨대, FPGA(필드 프로그래밍가능 게이트 어레이) 또는 ASIC(어플리케이션 특정 집적회로)와 같은 특수 목적 논리 회로를 포함할 수 있다. 상기 장치는 또한 하드웨어에 추가하여, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드(예: 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 구성하는 코드)를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라스트럭처와 같은 다양한 컴퓨팅 모델 인프라스트럭처를 구현할 수 있다. 어플리케이션 수신 구성요소(114), 어플리케이션 전달 구성요소(116) 또는 NLP 구성요소(112) 및 다른 데이터 프로세싱 시스템(102) 구성요소는 하나 이상의 데이터 프로세싱 장치들, 시스템들, 컴퓨팅 디바이스들 또는 프로세서들을 포함하거나 공유할 수 있다.
컴퓨터 프로그램(또한 프로그램, 소프트웨어, 소프트웨어 어플리케이션, 앱, 스크립트, 또는 코드라고도 함)은 컴파일 또는 해석 언어, 선언적 또는 절차적 언어를 포함하여 임의 형태의 프로그래밍 언어로 작성될 수 있으며 그리고 독립형 프로그램 또는 모듈, 컴포넌트, 서브 루틴, 객체 또는 기타 컴퓨팅 환경에서 사용하기에 적합한 유닛을 포함한 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있다. 컴퓨터 프로그램은 다른 프로그램이나 데이터(예: 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부에 저장되거나, 해당 프로그램 전용 단일 파일에 저장되거나, 또는 여러 개의 조정된 파일(예: 하나 이상의 모듈, 하위 프로그램 또는 코드 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 한 장소에 위치하거나 여러 장소들에 분산되어 통신 네트워크로 상호연결된 여러 개의 컴퓨터 상에서 실행되도록 배포될 수 있다.
본 명세서에 서술된 프로세스들 및 로직 흐름들은 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세서(예를 들면, 데이터 프로세싱 시스템(102)의 구성요소들)에 의해 수행되어, 입력 데이터에 대해 작용하고 출력을 생성함으로써 액션들을 수행할 수 있다. 프로세스 및 로직 흐름은 또한 수행될 수 있으며, 장치는 FPGA 또는 ASIC과 같은 특수 목적 로직 회로로 구현될 수도 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스는 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스; 자기 디스크, 예를 들어 내부 하드 디스크 또는 이동식 디스크; 광 자기 디스크; 및 CD ROM 및 DVD-ROM 디스크를 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
본 명세서에 서술된 본 발명의 주제는 데이터 서버와 같은 백 엔드 컴포넌트, 어플리케이션 서버와 같은 미들웨어 컴포넌트, 또는 본 명세서에 서술된 본 발명의 주제의 구현예와 사용자가 상호작용할 수 있는 사용자 인터페이스 혹은 웹 브라우저를 갖는 클라이언트 컴퓨터와 같은 프론트 엔드 컴포넌트, 또는 이러한 백 엔드, 미들웨어 또는 프런트 엔드 컴포넌트의 하나 이상의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 구성요소들은 예를 들어 통신 네트워크와 같은 디지털 데이터 통신의 모든 형태 또는 매체에 의해 상호연결될 수 있다. 통신 네트워크의 일례는 근거리 통신망("LAN") 및 광역 네트워크("WAN"), 인터-네트워크(예: 인터넷) 및 피어-투-피어 네트워크(예: 애드혹 피어-투-피어 네트워크)를 포함한다.
시스템(100) 또는 시스템(400)과 같은 컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 떨어져 있고 일반적으로 통신 네트워크(예를 들어, 네트워크 105)를 통해 상호작용한다. 클라이언트와 서버의 관계는 각 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인해 발생한다. 일부 구현에서, 서버는 데이터(예를 들어, 디지털 컴포넌트를 나타내는 데이터 패킷)를 클라이언트 디바이스로 전송한다(예를 들어, 클라이언트 디바이스와 상호작용하는 사용자에게 데이터를 표시하고 사용자로부터 사용자 입력을 수신하기 위해). 클라이언트 디바이스에서 생성된 데이터(예를 들어, 사용자 상호 작용의 결과)는 서버에서 클라이언트 디바이스로부터 수신될 수 있다(예를 들어, 컴퓨팅 디바이스(104) 또는 개발자 컴퓨팅 디바이스(106)로부터 데이터 프로세싱 시스템(102)에 의해 수신됨).
동작들이 특정 순서로 도면에 도시되어 있지만, 이러한 동작들은 도시된 특정 순서 또는 순차적으로 수행될 필요가 없으며, 모든 도시된 동작들을 수행할 필요가 없다. 여기에 설명된 동작은 다른 순서로 수행될 수 있다.
다양한 시스템 컴포넌트들의 분리는 모든 구현예에서 분리를 요구하지 않으며, 상술한 프로그램 컴포넌트들은 하나의 하드웨어 또는 소프트웨어 제품에 포함될 수 있다. 예를 들어, NLP 구성요소(112) 또는 어플리케이션 전달 구성요소(116)는 단일 컴포넌트, 앱 또는 프로그램, 또는 하나 이상의 프로세싱 회로를 갖는 논리 디바이스 또는 데이터 프로세싱 시스템(102)의 하나 이상의 서버의 일부일 수 있다.
몇몇 예시적인 구현예들이 설명되었지만, 전술한 구현예들은 일례로서 제시되었으며 제한하고자 하는 것이 아님이 명백하다. 특히, 본 명세서에 제시된 많은 일례들은 방법 단계들 또는 시스템 요소들의 특정 조합을 포함하지만, 이러한 단계들 및 요소들은 동일한 목적을 달성하기 위해 다른 방식으로 결합될 수 있다. 하나의 구현예와 관련하여 논의된 단계, 요소 및 피처는 다른 구현예들의 유사한 역할에서 배제되지 않는다.
본 명세서에서 사용되는 표현들 및 용어들은 설명을 위한 것이며 제한으로 간주되어서는 안된다. "포함하는(including)" , "포함하는(comprising)" , "갖는(having)" , "포함하는(containgin)" , "수반하는(involving)" , "에 의해 특징되는(characterized by)" , "특징으로 하는(characterized in that)" 및 이들의 변형들은, 이러한 어구 이후에 나열된 항목들만으로 독점적으로 구성된 대체 구현예들 뿐만 아니라, 이러한 어구 이후에 나열되는 항목들, 그 등가물들 및 추가 항목들을 포괄함을 의미한다. 일 구현예에서, 여기에 설명된 시스템 및 방법은 설명된 요소들, 액션들 또는 구성요소들 중 하나 이상, 또는 모두의 각각의 조합으로 구성된다.
본 명세서에서 단수로 언급된 시스템들 및 방법들의 구현예들 또는 요소들 또는 행위들에 대한 임의의 참조는, 복수의 이들 요소들을 포함하는 구현예들을 포함할 수 있으며, 임의의 구현예 또는 요소 또는 행위에 대한 복수의 참조는 오직 하나의 요소만을 포함하는 구현예도 포함할 수 있다. 단수형 또는 복수형의 참조들은 현재 개시된 시스템들 또는 방법들, 이들의 구성요소들, 행위들 또는 요소들을 단수형 또는 복수형 구성으로 제한하고자 의도된 것이 아니다. 임의의 정보, 행위 또는 요소를 기반으로 하는 임의의 행위 또는 요소에 대한 참조는 행위 또는 요소가 정보, 행위 또는 요소에 적어도 부분적으로 기반하는 구현을 포함할 수 있다.
본 명세서에 개시된 임의의 구현예는 임의의 다른 구현예 또는 실시예와 조합될 수 있으며, 그리고 "일 구현예" , "일부 구현예들" , "하나의 구현예" 등등의 언급은 반드시 상호배타적이지 않으며 그리고 구현예와 관련하여 설명된 특정 피처, 구조 또는 특징이 적어도 하나의 구현예 또는 실시예에 포함될 수 있음을 나타내도록 의도된다. 본 명세서에서 사용되는 이러한 용어는 반드시 모두 동일한 구현을 지칭하는 것은 아니다. 임의의 구현예는 본 명세서에 개시된 양태들 및 구현들과 일치하는 임의의 방식으로 내포적으로 또는 배타적으로 임의의 다른 구현예와 조합될 수 있다.
"또는(or)" 이라는 용어는 포괄적(inclusive)으로 이해될 수 있으며, 따라서 "또는"을 이용하여 서술되는 임의의 용어들은 이들 용어들 중 임의의 하나, 하나 이상 또는 이들 모두를 나타낸다. 예를 들어, "A와 B중 적어도 하나" 라는 언급은 A만, B만, A와 B 둘다를 모두 포함할 수 있다. "포함하는(comprising)" 또는 기타 개방형 용어와 함께 사용되는 이러한 참조들은 추가 항목들을 포함할 수 있다.
도면, 상세한 설명 또는 청구항에 있는 기술적 피처들에 참조 부호가 후속되는 경우, 이러한 참조 부호는 도면, 상세한 설명 및 청구항의 명료성을 증가시키기 위해 포함되어 있다. 따라서, 참조 부호의 존재 또는 부재는 청구된 요소들의 범위에 있어 임의의 제한적인 영향을 미치지 않는다.
본원에 기재된 시스템 및 방법은, 그 특성으로부터 벗어남이 없이 다른 특정 형태로 구체화될 수 있다. 전술한 구현예들은 설명된 시스템 및 방법을 제한하기 위한 것이라기 보다는 예시적인 것이다. 따라서, 본 명세서에 설명된 시스템 및 방법의 범위는 전술한 설명이 아니라 첨부된 청구 범위에 의해 표시되고, 청구항들의 동등성의 의미 및 범위 내에 있는 변경들이 여기에 포함된다.

Claims (22)

  1. 서로 다른 데이터 소스 질의들을 통합하는 시스템으로서,
    하나 이상의 프로세서들 및 메모리를 포함하는 데이터 프로세싱 시스템;
    상기 데이터 프로세싱 시스템의 어플리케이션 수신 구성요소(application intake component);
    상기 데이터 프로세싱 시스템의 자연어 프로세서 구성요소; 및
    상기 데이터 프로세싱 시스템의 어플리케이션 전달(delivery) 구성요소
    를 포함하고,
    상기 어플리케이션 수신 구성요소는,
    복수의 개발자 컴퓨팅 디바이스들로부터, 어플리케이션 패키지 파일들을 수신하고, 각각의 어플리케이션 패키지 파일은 복수의 컴퓨팅 디바이스들에 각각의 어플리케이션을 배포 및 설치하기 위한 명령들을 포함하며, 각각의 어플리케이션 패키지 파일은 각각의 액션 인벤토리 파일(action-inventory file)과 연관되고,
    각각의 액션 인벤토리 파일에 대해, 각각의 어플리케이션이 수행하는 하나 이상의 전자적 액션들과 모바일 어플리케이션이 상기 하나 이상의 전자적 액션들을 수행하는 하나 이상의 대응 엔티티들을 식별하도록 액션 인벤토리 파일을 프로세싱하며;
    상기 자연어 프로세서 구성요소는,
    데이터 프로세싱 시스템의 인터페이스 및 네트워크를 통해 클라이언트 디바이스의 센서에 의해 감지된 입력 오디오 신호를 포함하는 데이터 패킷을 수신하고,
    액션 및 상기 액션이 수행되는 엔티티를 식별하도록 입력 오디오 신호를 파싱하며;
    상기 어플리케이션 전달 구성요소는,
    액션-인벤토리 파일에 기초하여, 입력 오디오 신호로부터 식별된 엔티티에 대한 액세스를 갖도록 구성되고 입력 오디오 신호에서 식별된 액션을 수행하도록 구성된 제1의 하나 이상의 어플리케이션들을 복수의 어플리케이션들 중에서 선택하고,
    상기 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 클라이언트 디바이스에 제공하여, 클라이언트 디바이스가 입력 오디오 신호에서 식별된 엔티티를 사용하여 액션을 수행하도록 어플리케이션의 실행을 시작하게하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  2. 제1항에 있어서,
    상기 어플리케이션 전달 구성요소는,
    입력 오디오 신호로부터 식별된 액션을 수행하도록 구성된 제2의 하나 이상의 어플리케이션들을 식별하고; 그리고
    상기 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 제공하는 것은,
    상기 제1의 하나 이상의 어플리케이션들 및 제2의 하나 이상의 어플리케이션들로부터, 액션을 수행하고 입력 오디오 신호로부터 식별된 엔티티에 액세스하는 어플리케이션을 선택하는 것; 및
    상기 제1의 하나 이상의 어플리케이션들 및 제2의 하나 이상의 어플리케이션들로부터 선택된 어플리케이션을 제공하는 것을 포함하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 데이터 프로세싱 시스템은 확장가능한 마크업 언어 파일(extensible markup language file)을 포함하는 액션 인벤토리 파일을 수신하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  4. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은 엔티티들의 목록에 대한 포인터를 포함하는 액션 인벤토리 파일을 수신하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  5. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은,
    복수의 어플리케이션 중 적어도 하나에 대해, 개발자 컴퓨팅 디바이스를 통해 설정된 웹 페이지에 대한 유니폼 리소스 로케이터(uniform resource locator: URL)를 포함하는 액션 인벤토리 파일을 수신하고;
    개발자 컴퓨팅 디바이스의 웹 페이지로부터 엔티티들의 인벤토리를 결정하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  6. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은,
    복수의 어플리케이션 중 적어도 하나에 대해, 엔티티들의 구조화된 마크업(a structured markup of entities)을 포함하는 웹 페이지의 유니폼 리소스 로케이터(URL)를 포함하는 액션 인벤토리 파일을 수신하고;
    유니폼 리소스 로케이터(URL)를 통해 웹 페이지에 액세스하고;
    엔티티들의 인벤토리를 식별하도록, 상기 엔티티들의 구조화된 마크업으로 웹 페이지를 파싱하고;
    데이터베이스에서 엔티티들의 인벤토리와 복수의 어플리케이션들 중 적어도 하나를 연관시키는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  7. 제2항에 있어서,
    상기 데이터 프로세싱 시스템은,
    입력 오디오 신호로부터 어플리케이션을 식별하고;
    상기 제1의 하나 이상의 어플리케이션들, 상기 제2의 하나 이상의 어플리케이션들, 및 입력 오디오 신호에 기초하여 어플리케이션을 선택하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  8. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은,
    입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고;
    검색 엔진에 의한 웹 검색 출력의 결과에 기초하여 상기 제1의 하나 이상의 어플리케이션들 또는 제2의 하나 이상의 어플리케이션들 중 적어도 하나를 식별하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  9. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은,
    제2의 복수의 어플리케이션들을 식별하도록, 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고;
    상기 제2의 복수의 어플리케이션들 각각의 순위를 매기고;
    클라이언트 디바이스에 표시를 제공할 어플리케이션으로서 상기 제2의 복수의 어플리케이션들 중 가장 높은 순위의 어플리케이션을 선택하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  10. 제2항 또는 제2항을 인용하는 임의의 청구항에 있어서,
    상기 데이터 프로세싱 시스템은,
    제2의 복수의 어플리케이션들을 식별하도록, 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고;
    액션과 관련된 성능 피드백에 기초하여 상기 제2의 복수의 어플리케이션들 각각의 점수를 매기고;
    클라이언트 디바이스에 표시를 제공할 어플리케이션으로서 상기 제2의 복수의 어플리케이션들 중 가장 높은 점수의 어플리케이션을 선택하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  11. 선행하는 임의의 청구항에 있어서,
    상기 데이터 프로세싱 시스템은,
    제2의 복수의 어플리케이션들을 식별하도록, 입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하고;
    액션에 대한 클라이언트 디바이스와 관련된 이력 선호 정보에 기초하여 상기 제2의 복수의 어플리케이션들 각각의 점수를 매기고;
    클라이언트 디바이스에 표시를 제공할 어플리케이션으로서 상기 제2의 복수의 어플리케이션들 중 가장 높은 점수의 어플리케이션을 선택하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  12. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은
    도메인, 유형 및 속성으로 구성된 고유 식별자를 각각 갖는 엔티티들의 계층적 분류(hierarchical taxonomy)를 포함하는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  13. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은
    도메인, 유형 및 속성으로 구성된 고유 식별자를 각각 갖는 엔티티들의 계층적 분류를 포함하는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별하고;
    엔티티를 이용한 웹 검색에 기초하여 상기 제1의 하나 이상의 어플리케이션들 또는 제2의 하나 이상의 어플리케이션들을 식별하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  14. 임의의 선행하는 청구항에 있어서,
    상기 데이터 프로세싱 시스템은
    도메인, 유형 및 속성으로 구성된 고유 식별자를 각각 갖는 엔티티들의 계층적 분류를 포함하는 그래프 데이터베이스에 기초하여 입력 오디오 신호로부터 엔티티를 식별하고;
    데이터베이스를 통해, 엔티티에 대해 구성된 액션들의 세트를 식별하고;
    엔티티에 대해 구성된 액션들의 세트에 기초하여 상기 제2의 하나 이상의 어플리케이션들을 식별하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 시스템.
  15. 서로 다른 데이터 소스 질의들을 통합하는 방법으로서,
    데이터 프로세싱 시스템에 의해, 복수의 개발자 컴퓨팅 디바이스들로부터 어플리케이션 패키지 파일들을 수신하는 단계, 각각의 어플리케이션 패키지 파일은 복수의 컴퓨팅 디바이스들에 각각의 어플리케이션을 배포 및 설치하기 위한 명령들을 포함하며, 각각의 어플리케이션 패키지 파일은 각각의 액션 인벤토리 파일(action-inventory file)과 연관되고;
    각각의 액션 인벤토리 파일에 대해, 상기 데이터 프로세싱 시스템에 의해, 각각의 어플리케이션이 수행하는 하나 이상의 전자적 액션들과 모바일 어플리케이션이 상기 하나 이상의 전자적 액션들을 수행하는 하나 이상의 대응 엔티티들을 식별하도록 액션 인벤토리 파일을 프로세싱하는 단계;
    데이터 프로세싱 시스템의 인터페이스 및 네트워크를 통해 클라이언트 디바이스의 센서에 의해 감지된 입력 오디오 신호를 포함하는 데이터 패킷을 수신하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 액션 및 상기 액션이 수행되는 엔티티를 식별하도록 입력 오디오 신호를 파싱하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 액션-인벤토리 파일에 기초하여, 입력 오디오 신호로부터 식별된 엔티티에 대한 액세스를 갖도록 구성되고 입력 오디오 신호에서 식별된 액션을 수행하도록 구성된 제1의 하나 이상의 어플리케이션들을 복수의 어플리케이션들 중에서 선택하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 클라이언트 디바이스가 입력 오디오 신호에서 식별된 엔티티를 사용하여 액션을 수행하기 위해 어플리케이션의 실행을 시작하게 하도록 상기 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 클라이언트 디바이스에 제공하는 단계
    를 포함하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
  16. 제15항에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 입력 오디오 신호로부터 식별된 액션을 수행하도록 구성된 제2의 하나 이상의 어플리케이션들을 식별하는 단계를 더 포함하고,
    상기 데이터 프로세싱 시스템에 의해 선택된 어플리케이션에 대한 표시를 제공하는 것은,
    상기 데이터 프로세싱 시스템에 의해, 상기 제1의 하나 이상의 어플리케이션들 및 제2의 하나 이상의 어플리케이션들로부터, 액션을 수행하고 입력 오디오 신호로부터 식별된 엔티티에 액세스하는 어플리케이션을 선택하는 것; 및
    상기 제1의 하나 이상의 어플리케이션들 및 제2의 하나 이상의 어플리케이션들로부터 선택된 어플리케이션을 제공하는 것을 포함하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
  17. 제15항 또는 제16항에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 확장가능한 마크업 언어 파일을 포함하는 액션 인벤토리 파일을 수신하는 단계를 포함하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
  18. 제15항, 제16항 또는 제17항에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 엔티티들의 목록에 대한 포인터를 포함하는 액션 인벤토리 파일을 수신하는 단계를 포함하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
  19. 제15항 내지 제18항 중 어느 한 항에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 복수의 어플리케이션 중 적어도 하나에 대해, 개발자 컴퓨팅 디바이스를 통해 설정된 웹 페이지에 대한 유니폼 리소스 로케이터(URL)를 포함하는 액션 인벤토리 파일을 수신하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 개발자 컴퓨팅 디바이스의 웹 페이지로부터 엔티티들의 인벤토리를 결정하는 단계를 포함하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
  20. 제15항 내지 제19항 중 어느 한 항에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 복수의 어플리케이션 중 적어도 하나에 대해, 엔티티들의 구조화된 마크업을 포함하는 웹 페이지의 유니폼 리소스 로케이터(URL)를 포함하는 액션 인벤토리 파일을 수신하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 유니폼 리소스 로케이터(URL)를 통해 웹 페이지에 액세스하는 단계;
    상기 데이터 프로세싱 시스템에 의해, 엔티티들의 인벤토리를 식별하도록, 상기 엔티티들의 구조화된 마크업으로 웹 페이지를 파싱하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 데이터베이스에서 엔티티들의 인벤토리와 복수의 어플리케이션들 중 적어도 하나를 연관시키는 단계
    를 포함하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
  21. 제15항 내지 제20항 중 어느 한 항에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 입력 오디오 신호로부터 어플리케이션을 식별하는 단계; 및
    상기 데이터 프로세싱 시스템에 의해, 상기 제1의 하나 이상의 어플리케이션들, 상기 제2의 하나 이상의 어플리케이션들, 및 입력 오디오 신호에 기초하여 어플리케이션을 선택하는 단계
    를 포함하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
  22. 제15항 내지 제21항 중 어느 한 항에 있어서,
    입력 오디오 신호로부터 식별된 액션 및 엔티티 중 적어도 하나에 기초하여 검색 엔진을 통해 웹 검색을 실행하는 단계; 및
    검색 엔진에 의한 웹 검색 출력의 결과에 기초하여 상기 제1의 하나 이상의 어플리케이션들 또는 제2의 하나 이상의 어플리케이션들 중 적어도 하나를 식별하는 단계
    를 포함하는 것을 특징으로 하는 서로 다른 데이터 소스 질의들을 통합하는 방법.
KR1020207030954A 2018-11-21 2019-02-06 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합 KR102435433B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227028442A KR20220118564A (ko) 2018-11-21 2019-02-06 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862770338P 2018-11-21 2018-11-21
US62/770,338 2018-11-21
PCT/US2019/016917 WO2020106314A1 (en) 2018-11-21 2019-02-06 Consolidation of responses from queries to disparate data sources

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227028442A Division KR20220118564A (ko) 2018-11-21 2019-02-06 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합

Publications (2)

Publication Number Publication Date
KR20200134311A true KR20200134311A (ko) 2020-12-01
KR102435433B1 KR102435433B1 (ko) 2022-08-24

Family

ID=65520411

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227028442A KR20220118564A (ko) 2018-11-21 2019-02-06 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합
KR1020207030954A KR102435433B1 (ko) 2018-11-21 2019-02-06 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227028442A KR20220118564A (ko) 2018-11-21 2019-02-06 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합

Country Status (6)

Country Link
US (3) US11429665B2 (ko)
EP (1) EP3676728B1 (ko)
JP (2) JP7135099B2 (ko)
KR (2) KR20220118564A (ko)
CN (2) CN111465932B (ko)
WO (1) WO2020106314A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102333994B1 (ko) 2020-12-11 2021-12-02 주식회사 데이터위즈 교통 수집 데이터 제공 시스템의 교통 수집 데이터 제공 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7135099B2 (ja) 2018-11-21 2022-09-12 グーグル エルエルシー 異種のデータソースへのクエリからの応答の統合
US11743105B2 (en) * 2019-06-03 2023-08-29 Hewlett Packard Enterprise Development Lp Extracting and tagging text about networking entities from human readable textual data sources and using tagged text to build graph of nodes including networking entities
US20230267928A1 (en) * 2021-05-18 2023-08-24 Google Llc Indexing Application Actions for Voice-Based Execution
US20230195745A1 (en) * 2021-12-22 2023-06-22 Microsoft Technology Licensing, Llc Unified search for dual domains

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130191397A1 (en) * 2012-01-23 2013-07-25 Qualcomm Innovation Center, Inc. Location based apps ranking for mobile wireless computing and communicating devices
US20140006418A1 (en) * 2012-07-02 2014-01-02 Andrea G. FORTE Method and apparatus for ranking apps in the wide-open internet
US20180018576A1 (en) * 2016-07-12 2018-01-18 International Business Machines Corporation Text Classifier Training

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073172B2 (en) * 1998-09-21 2006-07-04 Microsoft Corporation On demand patching of applications via software implementation installer mechanism
US7203737B2 (en) * 2001-10-31 2007-04-10 Microsoft Corporation Computer system with file association and application retrieval
US11017428B2 (en) * 2008-02-21 2021-05-25 Google Llc System and method of data transmission rate adjustment
US9043919B2 (en) 2008-10-21 2015-05-26 Lookout, Inc. Crawling multiple markets and correlating
US8713003B2 (en) * 2009-07-24 2014-04-29 Peer Belt Inc. System and method for ranking content and applications through human assistance
US9405848B2 (en) * 2010-09-15 2016-08-02 Vcvc Iii Llc Recommending mobile device activities
US8762360B2 (en) * 2011-05-06 2014-06-24 Microsoft Corporation Integrating applications within search results
US20130226892A1 (en) * 2012-02-29 2013-08-29 Fluential, Llc Multimodal natural language interface for faceted search
US9060329B2 (en) * 2012-06-06 2015-06-16 Blackberry Limited Methods and apparatus for use in facilitating communication for different types of wireless networks
US9449104B2 (en) * 2012-07-02 2016-09-20 At&T Intellectual Property I, L.P. Method and apparatus for deriving and using trustful application metadata
US8612470B1 (en) * 2012-12-28 2013-12-17 Dropbox, Inc. Application recommendation using stored files
US9959360B2 (en) 2013-03-01 2018-05-01 Samsung Electronics Co., Ltd. Generating search results containing state links to applications
JP6236805B2 (ja) 2013-03-05 2017-11-29 日本電気株式会社 発話コマンド認識システム
US9384732B2 (en) 2013-03-14 2016-07-05 Microsoft Technology Licensing, Llc Voice command definitions used in launching application with a command
US20140282493A1 (en) * 2013-03-15 2014-09-18 Quixey, Inc System for replicating apps from an existing device to a new device
US11030239B2 (en) * 2013-05-31 2021-06-08 Google Llc Audio based entity-action pair based selection
US20140379334A1 (en) * 2013-06-20 2014-12-25 Qnx Software Systems Limited Natural language understanding automatic speech recognition post processing
KR102263813B1 (ko) * 2013-09-05 2021-06-14 크라운 이큅먼트 코포레이션 동적 오퍼레이터 거동 분석기
US10275505B2 (en) * 2014-06-24 2019-04-30 Adobe Inc. In-application conversion of file versions using cloud services
US9959129B2 (en) 2015-01-09 2018-05-01 Microsoft Technology Licensing, Llc Headless task completion within digital personal assistants
US20170060864A1 (en) * 2015-08-26 2017-03-02 Quixey, Inc. Action Recommendation System for Focused Objects
CA2951529A1 (en) * 2015-12-11 2017-06-11 Capital One Services, Llc Systems and methods for voice-controlled account servicing
US10120882B2 (en) * 2016-02-17 2018-11-06 Google Llc Methods, systems, and media for storing information associated with content presented on a media presentation device
US10049670B2 (en) * 2016-06-06 2018-08-14 Google Llc Providing voice action discoverability example for trigger term
US10708313B2 (en) * 2016-12-30 2020-07-07 Google Llc Multimodal transmission of packetized data
US9865260B1 (en) 2017-05-03 2018-01-09 Google Llc Proactive incorporation of unsolicited content into human-to-computer dialogs
JP7135099B2 (ja) 2018-11-21 2022-09-12 グーグル エルエルシー 異種のデータソースへのクエリからの応答の統合

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130191397A1 (en) * 2012-01-23 2013-07-25 Qualcomm Innovation Center, Inc. Location based apps ranking for mobile wireless computing and communicating devices
US20140006418A1 (en) * 2012-07-02 2014-01-02 Andrea G. FORTE Method and apparatus for ranking apps in the wide-open internet
US20180018576A1 (en) * 2016-07-12 2018-01-18 International Business Machines Corporation Text Classifier Training

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102333994B1 (ko) 2020-12-11 2021-12-02 주식회사 데이터위즈 교통 수집 데이터 제공 시스템의 교통 수집 데이터 제공 방법
KR20230025737A (ko) 2020-12-11 2023-02-23 주식회사 데이터위즈 교통 수집 데이터 제공 시스템의 교통 수집 데이터 제공 방법

Also Published As

Publication number Publication date
JP2022173219A (ja) 2022-11-18
KR20220118564A (ko) 2022-08-25
EP3676728A1 (en) 2020-07-08
CN111465932B (zh) 2024-04-02
US20210334305A1 (en) 2021-10-28
CN111465932A (zh) 2020-07-28
JP7481404B2 (ja) 2024-05-10
WO2020106314A1 (en) 2020-05-28
JP2021526673A (ja) 2021-10-07
CN118193762A (zh) 2024-06-14
KR102435433B1 (ko) 2022-08-24
US20220309098A1 (en) 2022-09-29
US11748402B2 (en) 2023-09-05
US20230401253A1 (en) 2023-12-14
EP3676728B1 (en) 2023-11-29
JP7135099B2 (ja) 2022-09-12
US11429665B2 (en) 2022-08-30

Similar Documents

Publication Publication Date Title
KR102435433B1 (ko) 서로 다른 데이터 소스들에 대한 질의의 응답들의 통합
CN110692042B (zh) 在基于音频的计算环境中执行请求的动作的平台选择
JP2022540263A (ja) ビジュアルコンテンツからのインタラクティブなオーディオトラックの生成
US20230352017A1 (en) Platform selection for performing requested actions in audio-based computing environments
US20220308987A1 (en) Debugging applications for delivery via an application delivery server
US11385990B2 (en) Debugging applications for delivery via an application delivery server
US20240185847A1 (en) Bit Vector-Based Content Matching for Third-Party Digital Assistant Actions

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right