KR20180090184A - 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합 - Google Patents

음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합 Download PDF

Info

Publication number
KR20180090184A
KR20180090184A KR1020177031385A KR20177031385A KR20180090184A KR 20180090184 A KR20180090184 A KR 20180090184A KR 1020177031385 A KR1020177031385 A KR 1020177031385A KR 20177031385 A KR20177031385 A KR 20177031385A KR 20180090184 A KR20180090184 A KR 20180090184A
Authority
KR
South Korea
Prior art keywords
action
data
computing device
processing system
sequence
Prior art date
Application number
KR1020177031385A
Other languages
English (en)
Other versions
KR102023148B1 (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 KR20180090184A publication Critical patent/KR20180090184A/ko
Application granted granted Critical
Publication of KR102023148B1 publication Critical patent/KR102023148B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/162Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • 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/3338Query expansion
    • 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/334Query execution
    • G06F16/3343Query execution using phonetics
    • 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/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • 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/903Querying
    • G06F16/9032Query formulation
    • G06F16/90332Natural language query formulation or dialogue systems
    • 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
    • G06F17/27
    • G06F17/30672
    • G06F17/30681
    • G06F17/30684
    • 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
    • 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/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/32
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Abstract

시퀀스 종속 동작들을 나타내는 다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템 및 방법들이 제공된다. 자연어 처리기 컴포넌트는 클라이언트 컴퓨팅 디바이스로부터 제1 및 제2 입력 오디오 신호를 수신하여 각각의 요청들과 대응하는 트리거 키워드들을 식별할 수 있다. 다이렉트 액션(direct action) 애플리케이션 프로그래밍 인터페이스("API")는 각각의 액션 데이터 구조들을 생성하고, 각각의 액션 데이터 구조들를 포함하는 데이터 전송들을 구성할 수 있다. 스레드 최적화 컴포넌트는 제2 데이터 전송의 데이터 패킷들을 획득하고, 제2 데이터 전송의 데이터 패킷들을 획득할 수 있다. 또한, 스레드 최적화 컴포넌트는 각각의 데이터 전송들의 데이터 패킷들에 적용된 휴리스틱 기술에 기초하여, 시퀀스 종속 파라미터를 결정할 수 있다. 스레드 최적화 컴포넌트는 시퀀스 종속 파라미터와 임계값의 비교에 기초하여, 제 1 및 제2 데이터 전송들을 단일 스레드(single thread)에 병합할 수 있다.

Description

음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합
본 출원은 2016년 12월 30일 출원되고, 그 명칭이 " 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합"인 미국 출원번호 제15/395,725호에 대한 우선권을 주장하고, 상기 출원은 참조로서 본 출원에 모두 포함된다.
컴퓨팅 디바이스들 간의 패킷-기반 또는 그 밖의 다른 방식의 네트워크 트래픽 데이터의 과도한 네트워크 전송은 컴퓨팅 디바이스 네트워크 트래픽 데이터를 적절하게 처리하거나, 네트워크 트래픽 데이터와 관련된 동작을 완료하거나, 네트워크 트래픽 데이터에 대해 적시에 응답하는 것을 방해할 수 있다. 네트워크 트래픽 데이터의 과도한 네트워크 전송들은, 응답 컴퓨팅 디바이스가 처리 용량 이상이 될 경우 데이터 라우팅을 복잡하게하거나 또는 응답의 품질을 저하시켜서 비효율적 인 대역폭 사용을 초래할 수 있다. 콘텐츠 아이템 객체들에 대응되는 네트워크 전송들의 제어는 컴퓨팅 디바이스들 간의 네트워크 트래픽 데이터의 네트워크 전송들을 개시할 수 있는 다량의 콘텐츠 아이템 객체들에 의하여 복잡해질 수 있다.
적어도 일 구현은, 시퀀스 종속 동작들을 나타내는 다수의 음성 기동 오디오 입력 데이터들을 결합하기 위한 시스템을 제공하는 것이다. 데이터 처리 시스템에 의해 실행되는 자연어 처리기 컴포넌트는, 데이터 처리 시스템의 인터페이스를 통해, 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 1 입력 오디오 신호를 포함하는 데이터 패킷들을 수신할 수 있다. 자연어 처리기 컴포넌트는, 제 1 요청 및 제 1 요청에 대응하는 제 1 트리거 키워드를 식별하기 위해 제 1 입력 오디오 신호를 파싱할 수 있다. 데이터 처리 시스템의 다이렉트 액션(direct action) 애플리케이션 프로그래밍 인터페이스("API")는 상기 제 1 트리거 키워드에 기초하여 그리고 상기 제 1 요청에 응답하여, 제 1액션 데이터 구조를 생성할 수 있다. 다이렉트 액션 API는 제 1 서비스 제공자 컴퓨팅 디바이스와 클라이언트 컴퓨팅 디바이스 간에 제 1 통신 세션을 설정하기 위한 제 1 액션 데이터 구조를 포함하는 제 1 데이터 전송과, 상기 데이터 처리 시스템을 통해 클라이언트 컴퓨팅 디바이스로부터 상기 제1 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제1 통신 세션의 데이터 패킷들을 구성할 수 있다. 자연어 처리기 컴포넌트는, 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 2 입력 오디오 신호를 포함하는 데이터 패킷들을 상기 데이터 처리 시스템의 인터페이스를 통해 수신할 수 있고, 제2 요청과 상기 제2 요청에 대응되는 제2 트리거 키워드를 식별하기 위해 상기 제 2 입력 오디오 신호를 파싱할 수 있다. 다이렉트 액션 API는, 상기 제 2 트리거 키워드에 기초하여 그리고 상기 제 2 요청에 응답하여, 제 2 액션 데이터 구조를 생성할 수 있다. 다이렉트 액션 API는 제 2 서비스 제공자 컴퓨팅 디바이스와 클라이언트 컴퓨팅 디바이스 간에 제 2 통신 세션을 설정하기 위해 상기 제 2 액션 데이터 구조를 포함하는 제 2 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 2 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제2 통신 세션의 데이터 패킷들을 구성할 수 있다. 데이터 처리 시스템에 의해 실행되는 스레드 최적화 컴포넌트(thread optimization component)는 상기 제 1 데이터 전송의 데이터 패킷들을 획득할 수 있고, 상기 제 2 데이터 전송의 데이터 패킷들을 획득할 수 있다. 상기 스레드 최적화 컴포넌트는, 상기 제1 데이터 구조의 데이터 패킷들과 상기 제2 데이터 구조의 데이터 패킷들에 적용된 휴리스틱 기술(heuristic technique)에 기초하여, 시퀀스 종속 파라미터(sequence dependency parameter)를 결정할 수 있다. 스레드 최적화 컴포넌트는, 시퀀스 종속 파라미터와 임계값의 비교에 기초하여, 상기 제 2 액션 데이터 전송과 상기 제 1 데이터 전송을 단일 스레드(single thread)로 병합할 수 있다.
적어도 일 구현은 시퀀스 종속 동작들을 나타내는 다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 방법에 관한 것이다. 상기 방법은 데이터 처리 시스템에 의해 실행되는 자연어 처리기 컴포넌트가, 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 1 입력 오디오 신호를 포함하는 데이터 패킷들을 데이터 처리 시스템의 인터페이스를 통해 수신하는 단계를 포함할 수 있다. 상기 방법은, 자연어 처리기 컴포넌트에 의해, 상기 제 1 입력 오디오 신호로부터, 제 1 요청 및 상기 제 1 요청에 대응되는 제 1 트리거 키워드를 식별하는 단계를 포함할 수 있다. 상기 방법은, 상기 데이터 처리 시스템의 다이렉트 액션 애플리케이션 프로그래밍 인터페이스( "API")가, 제 1 트리거 키워드에 기초하여 그리고 상기 제 1 요청에 응답하여, 제1 액션 데이터 구조를 생성하는 단계를 포함 할 수 있다. 상기 방법은 제 1 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간의 제 1 통신 세션을 위한 제 1 액션 데이터 구조를 포함하는 제1 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 1 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제 1 통신 세션의 데이터 패킷들을 구성하는 단계를 포함할 수 있다. 상기 방법은, 상기 자연어 처리기 컴포넌트가, 상기 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 2 입력 오디오 신호를 포함하는 데이터 패킷들을 상기 데이터 처리 시스템의 인터페이스를 통해 수신하는 단계와, 상기 자연어 처리기 컴포넌트가 제2요청과 상기 제2요청에 대응되는 제 2 트리거 키워드를 식별하기 위해, 상기 제 2 입력 오디오 신호를 파싱하는 단계를 포함할 수 있다. 상기 방법은 다이렉트 액션 API에 의해, 제 2 트리거 키워드에 기초하여 그리고 제 2 요청에 응답하여, 제 2 액션 데이터 구조를 생성하는 단계를 포함 할 수 있다. 상기 방법은, 제 2 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간의 제 2 통신 세션을 위한 상기 제 2 액션 데이터 구조를 포함하는 제2 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 2 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제 2 통신 세션의 데이터 패킷들을 구성하는 단계를 포함할 수 있다. 상기 방법은, 데이터 처리 시스템에 의해 실행되는 스레드 최적화 컴포넌트가, 제 1 데이터 전송의 데이터 및 제 2 데이터 전송의 데이터를 획득하는 단계를 포함할 수 있다. 상기 방법은, 제 1 데이터 전송의 데이터와 제 2 데이터 전송의 데이터에 적용된 휴리스틱 기술(heuristic technique)에 기초하여, 시퀀스 종속 파라미터(sequence dependency parameter)를 결정하는 단계를 포함할 수 있다. 상기 방법은, 시퀀스 종속 파라미터와 임계값의 비교에 기초하여, 제 1 액션 데이터 구조 및 제 2 액션 데이터 구조를 단일 스레드와 연계시키는(associating) 단계를 포함할 수 있다.
적어도 일 구현은, 하나 이상의 데이터 프로세서들에 의해 실행될 때, 하나 이상의 데이터 프로세서들로 하여금 시퀀스 종속 동작들을 나타내는 다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 동작들을 수행하게하는 명령어들을 저장하는 컴퓨터 판독 가능 저장 매체에 관한 것이다. 상기 동작들은 데이터 처리 시스템에 의해 실행되는 자연어 처리기 컴포넌트가, 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 1 입력 오디오 신호를 포함하는 데이터 패킷들을 데이터 처리 시스템의 인터페이스를 통해 수신하는 것을 포함할 수 있다. 상기 동작들은, 자연어 처리기 컴포넌트에 의해 제 1 입력 오디오 신호로부터, 제 1 요청 및 상기 제 1 요청에 대응되는 제 1 트리거 키워드를 식별하는 것을 포함할 수 있다. 상기 동작들은, 제 1 트리거 키워드에 기초하여 그리고 상기 제 1 요청에 응답하여 상기 데이터 처리 시스템의 다이렉트 액션 애플리케이션 프로그래밍 인터페이스("API")가 제 1 액션 데이터 구조를 생성하는 것을 포함할 수 있다. 상기 동작들은, 제 1 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간의 제 1 통신 세션을 위한 상기 제 1 액션 데이터 구조를 포함하는 제1 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 1 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제 1 통신 세션의 데이터 패킷들을 구성하는 것을 포함할 수 있다. 상기 동작들은, 상기 자연어 처리기 컴포넌트가, 상기 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 2 입력 오디오 신호를 포함하는 데이터 패킷들을 상기 데이터 처리 시스템의 인터페이스를 통해 수신하는 것과, 상기 자연어 처리기 컴포넌트가 제2요청과 상기 제2요청에 대응되는 제 2 트리거 키워드를 식별하기 위해, 상기 제 2 입력 오디오 신호를 파싱하는 것을 포함할 수 있다. 상기 동작들은, 다이렉트 액션 API가, 제 2 트리거 키워드에 기초하여 그리고 제 2 요청에 응답하여, 제 2 액션 데이터 구조를 생성하는 것을 포함할 수 있다. 상기 동작들은, 제 2 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간의 제 2 통신 세션을 위한 상기 제 2 액션 데이터 구조를 포함하는 제2 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 2 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제 2 통신 세션의 데이터 패킷들을 구성하는 것을 포함할 수 있다. 상기 동작들은, 데이터 처리 시스템에 의해 실행되는 스레드 최적화 컴포넌트가, 제 1 데이터 전송의 데이터 패킷들 및 제 2 데이터 전송의 데이터 패킷들을 획득하는 것을 포함할 수 있다. 상기 동작들은, 제 1 데이터 구조의 데이터 패킷들과 제 2 데이터 구조의 데이터 패킷들에 적용된 휴리스틱 기술(heuristic technique)에 기초하여, 시퀀스 종속 파라미터(sequence dependency parameter)를 결정하는 것을 포함할 수 있다. 상기 동작들은, 시퀀스 종속 파라미터에 기초하여, 제 1 액션 데이터 구조 및 제 2 액션 데이터 구조를 단일 스레드와 연계시키는(associating) 것을 포함할 수 있다.
이들 및 다른 양상들 및 구현들이 이하에서 상세하게 논의된다. 전술한 정보와 이하의 상세한 설명은 다양한 양상들 및 구현들의 예시적인 실시 예들을 포함하며, 청구된 양상들 및 구현들의 본질과 특성은 이해를 위한 개요 또는 프레임 워크를 제공한다. 도면들은 다양한 측면들 및 구현들의 예시와 추가적인 이해를 제공하며, 본 명세서에 통합되어 본 명세서의 일부를 구성한다.
첨부된 도면들은 실제 크기로 그려지지는 않았다. 여러 도면들에서 동일한 참조번호들과 명칭들은 동일한 구성을 가리킨다. 명확화를 위해 모든 구성 요소가 모든 도면에 레이블로 표시되지는 않았다.
도 1은 음성 기동 컴퓨터 네트워크 환경에서 시퀀스 종속 동작들을 나타내는 다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템을 도시한다;
도 2는 음성 기동 데이터 패킷 기반 컴퓨터 네트워크 환경을 위한 단일 스레드 구조의 기능 다이어그램을 도시한다;
도 3은 음성 기동 데이터 패킷 기반 컴퓨터 네트워크 환경에서 원격 데이터 처리 시스템들과 서비스 제공자 컴퓨팅 디바이스들 간의 스레드 데이터 구조 생성 및 통신의 기능 다이어그램을 도시한다;
도 4는 시퀀스 종속 동작들을 나타내는 다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 방법을 도시한다; 그리고
도 5는 본 명세서에서 기술되고 도시된 시스템들과 방법들의 구성들을 구현하기 위해 사용될 수있는 컴퓨터 시스템의 일반적인 아키텍처를 도시한 블록도이다.
이하에서는, 음성 기동 컴퓨터 네트워크 환경에서 다수의 음성 기동 오디오 입력 데이터 패킷들의 프로세싱을 최적화하기 위한 방법들, 장치들 및 시스템들의 구현들 및 이와 관련된 다양한 개념들이 보다 상세하게 개시된다. 이상에서 기술된 것과 이하에서 보다 상세하게 논의되는 다양한 개념들은 다양한 방법으로 구현될 수 있다.
본 명세서에 개시된 시스템들과 방법들은 일반적으로 음성 기동 컴퓨터 네트워크 환경에서의 패킷 기반 전송을 통해, 다수의 음성 기동 패킷 (또는 다른 프로토콜) 기반 입력 오디오 신호들을 최적화하거나 또는 동적으로 조정하는 데이터 처리 시스템에 관한 것이다. 상기 데이터 처리 시스템은, 예를 들어 입력 오디오 신호들로부터 정보를 추출하여 다수의 대응 액션 데이터 구조들을 생성함으로써 하나 이상의 컴퓨터 네트워크들을 통한 데이터 패킷 전송의 효율성 및 효율성을 향상시킬 수 있다. 데이터 처리 시스템과 다수의 상이한 서비스 제공자 컴퓨팅 디바이스들 간의 통신 세션 동안의 전송(transmission)을 위해 액션 데이터 구조들이 구성될 수 있다. 예를 들어, 상이한 액션 데이터 구조들의 패킷들로부터, 데이터 프로세싱 시스템은 적어도 하나의 시퀀스 종속 파라미터를 결정할 수 있다. 시퀀스 종속 파라미터은 액션 데이터 구조들 또는 그들의 대응 데이터 전송들에 의해 지시된 액션들의 동작 순서를 나타낼 수 있다. 데이터 처리 시스템은 이러한 시퀀스 종속 파라미터에 기초하여, 다수의 액션 데이터 전송들을 단일 스레드로 병합하거나 결합할 수 있다.
단일 스레드(single thread)는 다수의 액션 데이터 구조들의 시퀀스 종속 동작들을 포함할 수 있다. 데이터 처리 시스템은 단일 스레드에 의해 지시되는 액션들을 달성하기 위해, 단일 스레드 또는 그 일부 (예를 들어, 적어도 하나의 패킷 기반 데이터 구조)를 다수의 서비스 제공자 컴퓨팅 디바이스들에 제공할 수 있다. 또한, 데이터 처리 시스템은 단일 스레드와 관련된 콘텐츠 아이템들을 획득하기 위해 적어도 하나의 콘텐츠 제공자 컴퓨팅 디바이스에 단일 스레드 또는 그 일부를 제공할 수 있다. 서비스 제공자 컴퓨팅 디바이스들 및 콘텐츠 제공자 컴퓨팅 디바이스들은, 데이터 처리 시스템을 통해서 또는 데이터 처리 시스템을 바이패스하여(bypassing) 적어도 하나의 클라이언트 컴퓨팅 디바이스 (예를 들어, 오디오 입력 신호들의 소스)와 통신할 수 있고, 스레드에 의해 지시되는 액션들을 달성하기 위해 오디오 출력을 렌더링하거나 또는 클라이언트 컴퓨팅 디바이스에서 콘텐츠 아이템들을 렌더링할 수 있다.
다수의 액션 데이터 구조들을 단일 스레드로 병합하든지 또는 통합함으로써, 그리고 단일 스레드에 의해 지시된 시퀀스 종속 동작들을 식별함으로써, 다수의 액션 데이터 구조들을 이러한 통합과 시퀀스 종속 식별 없이 개별 처리하는 것에 비하여 데이터 처리 시스템의 프로세싱, 전력, 및 메모리 사용요구가 감소된다. 예를 들어, 개별 액션 데이터 구조들의 동작들에 대한 비동기식(asynchronous) 또는 무작위(out-of-sequence) 처리는 데이터 처리 시스템과 서비스 제공자 또는 콘텐츠 제공자 컴퓨팅 디바이들 간에 확립 통신 세션을 통한 시기 부적절한, 시기상조의(premature), 또는 불필요한 데이터 패킷 통신을 야기할 수 있다. 이것은 대역폭을 낭비하게 하며, 데이터 처리 시스템뿐만 아니라 서비스 제공자 또는 콘텐츠 제공자 컴퓨팅 디바이스들의 불필요한 프로세싱 동작들을 야기할 수 있고, 다수의 컴퓨팅 디바이스들의 컴퓨팅 자원을 낭비하게 할 수 있다.
상기 데이터 처리 시스템은, 단일 스레드의 식별된 시퀀스 종속 동작들에 기초하여, 시퀀스 종속 동작들 세트의 초기 동작들(initial operations)을 일시적으로 또는 영구적으로 스킵하고, 그 대신 후속 동작 또는 최종 동작에 대응되는 동작을 진행할 수 있다. 복수의 시퀀스 종속 동작들의 초기 동작(early operation)에 대응하는 패킷 또는 다른 프로토콜 기반의 데이터 전송들을 바이 패싱하고, 그 대신 일련의 동작에서 후속 단계 동작들을 위한 패킷 기반 데이터 전송을 다이렉트 진행함으로써, 초기 단계 동작들과 관련된 데이터 처리를 미루거나 제거 할 수 있다. 이는 프로세싱 능력과 다른 컴퓨팅 자원들(예, 메모리)을 절약시켜주고, 데이터 처리 시스템에 의한 전력 소비를 감소시키며, 나아가 컴퓨터 네트워크를 통해 감소된 데이터 전송들은 데이터 처리 시스템의 대역폭 요구량 및 사용을 감소시킨다.
여기에 기술된 시스템들 및 방법들은 제 1 입력 오디오 신호를 수신하는 데이터 처리 시스템을 포함할 수 있다. 데이터 처리 시스템은, 제 1 입력 오디오 신호로부터, 제 1 요청 및 요청에 대응되는 제 1 트리거 키워드를 식별할 수 있다. 데이터 처리 시스템은, 제 1 트리거 키워드 또는 제 1 요청에 기초하여, 제 1 액션 데이터 구조를 생성할 수 있고, 또한 제 1 액션 데이터 구조를 포함하는 제 1 데이터 전송을 구성하거나 준비할 수 있다. 상기 제 1 데이터 전송은, 제 1통신 세션의 일부로서 상기 클라이언트 컴퓨팅 디바이스로부터 적어도 하나의 제 1 서비스 제공자 컴퓨팅 디바이스로 데이터 패킷 또는 다른 프로토콜 기반 전송으로서 라우팅될 수 있다.
데이터 처리 시스템은 제 2 입력 오디오 신호를 수신할 수 있다. 데이터 처리 시스템은, 제 2 입력 오디오 신호로부터, 제2요청 및 상기 제2요청에 대응되는 제 2 트리거 키워드를 식별할 수 있다. 상기 데이터 처리 시스템은, 상기 제 2 트리거 키워드 또는 상기 제 2 요청에 기초하여 제 2 액션 데이터 구조를 생성할 수 있고, 상기 제 2 액션 데이터 구조를 포함하는 제 2 데이터 전송을 구성하거나 준비할 수 있다. 상기 제 2 데이터 전송은, 제2통신 세션의 일부로서 상기 클라이언트 컴퓨팅 디바이스로부터 적어도 하나의 제 2 서비스 제공자 컴퓨팅 디바이스로 데이터 패킷 또는 다른 프로토콜 기반 전송으로서 라우팅될 수 있다. 제 1 및 제 2 서비스 제공자 컴퓨팅 디바이스들은 데이터 처리 시스템을 통해서 서로 통신하지 않는 서로 다른 엔티티들(different entities)에 대응할 수 있다.
데이터 처리 시스템은 (예를 들어, 제 1 및 제 2 데이터 구조들로부터) 제 1 및 제 2 전송들의 데이터 패킷들을 획득할 수 있고, 데이터 패킷들로부터 정보를 추출하여 적어도 하나의 시퀀스 종속 파라미터를 결정할 수 있다. 시퀀스 종속 파라미터는 제 1 및 제 2 데이터 구조들의 액션들(actions)을 위한 동작 시퀀스를 나타낼 수 있다. 데이터 처리 시스템은 시퀀스 종속 파라미터를 임계값(예를 들어, 규칙, 정책, 또는 값)과 비교할 수 있고, 상기 데이터 처리 시스템은 상기 비교에 기초하여 제 1 및 제 2 데이터 전송들 (또는 연관 액션 데이터 구조들)을 단일 스레드와 병합할 수 있다. 단일 스레드는 제1 및 제2 (또는 그 이상의) 액션 데이터 구조들의 액션들(actions)을 나타낼 수 있고, 이러한 액션들의 시퀀스나 순서는 물론 예를 들어 제2 액션은 제1 액션이 완료될 때까지 시작할 수 없다(또는 예정되지 않았다)는 시퀀스 종속들(sequence dependencies)을 나타낼 수 있다.
데이터 처리 시스템은, 예를 들어 시퀀스 종속들에 기초하거나 또는 클라이언트 컴퓨팅 디바이스로부터 수신된 입력에 기초하여, 단일 스레드의 일부 액션들과 관련된 동작들을 재정렬하거나, 스킵하거나, 또는 적어도 임시로 바이패스할 수 있다. 이는, 바이패스된 액션에 기초하여 데이터 처리 동작들 중 적어도 일부를 수행하기 전 또는 그러한 동작들을 수행하지 않고 이루어질 수 있다. 1 액션에 에 대한 처리 동작들을 바이패스하면, 제2 액션과 관련된 데이터가 바이 패스가 없는 경우보다 더 적은 데이터 처리와 더 적은 전력 사용을 통해 식별되고, 전송되고, 렌더링될 수 있다.
도 1은 음성 기동 데이터 패킷 (또는 다른 프로토콜) 기반 컴퓨터 네트워크 환경에서 시퀀스 종속 동작들을 포함하는 다수의 액션 데이터 구조들의 프로세싱을 최적화하기 위한 일 예시 시스템 (100)을 도시한다. 시스템 (100)은, 예를 들어 음성 기동 통신 또는 계획 시스템의 일부로서 적어도 하나의 데이터 처리 시스템(105)을 포함할 수 있다. 데이터 처리 시스템 (105)은 적어도 하나의 프로세서를 갖춘 적어도 하나의 서버를 포함 할 수 있다. 예를 들어, 데이터 처리 시스템 (105)은 적어도 하나의 데이터 센터 또는 서버팜(server farm)에 위치한 복수의 서버들을 포할 수 있다. 데이터 처리 시스템 (105)은 오디오 입력 신호로부터, 요청 및 그 요청과 관련된 트리거 키워드를 결정할 수 있다. 또한, 데이터 처리 시스템 (105)은, 상기 요청 및 트리거 키워드에 기초하여 액션 데이터 구조를 생성할 수 있다. 액션 데이터 구조는 입력 오디오 신호에 대응하는 하나 이상의 액션(action)을 나타낼 수 있다. 데이터 처리 시스템 (105)은 다수의 독립된(separate) 입력 오디오 신호를 수신할 수 있고, 각각의 입력 오디오 신호에 대하여 각각의 데이터 구조를 생성할 수 있다. 데이터 처리 시스템 (105)은 각각 다른 컴퓨팅 디바이스들 (예를 들어, 서비스 제공자 컴퓨팅 디바이스들 또는 콘텐츠 제공자 컴퓨팅 디바이스들)과의 각 통신 세션 동안 데이터 구조들을 전송하기 위해, 각각의 데이터 구조에 대한 데이터 전송들을 구성하거나 또는 준비할 수 있다. 데이터 처리 시스템 (105)은, 액션 데이터 구조들 또는 대응되는 데이터 전송들로부터, 하나 이상의 시퀀스 종속 파라미터를 결정할 수 있다. 또한, 데이터 처리 시스템 (105)은 상기 시퀀스 종속 파라미터에 기초하여, 다수의 데이터 전송들 (또는 대응되는 액션 데이터 구조들)을 단일 스레드로 병합할 수 있다. 단일 스레드는 적어도 두 개의 액션 데이터 구조들로부터 액션들(actions)뿐만 아니라 그 액션들의 동작 순서 또는 시퀀스 종속들을 나타낼 수 있다.
데이터 처리 시스템(105)은 논리적으로 그룹화된 다수의 서버들을 포함할 수 있고 분산 컴퓨팅 기술들을 사용할 수 있다. 서버들의 논리 그룹은 데이터 센터, 서버팜(server farm) 또는 머신팜(machine farm)으로 명명될 수 있다. 서버는 지리적으로 분산될 수 있다. 데이터 센터 또는 머신팜은 단일 엔티티(a single entity)로 관리될 수 있으며, 머신팜은 복수의 머신팜들을 포함할 수 있다. 각각의 머신팜 내의 서버들은 이기종(heterogeneous) 일 수 있고, 하나 이상의 서버들 또는 머신들은 하나 이상의 운영 체제 플랫폼의 유형에 따라 작동할 수 있다. 데이터 처리 시스템 (105)은 예를 들어 기업 데이터 센터에 위치한 연관 저장 시스템들과 함께, 하나 이상의 고밀도 랙 시스템들에 저장되는 데이터 센터의 서버들을 포함할 수 있다. 이러한 방식의 통합된 서버들을 갖춘 데이터 처리 시스템 (105)은 로컬 고성능 네트워크들 상에 서버들과 고성능 저장 시스템들을 위치시킴으로써 시스템 관리 가능성, 데이터 보안, 시스템의 물리적 보안, 및 시스템 성능을 향상시킬 수 있다. 데이터 처리 시스템 (105)은, 서버들과 저장 시스템들을 포함한 구성들 전부 또는 일부를 중앙 집중화하고 이들을 고급 시스템 관리 툴과 결합시킴으로써, 서버 자원들을 보다 효율적으로 사용할 수 있게 하고 전력 및 처리 요구들을 절약하고 대역폭 사용을 줄일 수 있다.
데이터 처리 시스템 (105)은 적어도 하나의 자연어 처리기(NLP) 컴포넌트 (110), 적어도 하나의 인터페이스 (115), 적어도 하나의 스레드 최적화 컴포넌트(120), 적어도 하나의 콘텐츠 선택기 컴포넌트(125), 적어도 하나의 오디오 신호 생성기 컴포넌트(130), 적어도 하나의 다이렉트 액션 애플리케이션 프로그래밍 인터페이스(API)(135), 적어도 하나의 세션 핸들러 컴포넌트(140), 그리고 적어도 하나의 데이터 저장소(145)를 포함할 수 있다. NLP 컴포넌트(110), 인터페이스(115), 스레드 최적화 컴포넌트(120), 콘텐츠 선택기 컴포넌트(125), 오디오 신호 생성기 컴포넌트(130), 다이렉트 액션 API(135), 및 세션 핸들러 컴포넌트(140)는 각각 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 어플라이언스, 또는 데이터 저장소(145) 및 다른 컴퓨팅 디바이스들(예를 들어, 클라이언트 컴퓨팅 디바이스 (150), 콘텐츠 제공자 컴퓨팅 디바이스(155), 또는 서비스 제공자 컴퓨팅 디바이스(160))와 적어도 하나의 컴퓨터 네트워크 (165)를 통해 통신하도록 구성된 프로그래밍 가능한 논리 어레이(programmable logic arrays)와 같은 다른 논리 디바이스를 포함할 수 있다. 네트워크(165)는 예를 들어, 인터넷, 로컬, 와이드, 메트로 또는 다른 영역 네트워크들과 같은 네트워크들, 인트라넷들, 위성 네트워크들, 음성 또는 데이터 이동 전화 통신 네트워크들과 같은 다른 컴퓨터 네트워크들, 및 이들의 조합을 포함할 수 있다.
상기 네트워크 (165)는 콘텐츠 배치(placement) 또는 검색 엔진 결과 시스템과 연관되거나 또는 제 3 자의 콘텐츠 아이템들을 콘텐츠 아이템 캠페인(campaign)의 일부로 포함시키는 것이 허용된, 인터넷상에서 이용가능한 정보 자원들의 서브셋(subset)과 같은 디스플레이 네트워크(display network)를 포함하거나 구성할 수 있다. 네트워크 (165)는 예를 들어, 클라이언트 컴퓨팅 디바이스(150)에 의해 제시되거나, 출력되거나, 렌더링되거나, 또는 디스플레이될 수 있는 웹 페이지들, 웹 사이트들, 도메인 명칭들, 또는 유니폼 리소스 로케이터들과 같은 정보 자원들에 액세스하기 위하여 데이터 처리 시스템 (105)에 의해 사용될 수 있다. 예를 들어, 클라이언트 컴퓨팅 디바이스(150)의 사용자는 네트워크 (165)를 통해 콘텐츠 제공자 컴퓨팅 디바이스(155) 또는 서비스 제공자 컴퓨팅 디바이스(160)에 의해 제공된 정보나 데이터에 액세스 할 수 있다.
네트워크 (165)는, 예를 들어 포인트-투-포인트 네트워크, 브로드 캐스트 네트워크, 광역 네트워크, 로컬 영역 네트워크, 통신 네트워크, 데이터 통신 네트워크, 컴퓨터 네트워크, ATM (비동기 전송 모드) 네트워크, SONET (Synchronous Optical Network) 네트워크, SDH (Synchronous Digital Hierarchy) 네트워크, 무선 네트워크 또는 유선 네트워크, 및 이들의 조합을 포함할 수 있다. 네트워크 (165)는 적외선 채널 또는 위성 대역과 같은 무선 링크를 포함 할 수 있다. 네트워크(165)의 토폴로지는 버스, 스타(star), 또는 링 네트워크 토폴로지를 포함 할 수 있다. 네트워크 (165)는, 향상된 이동 전화 프로토콜("AMPS"), 시분할 다중 접속( "TDMA"), 코드 분할 다중 접속 ( "CDMA"), 및 이동 통신용 글로벌 시스템("GSM"), 일반 패킷 무선 서비스 ("GPRS") 또는 범용 이동 통신 시스템 ("UMTS")을 포함하여, 모바일 디바이스들 간의 통신에 사용되는 임의의 프로토콜 또는 프로토콜들을 사용하는 이동 전화 네트워크들을 포함 할 수 있다. 서로 다른 타입의 데이터가 서로 다른 프로토콜들을 통해 전송되거나, 동일한 타입의 데이터가 서로 다른 프로토콜들을 통해 전송 될 수 있다.
클라이언트 컴퓨팅 디바이스 (150), 콘텐츠 제공자 컴퓨팅 디바이스 (155), 및 서비스 제공자 컴퓨팅 디바이스 (160) 각각은 서로 또는 네트워크(165)를 통해 데이터 처리 시스템과 통신하기 위한 프로세서를 갖는 컴퓨팅 디바이스와 같은 적어도 하나의 논리 디바이스를 포함할 수 있다. 클라이언트 컴퓨팅 디바이스 (150), 콘텐츠 제공자 컴퓨팅 디바이스 (155), 및 서비스 제공자 컴퓨팅 디바이스 (160) 각각은 적어도 하나의 서버, 프로세서 또는 메모리, 또는 적어도 하나의 데이터 센터에 위치한 복수의 컴퓨팅 자원들 또는 서버들을 포함할 수 있다. 클라이언트 컴퓨팅 디바이스 (150), 콘텐츠 제공자 컴퓨팅 디바이스 (155), 및 서비스 제공자 컴퓨팅 디바이스 (160) 각각은 데스크톱 컴퓨터, 랩탑, 태블릿, 개인 휴대 정보 단말기, 스마트 폰, 휴대용 컴퓨터, 서버, 얇은 클라이언트 컴퓨터, 가상 서버와 같은 적어도 하나의 컴퓨팅 디바이스나 다른 컴퓨팅 장치를 포함할 수 있다.
클라이언트 컴퓨팅 디바이스 (150)는 적어도 하나의 센서 (151), 적어도 하나의 변환기 (152), 적어도 하나의 오디오 드라이버 (153), 및 적어도 하나의 스피커 (154)를 포함할 수 있다. 센서 (151)는 마이크로폰 또는 오디오 입력 센서를 포함 할 수 있다. 변환기 (152)는 오디오 입력을 전기신호로 변환할 수 있다. 오디오 드라이버 (153)는, 클라이언트 컴퓨팅 디바이스 (150)의 하나 이상의 프로세서에 의해 실행되는 스크립트 또는 프로그램을 포함할 수 있고, 이는 오디오 입력을 처리하거나 또는 오디오 출력을 제공하기 위해, 클라이언트 컴퓨팅 디바이스 (150)의 다른 컴포넌트들의 센서 (151), 변환기 (152) 또는 오디오 드라이버 (153)를 제어할 수 있다. 스피커 (154)는 오디오 출력 신호를 전달할 수 있다.
클라이언트 컴퓨팅 디바이스 (150)는, (센서 (151)를 통해) 음성 질의들(voice queries)을 오디오 입력으로 클라이언트 컴퓨팅 디바이스 (150)에 입력하고, 데이터 처리 시스템(105) (또는 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160))으로부터 클라이언트 컴퓨팅 디바이스 (150)로 제공될 수 있는 컴퓨터 생성 음성의 형태가, 스피커 (154)로부터 출력되는, 오디오 출력을 수신하는 최종 사용자와 관련된 것일 수 있다. 컴퓨터 생성 음성(computer generated voice)은 실제 사람으로부터 녹음된 것들이거나 또는 컴퓨터 생성 언어를 포함할 수 있다.
콘텐츠 제공자 컴퓨팅 디바이스 (155)는 오디오 출력 콘텐츠 아이템으로서 클라이언트 컴퓨팅 디바이스 (150)에의 디스플레이를 위한 오디오 기반 콘텐츠 아이템들을 제공할 수 있다. 콘텐츠 아이템은 "제가 당신을 위해 택시를 주문 할까요( Would you like me to order you a taxi?)"라고 하는 음성 기반 메시지와 같은 상품 또는 서비스의 제안을 포함할 수 있다. 예를 들어, 콘텐츠 제공자 컴퓨팅 디바이스 (155)는 음성 기반 질의에 응답하여 제공될 수 있는 오디오 콘텐츠 아이템들의 목록을 저장하기 위한 메모리를 포함할 수 있다. 또한, 콘텐츠 제공자 컴퓨팅 디바이스 (155)는 오디오 기반 콘텐츠 아이템들 (또는 다른 콘텐츠 아이템들)을 데이터 처리 시스템 (105)에 제공하여 데이터 저장소 (145)에 저장하게 할 수 있다. 데이터 처리 시스템 (105)은 오디오 컴포넌트를 포함하는 콘텐츠 아이템들을 선택하고, 콘텐츠 아이템들을 클라이언트 컴퓨팅 디바이스 (150)에 제공할 수 있다(또는 제공하도록 콘텐츠 제공자 컴퓨팅 디바이스 (155)에 지시할 수 있다). 오디오 기반 컨텐츠 아이템들은 독점적으로 오디오일 수도 있고 텍스트, 이미지 또는 비디오 데이터와 결합될 수도 있다. 콘텐츠 아이템들은 렌더링될 때 오디오 출력 또는 음파(acoustic wave)를 제공하는 하나 이상의 오디오 파일들을 포함할 수 있다. 콘텐츠 아이템들은 오디오 콘텐츠에 추가로 또는 오디오 콘텐츠 대신에 다른 콘텐츠 (예를 들어, 텍스트, 비디오, 또는 이미지 콘텐츠)를 포함할 수 있다. 예를 들어, 콘텐츠 아이템들은 오디오 파일들을 포함하지 않으면서 오디오 출력을 렌더링하지 않는 텍스트 또는 이미지 파일들, 또는 이들의 조합을 포함할 수 있다.
서비스 제공자 컴퓨팅 디바이스 (160)는 적어도 하나의 서비스 제공자 자연어 처리기 (NLP) 컴포넌트 (161)와 적어도 하나의 서비스 제공자 인터페이스 (162)를 포함할 수 있다. 서비스 제공자 NLP 컴포넌트 (161) (또는 서비스 제공자 컴퓨팅 디바이스 (160)의 다이렉트 액션 API와 같은 다른 컴포넌트들)는 (데이터 처리 시스템 (105)을 통해 또는 데이터 처리 시스템 (105)을 바이패스하여) 클라이언트 컴퓨팅 디바이스 (150)와 연동하여, 클라이언트 컴퓨팅 디바이스 (150)와 서비스 제공자 컴퓨팅 디바이스 (160) 간의 전후 실시간 음성 또는 오디오 기반 대화(예, 세션)를 생성할 수 있게 한다. 예를 들어, 서비스 제공자 인터페이스(162)는 데이터 처리 시스템(105)의 다이렉트 액션 API (135)에 대한 데이터 메시지들을 수신하거나 제공할 수 있다. 서비스 제공자 컴퓨팅 디바이스 (160) 및 콘텐츠 제공자 컴퓨팅 디바이스 (155)는 동일한 엔티티(same entity)와 연관될 수 있다. 예를 들어, 콘텐츠 제공자 컴퓨팅 디바이스 (155)는 카(car) 공유 서비스에 대한 콘텐츠 아이템들을 생성, 저장 또는 사용 할 수 있고, 서비스 제공자 컴퓨팅 디바이스 (160)는 클라이언트 컴퓨팅 디바이스 (150)와 세션을 설정하여 택시 또는 카(car) 공유 서비스의 차량이 클라이언트 컴퓨팅 디바이스 (150)의 최종 사용자를 픽업할 수 있게끔 한다. 데이터 처리 시스템(105)은, 다이렉트 액션 API (135), NLP 컴포넌트 (110) 또는 다른 컴포넌트들을 통해, 서비스 제공자 컴퓨팅 디바이스 (160)를 포함하거나 또는 바이패스하여, 클라이언트 컴퓨팅 디바이스 (150)와 세션을 설정하여서, 예를 들어, 택시나 카 공유 서비스의 차량 배달을 어레인지할 수 있다.
데이터 저장소 (145)는 하나 이상의 로컬 또는 분산 데이터베이스들을 포함할 수 있으며, 데이터베이스 관리 시스템을 포함할 수 있다. 데이터 저장소 (145)는 컴퓨터 데이터 스토리지 또는 메모리를 포함할 수 있고, 다른 데이터들 중 하나 이상의 파라미터들(146), 하나 이상의 정책들 (147), 콘텐츠 데이터 (148), 또는 템플릿들 (149)을 저장할 수 있다. 상기 파라미터들 (146), 정책들 (147) 및 템플릿들 (149)은 클라이언트 컴퓨팅 디바이스 (150) (또는 서비스 제공자 컴퓨팅 디바이스 (160))와 데이터 처리 시스템 (105) 간의 음성 기반 세션에 관한 규칙들(rules)과 같은 정보를 포함할 수 있다. 콘텐츠 데이터 (148)는 오디오 출력 또는 관련 메타 데이터뿐만 아니라, 클라이언트 컴퓨팅 디바이스 (150)와 하나 이상의 통신 세션들의 일부가 되는 입력 오디오 메시지들을 포함할 수 있다.
데이터 처리 시스템 (105)은, 예를 들어 입력 오디오 신호들이 데이터 처리 시스템 (105)의 인터페이스 (115)와 통신하고 출력 오디오 신호들을 렌더링하기 위해 클라이언트 컴퓨팅 디바이스의 컴포넌트들을 구동시키는 앱(app)과 같은, 클라이언트 컴퓨팅 디바이스 (150)에 설치된 애플리케이션, 스크립트 또는 프로그램을 포함할 수 있다. 데이터 처리 시스템 (105)은 데이터 패킷들 또는 오디오 입력 신호를 포함하거나 식별하는 다른 신호를 수신할 수 있다. 예를 들어, 데이터 처리 시스템 (105)은 오디오 입력 신호를 수신 하기 위해, NLP 컴포넌트 (110)의 적어도 일부를 실행 또는 런(run)할 수 있다.
NLP 컴포넌트 (110)는 (예를 들어, 데이터 저장소 (145)에) 저장된 대표 오디오 파형 세트와 입력 신호를 비교하고 가장 가까운 매칭을 선택함으로써 오디오 입력 신호를 인식된 텍스트로 변환할 수 있다. 대표 파형들(representative waveforms)은 다수의 사용자 집합을 통해 생성되며, 발화 샘플들(speech samples)을 통해 보강될 수 있다. NLP 컴포넌트(110)는 오디오 신호가 인식된 텍스트로 변환된 후, 그 텍스트를 예를 들어 사용자 또는 수동 사양을 통한 훈련(traning)을 통해 데이터 처리 시스템 (105)이 제공하는 액션들과 연관된 단어들과 매칭시킬 수 있다.
오디오 입력 신호는 클라이언트 컴퓨팅 디바이스의 센서 (151) (예, 마이크로폰)에 의하여 검출될 수 있다. 클라이언트 컴퓨팅 디바이스 (150)는 변환기 (152), 오디오 드라이버 (153), 또는 다른 컴포넌트들을 통해, 오디오 입력 신호를 (예를 들어, 네트워크(165)를 통해) 데이터 처리 시스템 (105)에 제공할 수 있고, 이는 (예를 들어, 인터페이스 (115) 에 의해) 수신될 수 있으며 NLP 컴포넌트 (110)에 제공되거나 또는 데이터 저장소 (145)에 콘텐츠 데이터 (148) 로서 저장될 수 있다.
상기 시스템 (100)은 음성 기동 데이터 패킷 (또는 다른 프로토콜) 환경에서의 시퀀스 종속 동작들을 포함하는 액션 데이터 구조들의 프로세싱을 최적화할 수 있다. 예를 들어, 데이터 처리 시스템 (105)은 음성 기동 보조 서비스, 음성 명령 디바이스, 지능형 개인 비서, 지식 네비게이터(knowledge navigator), 이벤트 플래닝(event planning), 또는 다른 보조 프로그램을 포함하거나 또는 그 일부가 될 수 있다. 데이터 처리 시스템 (105)은 이러한 입력 오디오 신호와 관련된 태스크들(tasks)을 수행하기 위해 클라이언트 컴퓨팅 디바이스 (150)에 디스플레이하기 위한 하나 이상의 오디오 출력 인스턴스들을 제공할 수 있다. 태스크들(tasks)은, 예를 들어 저녁 식사를 예약하거나 영화 티켓을 구매하기 위해 서비스 제공자 컴퓨팅 디바이스 (160) 또는 다른 제 3 자 컴퓨팅 디바이스들과 통신하는 것을 포함할 수 있다. 예를 들어, 최종 사용자는 클라이언트 컴퓨팅 디바이스 (150)에 다음과 같은 입력 오디오 신호를 입력 할 수 있다 : "오케이(OK), 오늘 밤 저녁 식사를 하러 가고 싶어". 이러한 입력 오디오 신호는 클라이언트 컴퓨팅 디바이스 (150)의 센서 (151) (예를 들어, 마이크로폰 (150)에 의해 검출될 수 있고, 데이터 처리 시스템 (105) 으로의 전송을 위해 (예를 들어, 변환기 (152)에 의해) 데이터 패킷 또는 다른 프로토콜 기반 구조로 변환될 수 있다.
NLP 컴포넌트 (110)는 적어도 하나의 제 1 입력 오디오 신호를 수신하거나 또는 획득할 수 있다. 예를 들어, NLP 컴포넌트 (110)는 인터페이스 (115)와 컴퓨터 네트워크 (165)를 통해, 클라이언트 컴퓨팅 디바이스 (150)로부터 제 1 입력 오디오 신호를 획득할 수 있다. NLP 컴포넌트 (110)는 제 1 입력 오디오 신호로부터 데이터를 추출하거나 또는 적어도 하나의 제 1 요청 또는 상기 제 1 요청에 대응하는 적어도 하나의 제 1 트리거 키워드를 식별하기 위해 상기 제1 입력 오디오 신호를 파싱할 수 있다. 상기 제 1 요청은 제 1 입력 오디오 신호의 의도나 주제(subject matter), 예를 들어 저녁 식사를 위한 의도를 나타낼 수 있다. 제1 트리거 키워드는 취할 수 있는 액션의 유형을 나타낼 수 있다. 예를 들어, NLP 컴포넌트 (110)는 제 1 입력 오디오 신호를 파싱하여 저녁 식사를 위해 집을 떠나기 위한 적어도 하나의 요청을 식별할 수 있다. 제1 트리거 키워드는 취할 액션을 나타내는 적어도 하나의 단어, 구문, 루트 또는 부분 단어 또는 파생어를 포함할 수 있다. 예를 들어, 입력 오디오 신호에서 트리거 키워드 "가다(go)" 또는 "~로 가다(to go to)"는 이동수단(transport)이 필요함을 나타낼 수 있다. 이러한 예에서, 입력 오디오 신호 (또는 식별된 요청)는 이동수단(transport)의 의도를 직접 나타내지는 않지만, 트리거 키워드는 요청에 의해 표시된 적어도 하나의 다른 액션에 대한 보조 또는 서브-액션으로 이동수단(transport)을 나타냄을 알 수 있다.
NLP 컴포넌트 (110)는 제 2 입력 오디오 신호를 수신할 수 있다. 예를 들어, 제1 오디오 입력 신호는 "오케이(OK), 오늘 밤 저녁 식사를 하러 가고 싶은데." 이고 제2 오디오 입력 신호는 " 오케이(OK), 나중에 영화를 보고 싶어"라고 하자. NLP 컴포넌트 (110)는 예를 들어 네트워크 (165)를 통해, 제 1 입력 오디오 신호가 획득된 것과 유사한 방식으로 임의의 클라이언트 컴퓨팅 디바이스 (150)로부터 제 2 입력 오디오 신호를 수신하거나 또는 획득할 수 있다. NLP 컴포넌트 (110)는, 적어도 하나의 제2 요청 또는 상기 제 2 요청에 대응되는 적어도 하나의 제 2 트리거 키워드를 식별하기 위해 상기 제 2 입력 오디오 신호로부터 데이터를 추출하거나 또는 상기 제2 입력 오디오 신호를 파싱할 수 있다. 제 2 요청은 제 2 입력 오디오 신호의 의도나 주제(subject matter), 예를 들어 극장에서 영화를 보기 위한 의도를 나타낼 수 있다. 제2 트리거 키워드는 취할 수 있는 액션의 유형을 나타낼 수 있다. 예를 들어, NLP 컴포넌트 (110)는 제 2 입력 오디오 신호를 파싱하여, 영화를 보기 위해 밤에 집을 떠나기 위한 적어도 하나의 요청을 식별할 수 있다. 상기 제2 트리거 키워드는 취할 액션을 나타내는 적어도 하나의 단어, 구문, 루트 또는 부분 단어, 또는 파생어를 포함할 수 있다. 예를 들어, 제 2 입력 오디오 신호에서 "~을 보다(to catch)"라는 트리거 키워드는 요청에 의해 지시된 적어도 하나의 다른 액션에 대한 보조 또는 서브-액션으로서 이동수단(transport)이 필요함을 나타낼 수 있다.
다이렉트 액션 API (135)는, 예를 들어 NLP 컴포넌트 (110), 스레드 최적화 컴포넌트 (120) 또는 콘텐츠 선택기 컴포넌트 (125)로부터 프로그램들 또는 스크립트들을 실행하여 태스크들(tasks) 또는 액션들(actions)을 수행하거나 또는 입력 오디오 신호들에 응답하여 콘텐츠 아이템들을 식별할 수 있다. 다이렉트 액션 API (135)는 데이터 처리 시스템 (105)에 의해 결정되는, 최종 사용자의 의도를 만족시키기 위한 특정 액션(action)을 실행할 수 있다. 다이렉트 액션 API (135)는 그 입력들에서 특정된 액션(action)에 따라, 사용자의 요청을 만족시키는데 필요한 파라미터들을 식별하는 코드나 다이얼로그 스크립트(dialog script)를 실행할 수 있다. 이러한 코드는, 예를 들어 홈 자동화 서비스의 명칭(name)과 같은 추가 정보를 데이터 저장소 (145)에서 검색하거나, 또는 클라이언트 컴퓨팅 디바이스 (150)에서 렌더링을 위한 오디오 출력을 제공하여 요청한 택시의 의도 목적지, 시청할 영화의 장르, 또는 저녁 식사를 위한 식당의 종류와 같은 질의들을 최종 사용자에게 요청할 수 있다. 다이렉트 액션 API (135)는 필요한 파라미터를 결정할 수 있고 그 정보를 액션 데이터 구조(action data structure)에 패킷화할 수 있으며, 액션 데이터 구조는 요청 충족을 위해 콘텐츠 선택기 컴포넌트 (125) 또는 서비스 제공자 컴퓨팅 디바이스 (160) (또는 콘텐츠 제공자 컴퓨팅 디바이스(155)) 와 같은 또 다른 컴포넌트로 보내질 수 있다.
데이터 처리 시스템 (105)의 다이렉트 액션 API (135)는 요청 또는 트리거 키워드에 기초하여, 스레드의 액션들(actions)에 대한 데이터 구조들을 생성할 수 있다. 액션 데이터 구조들은 요청에 응답하여 생성될 수 있다. 액션 데이터 구조는 서비스 제공자 컴퓨팅 디바이스 (160)로 전송되거나 또는 서비스 제공자 컴퓨팅 디바이스 (160)에 의해 수신되는 메시지들에 포함될 수 있다. 다이렉트 액션 API (135)는, NLP 컴포넌트 (110)에 의해 파싱된 요청에 기초하여, 복수의 서비스 제공자 컴퓨팅 디바이스들 (160)로 전송되어야할 메시지를 결정할 수 있다.
다이렉트 액션 API (135)는 제 1 트리거 키워드에 기초하여 그리고 제 1 요청에 응답하여 제 1 액션 데이터 구조를 생성 할 수 있고, 제 2 트리거 키워드에 기초하여 그리고 제 2 요청에 응답하여 제 2 액션 데이터 구조를 생성 할 수 있다. 예를 들어, 제 1 입력 오디오 신호가 "오늘 밤에 저녁 먹으러 가자"를 포함하는 경우, NLP 컴포넌트 (110)는 트리거 키워드 "오늘 밤(tonight)"과 저녁 제안 또는 예약을 위한 요청을 식별할 수 있다. 다이렉트 액션 API (135)는 레스토랑의 서비스 제공자 컴퓨팅 디바이스 (160) (또는 콘텐츠 제공자 컴퓨팅 디바이스 (155))에 메시지로 전송하기 위한 요청을 제 1 액션 데이터 구조에 패키징할 수 있다. 제 1 입력 오디오 신호는 저녁 식사 액션(action)에 보조하는 다른 액션들을 나타내는 다른 요청들이나 트리거 키워드들을 포함할 수 있다. 이러한 액션들은 제1 액션 데이터 구조에 포함될 수 있다. 예를 들어, NLP 컴포넌트 (110)는 "오케이(OK), 오늘 밤 저녁 먹으러 가고 싶어"라는 제 1 입력 오디오 신호로부터 저녁식사 (추가 액션들) 또는 그로부터 제 1 요청들 또는 교통수단(transportation)을 위한 제 1 트리거 키워드들을 식별할 수 있다.
예를 들어, 제 2 입력 오디오 신호가 "나중에 영화 보자(catch a movie later)"를 포함하는 경우, NLP 컴포넌트 (110)는 트리거 키워드들인 "보자(catch)" 또는 "나중에(later)" 와 함께 영화를 보기 위한 요청을 식별할 수 있다. 다이렉트 액션 API (135)는 영화사(movie company) 또는 영화관의 서비스 제공자 컴퓨팅 디바이스 (160) (또는 콘텐츠 제공자 컴퓨팅 디바이스 (155))에 메시지로 전송하기 위한 요청을 제 2 액션 데이터 구조에 패키징 할 수 있다. 제 2 입력 오디오 신호는 상기 영화 액션에 보조하는 다른 액션들을 나타내는 제 2 요청들 또는 제 2 트리거 키워드들을 포함할 수 있다. 이러한 액션들은 제2 액션 데이터 구조에 포함될 수 있다. 예를 들어, NLP 컴포넌트 (110)는 "오케이(OK), 나중에 영화를 싶어"라는 제 2 입력 오디오 신호로부터, 제1요청들과 영화관(또는 추가 액션들)으로 또는 그로부터의 교통수단(for transportation)을 위한 제 1 트리거 키워드들을 식별할 수 있다.
또한, 제 1 및 제 2, 또는 임의의 다른 액션 데이터 구조들이 콘텐츠 선택기 컴포넌트(125)에 전달될 수 있다. 상기 액션 데이터 구조들은 요청과 관련된 하나 이상의 액션들을 완료하기 위한 정보를 포함할 수 있다. 이 예시에서, 상기 정보는 레스토랑 또는 영화 관심 지표들(movie interest indicators), 위치 정보, 레스토랑의 식별자 또는 위치 또는 레스토랑의 종류, 레스토랑 예약 정보, 극장에서의 영화 상영 시간, 영화관 위치 정보, 또는 픽업 위치 및 목적지 위치를 포함할 수 있다. 다이렉트 액션 API (135)는 저장소 (145)로부터 템플릿 (149)을 검색하여 액션 데이터 구조에 어떤 필드들을 포함시킬지를 결정할 수 있다. 다이렉트 액션 API (135)는 상기 저장소 (145)로부터 콘텐츠를 검색하여 데이터 구조의 필드들에 대한 정보를 획득할 수 있다. 다이렉트 액션 API (135)는 그 정보로 템플릿의 필드들이 채워진 데이터 구조를 생성할 수 있다. 또한, 다이렉트 액션 API (135)는 입력 오디오 신호 또는 제 3 자 소스들(third party sources)로부터 제공된 데이터들로 필드를 채울 수 있다. 템플릿들 (149)은 서비스 제공자들의 카테고리들을 위해 표준화되거나 또는 특정 서비스 제공자들을 위해 표준화 될 수 있다. 예를 들어, 라이드 공유 서비스 제공자들(ride sharing service providers)은 다음과 같이 표준화된 템플릿(149)를 사용하여 데이터 구조를 생성할 수 있다: {client_device_identifier; authentication_credentials; pick_up_location; destination_location; no_passengers; service_level}. 데이터 구조는 가변 필드들을 포함할 수 있다. 상기 가변 필드들은 예를 들어, 데이터 구조의 적어도 하나의 액션에 의해 지시되거나 또는 그와 관련된 다수의 액션들의 시퀀스 또는 동작 순서를 나타낼 수 있다. 다이렉트 액션 API (135)는 가변 필드들을 포함하여 데이터 구조의 필드들을 채울 수 있다. 다이렉트 액션 API (135)는 제 1 액션이 종료된 후에 시작하는 제 2 액션과 같은 액션들 간의 시퀀스 종속에 기초하여, 상기 데이터 구조의 하나 이상의 가변 필드들에 데이터를 채우거나 입력할 수 있다.
다이렉트 액션 API (135)는 액션 데이터 구조들에 대응되는 데이터 패킷들을 포함하는 데이터 전송들(data transmissions)을 구성할 수 있다. 예를 들어, 상기 데이터 전송들은 액션 데이터 구조들의 패킷화 버전들, 예를 들어 데이터 구조에 의해 표현되는 정보를 나타내는 헤더 및 페이로드 영역들을 갖는 데이터 패킷들을 포함할 수 있다. 상기 데이터 전송들은 데이터 처리 시스템 (105)을 통해 서비스 제공자 컴퓨팅 디바이스 (160)와 클라이언트 컴퓨팅 디바이스 (150) 간의 적어도 하나의 통신 세션을 확립 (예, 참여)하는데 사용될 수 있다. 세션 핸들러 컴포넌트 (140)는 인터페이스 (115)를 통해 통신 세션을 확립하거나 또는 식별할 수 있다. 예를 들어, 제 1 및 제 2 데이터 구조들 (또는 이들에 대응하는 패킷화 데이터 전송들)를 단일 스레드로 병합하거나 또는 연관시키는 액션을 수행한 후, 상기 데이터 처리 시스템 (105)은 상기 데이터 전송들을 서비스 제공자 컴퓨팅 디바이스 (160)에 제공할 수 있다. 또한, 통신 세션의 통신의 일부로서, 상기 서비스 제공자 컴퓨팅 디바이스 (160)는 상기 클라이언트 컴퓨팅 디바이스 (105)로부터 상기 데이터 처리 시스템 (105)을 통해 데이터 패킷들 (또는 다른 데이터 메시지들)을 수신할 수 있다. 예를 들어, 상기 데이터 처리 시스템 (105)은 인바운드 데이터 메시지(inbound data messages)를 수신하고 통신 세션의 일부로서 상기 클라이언트 컴퓨팅 디바이스 (150)로부터 상기 서비스 제공자 컴퓨팅 디바이스 (160)로 라우팅 할 수 있다.
스레드 최적화 컴포넌트 (120)는 제 1 및 제 2 (및 임의의 다른) 데이터 전송들의 데이터 패킷들을 획득하거나 또는 액세스할 수 있다. 예를 들어, 상기 다이렉트 액션 API (135)는 데이터 저장소 (145)에 저장을 위해 상기 전송들(예를 들어, 대응하는 데이터 패킷들)을 제공 할 수 있고, 이들은 스레드 최적화 컴포넌트 (120)에 의하여 검색될 수 있다. 또한, 스레드 최적화 컴포넌트 (120)는 데이터 저장소 (145)를 바이패스하는 다이렉트 액션 API (135) (또는 다른 데이터 처리 시스템 (105) 컴포넌트)로부터의 데이터 전송들의 데이터 패킷들 (또는 다른 프로토콜 기반 구조)을 수신할 수 있다.
스레드 최적화 컴포넌트 (120)는 다수의 액션 데이터 구조들 각각에 대응되는 다수의 데이터 전송들의 데이터 패킷들로부터 정보를 파싱하거나 또는 추출할 수 있다. 예를 들어, 스레드 최적화 컴포넌트 (120)는 제 1 데이터 전송 (또는 대응하는 제 1 데이터 구조)의 데이터 패킷과 제 2 데이터 전송 (또는 대응하는 제 2 데이터 구조)의 데이터 패킷에 휴리스틱 기술(heuristic technique)을 적용하여, 적어도 하나의 시퀀스 종속 파라미터를 결정할 수 있다. 휴리스틱 기술(heuristic technique) 또는 다른 통계 기술은, 데이터 전송들에 의해 지시된 액션들의 시퀀스 종속성을 나타내는 제 1 및 제 2 데이터 전송들 (또는 대응하는 데이터 구조들) 사이의 확률 패턴들의 임계 정도(threshold degree of certainty patterns)를 결정하거나 또는 식별할 수 있다.
시퀀스 종속 파라미터는 상호 동작들 순서, 시간 또는 시퀀스 종속을 갖는 데이터 전송들 (또는 대응하는 액션 데이터 구조들)에 의해 지시된 액션들의 존재 또는 가능성 (예를 들어, 임계 레벨 또는 다른 벤치 마크에 대한 상대성)을 나타낼 수 있다. 상기 시퀀스 종속 파라미터들에 의해 지시되는 시퀀스 종속 동작들 또는 액션들은, 알려진, 제안된, 필수의, 또는 특정 순서로 발생하는 다수의 액션들을 포함할 수 있다. 예를 들어, 집에서 영화관으로 가는 것은, 그 이후 집으로 돌아가는(back home) 것을 포함하는 3개의 시퀀스 종속 동작들 또는 액션들을 포함할 수 있다. 이 예시에서, 제1 액션은 집에서 영화관으로 이동하는 것을 포함한다. 제2 액션은 영화관에서 영화를 보는 것이다. 제3 액션은 영화관에서 집으로 돌아 오는 것을 포함한다.
이러한 3개의 (그리고 아마도 다른) 액션들은 "오케이(OK), 나중에 영화를 보고싶어"라는 입력 오디오 신호에 대응되는 요청들 또는 트리거 키워드들로부터 다이렉트 액션 API (135)에 의해 결정될 수 있다. 이 예시에서, 시퀀스의 제2 액션 (영화 감상)은 제1 액션 (집에서 영화관으로 나가는 것)에 후속하고 종속하며, 제3 액션 (집으로 돌아 오는 것)은 제1 액션 및 제2액션에 후속하고 종속한다. 제 3 액션은 제 2 액션에 후속하고 종속적으로 고려되며, 그렇게하기 위한 의도를 갖음으로서, 데이터 처리 시스템 (105)은 최종 사용자가 집으로 돌아 가기 전에 극장에서 영화를 볼 것인지를 결정하거나 또는 예측한다.
스레드 최적화 컴포넌트 (120)는 시퀀스 종속 파라미터에 기초하여, 2 개 이상의 패킷화된 데이터 전송들 (또는 그 대응하는 액션 데이터 구조들)을 단일 스레드로 병합할 수 있다. 단일 스레드는 다수의 데이터 액션 구조들로부터의 액션들뿐만 아니라 다른 데이터 (예를 들어, 메타 데이터 또는 제 3 자 데이터)를 식별하는 데이터를 포함할 수 있다. 단일 스레드는, 예를 들어 제 1 및 제 2 데이터 전송들과 동일한 포맷으로 패킷화된 (또는 다른 프로토콜 기반의) 형태 일 수 있다. 또한, 상기 단일 스레드는 다이렉트 액션 API (135)에 의해 생성되거나 적어도 하나의 템플릿 (149), 정책 (147) 또는 파라미터 (146)의 포맷을 따르는 데이터 구조 형식일 수 있다. 상기 단일 스레드는 하나 이상의 데이터 전송들 또는 하나 이상의 액션 데이터 구조들과 연관 또는 연결된(association or linking) 액션들을 포함할 수 있다.
데이터 전송들 또는 액션 데이터 구조들은, 서비스 제공자 컴퓨팅 디바이스와의 통신 세션을 통해 액션 데이터 구조들에 의해 지시된 데이터의 전송 전에 단일 스레드를 생성하기 위하여, 스레드 최적화 컴포넌트 (120)에 의해 서로 병합되거나 또는 서로 연관될 수 있다. 이 예시에서, 다이렉트 액션 API (135) 또는 다른 데이터 처리 시스템 (105) 컴포넌트 (예를 들어, 인터페이스 (115))는 단일 스레드의 병합 또는 생성 후, 단일 스레드에 의해 지시된 데이터의 적어도 일부를 처음으로 서비스 제공자 컴퓨팅 디바이스 (160)에 전송할 수 있다. 예를 들어, 단일 스레드의 생성에 앞서, 상기 데이터 처리 시스템 (105)은 제 1 또는 제 2 (또는 임의의) 데이터 구조와 관련된 데이터를 지연시키거나, 보류를 막거나(prevented withheld), 또는 전송하지 않을 수 있다. 일부 예들에서는, 개개 데이터 구조들에 의해 지시된 데이터의 적어도 일부가 단일 스레드의 생성에 앞서 데이터 처리 시스템 (105)에 의해 그리고 데이터 처리 시스템 (105)으로부터 서비스 제공자 컴퓨팅 디바이스 (160)로 제공될 수 있다.
스레드 최적화 컴포넌트 (120)는 시퀀스 종속 파라미터에 기초하여, 데이터 전송들 (또는 대응하는 액션 데이터 구조들)을 단일 스레드로 병합하거나 또는 통합 또는 연관시킬 수 있다. 예를 들어, 제 1 데이터 전송 (및 제 1 데이터 구조)은 제 1 입력 오디오 신호인, "오케이(OK), 오늘 밤에 저녁 식사를 하러 가고 싶어"와 연관된 액션들을 나타낼 수 있으며, 제 2 데이터 전송 (및 제 2 데이터 구조)은 제2 입력 오디오 신호인, "오케이(OK), 나중에 영화를 보고 싶어." 와 연관된 액션들을 나타낼 수 있다. 제 1 및 제 2 (또는 임의의) 입력 오디오 신호들은 순차적으로 이루어지고 (1 분 미만), 시간적으로 분리 될 수 있으며(예를 들어, 1 분 초과), 동일하거나 상이한 클라이언트 디바이스들 (150)로부터 발생할 수 있다. 스레드 최적화 컴포넌트 (120)는 이러한 정보를 나타내는 데이터 패킷들 (또는 다른 데이터)을 획득 할 수 있고, 적어도 하나의 시퀀스 종속 파라미터를 결정할 수 있다. 예를 들어, 상기 시퀀스 의존 파라미터는 영화를 보는 액션 후에 영화관에서 집으로 돌아 오는 액션, 또는 저녁 식사를 먹은 후에 영화보기가 발생하거나 또는 그것을 예측하는 액션을 나타낼 수 있다.
단일 스레드 (임의의 데이터 구조 또는 포맷에서)는, 일련의 액션들과 같은 하나 이상의 입력 오디오 신호들(또는 대응하는 데이터 구조들 또는 데이터 전송들)에 대응하는 시퀀스 종속 동작들의 세트를 나타낼 수 있다. 상기 스레드는 제1 액션, 제2 액션, 제3액션과 같이 두 개 이상의 액션들을 포함할 수 있다. 예를 들어, 제1 입력 오디오 신호인 "오케이(OK), 오늘 밤에 저녁 식사를 하러 가고 싶어"와 제2 입력 오디오 신호인 "오케이(OK), 나중에 영화를 보고 싶어"의 병합(merger)은, 저녁 식사 및 영화 관람에 대한 관심을 나타내는 적어도 하나의 요청과, 예를 들어 이동수단이 필요함을 나타내는 "가다(go)"에 해당하는 적어도 하나의 트리거 키워드를 나타낼 수 있다. 스레드 최적화 컴포넌트 (120)는 액션들 간의 종속성(dependency)은 적어도 하나의 시퀀스, 시간 제약(temporal), 또는 동작들의 순서를 나타내는 적어도 하나의 시퀀스 종속 파라미터를 식별할 수 있고, 다수의 입력 오디오 신호들 (또는 대응하는 템플릿 기반 데이터 구조들 또는 패킷/프로토콜 기반 데이터 전송들)을 결합하기 위한 단일 스레드를 생성할 수 있다. 스레드 최적화 컴포넌트 (120)는 저녁식사 액션 (제 1 액션), 영화보기 액션 (제 2 액션), 및 집으로 이동 액션 (제 3 액션)과 같은 적어도 3 개의 액션들을 나타내는 단일 스레드를 생성할 수 있다. 이 예시에서, 상기 스레드 최적화 컴포넌트 (120)는, 상기 요청들 또는 트리거 키워드들로부터, 3 개의 액션들을 나타내는 다수의 개별 입력들로부터 단일 스레드를 생성한다. 상기 단일 스레드는 저녁식사 액션을 위한 처음의 이동수단(initial transport)과 같은 다른 액션들을 포함 할 수 있다.
데이터 처리 시스템 (105) 또는 예를 들어 스레드 최적화 컴포넌트 (120)와 같은 데이터 처리 시스템 (105) 의 컴포넌트는 스레드의 액션들이 시퀀스 종속 동작들인지를 판단할 수 있다. 예를 들어, 스레드 최적화 컴포넌트는 영화를 보는 제2 액션이 저녁 식사를 하는 제1 액션 이후에 이어지고, 영화관에서 집으로 가는 제3액션은 영화를 보는 제2 액션 이후임을 판단할 수 있다. 스레드 최적화 컴포넌트 (120)는 데이터 저장소 (145) 내의 파라미터들 (146) 또는 정책들 (147)에 액세스하여, 시퀀스 종속 동작 액션들의 순서를 결정하거나 또는 추정할 수 있다. 예를 들어, 파라미터들 (146) 또는 정책들 (147)은 이벤트 액션 (예를 들어, 영화 감상) 이후에 이동수단 액션 (예를 들어, 택시를 타고 집으로 가는 액션)이 발생할 수 있음을 나타낼 수 있다.
콘텐츠 선택기 컴포넌트 (125)는 단일 스레드의 임의 액션들에 대한 표시들(indications)을 획득할 수 있다. 예를 들어, 스레드 최적화 컴포넌트 (120)는 제 3 (또는 임의의 다른) 액션을 나타내는 단일 스레드의 적어도 일부를 (예를 들어, 데이터 저장소 (145)를 통해) 직접 또는 간접적으로 콘텐츠 선택기 컴포넌트 (125)에 제공할 수 있다. 상기 콘텐츠 선택기 컴포넌트 (125)는 데이터 저장소 (145)로부터 이러한 정보를 획득할 수 있으며, 이 정보는 콘텐츠 데이터 (148)의 일부로 저장될 수 있다. 상기 제 3 동작의 표시(indication)는 콘텐츠 선택기 컴포넌트 (125)에게, 영화관의 위치에서 클라이언트 컴퓨팅 디바이스 (150)에 의해 결정 또는 지시된 위치, 예를 들어 최종 목적지까지 차량(ride)과 같은 교통수단(transportation)이 필요함을 알려줄 수 있다.
콘텐츠 선택기 컴포넌트 (125)는 적어도 하나의 이전 액션의 발생에 앞서서 스레드에서의 후속 액션의 표시들(indications)을 획득할 수 있다. 예를 들어, 콘텐츠 선택기 컴포넌트 (125)는 영화관에서 영화를 감상하기(제 2 액션) 전에, 또는 입력 오디오 신호를 입력한 사람이 레스토랑에서 저녁식사를 하기(제1액션) 전에, 제 3 액션 (예를 들어, 영화관에서 차를 타는 것(ride)에 대한 필요성)의 표시를 수신할 수 있다. 콘텐츠 선택기 컴포넌트 (125)는 상기 스레드의 적어도 하나의 액션이 완료되기 전, 스레드에서 적어도 하나의 액션의 표시들을 획득할 수 있다.
콘텐츠 선택기 컴포넌트 (125)에 의해 수신된 정보, 예를 들어, 시퀀스 종속 스레드에서 적어도 하나의 이전 액션(prior action)의 발생 전에 수행되는 제 3 동작의 표시로부터 상기 콘텐츠 선택기 컴포넌트 (125)는 적어도 하나의 콘텐츠 아이템을 식별할 수 있다. 콘텐츠 아이템은 제3 (또는 다른) 액션에 대한 응답 또는 그와 관련된 것일 수 있다. 예를 들어, 콘텐츠 아이템은 교통수단의 필요성을 나타내는 제 3 액션에 대한 응답으로, 카 공유 회사(car share company)의 서비스들을 제공하는 오디오 메시지를 포함할 수 있다. 콘텐츠 선택기 컴포넌트 (125)는, 예를 들어 콘텐츠 데이터 (148)로부터 콘텐츠 아이템을 선택하거나 또는 식별하기 위해 데이터 저장소 (145)에 질의할 수 있다. 또한, 콘텐츠 선택기 컴포넌트(125)는 콘텐츠 제공자 컴퓨팅 디바이스 (155)로부터 콘텐츠 아이템을 선택할 수 있다. 예를 들어, 데이터 처리 시스템 (105)으로부터 수신된 질의에 대한 응답으로, 상기 콘텐츠 제공자 컴퓨팅 디바이스 (155)는 클라이언트 컴퓨팅 디바이스 (150)에 의한 최종 출력을 위해 콘텐츠 아이템을 데이터 처리 시스템 (105) (또는 그것의 컴포넌트)에 제공할 수 있다.
오디오 신호 생성기 컴포넌트(130)는 제 3 (또는 임의의) 다른 액션에 응답하여 콘텐츠 아이템을 포함하는 출력 신호를 생성하거나 획득 할 수 있다. 예를 들어, 상기 데이터 처리 시스템 (105)은 오디오 신호 생성기 컴포넌트를 실행하여 콘텐츠 아이템에 대응되는 출력 신호를 생성하거나 발생할 수 있다. 상기 데이터 처리 시스템 (105)의 인터페이스 (115)는 예를 들어 통신 세션의 일부로서, 출력 신호를 포함하는 하나 이상의 데이터 패킷들을 컴퓨터 네트워크 (165)를 통해 클라이언트 컴퓨터 (150)에 제공하거나 또는 전달할 수 있다. 상기 인터페이스 (115)는 예를 들어 데이터 패킷들을 사용하여, 정보를 수신하고 전송하도록 설계, 구성, 또는 동작될 수 있다. 상기 인터페이스 (115)는 예를 들어 네트워크 프로토콜과 같은 하나 이상의 프로토콜들을 사용하여 정보를 수신하고 전송할 수 있다. 상기 인터페이스 (115)는 하드웨어 인터페이스, 소프트웨어 인터페이스, 유선 인터페이스, 또는 무선 인터페이스를 포함할 수 있다. 인터페이스 (115)는 하나의 포맷으로부터 또 다른 포맷으로 데이터를 변환하거나 포맷하는 것을 용이하게 할 수 있다. 예를 들어, 상기 인터페이스 (115)는 시스템 (100)의 소프트웨어 컴포넌트들과 같은 다양한 컴포넌트들 사이에서 통신하기 위한 정의들(definitions)을 포함하는 애플리케이션 프로그래밍 인터페이스를 포함할 수 있다.
예를 들어, 상기 데이터 처리 시스템 (105)은 데이터 저장소 (145) 또는 오디오 신호 생성기 컴포넌트 (130)로부터 클라이언트 컴퓨팅 디바이스 (150) 로 출력 신호를 제공할 수 있다. 또한, 상기 데이터 처리 시스템 (105)은 콘텐츠 제공자 컴퓨팅 디바이스 (155), 서비스 제공자 컴퓨팅 디바이스 (160)가 데이터 패킷 전송들을 통해, 상기 출력 신호를 클라이언트 컴퓨팅 디바이스 (150)에 제공하도록 지시할 수 있다. 상기 출력 신호는, 상기 데이터 처리 시스템 (105) (또는 다른 컴퓨팅 디바이스)로부터 상기 클라이언트 컴퓨팅 디바이스 (150)로, 하나 이상의 데이터 패킷들 (또는 다른 통신 프로토콜)로써 획득, 생성, 변환, 또는 전송될 수 있다.
상기 콘텐츠 선택기 컴포넌트 (125)는 후속 액션에 대응되는 활동의 발생에 앞서서 (예를 들어, 즉시 필요성에 앞서서) 후속 액션을 위한 콘텐츠 아이템을 선택하기 위해, 단일 스레드에 의해 지시된 일련의 시퀀스 종속 동작들에서 후속 액션으로 스킵(skip)할 수 있다. 예를 들어, 제 1 이전 액션에 대한 콘텐츠 아이템을 선택하기 전에 제 2 후속 액션에 대한 콘텐츠 아이템을 선택하기 위해 이후의 일련의 액션을 스킵함으로써, 데이터 처리 시스템 (105)은 후속 액션들을 위한 콘텐츠 아이템들을 선택하기 위해 이전 액션과 관련된 정보를 먼저 처리할 필요가 없다. 이는, 제 2 액션에 대한 콘텐츠 아이템을 선택하기 전에 (제 1 동작에 대한) 콘텐츠 아이템을 선택하는 것과 관련된 데이터 전송들의 프로세서 이용, 전력 소비 및 대역폭 사용을 감소시킨다.
상기 콘텐츠 선택기 컴포넌트 (125)는 실시간 콘텐츠 선택 프로세스의 일부로서 (후속 또는 이후의) 액션을 위한 콘텐츠 아이템을 선택할 수 있다. 예를 들어, 상기 콘텐츠 아이템은 입력 오디오 신호에 대한 직접 응답으로 대화방식의 오디오 출력으로 전달하기 위해 클라이언트 컴퓨팅 디바이스에 제공될 수 있다. 실시간 콘텐츠 선택 프로세스는 콘텐츠 아이템을 식별하고 그 콘텐츠 아이템을 클라이언트 컴퓨팅 디바이스 (150)에 제공하기 위해, 입력 오디오 신호의 시간으로부터 1 분 이내에 발생할 수 있고 실시간으로 고려될 수 있다.
상기 출력 신호는 콘텐츠 제공자 컴퓨팅 디바이스 (155) 에 대응되는 콘텐츠 아이템 (또는 서비스 제공자 컴퓨팅 디바이스 (160)에 대응되는 데이터)에 해당하고, 예를 들어, 오디오 신호 생성기 컴포넌트 (130)에 의해 획득 또는 생성되며 인터페이스 (115)와 컴퓨터 네트워크 (165)를 통해 클라이언트 컴퓨팅 디바이스 (150)에 전송되어, 상기 클라이언트 컴퓨팅 디바이스 (150)로 하여금 오디오 드라이버 (153)를 실행하여 출력 신호에 대응되는 음파(acoustic wave)를 생성하도록 스피커 (154)를 구동하게 한다. 음파(acoustic wave)는 후속 (예를 들어, 제2 또는 제3의) 액션을 위한 콘텐츠 아이템 또는 다른 데이터의 워드들 또는 그에 대응되는 워드들을 포함할 수 있다. 또한, 상기 콘텐츠 아이템에 대응되는 출력 신호는 입력 오디오 신호의 소스인 클라이언트 컴퓨팅 디바이스 (150) 또는 다른 클라이언트 컴퓨팅 디바이스 (150) (예를 들어, 웨어러블 디바이스 컴퓨팅 디바이스) 상에서 렌더링되는 논-오디오 콘텐츠 아이템들을 오디오 요소들 없이 렌더링할 수 있는 텍스트 또는 이미지 메시지로서 포함할 수 있다.
상기 데이터 처리 시스템 (105)은 입력 오디오 신호에 대한 직접 또는 실시간 응답의 액션에 응답하여 콘텐츠 아이템 또는 다른 데이터를 포함하는 출력 신호를 제공함으로써, 데이터 처리 시스템 (105)과 클라이언트 컴퓨팅 디바이스 (150) 간의 통신 세션의 일부를 구성하는 패킷 기반 데이터 전송들이 컴퓨터 네트워크 (165)를 통해 사람간의 실시간 대화처럼 느낄 수 있게 한다. 이러한 패킷 기반 데이터 전송 통신 세션은 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160)를 더 포함할 수 있다.
콘텐츠 선택기 컴포넌트 (125)는 시퀀스 내의 임의의 이전 액션에 대한 임의의 콘텐츠 아이템을 선택하기 전에, 액션들의 시퀀스 종속 세트에서 제 2 액션(또는 제1액션이 아닌 임의의 액션)에 응답하여 제공된 콘텐츠 아이템들을 선택할 수 있다. 이는, 이전 액션들에 대응되는 데이터 중 적어도 일부를 처리할 필요 없게 하여, 콘텐츠 아이템들이 액션들의 시퀀스 순서와 일치하는 순서로 선택되었을 때 발생하는 것보다 처리 동작들의 개수를 감소시킨 상태에서 제 2 콘텐츠 아이템이 선택되게 한다. 이전 (예를 들어, 제 1 및 제 2) 액션들에 대한 콘텐츠 아이템들은, 예를 들어 제 2 액션에 대한 콘텐츠 아이템의 선택 이후에 선택될 수도 있고 또는 선택되지 않을 수도 있다.
콘텐츠 선택기 컴포넌트 (125)는 동일 스레드의 하나 이상의 요청들의 주제와 다른 주제를 나타내는 스레드의 적어도 하나의 트리거 키워드에 기초하여, (예를 들어, 제 2 액션에 대한) 콘텐츠 아이템을 선택할 수 있다. 예를 들어, 단일 스레드의 요청은 저녁 식사 요청의 주제 (첫 번째 작업) 및 영화 요청의 주제 (두 번째 작업)를 나타낼 수 있다. 이 주제는 어떠한 이동수단(transportation) 요청도 나타내지 않는다. 그러나, NLP 컴포넌트 (110) 또는 스레드 최적화 컴포넌트 (120) (또는 다이렉트 액션 API (135)의 일부로서 실행되는 다른 데이터 처리 시스템 (105) 컴포넌트들)는 트리거 키워드인 "가다(go)" "가고(go to)" 또는 "가기 위해(to go to)"를 식별할 수 있고, 트리거 키워드의 적어도 일부에 기초하여 이동수단의 요청을 결정할 수 있다. 따라서, 데이터 처리 시스템 (105)은 입력 오디오 신호의 주 요청(primary request) 또는 주제가 아닌 보조 요청들(secondary requests)에 해당하는 입력 오디오 신호로부터 액션들을 추론 할 수 있다.
상기 데이터 처리 시스템 (105)은 콘텐츠 아이템을 포함하는 출력 신호의 전송을 차단하거나 지연시킬 수 있다. 예를 들어, 인터페이스 (115) 또는 다이렉트 액션 API (135)를 통해 실행되는 스크립트는 콘텐츠 아이템에 대응하는 출력 신호나 트리거링 이벤트(triggering event)까지 단일 스레드의 액션을 포함하는 데이터 패킷들의 전송을 차단할 수 있다. 상기 트리거링 이벤트(triggering event)는 예를 들어, 영화의 예정된 종료 시간과 같이 스레드에서의 이전 액션의 발생과 일치하는 시간 또는 2 시간과 같은 미리 정해진 시한의 만료(expiration)를 포함할 수 있다. 또한, 상기 트리거링 이벤트(triggering event)는 클라이언트 컴퓨팅 디바이스 (150)로부터 데이터 처리 시스템 (105)에 의해 수신된 인증 표시(authorization indication)를 포함할 수 있다. 상기 인증 표시(authorization indication)는 스레드와 관련되나 입력 오디오에 후속하여 데이터 처리 시스템 (105)에 의해 수신되는 후속 오디오 입력(subsequent audio input), 또는 텍스트 기반 또는 다른 비청각 신호(non-audible signal)로서 발생하거나, 또는 클라이언트 컴퓨팅 디바이스 (150)에 의한 콘텐츠 아이템들의 수신을 인가하는 클라이언트 컴퓨팅 디바이스 (150)의 설정 표시를 포함할 수 있다.
또한, 상기 데이터 처리 시스템 (105)은 처리 이용을 최적화하기 위해 스레드의 제 2 액션 또는 제2액션의 후속 액션과 관련된 콘텐츠 아이템의 전송을 지연시킬 수 있다. 예를 들어, 상기 데이터 처리 시스템 (105)은 데이터 센터 사용의 오프-피크(off-peak) 또는 논- 피크(non-peak) 구간까지 콘텐츠 아이템 전송을 지연시킬 수 있는데, 이는 피크 대역폭 사용과, 열 출력 또는 냉각 요건들(cooling requirements)을 감소시킴으로써 데이터 센터의 보다 효율적인 이용이라는 결과를 가져온다. 또한, 상기 데이터 처리 시스템 (105)은 네트워크 (165) 또는 데이터 처리 시스템(105)을 포함하는 데이터 센터의 데이터 센터 이용률 또는 대역폭 메트릭(bandwidth metrics) 또는 요건들에 기초하여, 자동차 서비스를 주문하는 것과 같은 콘텐츠 아이템과 관련된 컨버전(conversion)이나 다른 활동을 개시 할 수 있다.
콘텐츠 아이템들은 스레드의 액션들에 대응할 수 있고, 콘텐츠 선택기 컴포넌트 (125)는 스레드에서 하나, 둘 이상, 또는 모든 액션들에 대한 콘텐츠 아이템을 선택할 수 있다. 스레드 최적화 컴포넌트 (120)는, 예를 들어 "저녁 식사"(제 1 액션) "영화"(제 2 액션) 및 "영화를 위한 장소로 이동(transport)"(제 3 액션)의 액션들의 시퀀스 종속 스레드를 식별할 수 있다.
예를 들어, 단일 스레드에 기초하여, 오디오 입력 신호에 대한 응답으로, 클라이언트 컴퓨팅 디바이스 (150)에서의 렌더링을 위해 제 3 액션에 대한 콘텐츠 아이템이 제공될 수 있는데, "영화관에서 집으로 차를 타고 가시겠습니까?"라는 오디오 응답으로 제공될 수 있다. 데이터 처리 시스템 (105)은, 이러한 렌더링에 이어서 또는 그 이전에, 제1액션(저녁 식사)을 위해 예를 들어 "오늘 밤 7시에 개장한 이탈리안 레스토랑 - 관심있나요?"와 같은 콘텐츠 아이템을 선택 또는 제공할 수 있고, 제2액션 (영화보기)을 위해 예를 들어 "시내 극장에서 밤 9시 영화 티켓을 원하십니까?"와 같은 또 다른 콘텐츠를 선택 또는 제공할 수 있다. 데이터 처리 시스템 (105)은 클라이언트 컴퓨팅 디바이스 (150)에서 오디오 출력 콘텐츠 아이템들로 렌더링을 위해 입력 오디오 신호에 응답하는 이들 콘텐츠 아이템들을 제공할 수 있다 (이는 콘텐츠 제공자 컴퓨팅 디바이스 (155)가 제공하도록 지시하는 것을 포함한다). 데이터 처리 시스템 (105)은 인터페이스 (115)를 통해, 임의의 순서로 이들 콘텐츠 아이템을 선택하거나 클라이언트 컴퓨팅 디바이스 (150)에 제공할 수 있다. 예를 들어, 다른 스레드의 이전 액션들에 대응하는 콘텐츠 아이템들 이전에, 제 3 (예를 들어, 마지막) 액션에 대한 콘텐츠 아이템이 먼저 선택되거나 제공될 수 있다.
데이터 처리 시스템 (105)은 콘텐츠 아이템인 "영화관에서 집으로 차를 타고 가시겠습니까?" 에 대한 응답을 수신할 수 있다. 상기 응답은 최종 사용자에 의해 클라이언트 컴퓨팅 디바이스 (150)에 입력되고 데이터 처리 시스템(105)에 의해 수신되는 "네(yes please )"와 같은 입력 오디오 신호를 포함할 수 있다. 데이터 처리 시스템 (105) 또는 그것의 컴포넌트 (예를 들어, 스레드 최적화 컴포넌트)는 단일 스레드의 일부로 응답(response)을 포함할 수 있다. 다이렉트 액션 API (135)는 이러한 응답에 기초하여, (카 공유 회사와 같은 콘텐츠 아이템과 관련될 수 있는) 서비스 제공자 컴퓨팅 디바이스 (160)와 통신하여 영화가 끝나는 시점에 영화관의 위치로 택시 또는 라이드 공유 차량을 주문할 수 있다.데이터 처리 시스템 (105)은, 클라이언트 컴퓨팅 디바이스 (150)와 통신하여, 데이터 저장소 (145)로부터 또는 서비스 제공자 컴퓨팅 (예를 들어, 서비스 제공자 컴퓨팅 디바이스 (160))나 콘텐츠 제공자 컴퓨팅 디바이스 (155)와 같은 다른 소스들로부터, 이러한 위치 또는 시간 정보를 데이터 패킷 (또는 다른 프로토콜) 기반 데이터 메시지의 일부로서 획득할 수 있다. 이러한 주문 (또는 다른 컨버전(conversion))의 확인은 데이터 처리 시스템 (105)으로부터 클라이언트 컴퓨팅 디바이스 (150) 에 오디오 통신으로서 제공될 수 있으며, 이는 "오케이, 영화관 밖에서 오후 11시에서 당신을 위한 차가 기다리고 있을 거에요."와 같은 오디오 출력을 렌더링하기 위해 클라이언트 컴퓨팅 디바이스 (150)를 구동하는 데이터 처리 시스템 (105)에서 출력 신호의 형태로 제공된다. 데이터 처리 시스템 (105)은 다이렉트 액션 API (135)를 통해, 서비스 제공자 컴퓨팅 디바이스(160)와 통신하여 차량의 주문을 확인할 수 있다.
데이터 처리 시스템 (105)은 콘텐츠 아이템(예를 들어, "영화관에서 집으로 차를 타고 가고 싶습니까?")에 대한 응답(예를 들어, "네?)을 획득할 수 있고, 패킷 기반 데이터 메시지를 서비스 제공자 NPL 컴포넌트 (161) (또는 서비스 제공자 컴퓨팅 디바이스의 다른 컴포넌트)에 라우팅할 수 있다. 이러한 패킷 기반 데이터 메시지는, 서비스 제공자 컴퓨팅 디바이스 (160)로 하여금 예를 들어 영화관 밖에서 차량 픽업 예약을 하기 위한 컨버전(conversion)을 야기할 수 있다. 이러한 컨버전(conversion)-또는 확인된 주문- (또는 스레드의 임의의 다른 액션의 임의의 다른 컨버전)은 예를 들어 영화 완료 전과 같이 스레드의 하나 이상의 액션들이 완료되기 전뿐만 아니라, 예를 들어 저녁 식사 후와 같이 스레드의 하나 이상의 액션들의 완료 후에 발생할 수 있다.
스레드에서 후속 액션을 위한 콘텐츠 아이템에 대한 응답, 예를 들어 시퀀스 종속 스레드에서 제3 및 마지막 액션에 대한 콘텐츠 아이템으로 " 영화관에서 집으로 차를 타고 가고 싶습니까?" 에 대한 "예(yes please)"응답에 기초하여, 상기 데이터 처리 시스템 (105)은 컨버전 또는 액션을 개시할 수 있다. 이것은 최종 사용자가 예를 들어, 저녁 식사 전이나 영화가 끝나기 전과 같이 스레드와 관련된 임의의 활동들을 시작하기 전에 발생할 수 있다. 데이터 처리 시스템 (105)의 프로세서들은, 다이렉트 액션 API (135)를 호출하여 카 공유 서비스로부터 차량을 주문하는 스크립트들을 실행할 수 있다. 다이렉트 액션 API (135)는 클라이언트 컴퓨팅 디바이스 (150)로부터 최종 사용자의 동의하에 수신된 데이터뿐만 아니라 데이터 저장소 (145)로부터 콘텐츠 데이터 (148) (또는 파라미터들 (146) 또는 정책들 (147))를 획득하여, 위치, 시간, 사용자 계정, 카 공유 서비스에서 차량을 예약하기위한 기타 정보를 결정할 수 있다. 또한, 데이터 처리 시스템 (105)은 다이렉트 액션 API (135)를 이용하여 서비스 제공자 컴퓨팅 디바이스 (160)와 통신하여, 이 예시에서 카 공유 픽업 예약을 수행하게 함으로써 컨버전(conversion)을 완료할 수 있다.
다이렉트 액션 API (135)는, 스레드와 관련된 제 1 입력 오디오 신호(예를 들어, "오케이(OK), 오늘 밤에 저녁을 먹고 그 다음에 영화를 보러 가고 싶어?)가 데이터 처리 시스템 (105)에 의해 수신되면 특정 시간 주기 중 임의의 시간에 스레드의 액션을 달성하기 위하여 컨버전 또는 활동을 개시할 수 있다. 이는 스레드의 액션들 중 하나가 완료된 후 임계 시간 까지 (예를 들어, 영화감상인 제2액션이 완료된 후 15 분이 될 때까지) 이루어질 수 있다. 데이터 처리 시스템 (110)은 최종 사용자가 스레드의 액션들 완료했다는 표시(indication), 예를 들어 집으로 돌아 왔거나 또는 더 이상 영화관에 위치하지 않는다는 표시와 같은 다른 인자들(factors)에 기초하여 이 시간 주기의 종료를 결정할 수 있다. 또한, 데이터 처리 시스템 (105)은 스레드가 취소되거나 휴면 중이거나(dormant) 또는 최종 사용자가 스레드의 액션들을 취소 또는 완료했다는 표시를 클라이언트 컴퓨팅 디바이스 (150)로부터 (네트워크 (165)를 통해 전송된 데이터 메시지)로부터 획득할 수 있다.
다이렉트 액션 API (135)는 스레드의 다른 액션들의 완료 또는 완료 시간에 기초하여, 스레드의 액션을 달성하기 위한 컨버전 또는 활동을 개시 할 수 있다. 예를 들어, 상기 데이터 처리 시스템 (105)은 스레드에서 이전 액션의 최종 임계 시간 내에 직접 또는 서비스 제공자 컴퓨팅 디바이스 (160)와 통신하여 상품 또는 서비스 (카 쉐어 픽업)를 주문할 수 있다. 데이터 처리 시스템 (105)은, 영화(제 2 액션) 의 예정된 또는 실제 종료 이전 또는 이후 5 분 (또는 다른 시간 동안) 이내에 최종 사용자가 픽업할 자동차를 영화관에 보내기(후속, 또는 제3액션) 위하여, 카 공유 서비스를 확인하거나 또는 주문할 수 있다. 이는, 이 시간 동안 최종 사용자 컴퓨팅 디바이스 (150)로부터 수신된 입력이 없거나 또는 이 시간 동안 최종 사용자 컴퓨팅 디바이스 (150)로부터 수신된 프롬프트에 응답하여 발생할 수 있다.
다이렉트 액션 API (135)는 임의의 순서로 스레드의 시퀀스 종속 동작들과 관련된 컨버전들(conversions) 또는 다른 활동을 개시할 수 있다. 예를 들어, 상기 다이렉트 액션 API (135) (또는 다른 데이터 처리 시스템 (105) 컴포넌트)는 시퀀스에서 앞서는 스레드에 대응되는 활동을 개시하기 전 (예를 들어, 저녁 식사를 예약하기 전이나 영화 티켓을 주문하기 전)에 마지막 액션 (예를 들어, 택시를 주문하는 것과 같이 3개의 액션 스레드에서의 제3 액션)에 대응하는 활동을 개시 할 수 있다. 이 예시에서, 데이터 처리 시스템 (105)은 후속 (예를 들어, 제 3) 액션에 대한 활동의 개시에 후속하는 이전 액션 (예를 들어, 제2 액션)에 대한 활동을 개시한다.
콘텐츠 선택기 컴포넌트 (125)는 다수의 콘텐츠 선택 프로세스들의 결과로부터 발생되는 다수의 콘텐츠 아이템들을 식별, 선택, 또는 획득할 수 있다. 상기 콘텐츠 선택 프로세스는, 예컨대 스레드를 수반하는 데이터 처리 시스템 (105)과 클라이언트 컴퓨팅 디바이스 (150) 간의 동일한 대화, 통신 세션 또는 일련의 통신 세션들의 일부로써 실시간으로 이루어질 수 있다. 상기 대화(conversation)에는 예를 들어 수 시간 또는 수일 간격으로 분리된 비동기 통신들이 포함될 수 있다. 대화 또는 통신 세션은 제 1 입력 오디오 신호의 수신으로부터, 스레드의 최종 동작이 추정된 또는 알려진 결론에 이르거나, 스레드의 종료 표시가 데이터 처리 시스템 (105)에 수신될 때까지 지속될 수 있다. 예를 들어, 3 개의 액션들 (예 : 저녁 식사, 영화보기, 집으로 이동)을 포함하는 스레드에 대해, 콘텐츠 선택기 컴포넌트 (125)는 각 액션에 대하여 적어도 하나의 콘텐츠 아이템을 선택할 수 있다. 콘텐츠 아이템 선택기 컴포넌트(125)는 각 액션에 대해 서로 다른 콘텐츠 선택 프로세스의 결과들을 런(run)하거나 획득할 수 있다. 콘텐츠 선택 프로세스에서, 콘텐츠 제공자 컴퓨팅 디바이스 (150)는 콘텐츠 선택기 컴포넌트 (125)에 의한 선택을 위해 콘텐츠 아이템들을 지정할 수 있다. 적어도 3 개의 액션들을 포함하는 스레드에 대해, 콘텐츠 아이템 선택기 컴포넌트는 제 1 콘텐츠 선택 프로세스를 통해 제 1 액션에 대한 제1 콘텐츠 아이템을, 제 2 콘텐츠 선택 프로세스를 통해 제 2 액션에 대한 제 2 콘텐츠 아이템을, 그리고 제 3 콘텐츠 선택 프로세스를 통한 제 3 액션에 대한 제 3 콘텐츠 아이템을 선택하거나 또는 식별할 수 있다. 스레드의 활성 시간주기 동안 클라이언트 컴퓨팅 디바이스 (150)에 의한 렌더링을 위해, 이들 콘텐츠 아이템들을 제공하는 데이터 처리 시스템 (105)이 실시간으로 동작하는 것으로 간주될 수 있다. 이 예에서, 콘텐츠 선택 프로세스들 및 콘텐츠 아이템들의 렌더링은 실시간으로 발생한다.
데이터 처리 시스템 (105)은 콘텐츠 아이템들과 연관된 액션들을 취소할 수 있다. 예를 들어, 최종 사용자는 카 서비스를 주문한 다음 영화를 보았지만 집으로 돌아가거나 또는 자동차를 집에 가져가는 대신 디저트를 하러갈 수도 있다. 예를 들어, 최종 사용자는 카 서비스를 주문한 다음 영화를 보았지만 집으로 돌아가거나 또는 자동차를 집에 가져가는 대신 디저트를 하러갈 수도 있다. NLP 컴포넌트 (110)는 예를 들어 하나 이상의 패킷 기반 데이터 메시지들로서 이러한 입력 오디오 신호를 수신할 수 있고, 이 입력 오디오 신호가 기존의 스레드 (예를 들어, 저녁 식사, 영화보기, 집으로 이동)에 관한 것이며 동일한 대화 또는 통신의 일부임을 결정할 수 있다. 예를 들어, NLP 컴포넌트 (110) (또는 다른 데이터 처리 시스템 (105) 컴포넌트)는 데이터 저장소 (145)의 콘텐츠 데이터 (148)로부터 스레드의 과거, 현재 또는 예정된 액션들과 같은 시간 데이터, 위치 데이터 및 기존의 스레드 데이터를 평가하여, 입력 오디오 신호가 기존의 스레드와 관련이 있는지를 결정할 수 있다. 예를 들어, 상기 NLP 컴포넌트 (110)는 "탈 것(ride)" 요청 또는 "취소(cancel)" 라는 트리거 키워드에 기초하여, "집까지 태워주기 취소(cancel my ride home)"라는 입력 오디오 신호가 "영화관에서 집까지 태워드릴까요?" 라는 기존 스레드의 제3액션에 대응되는 콘텐츠 아이템과 관련된다고 결정할 수 있다. 다이렉트 액션 API (135) (또는 다른 컴포넌트)는 데이터 처리 시스템 (105)로 하여금 인터페이스 (115)를 통해 서비스 제공자 컴퓨팅 디바이스 (160)와 통신하도록 하여, 영화가 끝나면 영화관 밖에서 차량이 최종 사용자를 기다리는 카 공유 서비스 또는 택시에 대한 주문을 취소할 수 있다.
NLP 컴포넌트 (135)는 스레드의 임의 액션이 완료되기 이전 또는 이후에 스레드의 액션을 취소하기 위해 데이터 패킷 또는 다른 프로토콜 기반 메시지를 수신할 수 있다. NLP 컴포넌트 (135)는 스레드의 이전 액션에 의해 트리거된 시간 간격 내에서 스레드의 액션을 취소하기 위해, 데이터 메시지 (인바운드 오디오 신호)를 클라이언트 컴퓨팅 디바이스 (150)로부터 수신할 수 있다(또는, 데이터 저장소 (145)로부터 획득할 수 있다). 예를 들어, 저녁 식사, 영화, 이동(transport)이라는 3개의 액션들을 포함하는 시퀀스 종속 스레드에서, 상기 데이터 처리 시스템 (105)은 영화가 끝나기 5 분 내에 (또는 다른 시간 동안) 이동수단(transport)의 취소 데이터 메시지를 수신할 수 있다. 데이터 처리 시스템 (105)은 스레드의 액션과 관련된 상품 또는 서비스의 확인을 촉구할 수 있다. 예를 들어, 제 1 액션과 제 2 액션 사이의 시간 동안 (예를 들어, 저녁 식사 후 영화보기 전), 데이터 처리 시스템 (105)은 클라이언트 컴퓨팅 디바이스 (150)에 데이터 메시지를 전송할 수 있고, 이는 클라이언트 컴퓨팅 디바이스 (150)에서 렌더링되어 "영화가 끝난 후에 자동차가 당신을 기다리고 있음을 확인하세요"라는 오디오 또는 텍스트 메시지를 출력할 수 있다. 데이터 처리 시스템 (105)은 "예, 확인했어요"또는 "아니오, 차량 취소"와 같은 응답을 수신할 수 있다. 이 응답은 스레드의 일부로 포함될 수 있다. 다이렉트 액션 API (135)는 스크립트를 실행하여 이 정보를 처리 할 수 있고, 서비스 제공자 컴퓨팅 디바이스 (160)와 통신하여 확인 또는 취소를 표시할 수 있다.
도면들 중 도 1 및 도 2를 참조하면, 상기 스레드 최적화 컴포넌트 (120)는 시퀀스 종속 파라미터에 기초하여, 적어도 하나의 단일 스레드 데이터 구조 (200)를 생성할 수 있다. 단일 스레드 데이터 구조 (200)는 패킷 기반 아키텍처 (또는 다른 포맷)를 포함할 수 있고 적어도 하나의 헤더 (205)를 포함할 수 있다. 헤더 (205)는 데이터 처리 시스템 (105)을 식별하는 보충 데이터, 소스 또는 목적지 주소 정보, 관리 프로토콜 정보, IP 어드레스, 프레임 동기화 데이터, 크기 데이터, 해상도 데이터, 또는 액션 데이터 구조들과 관련된 메타 데이터를 포함할 수 있다. 단일 스레드 데이터 구조 (200)의 페이로드 또는 바디는 적어도 하나의 시퀀스 종속 파라미터 (210), 또는 적어도 하나의 제 1 데이터 전송 (215) 또는 적어도 하나의 제 2 데이터 전송 (220)과 같은 다른 정보를 포함할 수 있다. 단일 스레드 데이터 구조 (200)는 하나 이상의 구조들, 예를 들어, 제 1 데이터 전송 (215) 또는 제 2 데이터 전송 (220)의 적어도 일부를 나타내는 각각의 헤더들 (205) 및 페이로드들을 포함하는 다수의 패킷들을 포함할 수 있다. 시퀀스 종속 파라미터 (215)는 제 1 데이터 전송 (215) 또는 제 2 데이터 전송 (220)에 의해 지시되는 복수의 액션들로부터 액션들의 시퀀스 종속을 나타낼 수 있다.
헤더 (205), 시퀀스 종속 파라미터 (210), 제 1 데이터 전송 (215), 및 제 2 데이터 전송 (220)은 단일 스레드 데이터 구조 (200)를 필요로는 하지만 단일 스레드 데이터 구조 (200)에 포함될 필요는 없다. 예를 들어, 단일 스레드 데이터 구조 (200)의 바디는 오로지 제 1 데이터 전송 (215) (또는 그것의 일부분)만을 포함하고 시퀀스 종속 파라미터 (210) 또는 제 2 데이터 전송 (220) 중 어느 것도 포함하지 않을 수 있고, 또는 상기 단일 스레드 데이터 구조 (200)의 바디는 시퀀스 종속 파라미터 (210)뿐만 아니라 하나 이상의 제 1 데이터 전송 (215) 및 제 2 데이터 전송 (220)을 포함할 수도 있다. 단일 스레드 데이터 구조 (200)는 데이터 처리 시스템 (105)과 서비스 제공자 컴퓨팅 디바이스 (160) 또는 콘텐츠 제공자 컴퓨팅 디바이스 (155) 간의 하나 이상의 데이터 전송들의 일부로서 시퀀스대로 또는 병렬로 개별 전송되는 하나 이상의 개별 패킷들을 포함할 수 있다. 헤더 (205) 또는 시퀀스 종속 파라미터 (210)는 개별 전송들 또는 개별 데이터 패킷들이 예를 들어 동일한 전체 단일 스레드 데이터 구조 (200)와 같은 동일 배치 전송(same batch transmission)과 연관된 것임을 나타낼 수 있다. 다이렉트 액션 API (135)는 다수의 상이한 단일 스레드 데이터 구조들을 하나의 단일 스레드 데이터 구조 (200)로 병합하거나 또는 함께 링크할 수 있다. 단일 스레드 데이터 구조 (200)는 분리되지만 서로 연관되는 다수의 패킷들 또는 다수의 상이한 구조들을 포함할 수 있다.
스레드 최적화 컴포넌트 (120)는 단일 스레드 데이터 구조 (200)의 특정 액션을 또 다른 액션 보다 우선 순위화할 수 있다. 우선 순위화 (prioritization)는 시퀀스 종속 파라미터 (210)에 의해 지시되거나 또는 다이렉트 액션 API (135) 또는 콘텐츠 선택기 컴포넌트 (125)에 제공될 수 있다. 예를 들어, 스레드 최적화 컴포넌트 (120)는 단일 스레드 데이터 구조 (200) 에 의해 지시된 제1 시간 액션을 우선화할 수 있다. 우선 순위화에 응답하여, 다이렉트 액션 API (135) 또는 콘텐츠 선택기 컴포넌트 (125)와 같은 다른 컴포넌트는 제 1 시간 액션과 관련된 컨버전(conversion)을 수행하기 위해 데이터 전송들 (예를 들어, 제 1 데이터 전송 (215) 또는 제 2 데이터 전송 (220)의 적어도 일부)을 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160)에 제공할 수 있다.
도면들 중 도 3을 참조하면, 상기 데이터 처리 시스템 (105)은 제 1 클라이언트 컴퓨팅 디바이스 (150)로부터 제 1 입력 오디오 신호 (305) (예를 들어, "오케이(OK), 오늘 밤에 저녁 먹으러 가고 싶어")를 수신할 수 있다. 또한, 상기 데이터 처리 시스템 (105)은 동일하거나 상이한 클라이언트 컴퓨팅 디바이스 (150)로부터 제 2 입력 오디오 신호 (310) (예를 들어, "오케이(OK), 나중에 영화를 보고 싶어")를 수신할 수 있다. 데이터 처리 시스템 (105)은 제 1 및 제 2 오디오 입력 신호들 (305, 310)에 대하여 각각의 액션 데이터 구조들 및 대응 데이터 전송들을 생성할 수 있다. 스레드 최적화 컴포넌트 (120)와 같은 데이터 처리 시스템 (105) 컴포넌트들은 제 1 입력 오디오 신호 (305) 및 제 2 입력 오디오 신호 (310)에 통계 또는 휴리스틱 기술을 적용하여, 제 1 입력 오디오 신호 (305) 및 제 2 입력 오디오 신호 (310)의 액션들 중 시퀀스 종속 액션들을 나타내는 적어도 하나의 시퀀스 종속 파라미터를 생성할 수 있다. 데이터 처리 시스템 (105)은 제 1 입력 오디오 신호 (305) 및 제 2 입력 오디오 신호 (310)에 대응하는 데이터 전송 (예를 들어, 패킷들) 또는 액션 데이터 구조를 배치(batch) 또는 풀링하여(pool) 배치 또는 풀링된 단일 스레드 데이터 구조 (200)를 생성할 수 있다. 상기 데이터 처리 시스템 (105)은 서비스 제공자 컴퓨팅 디바이스 (160)에 의한 프로세싱을 위해, 예를 들어 제1 및 제2 입력 오디오 신호들 (305, 310)에 응답하여 적어도 하나의 자동차를 예약하거나, 영화 티켓을 구매하거나, 또는 저녁 식사를 예약하기 위한 단일 스레드 데이터 구조 (200)를 서비스 제공자 컴퓨팅 디바이스 (160) 에 전송하거나 또는 제공할 수 있다.
동일한 단일 스레드 데이터 구조의 일부분의 상이한 인스턴스들(instances)이 상이한 컴퓨팅 디바이스들에 제공될 수 있다. 예를 들어, 단일 스레드 (200)의 전부 또는 일부가 서비스 제공자 컴퓨팅 디바이스 (160)에 제공되어, 예를 들어 카 공유 서비스에서 자동차를 주문하는 것과 같은 컨버전을 수행하고, 단일 스레드 (200)의 동일 또는 상이한 부분들이 콘텐츠 제공자 컴퓨팅 디바이스 (155)에 (동시에 순차적으로) 제공되어, 예를 들어 레스토랑에 대한 콘텐츠 아이템을 획득하는 것과 같은 또 다른 컨버전을 수행한다.
단일 스레드 데이터 구조 (200)의 수신에 응답하여, 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160)는 단일 스레드 데이터 구조 (200)에 의해 정의되거나 지시된 적어도 하나의 동작을 수행할 수 있다. 상기 동작은 액션 데이터 구조들(또는 데이터 전송들)의 각 액션들 중 하나 이상에 해당할 수 있다. 예를 들어, 동작들은 자동차 공유 서비스로부터, 서비스 제공자 컴퓨팅 디바이스(160)로부터 자동차를 예약하거나, 또는 영화에 대한 컨텐트 아이템을 제공하는 것을 포함할 수 있다. 예를 들어, 콘텐츠 제공자 컴퓨팅 디바이스 (155)는 클라이언트 컴퓨팅 디바이스 (150)에 제 1 응답 (315) (예를 들어, 영화에 대한 콘텐츠 아이템)을 제공 할 수 있고, 서비스 제공자 컴퓨팅 디바이스 (160)는 동일 또는 상이한 컴퓨팅 디바이스 (150)에 제2 응답 (320)(예를 들어, 차량 예약)을 제공할 수 있다. 제 1 및 제 2 응답들 (315, 320)은 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160)로부터 클라이언트 컴퓨팅 디바이스 (150) 로의 전송 동안 데이터 처리 시스템 (105)을 바이패스할 수 있다.상기 응답들 (315, 320)은 카 서비스로부터 차량에 대한 예약 또는 콘텐츠 아이템의 렌더링(rending)과 같은 컨버전 액션을 확인하는 텍스트, 이미지, 또는 다른 데이터 메시지들 (오디오 포함)을 포함할 수 있다. 데이터 처리 시스템 (105)은 서비스 제공자 컴퓨팅 디바이스 (160), 콘텐츠 제공자 컴퓨팅 디바이스 (155), 또는 클라이언트 컴퓨팅 디바이스 (150)로부터 컴퓨터 네트워크 (165)를 통해 컨버전 (또는 그 응답들 (315, 320))의 표시를 수신할 수 있다.
데이터 처리 시스템 (105) (예를 들어, 스레드 최적화 컴포넌트 (120) 또는 다이렉트 액션 API(135))에 의해 생성된 단일 스레드 (200)는 스레드에 대응하는 액션들의 실제, 공지된, 예정된, 또는 추정된 시간을 나타낼 수 있다. 이러한 시간들에는 영화 시작 시간, 이동 픽업 시간, 저녁 예약 시간, 또는 이벤트 시간 등이 포함될 수 있다. 상기 시간은, 예를 들어, 저녁 식사 예약이 오후 8시 또는 다른 액션들에 대한 상대 시간, 예를 들어, 동작 'A'의 알려진 또는 추정된 완료 시간 후 15 분 후에 'B' 동작이 시작되도록 스케줄링되는 이산 시간들(discrete times)일 수 있다. 예를 들어, 스레드 (200)는 제 1 액션 (예를 들어, 저녁 식사를 하는 것)이 제 2 액션 (예를 들어, 영화를 보는 것) 이전에 발생하도록 예정되어 있음을 나타낼 수 있다. 이러한 액션들은 입력 오디오 신호들에서 식별된 데이터 구조 (또는 데이터 전송) 액션들에 해당할 수 있다. 다이렉트 액션 API (135)는 제 1 액션의 완료를 검출(detect)할 수 있다. 예를 들어, 컴퓨팅 디바이스 (150)가 레스토랑에서 청구서를 지불하기 위한 스크립트를 실행하거나, 다이렉트 액션 API (135)가 저녁 식사가 90 분 동안 지속될 것으로 추정하거나, 또는 최종 사용자가 제1 액션이 한 번에 완료되거나 시간 창(time window) 내에 완료 또는 예약됨을 나타내기 위해 오디오 입력 신호 또는 다른 데이터 메시지를 제공할 수 있다. 다이렉트 액션 API (135)는 제 1액션의 완료 (예를 들어, 알려진 또는 예상 종료 시간)의 검출에 응답하여, 단일 스레드의 데이터 패킷들을 서비스 제공자 컴퓨팅 디바이스 (160) 또는 콘텐츠 제공자 컴퓨팅 디바이스 (155)로 전송하도록 진행할 수 있다. 이 전송은 제1 액션의 알려진 또는 추정된 완료에 이어서, 또는 제1 액션의 알려진 또는 추정된 완료의 시간 창(예를 들어, 1시간 이내) 동안에 발생할 수 있다. 예를 들어, 저녁 식사가 완료되면, 다이렉트 액션 API (135)는 단일 스레드 (200)의 적어도 일부를 영화 티켓 구매를 위해 서비스 제공자 컴퓨팅 디바이스 (160)에 제공하거나, 또는 영화에 대한 콘텐츠 획득을 위해 콘텐츠 제공자 컴퓨팅 디바이스 (155)에 제공될 수 있다. 클라이언트 컴퓨팅 디바이스 (150), 콘텐츠 제공자 컴퓨팅 디바이스 (155), 또는 서비스 제공자 컴퓨팅 디바이스 (160)으로부터 데이터 처리 시스템 (105)으로 컨버전의 표시들 (예를 들어, 클라이언트 컴퓨팅 디바이스 (150)에서 티켓의 구매 또는 콘텐츠 아이템의 렌더링) 이 제공될 수 있다. 시퀀스 종속 파라미터 (210)는 단일 스레드 (200)의 액션들이 발생하도록 스케줄링되는 순서를 나타낼 수 있으며, 예를 들어 제 1 액션이 제 2 액션 이전에 발생하도록 예정되어 있음을 나타낼 수 있다.
다이렉트 액션 API (135)는 단일 스레드 (200)의 적어도 하나의 액션에서 적어도 하나의 교착 상태(deadlock condition)를 식별할 수 있다. 교착 상태(deadlock condition)는 제 1 액션이 완료 될 때까지 제 2 액션이 진행될 수 없음을 나타낼 수 있다. 예를 들어, 다이렉트 액션 API (135)는 제 1 액션이 영화 액션 (극장에서 영화를 보는 것) 일 때의 교착 상태를 식별할 수 있고, 제 2액션이 영화가 끝난 후에 카 공유 서비스를 통해 집으로 이동할 때의 교착 상태를 식별할 수 있다. 다이렉트 액션 API (135)는 영화의 예정된 종료 시간과 같은 제 1 액션과 관련된 시간까지 지속되는 제 2 액션 (예를 들어, 집까지 태워주기)에 대한 교착 상태를 결정할 수 있다. 다이렉트 액션 API (135) 또는 인터페이스 (115)와 같은 다른 컴포넌트는 상기 교착 상태에 응답하여 서비스 제공자 컴퓨팅 디바이스 (예를 들어, 자동차 공유 서비스) 로의 데이터 전송의 전송을 차단할 수 있다. 예를 들어, 데이터 처리 시스템 (105) 또는 그것의 컴포넌트는 교착 상태 구간 동안, 액션 (예를 들어, 차량 예약)을 위한 데이터 전송 (또는 데이터 구조)의 데이터 패킷들이 서비스 제공자 컴퓨팅 디바이스 (160)(예를 들어, 카 공유 서비스)로 전송되는 것을 차단할 수 있다. 이는, 서비스 제공자 컴퓨팅 디바이스(160)가 너무 일찍 자동차 (또는 다른 서비스)에 대한 요청을 수신하는 것을 방지한다.
다이렉트 액션 API (135)는 교착 상태가 종료되었거나 더 이상 존재하지 않음을 판단하거나 그 표시를 획득할 수 있다. 예를 들어, 다이렉트 액션 API (135)는 서비스 제공자 컴퓨팅 디바이스 (160) 또는 다른 제 3 자 컴퓨팅 디바이스에 질의하여 영화의 예정된 종료 시간이나 다른 액션을 결정할 수 있게 한다. 이 시간에 도달하기 전에 또는 이 시간에 앞서는 임계 시간 동안(예를 들어, 30 분 또는 5 분) 내에 다이렉트 액션 API는 상기 교착 상태를 해지, 해제, 또는 종료할 수 있다. 데이터 처리 시스템 (105)은 교착 상태의 만료 후, 영화를 본 후에 집까지 태워주는(ride home) 것과 같은 후속 액션에 대응하는 데이터 전송 또는 데이터 구조의 데이터를 (예를 들어, 인터페이스(105)를 통해) 서비스 제공자 컴퓨팅 디바이스 (160)로 전송할 수 있다.
다이렉트 액션 API (135)는 교착 상태를 종료시키기 위해 클라이언트 컴퓨팅 디바이스 (150)로부터 표시를 수신할 수 있다. 예를 들어, 최종 사용자는 영화가 끝나기 전에 영화감상을 일찍 마친 후 입력 오디오 신호, 예를 들어 "오케이(OK), 이 영화는 엉망이야, 차를 타고 집에 가고 싶군. "를 클라이언트 컴퓨팅 디바이스에 입력할 수 있다. 데이터 처리 시스템 (105) (예를 들어, NLP 컴포넌트 (110) 또는 다이렉트 액션 API (135))은 이러한 입력 오디오 신호로부터 교착 상태(deadlock condition)가 만료된 것을 판단할 수 있고, 후속 액션을 위한 데이터를 서비스 제공자 컴퓨팅 디바이스 (160)에 전송할 수 있다. 또한, 상기 다이렉트 액션 API (135)는 교착 상태(deadlock condition)의 해제의 후속으로, 액션에 대한 데이터(예를 들어, 단일 스레드 (200)의 데이터 전송 또는 액션 데이터 구조의 데이터)를 콘텐츠 제공자 컴퓨팅 디바이스 (155)에 제공하여, 포스트-교착 액션(post-deadlock action)과 관련된 콘텐츠 아이템을 획득할 수 있다. 상기 콘텐츠 아이템은 렌더링을 위해 데이터 처리 시스템 (105)에 의해 또는 콘텐츠 제공자 컴퓨팅 디바이스 (155)에 의해 클라이언트 컴퓨팅 디바이스 (150)에 제공될 수 있다. 상기 콘텐츠 아이템은 예를 들어 "영화가 별로였다니 안타깝습니다. 카 공유 회사에서 차량을 주문 하시겠습니까?"라고 표시할 수 있다. 콘텐츠 선택기 컴포넌트 (125) (또는 인터페이스 (115) 또는 다이렉트 액션 API (135)와 같은 다른 컴포넌트)는 교착 상태에 응답하여 또는 교착 상태의 해제에 응답하여, 콘텐츠 아이템의 선택이나 선택된 콘텐츠 아이템이 클라이언트 컴퓨팅 디바이스 (150)로 전송되는 것을 차단할 수 있다.
다이렉트 액션 API (135)는 단일 스레드 (200)에 의해 지시된 액션들의 시퀀스 순서들을 변경할 수 있다. 예를 들어, 상기 다이렉트 액션 API는 예를 들어, 제1액션, 제1액션에 후속하는 제2액션, 제2액션에 후속하는 제3액션 (저녁식사, 이어서 영화 감상, 이어서 차를 타고 집으로 돌아가기)의 제1 시퀀스 순서의 표시를 결정할 수 있다. 다이렉트 액션 API (135) 및 NLP 컴포넌트 (110) 및 인터페이스 (115)와 같은 다른 컴포넌트들은 시퀀스 순서를 변경하기 위한 요청을 수신할 수 있다. 예를 들어, 데이터 처리 시스템 (105)은 클라이언트 컴퓨팅 디바이스로부터 "오케이 나는 영화 감상 후에 저녁 식사를 하고 싶어"라고 입력된 오디오 신호를 수신할 수 있다. 다이렉트 액션 API (135) (또는 NLP 컴포넌트 (110))는 이러한 오디오 입력 신호에서 예를 들어 영화 감상, 이어서 저녁 식사, 그 다음 차를 타고 집으로 돌아가기에 대한 액션들의 시퀀스 순서를 변경하기 위한 요청을 획득할 수 있다. 상기 다이렉트 액션 API (135)는 이 정보로부터 변경된 시퀀스 순서를 생성할 수 있으며, 이제는 제2액션 (영화 감상)이 제1액션 (저녁 식사) 이전에 발생하도록 스케줄링된다. 다이렉트 액션 API (135) 또는 콘텐츠 선택기 컴포넌트 (125) (또는 다른 컴포넌트들)는 저녁 식사 액션의 데이터 전송들 이전에 영화 감상 액션의 데이터 전송을 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160)에 전송하도록 진행할 수 있다. 또한, 상기 다이렉트 액션 API (135)는 교착 상태를 식별 또는 변경하여 제 1 영화 감상 액션의 종료 시간에 기초하여 저녁 식사 액션과 관련된 동작들을 지연시킬 수 있다. 저녁 식사, 영화 감상, 및 이동수단(transport)의 액션들이 그 예시들이며 최종 사용자의 활동들이나 요청들이 많으면 액션들을 구성할 수 있다. 입력 오디오 신호 이외의 입력들에 응답하여 변경들(modifications)이 발생할 수 있다. 예를 들어, (저녁 식사 후) 오후 9시 영화 티켓이 매진된 경우, 상기 데이터 처리 시스템 (105)은 저녁 식사 전에 영화 (예를 들어, 오후 5시 영화)를 감상하도록 제안하기 위해, 클라이언트 컴퓨팅 디바이스 (150)에 렌더링을 위한 오디오 출력을 제공할 수 있다.
데이터 처리 시스템 (105)은 오프라인 액션을 수행할 수 있다. 이는 처리 및 전력 요구량을 절약하고 네트워크 트래픽을 감소시키거나 또는 사용량이 적은 시간대로 시프트할 수 있다. 예를 들어, 단일 스레드 (200)는 제 1 액션 및 상기 제1액션의 해상도에 의존하는 제 2 후속 동작을 나타낼 수 있다. 이러한 액션들은 서로 며칠 또는 몇 주 (또는 그 이상) 떨어져서 발생할 수 있는데, 예를 들어 앞으로 6 개월 후에 발생하는 3 주간의 열대 해변 휴양을 위해 항공권을 구매하는 것(제1 액션, 오늘)과, 휴가 마지막 날 스쿠버 레슨을 예약하는 것(제2액션, 6 개월 이상 떨어져 있음)이 그 예이다. 다이렉트 액션 API (135)는 온라인 액션으로 비행기 티켓을 구매하기 위해 입력 오디오 신호의 수신에 응답하여, 항공사 엔티티에 대응되는 서비스 제공자 컴퓨팅 디바이스 (160)와 실시간으로 통신할 수 있고 비행기 티켓 구매를 위한 대화를 수행한다. 이 예에서 제2 액션은 6개월 후에 수행된다. 이 6 개월 기간 또는 다른 시간창 동안, 상기 다이렉트 액션 API (135) 또는 콘텐츠 선택기 컴포넌트 (125)와 같은 다른 컴포넌트는, 콘텐츠 아이템들을 선택하거나 제 2 액션 (스쿠버 레슨)에 응답하는 다른 동작들을 수행할 수 있다. 예를 들어, 다이렉트 액션 API는, 데이터 저장소 (145) 또는 스쿠버 레슨과 관련된 제 3 자 데이터 저장소로부터 이 정보를 획득하여 오프라인으로 얻을 수 있다. 오프라인 액션(offline action)은 실시간으로 이루어질 수도 있고 그렇지 않을 수도 있으며, 오프라인 액션은 액션들 간의 시간 간격 (예를 들어, 6 개월)을 필요로하지 않는다. 예를 들어, 데이터 처리 시스템 (105)은 클라이언트 컴퓨팅 디바이스와의 통신 세션 또는 동기식 또는 비동기식 대화의 일부로서, 데이터 저장소 (145)나 제 3 자 데이터베이스로부터의 실시간으로 액션들에 응답하는 정보를 획득할 수 있다.
도 4는 음성 기동 데이터 패킷 기반 컴퓨터 네트워크 환경에서 시퀀스 종속 동작들을 나타내는 음성 기동 오디오 입력 데이터 통신을 관리하는 방법 (400)을 도시한다. 상기 방법 (400)은 적어도 하나의 제 1 오디오 입력 신호를 수신할 수 있다(ACT (405)). 예를 들어, NLP 컴포넌트는 인터페이스 (115)를 통해 데이터 패킷들(ACT (405))을 수신할 수 있다. 데이터 처리 시스템 (105)은 적어도 하나의 클라이언트 컴퓨팅 디바이스 (150)로부터 네트워크를 통해 패킷 또는 다른 프로토콜 기반 전송들을 수신하기 위해 NLP 컴포넌트 (110)를 실행, 런치, 또는 호출할 수 있다. 상기 데이터 패킷들은 제1 클라이언트 컴퓨팅 디바이스 (150)의 센서 (151)에 의해 검출된 입력 오디오 신호를 포함하거나 이에 대응될 수 있으며, 상기 입력 오디오 신호는 예를 들어 제 1 최종 사용자가 클라이언트 컴퓨팅 디바이스 (150), 예를 들어 스마트 폰에 발화하는 "오케이, 오늘 밤에 저녁 식사를 하러 가고 싶어" 일 수 있다. 상기 방법 (400)은 입력 오디오 신호를 파싱하여 입력 오디오 신호로부터 적어도 하나의 제 1 요청 또는 적어도 하나의 제 1 트리거 키워드를 식별할 수 있다(ACT (410)). 예를 들어, NLP 컴포넌트 (110)는 입력 오디오 신호를 파싱하여 요청들 ( "저녁 식사"를 위한 엔터테인먼트 요청)뿐만 아니라 그 요청에 상응하거나 그와 관련되는 트리거 키워드들 ( "~하러 가자(to go to)")를 식별할 수 있다. 상기 방법 (400)은 수신된 제 1 오디오 입력 신호와 연관된 식별된 요청들 또는 키워드들에 기초하여 적어도 하나의 제 1 액션 데이터 구조를 생성할 수 있다(ACT (415)). 예를 들어, 다이렉트 액션 API (135)는 택시를 픽업하는 장소, 요청된 서비스 제공자, 레스토랑 추천과 같은 제 1 액션을 나타내는 액션 데이터 구조를 생성할 수 있다.
상기 방법 (400)은 적어도 하나의 제 2 오디오 입력 신호를 수신할 수 있다(ACT (420)). 예를 들어, NLP 컴포넌트 (110)는 제 1 입력 오디오 신호를 발신한 동일 또는 다른 클라이언트 컴퓨팅 디바이스 (150)로부터 네트워크 (165)를 통해 패킷 또는 다른 프로토콜 기반 전송들을 수신할 수 있다. 상기 데이터 패킷들은 제2 클라이언트 컴퓨팅 디바이스 (150)의 센서 (151)에 의해 검출된 입력 오디오 신호를 포함하거나 이에 대응될 수 있고, 상기 입력 오디오 신호는 예를 들어, 최종 사용자가 클라이언트 컴퓨팅 디바이스 (150)에 발화하는 "오케이(OK), 나중에 영화를 보고 싶어"일 수 있다. 상기 방법 (400)은 제 2 입력 오디오 신호로부터 적어도 하나의 제 2 요청 또는 적어도 하나의 제 2 트리거 키워드를 식별할 수 있다(ACT 425). 예를 들어, NLP 컴포넌트 (110)는 입력 오디오 신호를 파싱하여 요청들("영화감상"을 위한 엔터테인먼트 요청) 뿐만 아니라 그 요청에 대응하거나 그 요청과 관련된 트리거 키워드들 ( "~보고싶어(to catch)")을 식별할 수 있다. 상기 방법 (400)은 수신된 제 1 오디오 입력 신호와 연관된 식별된 요청들 또는 키워드들에 기초하여 적어도 하나의 제 2 액션 데이터 구조를 생성할 수 있다(ACT (430)). 예를 들어, 다이렉트 액션 API (135)는 택시 픽업 위치, 요청된 서비스 제공자, 또는 영화정보와 같은 제 2 액션을 나타내는 액션 데이터 구조를 생성할 수 있다.
상기 방법 (400)은 액션 데이터 구조들로부터 데이터 전송들을 구성할 수 있다(ACT (435)). 예를 들어, 다이렉트 액션 API (135)는 제 1 입력 오디오 신호에 대응하는 제 1 액션 데이터 구조로부터 제 1 데이터 전송을 생성할 수 있고, 제 2 입력 오디오 신호에 대응하는 제 2 액션 데이터 구조로부터 제 2 데이터 전송을 생성할 수 있다. 제 1 및 제 2 (또는 다른 서수의) 데이터 전송들은 대응하는 액션 데이터 구조들로부터 획득된 정보를 패킷화함으로써, 또는 광범위하게 정의 된 통신 세션의 일부로서 상기 액션 데이터 구조들을 전송을 위한 형태로 변환함으로써 구성되거나 생성될 수 있고(ACT 435), 상기 통신 세션은 예를 들어 데이터 처리 시스템 (105)을 통해 최종 사용자 컴퓨팅 디바이스 (150)와 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160) 간에 전후로 또는 비동기식으로 이루어지는 대화 또는 데이터의 전송일 수 있다. 상이한 엔티티들에 대응하는 다수의 제3자 디바이스들 (예를 들어, 콘텐츠 제공자 컴퓨팅 디바이스들 (155) 또는 서비스 제공자 컴퓨팅 디바이스들 (160)) 과의 통신 세션들은 공통 통신 세션의 일부로 간주될 수 있다. 통신 세션들은 대화 주제 내에서 클라이언트 컴퓨팅 디바이스 (150)로부터 또는 클라이언트 컴퓨팅 디바이스 (150)로의 데이터 전송이 전후로 이루어지는 동기식이거나, 또는 데이터 전송들 간에 예를 들어, 적어도 1 시간의 휴면 기간(a period of dormancy)이 존재하는 비동기식일 수 있다.
상기 방법 (400)은 데이터 전송들로부터 데이터를 획득할 수 있다(ACT (440)). 예를 들어, 스레드 최적화 컴포넌트 (120)는 데이터 전송들로부터 (또는 대응하는 액션 데이터 구조들로부터) 액션들에 관한 정보에 액세스하거나 또는 (예를 들어, 데이터 저장소 (145)로부터) 검색할 수 있다. 상기 방법 (400)은 적어도 하나의 시퀀스 종속 파라미터를 결정할 수 있다(ACT (445)). 예를 들어, 동작들의 순서 또는 액션들의 시퀀스 종속성을 나타내는 데이터 전송들로부터 획득된 데이터에 기초하여(ACT (440)), 상기 스레드 최적화 컴포넌트 (120)는 적어도 2 개의 액션들에 대한 시퀀스 종속성의 존재를 나타내는 시퀀스 종속 파라미터를 결정할 수 있다. 상기 방법 (400)은 단일 스레드 데이터 구조 (200)와 하나 이상의 액션 데이터 구조들을 (직접적으로 또는 대응하는 데이터 전송들의 연관을 통해) 연관시킬 수 있다. 예를 들어, 스레드 최적화 컴포넌트 (120) (또는 다른 데이터 처리 시스템 (105) 컴포넌트)는 스레드 데이터 구조 (200)를 생성할 수 있다(ACT (450)). 예를 들어, 상기 스레드 최적화 컴포넌트 (120)는 적어도 2 개의 시퀀스 또는 시간 종속 동작들의 표시에 기초하여, 제 1 및 제 2 데이터 전송들, 제 1 및 제 2 액션 데이터 구조들, 또는 이들의 연관 액션들을 나타내는 적어도 하나의 단일 스레드 데이터 구조를 생성할 수 있다(ACT 440). 생성된 단일 스레드 데이터 구조 (200) (ACT (450))는 액션의 완료를 검출하기 위해, 다이렉트 액션 API (135)에 의해 사용되는 데이터를 포함할 수 있고, 그에 따라 데이터 처리 시스템 (105)은 다른 액션을 위한 데이터 패킷들을 서비스 제공자 컴퓨팅 디바이스 (160) 또는 콘텐츠 제공자 컴퓨팅 디바이스 (155)에 제공할 수 있다. 또한, 상기 데이터 처리 시스템 (105)은 생성된 단일 스레드 데이터 구조 (200)의 액션들과 관련된 교착 상태를 식별할 수 있다(ACT (450)). 상기 단일 스레드 데이터 구조 (200)는 다수의 액션들의 시퀀스 순서를 나타낼 수 있고, 상기 방법은 액션들의 시퀀스 순서를 변경하는 수정된 시퀀스 순서를 생성할 수 있다. 데이터 처리 시스템 (105)은 단일 스레드 데이터 구조 (200)의 전부 또는 일부를 하나 이상의 콘텐츠 제공자 컴퓨팅 디바이스들 (155) 또는 서비스 제공자 컴퓨팅 디바이스들 (160)에 제공할 수 있다.
도 5는 예시적인 컴퓨터 시스템 (500)의 블록도이다. 컴퓨터 시스템 또는 컴퓨팅 디바이스 (500)는 시스템 (100) 또는 데이터 처리 시스템 (105)과 같은 시스템 (100)의 컴포넌트들을 포함하거나 또는 그것을 구현하는 사용될 수 있다. 컴퓨팅 시스템 (500)은 버스 (505) 또는 정보 통신을 위한 다른 통신 컴포넌트 및 정보 처리를 위해 버스 (505)에 연결된 프로세서 (510) 또는 프로세싱 회로를 포함한다.또한, 컴퓨팅 시스템 (500)은 정보 처리를 위해 버스에 연결된 하나 이상의 프로세서 (510) 또는 프로세싱 회로들을 포함할 수 있다. 또한, 컴퓨팅 시스템 (500)은 정보를 저장하기 위해 버스 (505)에 결합된 랜덤 액세스 메모리 (RAM) 또는 다른 동적 저장 장치와 같은 메인 메모리 (515), 및 프로세서 (510)에 의해 실행될 명령들을 포함한다. 메인 메모리 (515)는, 데이터 저장소(145) 자체이거나 또는 데이터 저장소(145)를 포함할 수 있다. 또한, 메인 메모리 (515)는 프로세서 (510)에 의한 명령들의 실행 중에 위치 정보, 임시 변수, 또는 다른 중개 정보(intermediate information)를 저장하는데 사용될 수 있다. 컴퓨팅 시스템 (500)은 ROM (read only memory) 또는 프로세서 (510)에 대한 정적 정보 및 명령들을 저장하기 위해 버스 (505)에 연결된 다른 정적 저장 장치를 포함할 수 있다. 정보 및 명령들의 영구 저장을 위해, 고체 상태 디바이스(solid state device), 자기 디스크 또는 광 디스크와 같은 스토리지 디바이스 (525)가 버스 (505) 에 결합될 수 있다. 상기 스토리지 디바이스 (525)는 데이터 저장소 (145)를 포함하거나 또는 그 일부일 수 있다.
컴퓨팅 시스템 (500)은 사용자에게 정보를 디스플레이하기 위해, 버스 (505)를 통해, 액정 디스플레이 또는 활성 매트릭스 디스플레이와 같은 디스플레이 (535)에 결합된다. 영숫자 및 다른 키들을 포함하는 키보드와 같은 입력 장치 (530)는 프로세서 (510)에 정보 및 커맨드 선택들을 통신하기 위해 버스 (505)에 결합된다. 입력 장치 (530)는 터치 스크린 디스플레이 (535)를 포함할 수 있다. 또한, 입력 장치 (530)는 방향 정보 및 커맨드 선택들을 프로세서 (510)에 전달하고 디스플레이 (535)상의 커서 움직임을 제어하기 위한 마우스, 트랙볼, 또는 커서 방향 키들과 같은 커서 제어를 포함한다. 디스플레이 (535)는 데이터 처리 시스템 (105), 클라이언트 컴퓨팅 디바이스 (150) 또는 예를 들어 도 1의 다른 컴포넌트의 일부일 수 있다.
다양한 구현들에 따르면, 본 명세서에 설명된 프로세스, 시스템 및 방법은 상기 프로세서(510)가 주 메모리(515)에 포함된 명령들의 배열을 실행하는 것에 응답하여 컴퓨팅 시스템(500)에 의해 구현된다. 그러한 명령들은 스토리지 디바이스(525)와 같은 다른 컴퓨터 판독가능 매체로부터 주 메모리(515)에 판독된다. 주 메모리(515)에 포함된 명령들의 배치의 실행은 컴퓨팅 시스템(500)이 본 명세서에 설명된 설명적인 프로세스를 수행하게 한다. 다수의 프로세싱 배열의 하나 이상의 프로세서들은 주 메모리(515)에 포함된 명령들을 실행하기 위해서도 이용될 수 있다. 대안적인 구현들에서, 하드-와이어드 회로망(hard-wired circuitry)은 설명적인 구현들을 달성(effect)하기 위해 소프트웨어 명령들 대신에 또는 소프트웨어 명령들과 조합하여 사용된다. 그러므로, 구현들은 하드웨어 회로망과 소프트웨어의 어떤 특정 조합에 한정되지 않는다.
비록, 예시적인 컴퓨팅 시스템이 도 5에 개시되었으나, 도 5에 도시 된 바와 같이, 본 명세서에서 설명된 동작들을 포함하는 주제는 본 명세서에서 설명된 구조들 및 이들의 구조적 균등물들, 또는 이들의 하나 이상의 조합들을 포함하는 다른 유형의 디지털 전자 전자 회로망, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어에서 구현될 수 있다.
본 명세서에서 논의된 시스템들은, 사용자들에 관한 개인 정보를 수집하거나, 또는 개인 정보를 사용할 수있는 상황에서, 사용자들은 개인 정보를 수집 할 수 있는 프로그램 또는 피처들 (예를 들어, 사용자의 소셜 네트워크, 소셜 액션들 또는 활동들, 사용자의 취향들, 또는 사용자의 위치)를 제어할지, 또는 콘텐츠 서버나 다른 데이터 처리 시스템으로부터 사용자와 더 관련 있는 콘텐츠를 제어할지 또는 어떻게 수신할지를 결정할 기회를 사용자들에게 제공할 수 있다. 또한, 특정 데이터는 저장 또는 사용되기 전에 하나 이상의 방식으로 익명화되며, 그에 따라 파라미터들의 생성시 개인 식별 정보가 제거된다. 예를 들어, 사용자의 신원을 익명으로 처리하여 사용자의 개인 식별 정보가 결정되지 않게 하거나, 또는 사용자의 지리적 위치를 위치 정보가 획득된 곳 (예: 도시, 우편 번호, 또는 주(state) 수준)으로 일반화하여 사용자의 특정 위치가 결정되지 않게 할 수 있다. 따라서, 사용자는 자신에 관한 정보의 수집 방법과 콘텐츠 서버에 의해 사용되는 정보를 제어할 수 있다.
본 명세서에서 설명된 주제 및 동작들은 디지털 전자 전자 회로망, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어에서 구현될 수 있고, 본 명세서에서 설명된 구조들 및 이들의 구조적 균등물들, 또는 이들의 하나 이상의 조합들을 포함할 수 있다. 본 명세서에 기술된 주제는 하나 이상의 컴퓨터 프로그램들, 예를 들어, 데이터 처리 장치들에 의한 실행을 위해 또는 그 동작을 제어하기 위해 하나 이상의 컴퓨터 저장 매체 상에 인코딩된, 컴퓨터 프로그램 명령들의 하나 이상의 회로망으로 구현될 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령들은 예를 들어, 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치에 송신하기 위한 정보를 인코딩하기 위해 생성되는, 머신에 의해 발생된 전기, 광학, 또는 전자기 신호와 같은, 인공적으로 발생된 전파 신호에 인코딩된다. 컴퓨터 저장 매체는, 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 시리얼 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합이거나 이들에 포함될 수 있다. 더욱이, 비록 컴퓨터 저장 매체는 전파 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파 신호에 인코딩된 컴퓨터 프로그램 명령들의 소스 또는 목적지가 될 수 있다. 컴퓨터 저장 매체는 또한, 하나 이상의 개별 컴포넌트들 또는 매체(예를 들어, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)이거나, 이들에 포함된다. 본 명세서에 설명된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 데이터 상에 데이터 프로세싱 장치에 의해 수행되거나 다른 소스들로부터 수신될 수 있다.
"데이터 처리 시스템" "컴퓨팅 디바이스" "컴포넌트" 또는 "데이터 처리 장치"라는 용어는 프로그래밍 가능한 프로세서, 컴퓨터, 시스템-온-칩, 또는 다수의 이들, 또는 전술한 것들의 조합을 예시의 방식으로 포함하는, 데이터를 프로세싱하기 위한 다양한 장치들, 디바이스들, 또는 머신들을 포괄한다. 상기 장치는 특수 목적의 로직 회로망, 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)를 포함한다. 상기 장치는 또한, 하드웨어에 더하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템, 크로스-플랫폼 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 포함한다. 상기 장치 및 실행 환경은 웹 서비스들, 분포된 컴퓨팅 및 그리드 컴퓨팅 인프라구조와 같은 다양한 서로 다른 컴퓨팅 모델 인프라구조들을 구현한다. 다이렉트 액션 API (135), 콘텐츠 선택기 컴포넌트 (125), 스레드 최적화 컴포넌트 (120) 또는 NLP 컴포넌트 (110) 및 다른 데이터 처리 시스템 (105) 컴포넌트들은 하나 이상의 데이터 처리 장치들, 시스템들, 컴퓨팅 디바이스들, 또는 프로세서들을 포함하거나 공유할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려짐)은 컴파일된 또는 해석된 언어들, 선언적 또는 절차적 언어들을 포함하는 어떤 형태의 프로그래밍 언어로 기록되며, 상기 컴퓨터 프로그램은 단독 프로그램 또는 회로, 컴포넌트, 서브루틴, 오브젝트 또는 컴퓨팅 환경에서 사용하기 위해적합한 기타 유닛을 포함하는 어떤 형태로 배치된다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 대응하지만, 반드시 상기 파일에 대응할 필요는 없다. 프로그램은 다른 프로그램 또는 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들)를 보유하는 파일의 부분, 문제의 프로그램 전용의 단일 파일, 다수의 좌표로 된 파일들(예를 들어, 하나 이상의 회로들, 서브 프로그램들, 또는 코드의 부분들을 저장하는 파일들)에 저장된다. 컴퓨터 프로그램은 한 장소에 위치된 또는 다수의 장소들에 분포된 하나의 컴퓨터 또는 다수의 컴퓨터들에서 실행되기 위해 배치되고 통신 네트워크에 의해 상호연결될 수 있다.
본 명세서에서 설명된 프로세스들과 논리 흐름들은 입력 데이터에 작동하는 것과 출력을 생성하는 것에 의한 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들 (예를 들어, 데이터 처리 시스템 (105)의 컴포넌트들)을 실행하는 하나 이상의 프로그래밍 가능한 프로세서들에 의해 수행될 수 있다. 또한, 상기 프로세스들과 논리 흐름들은 FPGA (필드 프로그래밍 가능한 게이트 어레이) 또는 ASIC (주문형 집적 회로)와 같은 특수 목적의 논리 회로에 의해 수행 될 수 있고, 또한 장치들은 그러한 특수 목적의 논리 회로로 구현될 수 있다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기 위해 적합한 디바이스들은, 예시의 방식으로서, EPROM, EEPROM, 및 플래시 메모리 디바이스들, 자기 디스크들, 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들, 자기 광학적 디스크들, 및 CD-ROM 및 DVD-ROM 디스크들과 같은 반도체 메모리 디바이스들을 포함하여 비휘발성 메모리, 매체 및 메모리 디바이스들의 모든 형태들을 포함한다. 상기 프로세서 및 메모리는 특수 목적의 논리 회로망에 의해 보충되거나 이들에 통합된다.
여기에 설명된 주제들은 데이터 서버와 같은 백-엔드 컴포넌트(back-end component), 애플리케이션 서버나 인터넷 서버와 같은 미들웨어 컴포넌트(middleware component), 그래픽 사용자 인터페이스나 인터넷 브라우저를 구비한 클라이언트 컴퓨터와 같은 프론트-엔드 컴포넌트(front-end component) 또는 상기의 조합을 포함하는 컴퓨터 시스템에서 구현될 수 있다. 상기 시스템의 컴포넌트는 통신 네트워크와 같은 디지털 데이터 통신의 어떠한 형태나 매체에 의해서도 연결 가능하다. 통신 네트워크의 예로는 LAN(Local Area Network), WAN(Wide Area Network), 상기 인터넷을 구축하는 컴퓨터와 네트워크가 포함된다. 시스템의 컴포넌트들은 디지털 데이터 통신, 예를 들면 통신네트워크의 어떤 형태 또는 매체에 의해 상호연결될 수 있다. 통신 네트워크들의 예들은 로컬 영역 네트워크("LAN") 및 광역 네트워크("WAN"), 인터-네트워크(예를 들면 인터넷) 및 피어-투-피어 네트워크들(예를 들면,애드 혹 피어-투-피어 네트워크들)을 포함한다.
시스템 (100) 또는 시스템 (500)과 같은 컴퓨팅 시스템은 클라이언트들과 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있고 통상은 통신 네트워크 (예를 들어, 네트워크 (165))를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터상에서 실행되고 서로에 대하여 클라이언트 - 서버 관계를 갖는 컴퓨터 프로그램들에 의하여 발생한다. 일부 구현 예에서, 서버는 (예를 들어, 클라이언트 컴퓨팅 디바이스와 상호 작용하는 사용자에게 데이터를 표시하고 사용자 입력을 수신하기 위한 목적으로) 클라이언트 컴퓨팅 디바이스에 데이터 (예를 들어, 콘텐츠 아이템을 나타내는 데이터 패킷들)를 전송한다. 클라이언트 컴퓨팅 디바이스에서 생성된 데이터 (예를 들어, 사용자 상호 작용의 결과)는 클라이언트 컴퓨팅 디바이스로부터 서버에 수신될 수 있다 (예를 들어, 컴퓨팅 디바이스 (150) 또는 콘텐츠 제공자 컴퓨팅 디바이스 (155) 또는 서비스 제공자 컴퓨팅 디바이스 (160)로부터 데이터 처리 시스템 (105) 에 의해 수신될 수 있다).
비록, 도면들에 도시된 동작들은 특정 순서로 도시되었지만, 그러한 동작들은 도시된 특정 순서 또는 시퀀스 순서로 수행될 필요가 없으며, 도시된 모든 동작들이 수행될 필요도 없다. 여기에 설명된 액션들은 다른 순서로 수행될 수 있다.
여러 시스템 컴포넌트들의 분리(separation)가 모든 구현 예들에서 요구되는 것은 아니며, 개시된 프로그램 컴포넌트들은 하나의 하드웨어 또는 소프트웨어 제품에 포함될 수 있다. 예를 들어, NLP 컴포넌트 (110), 콘텐츠 선택기 컴포넌트 (125), 또는 스레드 최적화 컴포넌트 (120)는 하나의 컴포넌트, 애플리케이션, 또는 프로그램, 또는 하나 이상의 프로세싱 회로망을 포함하는 논리 장치, 또는 데이터 처리 시스템 (105)의 하나 이상의 서버들의 일부일 수 있다.
지금까지 몇몇 예시적인 구현 예들을 설명하였지만, 상기 설명은 예시적인 것으로써 제한하려는 의도가 아님이 명백하다. 특히, 비록 본 명세서에 제시된 많은 예들이 방법 동작들 또는 시스템 구성들의 특정 조합을 포함하지만, 그러한 동작들 및 구성들은 동일 목적을 달성하기 위해 다른 방식으로 결합될 수 있다. 하나의 구현예와 관련하여 논의된 동작들, 요소들 및 피처들은 다른 구현예들에서 유사한 역할을 수행하는 것으로부터 배제되지 않는다.
본 명세서에서 사용된 용어들은 설명하기 위한 목적이며 제한하는 것으로 간주되어서는 안된다. "포함하다" "구성하다? "수반하다" "특징으로 하는" "~하는 것을 특징으로 하는 " 및 그 변형들의 사용은 이후에 열거되는 항목들, 그 등가물, 및 추가 항목뿐만 아니라 이후에 열거된 항목들만 독점적으로 포함하는 대체 구현예들을 포함하는 것을 의미할 수 있다. 일 구현 예에서, 여기에 개시된 시스템들과 방법들은 개시된 구성 요소들, 동작들, 또는 컴포넌트들의 하나 이상의 조합 또는 전부의 조합으로 구성된다.
또한, 여기에서 단수로 언급된 시스템 및 방법의 구현들 또는 구성요소들 또는 동작들에 대한 임의 참조는, 이들 구성요소들을 복수개 포함하는 구현들을 포괄하며, 또한 임의의 구현 또는 구성요소 또는 동작에 대한 복수의 임의 참조는 오로지 하나의 구성요소만 포함하는 구현들을 포괄할 수 있다. 단수 또는 복수 형태의 참조는 현재 개시된 시스템들 또는 방법들, 그들의 컴포넌트들, 동작들, 또는 구성요소들을 한 개 또는 복수 개로 제한하려는 의도가 아니다. 임의의 정보, 행위(act) 또는 요소(element)에 기반되는 임의의 행위 또는 요소(element)에 대한 언급은 해당 행위 또는 요소가 적어도 부분적으로 임의의 정보, 동작, 또는 요소에 기초하는 구현들을 포함한다.
본 명세서에 개시된 임의의 구현은 임의의 다른 구현 또는 실시 예와 결합될 수 있고, "일 구현", "몇몇 구현들", "하나의 구현" 또는 그와 유사한 표현은 반드시 상호 배타적인 것은 아니며, 그 구현과 결합하여 개시된 특정 피처, 구조, 또는 특성이 적어도 하나의 구현 예 또는 실시 예에 포함되는 것을 나타내는 것으로 의도된다. 본 명세서에 사용된 용어들이 필수적으로 모두 동일한 구현을 가리키는 것은 아니다. 모든 구현은 본 명세서에 개시된 양상들 및 구현들과 일치하는 임의의 방식으로, 포괄적으로 또는 배타적으로, 다른 구현들과 결합된다.
"또는"에 대한 언급은 포괄하는 의미로 해석되며, 따라서 "또는"을 사용하여 설명된 용어들은 하나, 하나 이상, 그리고 개시된 용어들 전부 중 어느 하나를 가리킨다. 예를 들어, "'A'와 'B' 중 적어도 하나"에 대한 언급은 'A'만 포함하거나, 'B'만 포함하는 경우뿐만 아니라, 'A'와 'B' 모두를 포함 할 수 있다. 이러한 언급이 "포함하는" 또는 다른 알려진 용어와 함께 사용되는 경우 추가 항목들을 포함할 수 있다.
도면, 상세한 설명 또는 임의의 청구항에서 기술적 피처들에 참조부호가 뒤따르는 경우, 그러한 참조부호는 도면, 상세한 설명 및 청구항들의 명료성을 향상시키기 위해 포함되었다. 따라서, 참조부호들의 존재 또는 부재가 청구항의 구성요소들의 범위를 제한하는 것으로 작용하지 않는다.
여기에 기술된 시스템 및 방법은 그 특성을 벗어나지 않는한 다른 특정 형태로 구체화될 수 있다. 예를 들어, 데이터 처리 시스템 (105)의 컴포넌트들은 개별 컴포넌트일 필요는 없고, 하나의 컴포넌트가 다른 컴포넌트를 포함하는 형태일 수 있다. 하나 이상의 컴퓨팅 디바이스들 (예, 서버들)의 프로세서들은 데이터 처리 시스템 (105)의 컴포넌트들을 포함하거나 실행할 수 있다. 전술한 구현 예들은 기술된 시스템 및 방법들을 제한하는 것이 아니라 설명하기 위한 예시이다. 따라서, 본 명세서에 설명된 시스템 및 방법들의 범위는 전술한 설명보다는 첨부된 청구범위에 의해 나타내지며, 청구항의 균등물들의 전체 범위 내에서의 여러 변형 예들이 본 명세서에 포함된다.

Claims (20)

  1. 시퀀스 종속 동작들을 나타내는 다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템으로서, 상기 시스템은:
    데이터 처리 시스템에 의해 실행되며, 상기 데이터 처리 시스템의 인터페이스를 통해, 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 1 입력 오디오 신호를 포함하는 데이터 패킷들을 수신하는 자연어 처리기 컴포넌트 - 상기 자연어 처리기 컴포넌트는, 제 1 요청 및 상기 제 1 요청에 대응하는 제 1 트리거 키워드를 식별하기 위해 제 1 입력 오디오 신호를 파싱하고 - 와;
    상기 데이터 처리 시스템의 다이렉트 액션(direct action) 애플리케이션 프로그래밍 인터페이스("API") -
    상기 다이렉트 API는, 상기 제 1 트리거 키워드에 기초하여 그리고 상기 제 1 요청에 응답하여, 제 1 액션 데이터 구조를 생성하고; 그리고
    제 1 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간에 제 1 통신 세션을 설정하기 위한 제 1 액션 데이터 구조를 포함하는 제 1 데이터 전송과, 상기 데이터 처리 시스템을 통해 클라이언트 컴퓨팅 디바이스로부터 상기 제1 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제1 통신 세션의 데이터 패킷들을 구성하고;
    상기 자연어 처리기 컴포넌트는, 상기 데이터 처리 시스템의 인터페이스를 통해, 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 2 입력 오디오 신호를 포함하는 데이터 패킷들을 수신하고, 제2 요청과 상기 제2 요청에 대응되는 제2 트리거 키워드를 식별하기 위해 상기 제 2 입력 오디오 신호를 파싱하며;
    상기 다이렉트 액션 API는:
    상기 제 2 트리거 키워드에 기초하여 그리고 상기 제 2 요청에 응답하여, 제 2 액션 데이터 구조를 생성하고; 그리고
    제 2 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간에 제 2 통신 세션을 설정하기 위해 상기 제 2 액션 데이터 구조를 포함하는 제 2 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 2 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제2 통신 세션의 데이터 패킷들을 구성하고 - 와; 그리고
    상기 데이터 처리 시스템에 의해 실행되는 스레드 최적화 컴포넌트(thread optimization component)를 포함하고,
    상기 스레드 최적화 컴포넌트는,
    상기 제 1 데이터 전송의 데이터 패킷들을 획득하고, 상기 제 2 데이터 전송의 데이터 패킷들을 획득하며;
    상기 제1 데이터 전송의 데이터 패킷들과 상기 제2 데이터 전송의 데이터 패킷들에 적용된 휴리스틱 기술(heuristic technique)에 기초하여, 시퀀스 종속 파라미터(sequence dependency parameter)를 결정하고; 그리고
    상기 시퀀스 종속 파라미터와 임계값의 비교에 기초하여, 상기 제 1 데이터 전송과 상기 제2 데이터 전송을 단일 스레드(single thread)에 병합하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  2. 제1항에 있어서,
    상기 단일 스레드는 제2액션 이전에 발생하도록 스케줄링된 제1액션, 상기 제1액션 데이터 구조에 대응되는 제1액션 및 상기 제2액션 데이터 구조에 대응되는 제2액션을 나타내며:
    상기 다이렉트 액션 API은 상기 제1액션의 완료를 감지하며(detect); 그리고
    상기 제1액션의 완료에 후속하여 상기 단일 스레드의 데이터 패킷들을 상기 제2서비스 제공자 컴퓨팅 디바이스로 전송하는 상기 데이터 처리 시스템의 인터페이스를 더 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  3. 제1항에 있어서,
    상기 시퀀스 종속 파라미터는, 상기 제1액션 데이터 구조에 대응되는 액션이 상기 제2액션 데이터 구조에 대응되는 액션 이전에 발생하도록 스케줄링된 것을 나타내는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  4. 제3항에 있어서,
    상기 다이렉트 API는 상기 제1액션 데이터 구조에 대응되는 액션과 연관된 시간에 기초하여 상기 제2액션 데이터 구조에 대응되는 액션과 연관된 교착 상태(deadlock condition)를 식별하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  5. 제4항에 있어서,
    상기 교착 상태에 응답하여, 상기 제2통신 세션의 데이터 패킷들이 상기 제2 서비스 제공자 컴퓨팅 디바이스로 전송되는 것을 차단하는 상기 데이터 처리 시스템의 인터페이스를 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  6. 제4항에 있어서,
    상기 다이렉트 액션 API는 상기 교착 상태의 종료의 표시를 획득하고; 그리고
    상기 교착 상태의 종료에 후속하여 상기 제2통신 세션의 데이터 패킷들을 상기 제2 서비스 제공자 컴퓨팅 디바이스로 전송하는 상기 데이터 처리 시스템의 인터페이스를 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  7. 제1항에 있어서,
    상기 단일 스레드는 제1액션, 상기 제1액션에 후속하는 제2액션, 및 상기 제2액션에 후속하는 제3액션의 시퀀스 순서로 상기 단일 스레드에 대한 시퀀스 종속 액션들을 나타내고, 상기 다이렉트 액션 API가:
    상기 시퀀스 순서의 표시를 수신하고, 상기 시퀀스 순서의 표시의 수신에 후속하여;
    변경된 시퀀스 순서를 생성하고, 상기 변경된 시퀀스 순서는 상기 제2액션에 앞서는 상기 제3액션을 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  8. 제1항에 있어서,
    상기 단일 스레드는 상기 단일 스레드에 대한 일련의 시퀀스 종속 액션들을 나타내고, 상기 시퀀스 종속 액션들은 제1액션, 상기 제1액션에 후속하는 제2액션, 상기 제2액션에 후속하는 제3액션을 포함하고,
    상기 다이렉트 액션 API는 상기 제1액션의 완료 시간에 기초하여 교착 상태를 판단하고;
    상기 다이렉트 액션 API는 상기 제1액션의 완료에 기초하여 상기 교착 상태의 해제를 판단하고; 그리고,
    상기 교착 상태의 해제에 응답하여, 상기 제2액션에 대한 콘텐츠 아이템을 식별하기 위한 상기 데이터 처리 시스템의 콘텐츠 선택기 컴포넌트를 더 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  9. 제1항에 있어서,
    상기 스레드 최적화 컴포넌트는 상기 단일 스레드에 대한 일련의 시퀀스 종속 액션들을 식별하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  10. 제1항에 있어서,
    상기 다이렉트 액션 API는 상기 제1데이터 전송 및 상기 제2데이터 전송을 단일 스레드에 병합한 다음, 상기 통신 세션의 일부로 상기 제1데이터 전송 및 상기 제2데이터 전송 중 적어도 하나를 전송하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  11. 제1항에 있어서,
    상기 다이렉트 액션 API는 복수의 액션들의 시퀀스와 관련된 교착 상태를 식별하고; 그리고
    상기 교착 상태에 응답하여 상기 단일 스레드에 대한 일련의 시퀀스 종속 액션들과 관련된 콘텐츠 아이템의 선택을 차단하는(block) 상기 데이터 처리 시스템의 콘텐츠 선택기 컴포넌트를 더 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  12. 제1항에 있어서,
    상기 스레드 최적화 컴포넌트는 상기 제1액션 데이터 구조를 너머(over) 상기 제2액션 데이터 구조를 우선 순위화하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  13. 제12항에 있어서,
    상기 데이터 처리 시스템의 콘텐츠 선택기 컴포넌트를 더 포함하고, 상기 콘텐츠 선택기 컴포넌트는:
    상기 제2액션 데이터 구조에 응답하는 콘텐츠 아이템을 식별하고; 그리고
    상기 제2액션 데이터 구조에 응답하는 콘텐츠 아이템의 식별에 후속하여, 상기 제1액션 데이터 구조에 응답하는 콘텐츠 아이템을 식별하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  14. 제1항에 있어서,
    상기 제2액션 데이터 구조에 응답하는 콘텐츠 아이템을 선택하기 위해 오프라인 액션을 수행하는 상기 데이터 처리 시스템의 콘텐츠 선택기 컴포넌트를 더 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  15. 제1항에 있어서,
    상기 다이렉트 액션 API는 제1액션 및 제2액션 간의 시퀀스 종속성(sequence dependency)에 기초하여 상기 제1데이터 구조 및 상기 제2데이터 구조 중 적어도 하나의 가변 필드를 채우는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  16. 제1항에 있어서,
    상기 제1통신 세션 및 상기 제2통신 세션은 공통 통신 세션의 일부인 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 패킷들을 결합하기 위한 시스템.
  17. 시퀀스 종속 동작들을 가리키는 다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 방법으로서, 상기 방법은:
    데이터 처리 시스템에 의해 실행되는 자연어 처리기 컴포넌트에 의하여, 데이터 처리 시스템의 인터페이스를 통해, 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 1 입력 오디오 신호를 포함하는 데이터 패킷들을 수신하는 단계;
    상기 자연어 처리기 컴포넌트에 의하여, 상기 제 1 입력 오디오 신호로부터, 제 1 요청 및 상기 제 1 요청에 대응되는 제 1 트리거 키워드를 식별하는 단계;
    상기 데이터 처리 시스템의 다이렉트 액션 애플리케이션 프로그래밍 인터페이스("API")에 의하여, 상기 제 1 트리거 키워드에 기초하여 그리고 상기 제 1 요청에 응답하여, 제1 액션 데이터 구조를 생성하는 단계;
    제 1 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간의 제 1 통신 세션을 위한 제 1 액션 데이터 구조를 포함하는 제1 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 1 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제 1 통신 세션의 데이터 패킷들을 구성하는 단계;
    상기 자연어 처리기 컴포넌트에 의하여, 상기 클라이언트 컴퓨팅 디바이스의 센서에 의해 검출된 제 2 입력 오디오 신호를 포함하는 데이터 패킷들을 상기 데이터 처리 시스템의 인터페이스를 통해 수신하는 단계와, 상기 자연어 처리기 컴포넌트에 의하여, 제2요청과 상기 제2요청에 대응되는 제 2 트리거 키워드를 식별하기 위하여 상기 제 2 입력 오디오 신호를 파싱하는 단계;
    상기 다이렉트 액션 API에 의해, 상기 제 2 트리거 키워드에 기초하여 그리고 상기 제 2 요청에 응답하여, 제 2 액션 데이터 구조를 생성하는 단계;
    제 2 서비스 제공자 컴퓨팅 디바이스와 상기 클라이언트 컴퓨팅 디바이스 간의 제 2 통신 세션을 위한 상기 제 2 액션 데이터 구조를 포함하는 제2 데이터 전송과, 상기 데이터 처리 시스템을 통해 상기 클라이언트 컴퓨팅 디바이스로부터 상기 제 2 서비스 제공자 컴퓨팅 디바이스로 라우팅되는 상기 제 2 통신 세션의 데이터 패킷들을 구성하는 단계;
    데이터 처리 시스템에 의해 실행되는 스레드 최적화 컴포넌트에 의하여, 제 1 데이터 전송의 데이터 및 제 2 데이터 전송의 데이터를 획득하는 단계;
    제 1 데이터 전송의 데이터와 제 2 데이터 전송의 데이터에 적용된 휴리스틱 기술에 기초하여, 시퀀스 종속 파라미터를 결정하는 단계; 및
    시퀀스 종속 파라미터에 기초하여, 제 1 액션 데이터 구조 및 제 2 액션 데이터 구조를 단일 스레드와 연계시키는(associating) 단계를 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 방법.
  18. 제17항에 있어서,
    상기 단일 스레드는, 제2액션 이전에 발생하도록 스케줄링된 제1액션, 상기 제1액션 데이터 구조에 대응되는 상기 제1액션 및 상기 제2액션 데이터 구조에 대응되는 상기 제2액션을 나타내고,
    상기 제1액션의 완료를 검출하는 단계; 및
    상기 제1액션의 완료에 후속하여, 상기 제 2 통신 세션의 데이터 패킷들을 제 2 서비스 제공자 컴퓨팅 디바이스로 제공하는 단계를 더 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 방법.
  19. 제17항에 있어서,
    상기 단일 스레드의 액션과 관련된 교착 상태를 식별하는 단계를 더 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 방법.
  20. 제17항에 있어서,
    상기 단일 스레드는, 상기 단일 스레드에 대한 시퀀스 종속 액션들을 시퀀스 순서로 나타내며, 상기 시퀀스 순서는 제1액션, 상기 제1액션에 후속하는 제2액션, 상기 제2액션에 후속하는 제3액션을 포함하고,
    상기 시퀀스 순서의 표시를 수신하는 단계; 그리고
    변경된 시퀀스 순서를 생성하고, 상기 변경된 시퀀스 순서는 상기 제2액션에 앞서는 상기 제3액션을 포함하는 단계를 더 포함하는 것을 특징으로 하는
    다수의 음성 기동 오디오 입력 데이터 통신들을 관리하는 방법.
KR1020177031385A 2016-12-30 2017-08-31 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합 KR102023148B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/395,725 2016-12-30
US15/395,725 US10630751B2 (en) 2016-12-30 2016-12-30 Sequence dependent data message consolidation in a voice activated computer network environment
PCT/US2017/049780 WO2018125306A1 (en) 2016-12-30 2017-08-31 Sequence dependent data message consolidation in a voice activated computer network environment

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197026715A Division KR102213761B1 (ko) 2016-12-30 2017-08-31 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합

Publications (2)

Publication Number Publication Date
KR20180090184A true KR20180090184A (ko) 2018-08-10
KR102023148B1 KR102023148B1 (ko) 2019-09-20

Family

ID=59901584

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217003319A KR102327616B1 (ko) 2016-12-30 2017-08-31 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합
KR1020197026715A KR102213761B1 (ko) 2016-12-30 2017-08-31 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합
KR1020177031385A KR102023148B1 (ko) 2016-12-30 2017-08-31 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020217003319A KR102327616B1 (ko) 2016-12-30 2017-08-31 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합
KR1020197026715A KR102213761B1 (ko) 2016-12-30 2017-08-31 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합

Country Status (8)

Country Link
US (3) US10630751B2 (ko)
EP (3) EP3360037B1 (ko)
JP (3) JP6549250B2 (ko)
KR (3) KR102327616B1 (ko)
CN (2) CN108604177B (ko)
DE (2) DE212017000053U1 (ko)
GB (1) GB2571918A (ko)
WO (1) WO2018125306A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200044645A (ko) * 2018-10-19 2020-04-29 한양대학교 산학협력단 부분 순서 보장 기반의 입출력 스케줄러 및 그 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10431209B2 (en) 2016-12-30 2019-10-01 Google Llc Feedback controller for data transmissions
US10614153B2 (en) * 2013-09-30 2020-04-07 Google Llc Resource size-based content item selection
US9703757B2 (en) 2013-09-30 2017-07-11 Google Inc. Automatically determining a size for a content item for a web page
CN110811115A (zh) * 2018-08-13 2020-02-21 丽宝大数据股份有限公司 电子化妆镜装置及其脚本运行方法
US10771523B1 (en) * 2019-04-12 2020-09-08 Dish Network L.L.C. Asynchronous real-time media transfer over wireless networks
US10498721B1 (en) * 2019-06-03 2019-12-03 Capital One Services, Llc Multi-device verification via non-audible sound
CN111459451A (zh) * 2020-03-31 2020-07-28 北京市商汤科技开发有限公司 交互对象的驱动方法、装置、设备以及存储介质
CN113380247A (zh) * 2021-06-08 2021-09-10 阿波罗智联(北京)科技有限公司 多音区语音唤醒、识别方法和装置、设备、存储介质
US11671249B1 (en) * 2022-07-25 2023-06-06 Gravystack, Inc. Apparatus for generating an action-based collective

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011066623A (ja) * 2009-09-16 2011-03-31 Toshiba Corp スケジューリング装置、方法及びプログラム
JP2014531076A (ja) * 2011-09-30 2014-11-20 コンプリヘンド システムズ,インコーポレイテッド 複数のデータ・ソースを表すスキーマを生成するシステム及び方法
US20150066479A1 (en) * 2012-04-20 2015-03-05 Maluuba Inc. Conversational agent

Family Cites Families (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3493441A (en) * 1967-08-25 1970-02-03 Hooker Chemical Corp Detoxification of hexavalent chromium containing coating on a metal surface
US4603430A (en) 1984-09-21 1986-07-29 Hughes Aircraft Company Target discrimination utilizing median filters
DE69318571T2 (de) 1992-12-01 1998-09-17 Microsoft Corp Verfahren und system für die in-ort-wechselwirkung mit eingebetteten objekten
US5812935A (en) 1993-04-17 1998-09-22 Hughes Electronics Cellular system employing base station transmit diversity according to transmission quality level
US5608727A (en) 1995-05-02 1997-03-04 Motorola, Inc. Method and system for management of frequency spectrum among multiple applications on a shared medium
US6119101A (en) 1996-01-17 2000-09-12 Personal Agents, Inc. Intelligent agents for electronic commerce
DE19716445A1 (de) 1997-04-21 1998-10-22 Heidelberger Druckmasch Ag Verfahren zur Verbreiterung von Zeichen
US6529730B1 (en) 1998-05-15 2003-03-04 Conexant Systems, Inc System and method for adaptive multi-rate (AMR) vocoder rate adaption
US6829646B1 (en) 1999-10-13 2004-12-07 L. V. Partners, L.P. Presentation of web page content based upon computer video resolutions
US20010016034A1 (en) * 1998-12-08 2001-08-23 Sukhinder Singh Method and apparatus for obtaining and aggregating off-line user data for re-packaging and presentation to users over a data-packet-network
US7003729B1 (en) 1999-04-20 2006-02-21 I2 Technologies Us, Inc. Method and apparatus for supporting multiple alternative graphical user interfaces in computer-moderated electronic commerce
US6275806B1 (en) 1999-08-31 2001-08-14 Andersen Consulting, Llp System method and article of manufacture for detecting emotion in voice signals by utilizing statistics for voice signal parameters
US6684249B1 (en) 2000-05-26 2004-01-27 Sonicbox, Inc. Method and system for adding advertisements over streaming audio based upon a user profile over a world wide area network of computers
FI20001577A (fi) 2000-06-30 2001-12-31 Nokia Mobile Phones Ltd Puheenkoodaus
US6857007B1 (en) 2000-08-30 2005-02-15 Bloomfield Enterprises, Llc Personal digital assistant facilitated communication system
WO2002086864A1 (en) 2001-04-18 2002-10-31 Rutgers, The State University Of New Jersey System and method for adaptive language understanding by computers
EP1449190B1 (en) 2001-05-02 2013-07-10 Bitstream, Inc. Methods, systems, and programming for producing and displaying subpixel-optimized images and digital content including such images
US7219309B2 (en) 2001-05-02 2007-05-15 Bitstream Inc. Innovations for the display of web pages
GB0118294D0 (en) * 2001-07-27 2001-09-19 Ibm Method and system for deadlock detection and avoidance
GB2392595A (en) 2002-08-30 2004-03-03 Hewlett Packard Co Page composition
US20040056894A1 (en) 2002-09-19 2004-03-25 Igor Zaika System and method for describing and instantiating extensible user interfaces
US7296230B2 (en) 2002-11-29 2007-11-13 Nippon Telegraph And Telephone Corporation Linked contents browsing support device, linked contents continuous browsing support device, and method and program therefor, and recording medium therewith
WO2004068320A2 (en) 2003-01-27 2004-08-12 Vincent Wen-Jeng Lue Method and apparatus for adapting web contents to different display area dimensions
US7512876B2 (en) 2003-02-14 2009-03-31 Access Company, Ltd. Browser program for performing table-layout
KR20040076649A (ko) 2003-02-26 2004-09-03 삼성전자주식회사 종횡비별 브라우저 그래픽 표시 장치 및 방법
KR100447526B1 (ko) 2003-03-18 2004-09-08 엔에이치엔(주) 인터넷 사용자의 접속 의도 판단 방법 및 이를 이용한인터넷 상의 광고 방법과 그 시스템
WO2004109557A1 (en) 2003-06-03 2004-12-16 Forbes Holten Norris, Iii Flexible, dynamic menu-based web-page architecture
JP3920818B2 (ja) * 2003-07-22 2007-05-30 株式会社東芝 スケジューリング方法および情報処理システム
GB0320278D0 (en) 2003-08-29 2003-10-01 Hewlett Packard Development Co Constrained document layout
US7809843B1 (en) * 2003-09-18 2010-10-05 Intel Corporation Globally unique identification in communications protocols and databases
NO20034724D0 (no) 2003-10-22 2003-10-22 Opera Software Asa Presentasjon av HTML-innhold på en skjermterminal
KR100458461B1 (ko) 2004-03-04 2004-11-26 엔에이치엔(주) 지식 광고 방법 및 지식 광고 시스템
US7853255B2 (en) 2004-04-16 2010-12-14 Broadcom Corporation Digital personal assistance via a broadband access gateway
US20060103667A1 (en) 2004-10-28 2006-05-18 Universal-Ad. Ltd. Method, system and computer readable code for automatic reize of product oriented advertisements
US20060111971A1 (en) 2004-11-24 2006-05-25 Microsoft Corporation System and method for on-line and off-line advertising in content delivered to a display screen
EP1861800A1 (en) 2005-03-09 2007-12-05 Medio Systems, Inc. Method and system of bidding for advertisement placement on computing devices
JP4346571B2 (ja) * 2005-03-16 2009-10-21 富士通株式会社 音声認識システム、音声認識方法、及びコンピュータプログラム
US7730418B2 (en) 2005-05-04 2010-06-01 Workman Nydegger Size to content windows for computer graphics
JP4665639B2 (ja) 2005-07-19 2011-04-06 日本電気株式会社 通信品質監視システム、通信品質監視装置、通信品質劣化箇所特定装置、その装置における方法及びプログラム
JP2007080357A (ja) 2005-09-13 2007-03-29 Toshiba Corp 情報記憶媒体、情報再生方法、情報再生装置
US8195133B2 (en) 2005-09-14 2012-06-05 Jumptap, Inc. Mobile dynamic advertisement creation and placement
FI118779B (fi) 2005-10-07 2008-03-14 Riku Rikkola Kortti, kortin vastaanottolaite ja järjestelmä sähköenergian välittämistä varten
JP2007115293A (ja) 2005-10-17 2007-05-10 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
US7904505B2 (en) 2005-11-02 2011-03-08 At&T Intellectual Property I, L.P. Service to push author-spoken audio content with targeted audio advertising to users
ES2420559T3 (es) 2006-02-10 2013-08-23 Spinvox Limited Un sistema a gran escala, independiente del usuario e independiente del dispositivo de conversión del mensaje vocal a texto
US7606875B2 (en) 2006-03-28 2009-10-20 Microsoft Corporation Detecting serving area of a web resource
CN101055577A (zh) 2006-04-12 2007-10-17 龙搜(北京)科技有限公司 可扩展标记语言集中器
US8582663B2 (en) * 2006-08-08 2013-11-12 Core Wireless Licensing S.A.R.L. Method, device, and system for multiplexing of video streams
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
CN101529307B (zh) 2006-11-01 2012-03-28 日本电气株式会社 图像显示设备
US7742922B2 (en) 2006-11-09 2010-06-22 Goller Michael D Speech interface for search engines
US8031857B2 (en) 2006-12-19 2011-10-04 Scenera Technologies, Llc Methods and systems for changing a communication quality of a communication session based on a meaning of speech data
US7877696B2 (en) 2007-01-05 2011-01-25 Eastman Kodak Company Multi-frame display system with semantic image arrangement
US8107960B2 (en) * 2007-01-23 2012-01-31 Toshiba America Research, Inc. Prioritized query
GB2451415B (en) 2007-02-13 2011-08-17 Vodafone Plc Content reproduction in telecommunications systems
US8413070B1 (en) 2007-05-07 2013-04-02 Adobe Systems Incorporated Declarative resizeable list in electronic form
JPWO2008146784A1 (ja) 2007-05-29 2010-08-19 株式会社Access 端末装置、ヒストリ管理方法、およびヒストリ管理の為のコンピュータ使用可能な記憶媒体
US20090085921A1 (en) 2007-10-01 2009-04-02 Lydia Mai Do Populate Web-Based Content Based on Space Availability
US8095865B2 (en) 2007-11-21 2012-01-10 Microsoft Corporation Layout manager
US8555193B2 (en) 2008-01-17 2013-10-08 Google Inc. System for intelligent automated layout and management of interactive windows
US8453051B1 (en) 2008-03-31 2013-05-28 Amazon Technologies, Inc. Dynamic display dependent markup language interface
US20090279108A1 (en) 2008-05-12 2009-11-12 Nagayasu Hoshi Image Processing Apparatus
JP4547638B2 (ja) 2008-05-29 2010-09-22 ソニー株式会社 Webページ表示装置及びWebページ表示方法
US20090300120A1 (en) 2008-06-03 2009-12-03 Contec Innovations Inc. Method and system for producing a presentation message for a mobile device
CA2633177A1 (en) 2008-06-03 2009-12-03 Contec Innovations, Inc. Method and system for producing a presentation message for a mobile device
US9357075B1 (en) 2008-06-05 2016-05-31 Avaya Inc. Conference call quality via a connection-testing phase
US8527339B2 (en) 2008-06-26 2013-09-03 Microsoft Corporation Quality based pricing and ranking for online ads
US8438310B2 (en) 2008-10-01 2013-05-07 Adp Dealer Services, Inc. Systems and methods for configuring a website having a plurality of operational modes
US8938672B2 (en) 2008-11-04 2015-01-20 International Business Machines Corporation Amending the display property of grid elements
US8145561B1 (en) 2009-01-05 2012-03-27 Sprint Communications Company L.P. Phone usage pattern as credit card fraud detection trigger
JP4978629B2 (ja) 2009-01-19 2012-07-18 コニカミノルタビジネステクノロジーズ株式会社 項目設定装置、並びにその制御方法及び制御プログラム
JP5018794B2 (ja) 2009-01-20 2012-09-05 コニカミノルタビジネステクノロジーズ株式会社 印刷ジョブ出力装置、並びにその制御方法及び制御プログラム
JP4760921B2 (ja) 2009-01-28 2011-08-31 コニカミノルタビジネステクノロジーズ株式会社 項目設定装置、並びにその制御方法及び制御プログラム
US8949582B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
US8448074B2 (en) 2009-05-01 2013-05-21 Qualcomm Incorporated Method and apparatus for providing portioned web pages in a graphical user interface
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
JP5299125B2 (ja) 2009-06-30 2013-09-25 富士ゼロックス株式会社 文書処理装置及びプログラム
JP5340088B2 (ja) 2009-09-07 2013-11-13 キヤノン株式会社 情報処理方法及び装置
US8402379B2 (en) 2009-09-30 2013-03-19 SAP Portals Israel Limited Dynamic content layout for a user interface display
US9124642B2 (en) 2009-10-16 2015-09-01 Qualcomm Incorporated Adaptively streaming multimedia
WO2011065564A1 (ja) 2009-11-30 2011-06-03 楽天株式会社 オブジェクト表示装置、オブジェクト表示方法、オブジェクト表示制御プログラム、及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8626511B2 (en) * 2010-01-22 2014-01-07 Google Inc. Multi-dimensional disambiguation of voice commands
US8793598B2 (en) 2010-04-14 2014-07-29 Microsoft Corporation Cross-browser web dialog platform
WO2012002351A1 (ja) 2010-06-29 2012-01-05 楽天株式会社 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理プログラムが記録された記録媒体
KR101731843B1 (ko) 2010-09-02 2017-05-02 삼성전자 주식회사 아이템 디스플레이하는 방법 및 장치
KR101045589B1 (ko) 2010-09-15 2011-07-01 주식회사 유비온 네트워크를 통해 수신한 컨텐츠의 표시장치 및 그 방법
JP2012073863A (ja) 2010-09-29 2012-04-12 Rakuten Inc 広告表示プログラム、広告表示装置、広告表示方法、記録媒体、および、広告表示システム
US20120159314A1 (en) 2010-12-16 2012-06-21 Microsoft Corporation Adaptive content layout
US20120158490A1 (en) 2010-12-16 2012-06-21 Yahoo! Inc. Sponsored search auction mechanism for rich media advertising
US8510237B2 (en) 2011-03-15 2013-08-13 Qualcomm Incorporated Machine learning method to identify independent tasks for parallel layout in web browsers
US20130007602A1 (en) 2011-06-29 2013-01-03 Apple Inc. Fixed layout electronic publications
US9396167B2 (en) 2011-07-21 2016-07-19 Flipboard, Inc. Template-based page layout for hosted social magazines
US8872855B2 (en) 2011-07-21 2014-10-28 Flipboard, Inc. Adjusting orientation of content regions in a page layout
US9760236B2 (en) 2011-10-14 2017-09-12 Georgia Tech Research Corporation View virtualization and transformations for mobile applications
JP5667962B2 (ja) * 2011-11-08 2015-02-12 日本電信電話株式会社 音声認識装置とその方法とプログラム
JPWO2013080866A1 (ja) * 2011-11-30 2015-04-27 三菱電機株式会社 情報処理システム及び情報処理方法
US9542956B1 (en) 2012-01-09 2017-01-10 Interactive Voice, Inc. Systems and methods for responding to human spoken audio
US20130290395A1 (en) 2012-04-26 2013-10-31 Empire Technology Development Llc Multimedia application rental and billing
US9323443B2 (en) 2012-05-02 2016-04-26 International Business Machines Corporation Drilling of displayed content in a touch screen device
US20130305144A1 (en) 2012-05-09 2013-11-14 Ni Group Limited Method of Publishing Digital Content
US20130305145A1 (en) 2012-05-09 2013-11-14 Ni Group Limited A Method of Publishing Digital Content
US9280610B2 (en) 2012-05-14 2016-03-08 Apple Inc. Crowd sourcing information to fulfill user requests
US20140019462A1 (en) 2012-07-15 2014-01-16 Microsoft Corporation Contextual query adjustments using natural action input
US20140033228A1 (en) 2012-07-25 2014-01-30 Google Inc. Configuring content display dimensions
US9865008B2 (en) 2012-09-20 2018-01-09 Google Llc Determining a configuration of a content item display environment
US20140108941A1 (en) 2012-10-17 2014-04-17 Christopher Stephen Joel Method and Apparatus for Automatically Optimizing the Loading of Images in a Cloud-Based Proxy Service
US9164966B1 (en) 2012-10-24 2015-10-20 Google Inc. Determining sizes of content items
US8977555B2 (en) * 2012-12-20 2015-03-10 Amazon Technologies, Inc. Identification of utterance subjects
US20140180796A1 (en) 2012-12-21 2014-06-26 Sándor Sás Selecting and serving content items of different content item types for a content item slot
KR20140089876A (ko) 2013-01-07 2014-07-16 삼성전자주식회사 대화형 인터페이스 장치 및 그의 제어 방법
JP2016508007A (ja) 2013-02-07 2016-03-10 アップル インコーポレイテッド デジタルアシスタントのためのボイストリガ
US20140258849A1 (en) 2013-03-06 2014-09-11 Google Inc. Automatic Alignment of a Multi-Dimensional Layout
US11233841B2 (en) 2013-03-15 2022-01-25 Yottaa, Inc. Systems and methods for configuration-based optimization by an intermediary
EP2814244A1 (en) 2013-06-11 2014-12-17 Alcatel Lucent A method and a system for improving communication quality of a video conference
US20140372903A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Independent Hit Testing for Touchpad Manipulations and Double-Tap Zooming
US9472206B2 (en) * 2013-06-17 2016-10-18 Google Technology Holdings LLC Privacy mode for always-on voice-activated information assistant
US9483444B2 (en) 2013-07-09 2016-11-01 Flipboard, Inc. Dynamic layout engine for a digital magazine
US10956433B2 (en) * 2013-07-15 2021-03-23 Microsoft Technology Licensing, Llc Performing an operation relative to tabular data based upon voice input
WO2015041711A1 (en) 2013-09-20 2015-03-26 Yottaa, Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
US9703757B2 (en) 2013-09-30 2017-07-11 Google Inc. Automatically determining a size for a content item for a web page
US10614153B2 (en) 2013-09-30 2020-04-07 Google Llc Resource size-based content item selection
US10431209B2 (en) 2016-12-30 2019-10-01 Google Llc Feedback controller for data transmissions
US10079897B2 (en) * 2013-10-29 2018-09-18 Telefonaktiebolaget Lm Ericsson (Publ) Control of a chain of services
US10726831B2 (en) 2014-05-20 2020-07-28 Amazon Technologies, Inc. Context interpretation in natural language processing using previous dialog acts
US9350770B2 (en) 2014-05-30 2016-05-24 Apple Inc. Redundant transmission channels for real-time applications on mobile devices
US9330433B2 (en) * 2014-06-30 2016-05-03 Intel Corporation Data distribution fabric in scalable GPUs
US10108817B2 (en) 2014-09-26 2018-10-23 Microsoft Technology Licensing, Llc Privacy-preserving cookies for personalization without user tracking
KR102342623B1 (ko) 2014-10-01 2021-12-22 엑스브레인, 인크. 음성 및 연결 플랫폼
US9711141B2 (en) * 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US9959129B2 (en) 2015-01-09 2018-05-01 Microsoft Technology Licensing, Llc Headless task completion within digital personal assistants
DE112015006069T5 (de) * 2015-01-28 2017-10-12 Mitsubishi Electric Corporation Absichtsinferenzsystem und absichtsinferenzverfahren
JP6449039B2 (ja) * 2015-02-10 2019-01-09 ホーチキ株式会社 機器管理装置、機器管理方法、及びプログラム
US20160274864A1 (en) 2015-03-20 2016-09-22 Google Inc. Systems and methods for enabling user voice interaction with a host computing device
US10671796B2 (en) 2015-06-07 2020-06-02 Apple Inc. Article authoring, distribution and rendering architecture
US10331312B2 (en) * 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US20170092278A1 (en) 2015-09-30 2017-03-30 Apple Inc. Speaker recognition
US9747926B2 (en) 2015-10-16 2017-08-29 Google Inc. Hotword recognition
US9928840B2 (en) 2015-10-16 2018-03-27 Google Llc Hotword recognition
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US9940929B2 (en) 2015-12-09 2018-04-10 Lenovo (Singapore) Pte. Ltd. Extending the period of voice recognition
CN105654950B (zh) 2016-01-28 2019-07-16 百度在线网络技术(北京)有限公司 自适应语音反馈方法和装置
US11477139B2 (en) * 2016-02-25 2022-10-18 Meta Platforms, Inc. Techniques for messaging bot rich communication
US9864732B2 (en) 2016-05-02 2018-01-09 Google Inc. User interfaces that facilitate management of formatting of digital content
CN106033476B (zh) 2016-05-19 2019-07-23 西安交通大学 一种云计算环境中分布式计算模式下的增量式图计算方法
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US20180012595A1 (en) * 2016-07-07 2018-01-11 Intelligently Interactive, Inc. Simple affirmative response operating system
US20180191798A1 (en) 2016-12-30 2018-07-05 Google Inc. Methods and systems for server-side rendering of native content for presentation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011066623A (ja) * 2009-09-16 2011-03-31 Toshiba Corp スケジューリング装置、方法及びプログラム
JP2014531076A (ja) * 2011-09-30 2014-11-20 コンプリヘンド システムズ,インコーポレイテッド 複数のデータ・ソースを表すスキーマを生成するシステム及び方法
US20150066479A1 (en) * 2012-04-20 2015-03-05 Maluuba Inc. Conversational agent

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200044645A (ko) * 2018-10-19 2020-04-29 한양대학교 산학협력단 부분 순서 보장 기반의 입출력 스케줄러 및 그 방법

Also Published As

Publication number Publication date
KR20190107765A (ko) 2019-09-20
JP2019204515A (ja) 2019-11-28
JP2020198630A (ja) 2020-12-10
EP3979067A1 (en) 2022-04-06
EP3360037B1 (en) 2019-11-06
EP3360037A1 (en) 2018-08-15
JP6932827B2 (ja) 2021-09-08
CN108604177A (zh) 2018-09-28
DE212017000053U1 (de) 2018-08-27
EP3588268A1 (en) 2020-01-01
KR102327616B1 (ko) 2021-11-17
KR102023148B1 (ko) 2019-09-20
US20210099511A1 (en) 2021-04-01
US10893088B2 (en) 2021-01-12
EP3588268B1 (en) 2021-11-10
KR20210014773A (ko) 2021-02-09
CN113504888A (zh) 2021-10-15
JP2019506641A (ja) 2019-03-07
GB201803011D0 (en) 2018-04-11
CN108604177B (zh) 2021-06-25
US10630751B2 (en) 2020-04-21
KR102213761B1 (ko) 2021-02-08
US20200213382A1 (en) 2020-07-02
DE112017000104T5 (de) 2018-09-13
JP6549250B2 (ja) 2019-07-24
GB2571918A (en) 2019-09-18
JP6756017B2 (ja) 2020-09-16
WO2018125306A1 (en) 2018-07-05
US20180191804A1 (en) 2018-07-05

Similar Documents

Publication Publication Date Title
KR102268989B1 (ko) 음성 활성 데이터 패킷의 데이터 구조 풀링
KR102213761B1 (ko) 음성 기동 컴퓨터 네트워크 환경에서의 시퀀스 종속 데이터 메시지 통합
US10854198B2 (en) Sequence dependent operation processing of packet based data message transmissions

Legal Events

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