KR102313473B1 - 자동 어시스턴트를 위한 명령 번들 제안 제공 - Google Patents

자동 어시스턴트를 위한 명령 번들 제안 제공 Download PDF

Info

Publication number
KR102313473B1
KR102313473B1 KR1020197036636A KR20197036636A KR102313473B1 KR 102313473 B1 KR102313473 B1 KR 102313473B1 KR 1020197036636 A KR1020197036636 A KR 1020197036636A KR 20197036636 A KR20197036636 A KR 20197036636A KR 102313473 B1 KR102313473 B1 KR 102313473B1
Authority
KR
South Korea
Prior art keywords
bundle
user
instruction
bundles
instruction bundle
Prior art date
Application number
KR1020197036636A
Other languages
English (en)
Other versions
KR20200007882A (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 KR20200007882A publication Critical patent/KR20200007882A/ko
Application granted granted Critical
Publication of KR102313473B1 publication Critical patent/KR102313473B1/ko

Links

Images

Classifications

    • 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/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3334Selection or weighting of terms from queries, including natural language queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/216Parsing using statistical methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • G06F40/35Discourse or dialogue representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/26Speech to text systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/223Execution procedure of a spoken command
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/226Procedures used during a speech recognition process, e.g. man-machine dialogue using non-speech characteristics
    • G10L2015/227Procedures used during a speech recognition process, e.g. man-machine dialogue using non-speech characteristics of the speaker; Human-factor methodology
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/226Procedures used during a speech recognition process, e.g. man-machine dialogue using non-speech characteristics
    • G10L2015/228Procedures used during a speech recognition process, e.g. man-machine dialogue using non-speech characteristics of application context

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Probability & Statistics with Applications (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

자동 어시스턴트 사용자를 위한 명령 번들들을 생성 및/또는 추천하는 기술들이 설명된다. 명령 번들은 자동 어시스턴트에 의해 수행될 수 있는 복수의 개별 액션들을 포함한다. 명령 번들의 액션들 중 하나 이상은 대응하는 명령 및/또는 다른 데이터가 번들의 다른 액션들에 기초하여 데이터를 전송받는 장치들 및/또는 에이전트들과는 다른 하나 이상의 장치들 및/또는 에이전트들에 전송되게 할 수 있다. 구현들은 사용자와 관련이 있을 수 있는 명령 번들들을 결정하고, 이들 명령 번들들을 제안들로서 사용자에게 제시한다. 이러한 구현들 중 일부에서, 기계 학습 모델이 사용자를 위한 사용자 액션 임베딩 및 복수의 명령 번들들 각각을 위한 명령 번들 임베딩을 생성하기 위해 이용된다. 명령 번들(들)은 사용자 액션 임베딩과 명령 번들 임베딩들과의 비교에 기초하여 제안을 위해 선택될 수 있다.

Description

자동 어시스턴트를 위한 명령 번들 제안 제공
자동 어시스턴트(또한, "개인 어시스턴트", "모바일 어시스턴트" 등으로도 알려짐)는 스마트폰, 태블릿 컴퓨터, 웨어러블 장치, 자동차 시스템, 독립형 개인 어시스턴트 장치 등과 같은 다양한 클라이언트 장치를 통해 사용자와 인터랙션할 수 있다. 자동 어시스턴트는 사용자로부터 입력(예컨대, 타이핑을 통한 및/또는 발언에 의한 자연 언어 입력)을 수신하고, 응답 콘텐츠(예컨대, 시각적 및/또는 청각적 자연 언어 출력)로 및/또는 하나 이상의 주변 장치(예컨대, 사물 인터넷(loT) 장치)를 제어함으로써 응답한다. 클라이언트 장치를 통해 인터랙션하는 자동 어시스턴트는 클라이언트 장치 자체 및/또는 클라이언트 장치와 네트워크 통신하는 하나 이상의 원격 컴퓨팅 장치(예를 들어, "클라우드"의 컴퓨팅 장치(들))를 통해 구현될 수 있다. .
자동 어시스턴트는 종종 다양한 액션을 수행하도록 구성되며, 각 액션은 액션에 매핑된 미리 정해진 표준 명령(canonical command)(또는 이것의 약간의 변형물)에 응답하여 수행된다. 예를 들어, "어시스턴트, 내 거실 조명을 꺼줘"라는 음성 명령을 수신함에 응답하여, 자동 어시스턴트는 "거실" 조명으로 라벨이 붙은 사용자의 네트워크 조 명이 "꺼짐" 상태로 전환되게 하는 하나 이상의 명령이 전송되게 할 수 있다. 다른 예로서, "어시스턴트, 내일 날씨는 어떤가?"라는 별도의 음성 명령을 수신함에 응답하여, 자동 어시스턴트는 그 음성 명령을 발행한 사용자의 위치에 대해 "내일 날씨"에 대한 예측을 해결(resolve)하기 위해 하나 이상의 쿼리를 발행하고 그리고/또는 제 3자 에이전트와 인터랙션하고, 내일의 예상 날씨를 전달하는 그래픽 및/또는 가청 출력을 제공할 수 있다.
그러나, 자동 어시스턴트를 이용하는 사용자는 자동 어시스턴트에 의해 수행 가능한 많은 액션들중 많은 액션을 인식하지 못하고 그리고/또는 액션들이 자동 어시스턴트에 의해 수행되게 하는, 사용자가 제공할 수 있는 표준 명령들을 인식하지 못할 수 있다. 결과적으로, 많은 사용자들은 자동 어시스턴트 기능 중 제한된 양의 기능만을 사용하게 된다. 비록 표준 명령 및 관련 액션에 대한 일반적인 추천 (예컨대, "내일 날씨 보고를 얻기 위해서는 X라고 말하세요")가 자동 어시스턴트와 인터랙션하는 사용자에게 제공될 수 있지만, 종종 이러한 일반적인 추천은 사용자에게 맹목적으로 제공된다. 결과적으로 사용자에게 관련이 없는 추천을 제공하느라 상당한 네트워크 및/또는 계산 리소스들이 낭비될 수 있다. 또한, 종종 이러한 일반적인 추천는 단일 액션에 대한 것이다. 다수의 액션을 수행하기 위해서는, 다수의 대화 턴(dialog turns)을 통해 사용자에 의해 다수의 별개의 표준 명령들이 어시스턴트에게 제공되어야만 하며, 이에 따라 다수의 액션을 수행하느라 상당한 네트워크 및/또는 계산 리소스들을 소비하게 된다.
본 명세서는 자동 어시스턴트 애플리케이션의 사용자를 위한 명령 번들(command bundles)을 생성 및/또는 추천하기 위한 방법, 장치 및 (일시적 및 비-일시적) 컴퓨터 판독 가능 매체에 관한 것이다. 명령 번들은 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 개별 액션을 포함한다. 예를 들어, "안녕히 주무세요" 번들은 자동 어시스턴트 애플리케이션으로 하여금 다음 액션을 수행하게 할 수 있다: 하나 이상의 네트워크 조명을 끄라는 명령을 전송하는 제 1 액션, 오전 8시에 울리도록 사용자의 컴퓨팅 장치의 알람을 설정하도록 하는 명령을 전송하는 제 2 액션; "내일의" 현지 날씨를 요청하는 명령을 전송하고, 응답 콘텐츠를 청각적으로 제시하는 제 3 액션; 및 기타 액션.
전술한 예에서 알 수 있는 바와 같이, 명령 번들의 액션들 중 하나 이상의 액션은 대응하는 명령 및/또는 다른 데이터가 (다른 액션(들)에 기초하여 데이터가 전송되는) 장치 및/또는 에이전트와 구별되는 하나 이상의 장치 및/또는 에이전트에 전송되게 할 수 있다. 예를 들어, 앞의 예에서, 제 1 액션에 대해 명령이 네트워크 조명(들) (및/또는 네트워크 조명(들)과 통신하는 하드웨어 브리지)에 전송될 수 있는 반면, 제 3 액션에서는 별도의 명령이 "날씨" 에이전트를 호스팅하는 원격 컴퓨팅 장치에 전송될 수 있다. 명령 번들은 이 명령 번들에 대한 하나 이상의 호출 문구 중 하나(예컨대, "안녕히 주무세요(good night)" 번들에 대한 "안녕히 주무세요")를 말하는 것, 그 명령 번들에 대한 그래픽 사용자 인터페이스 요소 (예컨대, 그 명령 번들에 대한 "단축" 아이콘)를 활성화하는 것 및/또는 하나 이상의 문맥상 조건의 발생(예컨대, "안녕히 주무세요" 번들에 대해 오후 10시에 문맥상 조건의 발생)과 같은 다양한 큐들(cues)에 응답하여 활성화될 수 있다.
명령 번들은 스크래치(scratch)로부터 및/또는 한 명 이상의 사용자와 자동 어시스턴트(들)간의 인터랙션 중에 수집된 이력 데이터(historical data)에 기초하여 생성될 수 있다. 예를 들어, 명령 번들은 명령 번들에 대한 액션을 지정하고 하나 이상의 액션 각각에 대해, 선택적으로 액션의 하나 이상의 슬롯에 대한 하나 이상의 고정 슬롯 값을 지정하는 프로그래머에 의한 스크래치에 의해 생성될 수 있다. 다른 예로서, 명령 번들은 복수의 대응하는 사용자 각각에 의해 서로의 짧은 시간 내에 발행된 명령 문구를 수집함과 아울러 활성화될 때 이 수집된 명령 문구과 관련된 액션들이 수행되게 하는 대응 명령 번들을 생성함으로써 자동으로 생성될 수 있다. 예를 들어, 제 1, 제 2 및 제 3 액션을 갖는명령 번들은 적어도 사용자들의 임계 수(threshold quantity of users)에 기초하여 자동으로 생성될 수 있는데, 이 사용자들 각각은 제 1, 제 2 및 제 3 액션이 이들의 자동 어시스턴트들과의 인터랙션을 통해 서로 1분 이내에 수행되게 한다.
본 명세서에 개시된 구현들은 특정 사용자와 관련될 가능성이 있는 명령 번들을 결정하고, 이러한 명령 번들을 특정 사용자에게 제안/추천로서 제시하는 것에 관한 것이다. 이러한 구현들 중 일부에서, 하나 이상의 자동 어시스턴트 "액션"((및 선택적으로, 액션(들)에 대한 슬롯 값(들) 및/또는 다른 파라미터(들))의 표시를 입력으로서 수신하며, 다차원 공간에서 이러한 "액션들"(및 선택적으로, 슬롯 값(들) 및/또는 다른 파라미터(들))의 의미적 표현을 제공하는 임베딩을 출력으로 제공하는 머신학습 모델이 트레이닝될 수 있다.
특정 사용자가 자동 어시스턴트 애플리케이션을 통해 수행하는 액션들(및 선택적으로, 액션(들)에 대한 슬롯 값(들) 및/또는 다른 파라미터(들))은 기계 학습 모델을 사용하여 "사용자 액션 임베딩"을 생성하도록 처리될 수 있다. 또한, 명령 번들 각각에 대해, 명령 번들의 액션들(및 선택적으로, 액션(들)에 대한 슬롯 값(들) 및/또는 파라미터(들))은 상기 기계 학습 모델(또는 다른 기계 학습 모델)을 사용하여 "명령 번들 임베딩"을 생성하도록 처리될 수 있다. 그 후, "사용자 액션 임베딩"과 가장 유사한 "명령 번들 임베딩"을 갖는 명령 번들(들)이 특정 사용자에게 추천(들)로서 제공될 수 있다. 예를 들어, 특정 사용자가 단지 "음악" 및 "조명 제어"액션에 대해 자동 어시스턴트 애플리케이션을 사용하는 경우 "사용자 액션 임베딩"이 그러한 액션들을 나타낼 수 있다. 대응하는 "음악" 및 "조명 제어" 액션을 갖는 명령 번들들은 예를 들어, 음악 또는 조명 제어 액션이 없는 명령 번들들보다 "사용자 액션 임베딩"과 더 유사한 명령 번들 임베딩들을 가질 것이다. 이들 및 다른 방식으로, 특정 사용자에게 그래픽적으로 및/또는 청각적으로 추천되는 명령 번들들은 먼저, 이들 명령 번들들의 특징을 특정 사용자와 자동 어시스턴트 애플리케이션과의 과거 인터랙션의 특징과 비교함으로써 특정 사용자와 관련될 가능성이 있는 것으로 결정될 수 있다.
또한, 일부 구현들에서, 명령 번들을 사용자에게 추천할지 여부를 결정하는 데 있어, 필요한 주변 장치들 및/또는 명령 번들의 하나 이상의 액션(들)의 다른 파라미터(들)가 고려될 수 있다. 예를 들어, 특정 사용자가 명령 번들에 필요한 주변 장치(들)가 결여되어 있다는 결정에 기초하여 일부 명령 번들이 (예를 들어, 유사성 결정 전에) 필터링될 수 있다. 예를 들어, 액션의 수행을 위해 네트워크 조명을 필요로 하는 특정 명령 번들은 자동 어시스턴트 애플리케이션을 위해 특정 사용자와 관련된 네트워크 조명들이 없다는 결정에 기초하여 상기 특정 사용자에게 추천 고려 대상에서 필터링될 수 있다. 또한, 예를 들어, 사용자의 주변 장치들 및/또는 명령 번들들의 주변 장치들의 표시들이 전술한 그리고 본 명세서의 다른 곳에서 설명된 바와 같이 사용자 임베딩 및/또는 명령 번들 임베딩들을 생성하는데 있어 입력으로서 추가로 적용될 수 있다.
일부 구현들에서, 특정 사용자에게 추천된 명령 번들의 적어도 하나의 액션은 고정된 값을 결여한 적어도 하나의 슬롯(즉, 명시적인 "정의되지 않은" 또는 "변수" 값을 갖는 슬롯, 또는 슬롯에 대한 임의 값의 정의를 결여한 슬롯)을 포함할 수 있다. 이러한 구현들 중 일부에서, 명령 번들이 특정 사용자에 의해 선택되거나 또는 이어서 상기 특정 사용자에 의해 초기에 호출될 때, 자동 어시스턴트 애플리케이션은 특정 사용자에거 고정된 값을 결여한 슬롯에 대한 값의 해결(resolution)을 가능하게 하도록 프롬프트할 수 있다. 이러한 구현의 일부 버전에서, 슬롯에 대한 해결된 값은 특정 사용자와 관련하여 저장될 수 있고, 이후 명령 번들의 추가적인 호출에 응답하여 자동으로 이용될 수 있다. 예를 들어, 명령 번들은 사용자의 컴퓨팅 장치의 알람을 설정하기위한 명령을 전송하는 액션을 포함할 수 있다. 그러나 알람 액션의 "알람 시간" 슬롯은 고정되지 않을 수 있다. 이러한 구현들 중 일부에서, 자동 어시스턴트 애플리케이션은 사용자에게 제시를 위해 "알람 시간을 몇 시로 설정하시겠습니까" 라는 프롬프트를 표시하고, 이 프롬프트에 응답하여 수신되는 "오전 8시"의 응답 사용자 인터페이스 입력을 제공할 수 있다. 자동 어시스턴트 애플리케이션은 (선택적으로, 사용자가 이를 기본 값으로 설정하고자 하는지를 확인한 후) 사용자의 명령 번들에 대한 "알람 시간" 슬롯의 해결된 값으로서 "오전 8시"을 저장할 수 있다. 그 후, 자동 어시스턴트 애플리케이션은 특정 사용자에 의해 명령 번들이 호출될 때 "알람 시간" 슬롯에 대한 슬롯 값으로서 "오전 8시"을 자동으로 이용할 수 있다.
본 명세서에 기술된 주제의 특정 구현들은 다음 장점들 중 하나 이상을 실현하도록 구현될 수 있다. 명령 번들 추천 방법들 및/또는 명령 번들 추천에 사용되는 모델들은 다른 방법들에 비해 향상된 데이터 효율성을 제공할 수 있다. 예를 들어, 이러한 추천 방법들 및/또는 모델들은 특정 사용자에게 제공되는 명령 번들 추천이 특정 사용자와 관련될 가능성을 증가시키고, 결과적으로 특정 사용자가 이후에 명령 번들을 이용할 가능성을 증가시킬 수 있다. 이는 관련이 없는 명령 번들을 제공하느라 네트워크 리소스들 및/또는 계산 리소스들을 소비하는 것을 줄일 수 있다.
또한, 본 명세서에 기술된 바와 같이, 많은 구현들에서, 추천된 명령 번들은 후속적으로 호출될 때 복수의 개별 액션이 수행되게 할 수 있다. 이러한 후속 호출은 복수의 개별 액션들 각각이 개별적으로 호출된 경우보다 적게 네트워크 및/또는 계산 리소스들을 소비하는 후속 사용자 인터페이스 입력으로 달성될 수 있다. 예를 들어, 전술한 "안녕히 주무세요" 번들은 "어시스턴트, 안녕히 주무세요"와 같은 자동 어시스턴트에게 제공되는 음성 명령을 통해 호출될 수 있다. "안녕히 주무세요" 번들의 호출은 자동 어시스턴트 애플리케이션이 다음을 수행하게 할 수 있다: 하나 이상의 네트워크 조명등을 끄라는 명령을 전송하는 제 1 액션; 사용자의 컴퓨팅 장치의 알람을 오전 8시로 설정하도록 명령을 전송하는 제 2 액션; 및 "내일의" 현지 날씨를 요청하는 명령을 전송하고 응답 콘텐츠를 청각적으로 제시하는 제 3 액션을 포함한다. 명령 번들이 없는 경우 사용자는 적어도 3개의 개별 명령을 발행해야 하는바, 이를 처리하려면 명령 번들의 단일 호출 명령의 경우보다 더 많은 네트워크 및/또는 계산 리소스들을 요하게 된다. 예를 들어, 명령 번들이 없는 경우 사용자는 "어시스턴트, 조명등 꺼"; "어시스턴트, 내 휴대 전화의 알람을 오전 8시로 설정해줘"; 및 "어시스턴트, 내일 날씨는 어떤가?"의 3개의 개별 명령을 발행해야만 한다.
추가로, 본 명세서에서 또한 설명된 바와 같이, 많은 구현들에서, 추천된 명령 번들은 고정된 값이 없는 적어도 하나의 슬롯을 포함할 수 있고, 그 슬롯에 대한 값이 특정 사용자와의 인터랙션(예컨대, 자동 어시스턴트-사용자 대화)을 통해 특정 사용자에 대해 해결될 수 있다. 그 후, 특정 사용자 명령 번들이 호출되도록 할 때, 상기 해결된 값이 (선택적으로, 사용자에게 어떤 확인도 프롬프팅함이 없이) 이용될 수 있다. 이들 및 다른 방식으로, 사용자에 의한 명령 번들의 후속 호출은 슬롯에 대한 값을 해결하기 위해 제공될 필요가 있는 하나 이상의 프롬프트를 제거함으로써 보다 효율적으로 이루어질 수 있다.
상기 개요는 본 명세서에 개시된 다양한 구현들의 일부 특징들(features)의 개관(overview)으로서 제공된다. 이들 구현, 다양한 추가적인 특징 및 다양한 추가적인 구현들에 대한 추가적인 설명이 아래에 제공된다.
일부 구현들에서, 하나 이상의 프로세서들에 의해 수행되는 방법이 제공되며, 이 방법은 사용자에 대한 어시스턴트 인터랙션 데이터(assistant interaction data)를 식별하고, 트레이닝된 기계 학습 모델을 사용하여 어시스턴트 인터랙션 데이터의 적어도 일부를 처리하여 사용자 액션 임베딩(user action embedding)을 생성하는 단계를 포함한다. 상기 어시스턴트 인터랙션 데이터는 자동 어시스턴트 애플리케이션(automated assisstant application)에 의해 사용자에 대해 수행된 다수의 이력 액션들(historical actions)을 나타낸다. 이력 액션들 각각은 자동 어시스턴트 애플리케이션과 인터랙션하는 하나 이상의 자동 어시스턴트 인터페이스를 통해 사용자에 의해 제공되는 대응하는 사용자 인터페이스 입력에 응답하여 수행된다. 이 방법은 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 대응하는 개별 액션을 식별하는 명령 번들 데이터(command bundle data)를 각각 포함하는 복수의 명령 번들을 식별하는 단계를 더 포함한다. 이 방법은 명령 번들 각각에 대해, 명령 번들 임베딩(command bundle embedding)을 생성하기 위해 트레이닝된 기계 학습 모델 또는 추가의 트레이닝된 기계 학습 모델을 사용하여 상기 명령 번들 데이터의 적어도 일부를 처리하는 단계; 및 상기 명령 번들에 대한 유사성 점수(similarity score)를 생성하는 단계를 더 포함한다. 상기 명령 번들들 각각에 대한 유사성 점수를 생성하는 단계는 상기 사용자 액션 임베딩을 상기 명령 번들에 대한 명령 번들 임베딩과 비교하는 것을 포함한다. 본 방법은 상기 특정 명령 번들에 대한 유사성 점수에 기초하여 상기 복수의 명령 번들들 중 특정 명령 번들을 선택하는 단계를 더 포함한다. 본 방법은 상기 특정 명령 번들을 선택하는 것에 응답하여, 상기 특정 명령 번들과 관련된 정보가 사용자의 컴퓨팅 장치를 통해 사용자에게 제시되게 하는 단계를 더 포함한다. 사용자 인터페이스 입력에 응답하여 사용자에 대한 특정 명령 번들을 호출함은 자동 어시스턴트 애플리케이션으로 하여금 상기 특정 명령 번들의 대응하는 개별 액션들을 수행하게 한다.
본 명세서에 개시된 기술의 이들 구현 및 다른 구현들은 다음 특징들 중 하나 이상을 선택적으로 포함할 수 있다.
일부 구현들에서, 사용자에게 제시되는 특정 명령 번들과 관련된 정보는 특정 명령 번들에 대한 호출 문구를 포함한다. 이러한 구현들 중 일부에서, 본 방법은 특정 명령 번들과 관련된 정보가 제시되도록 하는 것에 후속하여, 어시스턴트 인터페이스들 중 하나를 통해 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계; 상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구에 일치하는지를 결정하는 단계; 및 상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구에 일치한다는 결정에 응답하여, 상기 자동 어시스턴트 애플리케이션에 의해, 상기 특정 명령 번들의 대응하는 개별 액션을 수행하는 단계를 더 포함한다.
일부 구현들에서, 상기 특정 명령 번들의 대응하는 개별 액션은 제 1 개별 액션 및 제 2 개별 액션을 포함한다. 이 구현들 중 일부에서, 제 1 개별 액션은 자동 어시스턴트 애플리케이션이 제 1 전자 장치에 제 1 명령을 전송하게 하고, 제 2 개별적 액션은 자동 어시스턴트 애플리케이션이 제 2 전자 장치에 제 2 명령을 전송하게 한다. 이러한 구현들 중 일부에서, 제 1 개별 액션은 자동 어시스턴트 애플리케이션이 제 1 에이전트에 제 1 명령을 전송하게 하고, 제 2 개별 액션은 자동 어시스턴트 애플리케이션이 제 2 에이전트에 제 2 명령을 전송하게 한다.
일부 구현들에서, 본 방법은 상기 유사성 점수들에 기초하여 명령 번들들을 순위화하는 단계를 더 포함한다. 이러한 구현들 중 일부에서, 특정 명령 번들을 선택하는 것은 다른 명령 번들에 대한 특정 명령 번들의 순위에 기초한다. 이러한 구현의 일부 버전에서, 특정 명령 번들과 관련된 정보가 사용자의 컴퓨팅 장치를 통해 사용자에게 제시되게 하는 것은 상기 정보가 특정 명령 번들의 순위에 기초한 디스플레이 프로미넌스로(display prominence)로 제시되게하는 것을 포함한다.
일부 구현들에서, 복수의 명령 번들을 식별하는 단계는 이용 가능한 명령 번들의 코퍼스(corpus)로부터, 선택된 복수의 명령 번들과 사용자의 사용자 특정 데이터 사이의 일치에 기초하여 복수의 명령 번들들을 선택하는 것을 포함한다. 이러한 구현들 중 일부에서, 선택된 복수의 명령 번들과 사용자의 사용자 특정 데이터 사이의 일치성에 기초하여 복수의 명령 번들들을 선택하는 것은 상기 이용 가능한 명령 번들 중 특정의 이용 가능한 명령 번들을 상기 선택된 복수의 명령 번들로부터 배제하고; 상기 특정의 이용 가능한 명령 번들에 대한 필요한 주변 장치를 식별하고; 그리고 상기 사용자 특정 데이터에 기초하여, 상기 자동 어시스턴트 애플리케이션이 사용자에 대해 상기 필요한 주변 장치로의 액세스가 결여한지를 결정하는 것을 포함한다.
일부 구현들에서, 상기 명령 번들 데이터의 적어도 일부의 처리는 트레이닝된 기계 학습 모델을 사용하여 수행된다.
일부 구현들에서, 명령 번들들 각각에 대한 유사성 점수를 생성하는 것은 사용자 액션 임베딩과 상기 명령 번들에 대한 명령 번들 임베딩 사이의 유클리드 거리에 기초한다.
일부 구현들에서, 상기 특정 명령 번들은 상기 대응하는 액션들의 적어도 하나의 액션에 대해 정의되지 않은 값을 갖는 적어도 하나의 슬롯을 포함한다. 이러한 구현들 중 일부에서, 본 방법은 특정 명령 번들과 관련된 정보가 제시되게 하는 것에 응답하여 특정 명령 번들의 선택을 수신하는 단계; 상기 선택을 수신함에 응답하여, 상기 자동 어시스턴트 애플리케이션을 통해 상기 사용자와 대화에 참여하여 상기 슬롯에 대한 값을 해결하는 단계; 및 상기 특정 명령 번들 및 사용자에 대해 상기 슬롯과 관련하여 값을 저장하는 단계를 포함한다. 이들 구현들의 일부 버전에서, 본 방법은 상기 특정 명령 번들 및 사용자에 대해 슬롯과 관련하여 상기 값을 저장 함에 후속하여, 어시스턴트 인터페이스들 중 하나를 통해 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계; 상기 자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구에 일치하는지를 결정하는 단계와; 상기 자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구에 일치한다는 결정함에 응답하여 그리고 저장되는 값에 기초하여, 상기 자동 어시스턴트 애플리케이션에 의해, 상기 슬롯에 대한 값을 이용해서 상기 적어도 하나의 액션을 수행하는 것을 비롯하여 상기 특정 명령 번들의 대응하는 별개의 액션들을 수행하는 단계를 더 포함한다.
일부 구현들에서, 하나 이상의 프로세서들에 의해 수행되는 방법이 제공되며, 이 방법은 명령 번들들의 코퍼스를 식별하고 사용자에 대한 주변 장치 데이터를 식별하는 단계를 포함한다. 식별된 명령 번들들 각각은 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 대응하는 개별 액션들을 식별하는 명령 번들 데이터를 포함한다. 식별된 주변 장치 데이터는 자동 어시스턴트 애플리케이션과 짝을 이루는 사용자의 주변 장치들을 나타낸다. 본 방법은 명령 번들들의 코퍼스로부터, 사용자를 위한 복수의 후보 명령 번들들을 선택하는 단계를 더 포함한다. 복수의 후보 명령 번들들을 선택하는 단계는 주변 장치 데이터와 명령 번들들의 명령 번들 데이터와의 비교에 기초한다. 이 방법은 명령 번들 데이터 및 어시스턴트 인터랙션 데이터에 기초하여 후보 명령 번들을 순위화하는 단계, 및 순위에 기초하여 후보 명령 번들들 중 하나 이상과 관련된 정보가 제시되게 하는 단계를 포함한다. 이 정보는 사용자의 컴퓨팅 장치를 통해 사용자에게 제시된다.
본 명세서에 개시된 기술의 이들 구현 및 다른 구현들은 다음 특징 중 하나 이상을 선택적으로 포함할 수 있다.
일부 구현들에서, 하나 이상의 명령 번들 중 특정 명령 번들과 관련된 정보는 특정 명령 번들에 대한 호출 문구를 포함한다. 이러한 구현들 중 일부에서, 본 방법은, 하나 이상의 명령 번들과 관련된 정보가 제시되도록 함에 후속하여, 자동 어시스턴트 애플리케이션과 관련된 어시스턴트 인터페이스를 통해 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계; 상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구와 일치하는지를 결정하는 단계; 및 상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구와 일치한다는 결정에 응답하여, 상기 자동 어시스턴트 애플리케이션에 의해 상기 특정 명령 번들의 대응하는 개별 액션들을 수행하는 단계를 포함한다. 이러한 구현들의 일부 버전에서, 상기 특정 명령 번들의 대응하는 개별 액션들은 자동 어시스턴트 애플리케이션이 제 1 전자 장치에 제 1 명령을 전송하게하는 제 1 개별 액션, 및 자동 어시스턴트 애플리케이션이 제 2 전자 장치에 제 2 명령을 전송하게 하는 제 2 개별 액션을 포함한다.
일부 구현들에서, 하나 이상의 프로세서들에 의해 수행되는 방법이 제공되며, 이 방법은 명령 번들들의 코퍼스를 식별하고 사용자에 대한 데이터를 식별하는 단계를 포함한다. 코퍼스의 각각의 명령 번들은 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 대응하는 개별 액션들을 식별하는 명령 번들 데이터를 포함한다. 이 방법은 명령 번들들의 코퍼스로부터, 사용자에 대한 복수의 후보 명령 번들을 선택하는 단계를 더 포함한다. 복수의 후보 명령 번들을 선택하는 단계는 상기 사용자의 데이터와 상기 명령 번들들의 명령 번들 데이터와의 비교에 기초한다. 이 방법은 자동 어시스턴트 애플리케이션에 의해 사용자에 대해 수행된 복수의 이력 액션을 나타내는 사용자에 대한 어시스턴트 인터랙션 데이터를 식별하는 단계를 더 포함한다. 이 방법은 사용자 액션 임베딩을 생성하기 위해, 트레이닝된 기계 학습 모델을 사용하여 어시스턴트 인터랙션 데이터의 적어도 일부를 처리하는 단계; 및 상기 사용자 액션 임베딩과 상기 특정 명령 번들에 대한 명령 번들 임베딩과의 비교에 기초하여, 상기 복수의 후보 명령 번들들로부터, 특정 명령 번들을 선택하는 단계를 더 포함한다. 본 방법은 상기 특정 명령 번들을 선택함에 응답하여, 특정 명령 번들과 관련된 정보가 사용자의 컴퓨팅 장치를 통해 사용자에게 제시되게 하는 단계를 더 포함한다. 사용자 인터페이스 입력에 응답하여 사용자에 대해 특정 명령 번들을 호출함은 자동 어시스턴트 애플리케이션이 특정 명령 번들의 대응하는 개별 액션들을 수행하게 한다.
본 명세서에 개시된 기술의 이러한 구현 및 다른 구현들은 다음 특징 중 하나 이상을 선택적으로 포함할 수 있다.
일부 구현들에서, 사용자에게 제시된 특정 명령 번들과 관련된 정보는 특정 명령 번들에 대한 호출 문구를 포함한다. 이러한 구현들 중 일부에서, 본 방법은 특정 명령 번들과 관련된 정보를 제시함에 후속하여 어시스턴트 인터페이스를 통해 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계; 자연 언어 사용자 인터페이스 입력이 호출 문구와 일치하는지를 결정하는 단계; 자연 언어 사용자 인터페이스 입력이 호출 문구와 일치한다고 결정함에 응답하여, 자동 어시스턴트 애플리케이션에 의해 특정 명령 번들의 대응하는 개별 액션들을 수행하는 단계를 더 포함한다.
일부 구현들에서, 특정 명령 번들은 대응하는 액션들중 적어도 하나의 액션에 대해 정의되지 않은 값을 갖는 적어도 하나의 슬롯을 포함한다. 이러한 구현들 중 일부에서, 본 방법은 상기 특정 명령 번들과 관련된 정보가 제시되게 함에 후속하여, 상기 특정 명령 번들의 호출을 수신하는 단계와; 상기 호출을 수신함에 응답하여, 상기 슬롯에 대한 값을 해결하기 위해 상기 자동 어시스턴트 애플리케이션을 통해 상기 사용자와의 대화에 참여하는 단계와; 그리고 상기 특정 명령 번들 및 사용자에 대한 상기 슬롯과 관련하여 상기 값을 저장하는 단계를 더 포함한다. 이들 구현의 일부 버전에서, 본 방법은 상기 특정 명령 번들 및 사용자에 대한 상기 슬롯과 관련하여 상기 값을 저장함에 후속하여, 상기 어시스턴트 인터페이스들 중 하나를 통해 상기 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계와; 자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구와 일치함을 결정하는 단계와; 상기 자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구와 일치함을 결정함에 응답하여 그리고 저장되는 상기 값에 기초하여 상기 자동 어시스턴트 애플리케이션에 의해, 상기 슬롯에 대한 값을 이용하여 상기 적어도 하나의 액션을 수행하는 것을 포함하여 상기 대응하는 개별 액션들을 수행하는 단계를 더 포함한다.
또한, 일부 구현들은 하나 이상의 컴퓨팅 장치의 하나 이상의 프로세서를 포함하며, 하나 이상의 프로세서는 관련 메모리에 저장된 명령어들을 실행하도록 액션 가능하고, 명령어들은 본 명세서에 설명된 하나 이상의 방법을 수행하도록 구성된다. 프로세서는 그래픽 처리 장치(GPU), 중앙 처리 장치(CPU) 및/또는 텐서 처리 장치(tensor processing unit: TPU) 중 하나 이상을 포함할 수 있다. 일부 구현들은 본 명세서에 설명된 하나 이상의 방법을 수행하기 위해 하나 이상의 프로세서에 의해 실행 가능한 컴퓨터 명령어들을 저장하는 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체를 포함한다.
본 명세서에서 상세하게 설명된 전술한 개념 및 추가적인 개념들의 모든 조합은 본원에 개시된 주제의 일부인 것으로 간주됨을 이해해야 한다. 예를 들어, 본 개시의 말미에 기재된 청구된 주제의 모든 조합은 본 명세서에 개시된 주제의 일부인 것으로 고려된다.
도 1은 본 명세서에 개시된 구현들이 실시될 수 있는 예시적인 환경의 블록도이다.
도 2a 및 2b는 도 1의 다양한 컴포넌트들이 일부 구현들에서 어떻게 인터랙션하는지의 예를 도시한다.
도 3a 및 3b는 액션 모델의 각 예를 보인 것으로, 사용자 액션 임베딩을 생성하기 위해, 액션 모델을 사용하여 사용자의 어시스턴트 인터랙션 데이터가 어떻게 처리될 수 있는지를 도시한다.
도 4a는 다수의 명령 번들들에 대한 추천들을 그래픽으로 표시하는 디스플레이 스크린을 갖는 예시적인 컴퓨팅 장치를 도시한다.
도 4b는 도 4a의 예시적인 컴퓨팅 장치를 보인 것으로서, 도 4a의 명령 번들 들중 하나의 초기 호출시에 발생할 수 있는 대화의 예와, 명령 번들의 후속 호출시에서 발생할 수 있는 대화의 예를 도시한다.
도 5는 본 명세서에 개시된 구현들에 따른 예시적인 방법을 도시하는 흐름도이다.
도 6은 컴퓨팅 장치의 예시적인 아키텍처를 도시한다.
도 1은 본 명세서에 개시된 기술이 구현될 수 있는 예시적인 환경을 도시한다. 이 예시적인 환경은 클라이언트 장치(106), 자동 어시스턴트(110)(본 명세서에서는 자동 어시스턴트 애플리케이션이라고도 칭함), 및 복수의 에이전트(140A-N)를 포함한다. 클라이언트 장치(106)는 예를 들어 독립형 음성-활성화 스피커 장치, 데스크탑 컴퓨팅 장치, 랩탑 컴퓨팅 장치, 태블릿 컴퓨팅 장치, 이동 전화 컴퓨팅 장치, 사용자 차량의 컴퓨팅 장치, 및/또는 컴퓨팅 장치(예를 들어, 컴퓨팅 장치를 갖는 사용자의 시계, 컴퓨팅 장치를 갖는 사용자의 안경, 가상 또는 증강 현실 컴퓨팅 장치)를 포함하는 사용자의 웨어러블 장치를 포함한다. 추가적인 및/또는 대안적인 클라이언트 장치가 제공될 수 있다.
비록 자동 어시스턴트(110)가 클라이언트 장치(106)와 별개로 도 1에 도시되어 있지만, 일부 구현들에서 자동 어시스턴트(110)의 모든 것 또는 양태는 클라이언트 장치(106)에 의해 구현될 수 있다. 예를 들어, 일부 구현들에서, 입력 프로세싱 엔진(112)이클라이언트 장치(106)에 의해 구현될 수 있다. 자동 어시스턴트(110)의 하나 이상의(예를 들어, 모든) 양상이 클라이언트 장치(106)와 떨어져 있는 하나 이상의 컴퓨팅 장치에 의해 실시되는 구현들에서, 클라이언트 장치(106)와 그리고 자동 어시스턴트(110)의 이러한 양태들은 광역 네트워크(WAN)와 같은(예컨대, 인터넷)와 같은 하나 이상의 네트워크를 통해 통신한다.
하나의 클라이언트 장치(106)만이 자동 어시스턴트(110)와 조합하여 도시되어 있지만, 많은 구현들에서 자동 어시스턴트(110)는 원격에 있을 수 있고 동일한 사용자의 복수의 클라이언트 장치들 각각 및/또는 복수의 사용자들의 복수의 클라이언트 장치들 각각과 인터페이스할 수 있다. 예를 들어, 자동 어시스턴트(110)는 상이한 세션들을 통해 복수의 장치들 각각 과의 통신을 관리할 수 있고, 복수의 세션들을 병렬로 관리할 수 있다. 예를 들어, 일부 구현들에서 자동 어시스턴트(110)는 예를 들어 다수의 사용자들로부터 대량 요청을 처리하기에 적합한 소프트웨어를 실행하는 고성능 컴퓨터 클러스터들 또는 서버 팜을 사용하는 클라우드 인프라스트럭처을 이용하는 클라우드 기반 서비스로서 실시될 수 있다. 그러나, 단순화를 위해, 본 명세서에 기재된 많은 예들은 단일 클라이언트 장치(106)와 관련하여 설명된다.
자동 어시스턴트(110)는 API를 통해 및/또는 하나 이상의 통신 채널(예를 들어, 내부 통신 채널 및/또는 WAN과 같은 네트워크)을 통해 다수의 에이전트(140A-N)들 각각과 통신한다. 일부 구현들에서, 에이전트들(140A-N) 중 하나 이상은 각각, 자동 어시스턴트(110)를 관리하는 당사자와는 별도의 각 당사자에 의해 관리된다. 본 명세서에 사용되는 "에이전트"는 자동 어시스턴트(110)에 의해 이용되는 하나 이상의 컴퓨팅 장치 및/또는 소프트웨어를 지칭한다. 일부 상황에서, 에이전트는 자동 어시스턴트(110)로부터 분리될 수 있고 그리고/또는 하나 이상의 통신 채널을 통해 자동 어시스턴트(110)와 통신할 수 있다. 이러한 상황들 중 일부에서, 자동 어시스턴트(110)는 제 1 네트워크 노드로부터의 데이터(예를 들어, 에이전트 명령)를 에이전트의 기능의 모든 것 또는 양태를 구현하는 제 2 네트워크 노드에 전송할 수 있다. 일부 상황에서, 에이전트는 자동 어시스턴트(110)를 관리하는 당사자와 분리된 당사자에 의해 관리된다는 점에서 제 3 당사자(3P) 에이전트 일 수 있다. 일부 다른 상황에서, 에이전트는 자동 어시스턴트(110)를 관리하는 동일한 당사자에 의해 관리된다는 점에서 제 1 당사자 (1P) 에이전트 일 수 있다.
에이전트는 자동 어시스턴트(110)로부터 호출 요청 및/또는 다른 에이전트 명령들을 (예를 들어, 네트워크를 통해 및/또는 API를 통해) 수신하도록 구성된다. 에이전트 명령을 수신함에 응답하여, 에이전트는 에이전트 명령에 기초하여 응답 콘텐츠를 생성하고, 응답 콘텐츠에 기초한 사용자 인터페이스 출력을 제공하기 위한 응답 콘텐츠를 하나 이상의 주변 장치를 제어하기 위해 전송한다. 예를 들어, 에이전트는 하나 이상의 loT 장치(예를 들어, 스마트 조명, 온도조절기, 가전 기기, 카메라)와 같은 하나 이상의 주변 장치를 제어하기 위해 상기 응답 콘텐츠를 전송할 수 있다. 다른 예로서, 에이전트는 응답 콘텐츠에 기초하여 자동 어시스턴트(110)에 의해 출력을 제공하기 위해 응답 콘텐츠를 자동 어시스턴트(110)에 전송할 수 있다. 다른 예로서, 에이전트 스스로가 출력을 제공할 수 있다. 예를 들어, 사용자는 클라이언트 장치(106)의 어시스턴트 인터페이스를 통해 자동 어시스턴트(110)와 인터랙션할 수 있고(예를 들어, 자동 어시스턴트는 클라이언트 장치(106)상에서 및/또는 클라이언트 장치(106)와의 네트워크 통신으로 구현될 수 있다), 에이전트는 클라이언트 장치(106)에 설치된 애플리케이션이거나 또는 클라이언트 장치(106)로부터 떨어져 실행 가능하지만 클라이언트 장치(106)에서 스트리밍가능한 애플리케이션일 수 있다. 애플리케이션이 호출될 때, 이 애플리케이션은 클라이언트 디바이스(106)에 의해 실행될 수 있고 그리고/또는 클라이언트 디바이스(106)에 의해 최전방으로 가져올 수 있다(예를 들어, 그의 콘텐츠는 클라이언트 디바이스(106)의 디스플레이를 인수할 수 있다).
자동 어시스턴트(110)는 입력 처리 엔진(112), 출력 엔진(116) 및 호출/인터랙션 엔진(118)을 포함한다. 자동 어시스턴트(110)는 또한 명령 번들 엔진(120) 및 추천 엔진(125)을 포함한다. 추천 엔진(125)은 필터링 모듈(126), 임베딩 모듈(127), 점수화 모듈(128) 및 추천 모듈(129)을 포함한다. 일부 구현들에서, 자동 어시스턴트(110)의 엔진들(및/또는 모듈들) 중 일부는 생략, 결합 및/또는 자동 어시스턴트(110)와 별개인 컴포넌트에서 구현될 수 있다. 더욱이, 자동 어시스턴트 장치(110)는 간략화를 위해 본 명세서에 도시되지 않은 추가적인 엔진들(및/또는 모듈들)을 포함할 수 있다.
자동 어시스턴트(110)는 클라이언트 장치(106)로부터 사용자 입력의 인스턴스들을 수신한다. 다양한 유형의 사용자 입력이 사용자에 의해 사용자 인터페이스 입력 장치(들)를 통해 자동 어시스턴트(110)에 제공될 수 있다. 일부 예에서, 입력은 (예컨대, 물리적 또는 가상 키보드를 통해 제공되는 활자 입력에 기초하거나 마이크로폰을 통해 제공되는 음성 입력에 기초하여) 하나 이상의 사용자 인터페이스 입력 장치를 통해 사용자에 의해 생성된 사용자 인터페이스 입력에 기초한 텍스트 입력과 같은 자유 형식의 자연 언어 입력인 "사용자 발화"일 수 있다. 본 명세서에서 사용되는 자유 형식 입력은 사용자에 의해 공식화되고 사용자에 의한 선택을 위해 제시되는 옵션들의 그룹에 제한되지 않는 (예컨대, 드롭 다운 메뉴에 제시된 옵션들 그룹에 제한되지 않는) 입력이다.
일 예로서, 자동 어시스턴트(110)는 일련의 토큰을 포함하는 자연 언어 데이터 스트림의 형태로 사용자 발화를 수신할 수 있다. 예를 들어, 자동 어시스턴트(110)는 활자 사용자 입력에 응답하여 자연 언어 데이터 스트림을 수신하거나 스트리밍 오디오 기록 형태의 자연 언어 음성 입력 데이터 스트림을 수신할 수 있다. 스트리밍 오디오 기록은 클라이언트 장치(106)의 사용자의 음성 입력을 캡처하는 클라이언트 장치(106)의 마이크로폰으로부터 수신되는 신호들에 응답하여 클라이언트 장치(106)에 의해 생성될 수 있다. 일부 구현들에서, 사용자 입력은 클라이언트 장치(106)에 의해 생성되고 그리고/또는 클라이언트 장치(106)의 사용자에 의해 자동 어시스턴트(110)의 명시적인 호출에 응답하여 자동 어시스턴트(110)에 제공될 수 있다. 예를 들어, 호출은 클라이언트 장치(106)에 의한, 사용자의 특정 음성 입력(예를 들어, "이봐 어시스턴트" 와 같은 자동 어시스턴트(110) 핫 워드/문구), 하드웨어 버튼 및/또는 가상 버튼과의 사용자 인터랙션(예를 들어, 하드웨어 버튼의 탭, 클라이언트 장치(106)에 의해 디스플레이되는 그래픽 인터페이스 요소의 선택), 및/또는 다른 특수한 사용자 인터페이스 입력의 검출일 수 있다.
자동 어시스턴트(110)는 클라이언트 장치(106)로부터 사용자 입력의 인스턴스를 수신함에 응답하여 출력의 인스턴스를 제공한다. 출력의 인스턴스는 예를 들어 자연 언어 출력을 포함하는 "시스템 발화"일 수 있다. 시스템 발화는 클라이언트 장치(106)에 의해 청각적으로 제시될 (예를 들어, 클라이언트 장치(106)의 스피커를 통해 출력되는) 오디오 및/또는 클라이언트 장치(106)에 의해 그래픽으로 제시될 (예를 들어, 클라이언트 장치(106)의 디스플레이를 통해 렌더링되는) 텍스트 및/또는 그래픽 콘텐츠로서, 및 기타 등등으로서 제공될 수 있다. 본 명세서에 설명되는 바와 같이, 출력의 일부 인스턴스는 사용자 입력에 의해 호출되는 명령 번들에 기초하여 결정되는 시스템 발화일 수 있다. 또한, 본 명세서에 설명된 바와 같이, 출력의 일부 인스턴스는 하나 이상의 명령 번들에 대한 추천들일 수 있다. 추천들은 선택적으로 사용자에게 "푸시"(즉, 추천들을 명시적으로 요청하는 사용자 입력의 수신없이 제공)될 수 있거나, 이용 가능한 명령 번들을 탐색하려는 입력과 같은 사용자 입력에 응답하여 사용자에게 제공될 수 있다. 또한, 출력의 일부 인스턴스는 명령 번들의 호출에 응답하여 전송되는 (예를 들어, 에이전트 명령(들)에 응답하여) 에이전트들(140A-N) 중 선택된 하나에 의해 생성된 응답 콘텐츠에 기초할 수 있다.
자동 어시스턴트(110)의 입력 처리 엔진(112)은 자연 언어 입력(예를 들어, 클라이언트 장치(106)로부터 수신된 자연 언어 입력)을 처리하고, 자동 어시스턴트(110)의 하나 이상의 다른 컴포넌트에 의한 사용을 위해 주석이 달린 출력을 생성한다. 예를 들어, 입력 처리 엔진(112)은 클라이언트 장치(106)의 하나 이상의 사용자 인터페이스 입력 장치를 통해 사용자에 의해 생성된 자유 형식의 자연 언어 입력을 처리할 수 있다. 생성된 주석이 달린 출력은 자연 언어 입력에 기초한 토큰들을 포함할 수 있고 선택적으로 자연 언어 입력의 하나 이상의 주석을 포함할 수 있다.
일부 구현들에서, 입력 처리 엔진(112)은(예를 들어, 디지털 오디오 데이터의 형태로) 음성 입력의 인스턴스를 수신하고, 음성 입력을 하나 이상의 텍스트 워드 또는 문구를 포함하는 텍스트로 변환하는 음성-텍스트 모듈(114)을 포함한다. 변환된 텍스트는 이후 토큰 및/또는 다른 데이터를 생성하기 위해 입력 처리 엔진(112)에 의해 이용될 수 있다. 일부 구현들에서, 음성-텍스트 모듈(114)은 하나 이상의 음성-텍스트 알고리즘을 사용하여 음성 입력에 기초한 텍스트를 생성하는 스트리밍 음성-텍스트 엔진이다. 음성-텍스트 모듈(114)은 하나 이상의 저장된 음성-텍스트 모델들(언어 모델들이라고도 칭함)에 의존할 수 있으며, 이 음성-텍스트 모델들 각각은 언어의 워드 시퀀스와 함께 언어의 오디오 신호와 음성 단위 사이의 관계를 모델링할 수 있다.
일부 구현들에서, 입력 처리 엔진(112)은 자연 언어 입력에서 다양한 유형의 문법 정보를 식별하고 주석을 달도록 구성된다. 예를 들어, 입력 처리 엔진(112)은 문법적 역할을 갖는 용어들에 주석을 달도록 구성된 스피치 태거의 일부를 포함할 수 있다. 예를 들어, 스피치 태거의 일부는 "명사", "동사", "형용사", "대명사" 등과 같은 스피치의 일부로 각 용어에 태그를 지정할 수 있다. 또한, 예를 들어, 일부 구현들에서, 입력 처리 엔진(112)은 자연 언어 입력에서 용어들 사이의 구문적 관계를 결정하도록 구성된 의존 파서를 추가로 및/또는 대안적으로 포함할 수 있다. 예를 들어, 의존 파서는 어떤 용어가 다른 용어, 문장의 주어 및 동사 등을 수정하는지(예를 들어, 파스 트리(parse tree))를 결정할 수 있으며 이러한 의존에 대한 주석을 만들 수 있다.
일부 구현들에서, 입력 처리 엔진(112)은 사람 및 조직, 위치 등에 대한 참조와 같은 하나 이상의 세그먼트에서 엔티티 참조에 주석을 달도록 구성된 엔티티 태거를 추가적으로 및/또는 대안적으로 포함할 수 있다. 엔티티 태거는(예를 들어, 사람들과 같은 엔티티 클래스에 대한 모든 참조의 식별을 가능하게 하기 위해) 하이 레벨의 세분성으로 및/또는 (예를 들어, 사람과 같은 특정 엔티티에 대한 모든 참조의 식별을 가능하게 하기 위해) 낮은 레벨의 세분성으로 엔티티에 대한 참조들에 주석을 달 수 있다. 엔티티 태거는 특정 엔티티를 해결하기 위해 자연 언어 입력의 콘텐츠에 의존할 수 있고 그리고/또는 선택적으로 특정 엔티티를 해결하기 위해 지식 그래프 또는 다른 엔티티와 통신할 수 있다. 일부 구현들에서, 토큰들에 대해 해결된 엔티티들은 슬롯들에 대응하는 것으로 결정된 토큰들에 부가하여 또는 이에 대신하여 대응하는 슬롯들에 대한 슬롯 값으로서 이용될 수 있다.
일부 구현들에서, 입력 처리 엔진(112)은 하나 이상의 컨텍스트 큐에 기초하여 동일한 엔티티에 대한 참조들을 그룹화 또는 "클러스터"하도록 구성된 공동 참조 리졸버를 추가적인 및/또는 대안적으로 포함할 수 있다. 예를 들어, 공조 리졸버는 사용자 입력의 인스턴스에서 "it"이라는 용어를 사용자 입력의 직전 인스턴스에서 "레스토랑 A"에 대한 이전의 언급으로 해결하기 위해 이용될 수 있다. 이러한 구현들 중 일부에서, 입력 처리 엔진(112)에 의해 공급된 토큰은 대명사 자체 대신에 대명사의 참조자를 포함할 수 있다. 예를 들어, "레스토랑 A"는 "it" 대신에 토큰으로서 제공될 수 있다.
일부 구현들에서, 입력 처리 엔진(112)의 하나 이상의 컴포넌트는 입력 처리 엔진(112)의 하나 이상의 다른 컴포넌트로부터의 주석에 의존할 수 있다. 예를 들어, 일부 구현들에서, 명명된 엔티티 태거는 모든 언급들을 특정 엔티티에 주석 달기 위해 공동 참조 리졸버 및/또는 의존 파서로부터의 주석에 의존할 수 있다. 또한, 예를 들어, 일부 구현들에서, 공동 참조 리졸버는 동일한 엔티티에 대한 클러스터링 참조에서 종속 파서로부터의 주석에 의존할 수 있다. 일부 구현들에서, 특정 자연 언어 입력을 처리할 때, 입력 처리 엔진(112)의 하나 이상의 컴포넌트들은 하나 이상의 주석을 결정하기 위해 특정 자연 언어 입력 이외의 관련 사전 입력 및/또는 다른 관련 데이터를 사용할 수 있다.
출력 엔진(116)은 출력의 인스턴스를 클라이언트 장치(106)에 제공한다. 출력의 인스턴스는 예를 들어 추천 엔진(125)에 의해 생성된 명령 번들(들)에 대한 추천(들)이거나, (자동 어시스턴트(110)가 그 에이전트의 중개자로서 역할을 하는 경우)명령 번들 엔진(120)에 의해 명령 번들을 실행하는데 있어 하나 이상의 에이전트(140A-N)로부터의 응답 콘텐츠에 기초할 수 있다. 일부 구현들에서, 출력 엔진(116)은 응답 콘텐츠의 텍스트 컴포넌트들을 오디오 포맷으로 변환하는 텍스트 - 스피치 엔진을 포함할 수 있고, 출력 엔진(116)에 의해 제공되는 출력은 오디오 포맷(예를 들어, 스트리밍 오디오로서)일 수 있다. 일부 구현들에서, 응답 콘텐츠는 이미 오디오 포맷일 수 있다. 일부 구현들에서, 출력 엔진(116)은 추가로 또는 대안적으로, 텍스트 응답 콘텐츠를 (선택적으로 클라이언트 장치(106)에 의한 오디오로의 변환을 위해) 출력으로서 제공하고 그리고/또는 다른 그래픽 콘텐츠를 클라이언트 장치(106)에 의한 그래픽 디스플레이를 위한 출력으로서 제공한다.
호출/인터랙션 엔진(118)은 에이전트 명령(들)을 하나 이상의 에이전트(들)(140A-N)에 전송한다. 예를 들어, 복수의 에이전트(140A-N)에 대한 복수의 액션을 포함하는 명령 번들이 호출될 때, 호출/인터랙션 엔진(118)은 에이전트 명령들을 생성하여 복수의 에이전트(140A-N)에 전송하여 이들 액션이 수행되게 할 수 있다. 에이전트 명령은 관련 슬롯에 슬롯 값을 포함하고 선택적으로는 도메인(예컨대, 에이전트가 다수의 도메인들에 걸쳐서 액션하는 경우), 사용자 식별자, 세션 식별자 등의 표시와 같은 추가적인 데이터를 포함하는 구조화된(structured) 명령일 수 있다. 일부 구현들 또는 상황들에서, 에이전트 명령은 선택된 에이전트를 호출하는 호출 명령이다. 선택된 에이전트는 에이전트 명령에 응답하여 응답 콘텐츠를 생성할 수 있다. 일부 구현들에서, 응답 콘텐츠는 선택된 에이전트에 의해 자동 어시스턴트(110)에 전송되고, 출력 엔진(116)은 응답 콘텐츠에 기초하여 출력을 생성한다. 예를 들어, 출력 엔진(116)은 응답 콘텐츠를 변경없이 출력으로서 제공할 수 있거나 혹은 응답 콘텐츠의 텍스트-음성 변환(또는 다른 변환)을 수행할 수 있고, 변환된 콘텐츠를 출력으로서 제공할 수 있다. 일부 구현들에서, 응답 콘텐츠는 선택된 에이전트에 의해 클라이언트 장치(106)에 직접 전송된다. 다른 구현들에서, 선택된 에이전트는 클라이언트 장치(106)상에서 로컬로 액션할 수 있고(예를 들어, 클라이언트 장치(106)상에 설치된 애플리케이션일 수 있음), 클라이언트 장치(106) 상에 직접 디스플레이하기 위한 응답 콘텐츠를 생성할 수 있다. 또 다른 구현에서, 응답 콘텐츠는 하나 이상의 주변 장치로 전송될 수 있고, 하나 이상의 주변 장치(예를 들어, loT 장치)의 상태가 변경되게 할 수 있다.
에이전트들(140A-N) 각각은 자체의 콘텐츠 엔진 및/또는 다른 엔진을 포함할 수 있다. 또한, 많은 구현에서, 에이전트는 응답 콘텐츠를 생성함에 있어서 다양한 저장된 모델 및/또는 다른 리소스(예를 들어, 자신의 문법 모델(들) 및/또는 콘텐츠 모델(들))에 액세스할 수 있다.
명령 번들 엔진(120)은 입력 처리 엔진(112)으로부터 주석이 달린 입력을 수신하고 그리고/또는 클라이언트 장치(106)로부터 직접 입력을 수신하고, 수신된 입력이 명령 번들 데이터베이스(152)의 명령 번들을 호출하는지를 결정한다. 명령 번들은 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 개별 액션을 포함한다. 예를 들어, "안녕히 주무세요" 번들은 자동 어시스턴트(110)가 하나 이상의 네트워크 조명을 끄도록 명령을 전송하는 제 1 액션; 사용자의 컴퓨팅 장치의 알람을 오전 8시로 설정하도록 명령을 전송하는 제 2 액션; 및 "내일의" 현지 날씨를 요청하는 명령을 전송하고 응답 콘텐츠를 청각적으로 제시하는 제 3 액션을 포함한다. 예를 들어, 호출/인터랙션 엔진(118)은 3개의 상이한 에이전트 명령들을 에이전트(140A-N)들 중 3개의 상이한 에이전트들에 전송할 수 있으며, 에이전트 명령들 각각은 3개의 액션 중 대응하는 하나의 액션이 수행되게 한다.
명령 번들 엔진(120)은 수신된 입력이 다양한 큐에 기초하여 명령 번들을 호출함을 결정할 수 있다. 예를 들어, 명령 번들은 호출 문구과 관련될 수 있고, 명령 번들 엔진(120)은 입력 처리 엔진(112)으로부터 주석이 달린 입력을 수신할 수 있고, 명령 번들 엔진(120)은 주석이 달린 입력이 명령 번들에 대한 호출 문구를 포함함을 결정할 수 있다. 또한, 예를 들어, 명령 번들 엔진(120)은 수신된 입력이 직접 명령 번들을 나타내는 것으로 결정할 수 있다. 예를 들어, 클라이언트 장치(106)에서 사용자가 그래픽 사용자 인터페이스 요소(예를 들어, 선택 가능한 "그래픽 단축키")를 선택하는 것에 응답하여 입력이 수신될 수 있고, 이러한 입력은 명령 번들에 직접 매핑될 수 있다. 또한, 예를 들어, 명령 번들 엔진(120)은 수신된 입력이 명령 번들에 대응하는 것으로 결정할 수 있고, 명령 번들에 대한 하나 이상의 문맥적 조건이 만족되는 것으로 판단할 수 있다. 예컨대, 명령 번들 엔진(120)이 수신된 입력이 명령 번들에 대응하고, 하나 이상의 문맥상 조건들이 또한 만족되는 경우(예를 들어, 현재 시간이 특정 시간 창 내에 있고, 주중의 어느 날이고, 클라이언트 장치(106)의 위치가 특정의 지리적 경계 내에 있는 경우)에만 수신된 입력이 명령 번들을 호출하는 것을 결정할 수 있다. 또 다른 구현에서, 명령 번들 엔진(120)은 클라이언트 장치(106)로부터의 어떤 입력을 참조함이 없이 명령 번들이 호출된 것으로 결정할 수 있다. 예를 들어, 특정의 문맥상 조건들만이 만족된다는 결정에 응답하여 특정 명령 번들들이 호출될 수 있다.
수신된 입력이 명령 번들을 호출한다는 결정에 응답하여, 명령 번들 엔진(120)은 자동 어시스턴트(110)가 명령 번들의 액션을 수행하게 할 수 있다. 명령 번들 엔진(120)은 호출/인터랙션 엔진(118)과 인터랙션하여 명령 번들(들)의 액션들의 수행에서 에이전트 명령(들)이 하나 이상의 에이전트(140A-N)에 제공되게 할 수 있다. 일부 구현들에서, 명령 번들의 하나 이상의 액션은 명령 번들을 호출한 사용자에게 특화된 값으로 수행될 수 있다. 예를 들어, 명령 번들의 액션 수행에서 제공되는 에이전트 명령(들)의 슬롯(들)에 대한 값(들)은 본 명세서에 기술된 바와 같이 사용자에게 특화될 수 있다. 명령 번들 엔진(120)은 특정 사용자에게 특화된명령 번들에 대한 슬롯(들)에 대한 값(들)을 결정하는데 있어 사용자 데이터 데이터베이스(156)의 사용자 데이터를 참조할 수 있다.
추천 엔진(125)은 명령 번들 데이터베이스(152)로부터, 특정 사용자와 관련이있을 수 있는 명령 번들들을 결정하고, 이러한 명령 번들들과 관련된 정보를 특정 사용자에 대한 추천들로서 제시한다. 일부 구현들에서, 추천 엔진(125)은 자동 어시스턴트(110)의 일부이고 그리고/또는 자동 어시스턴트(110)와의 다른 인터랙션에도 또한 이용될 수 있는 클라이언트 장치(106)의 어시스턴트 인터페이스를 통해 추천들을 제시한다. 일부 구현들에서, 추천 엔진(125)은 대안적으로, 자동 어시스턴트(110)와 별개인 컴포넌트이고 그리고/또는 클라이언트 장치(106)의 어시스턴트 인터페이스와는 이질적인 인터페이스를 통해 추천들을 제시한다.
이제, 도 2a를 참조하면, 추천 엔진(125) 및 그의 모듈(126-129)에 대한 추가적인 설명이 제공된다. 도 2a에서, 필터링 모듈(126)은 명령 번들 데이터베이스(152)로부터, 복수의 필터링된 명령 번들들(172)을 선택하여 임베딩 모듈(127)에 제공한다. 필터링된 명령 번들들(172)은 데이터베이스(152)에 포함된 명령 번들들의 코퍼스의 서브 세트이다.
필터링 모듈(126)은 필터링된 명령 번들들(172)의 명령 번들들을 선택할 때 다양한 기준을 이용할 수 있다. 예를 들어, 필터링된 명령 번들들(172)의 명령 번들을 선택할 때, 도 2a에서 고려되는 특정 사용자와 관련된 사용자 장치(들)(171)은 명령 번들 데이터베이스(152)의 명령 번들들과 관련하여 저장된 데이터와 비교될 수 있다. 예를 들어, 사용자 장치(들)(171)는 특정 사용자와 관련된 주변 장치들(예를 들어, loT 장치들)을 나타낼 수 있고, 특정 사용자와 관련되지 않은 주변 장치들을 요구하는 명령 번들들은 필터링된 명령 번들들(172)로부터 배제될 수 있다. 하나의 특정 예로서, 사용자 장치(들)(171)는 고려되는 사용자가 스마트 온도조절기와의 어떤 저장된 관련성이 결여되어 있음을 나타낼 수 있고, 결과적으로 필터링 모듈(126)은 필터링된 명령 번들들(172)로부터 스마트 온도 조절기를 필요로 하는 그 어떤 명령 번들도 배제할 수 있다. 스마트 온도 조절기를 필요로 하는 명령 번들은 (예를 들어, "주변 장치(들)가 필요로 됨" 필드에서) 스마트 온도 조절기를 요구하는 것으로서 명령 번들 데이터베이스(152)에서 명시적으로 표시될 수 있거나, 이들 명령 번들의 액션(들)에 기초하여 (예를 들어, 에이전트 명령이 "온도 조절기" 에이전트에 전송되게 하는 액션을 각각 갖는 명령 번들들에 기초하여) 추론될 수 있다.
본 명세서에서 사용되는 바와 같이, 명령 번들의 하나 이상의 액션 결과로 인해 주변 장치의 상태가 변경되는 경우 명령 번들에 대해 주변 장치가 필요로 된다. 일부 구현들에서, 주변 장치가 자동 어시스턴트(110)에 의해 "발견"되어 자동 어시스턴트(110)에 의해 제어될 수 있는 경우, 사용자는 그 주변 장치와 관련될 수 있다. 일부 구현들에서, 사용자 입력 및/또는 하나 이상의 네트워크 패킷들이 주변 장치의 존재를 나타내는 경우, 비록 주변 장치가 자동 어시스턴트(110)에 의해 명시적으로 아직 "발견"되지 않았더라도, 사용자는 상기 주변 장치와 관련될 수 있다.
일부 구현들에서, 필터링 모듈(126)은 필터링된 명령 번들들(172)에 포함시키기 위해 명령 번들들을 선택하는데 있어서 및/또는 필터링된 명령 번들들(172)로부터 명령 번들들을 배제시키는데 있어서 하나 이상의 추가적인 및/또는 대안적인 기준을 이용할 수 있다. 예를 들어, (다수의 사용자에 의한) 그들의 등급이 임계 값을 만족하지 못하고 그리고/또는 (사용자들의 집단 전체에 걸쳐) 명령 번들들의 사용 수량 및/또는 빈도가 임계 값을 만족하지 못하는 경우, 하나 이상의 명령 번들이 배제될 수 있다.
필터링된 명령 번들(172)은 임베딩 모듈(127)에 제공된다. 임베딩 모듈(127)은 필터링된 명령 번들(172)에 대한 명령 번들 임베딩(175)을 결정한다. 즉, 각각의 필터링된 명령 번들(172)에 대해, 임베딩 모듈(127)은 대응하는 명령 번들 임베딩을 결정한다. 임베딩 모듈(127)은 명령 번들의 액션 및/또는 다른 특징을 사용하고 액션 모델(154)을 사용하여 명령 번들 임베딩을 결정할 수 있다. 예를 들어, 명령 번들의 액션의 표시가 (입력의 일부로서 또는 입력의 전체로서) 입력으로서 액션 모델(154)에 적용되고, 액션 번들(154)에 걸쳐 처리되어 명령 번들 임베딩을 생성할 수 있다. 명령 번들 임베딩은 대응하는 명령 번들 임베딩의 의미론적 표현을 제공하는 다차원 공간에 매핑될 수 있는 복수의 값일 수 있다. 예를 들어, 명령 번들 임베딩은 256 값의 벡터일 수 있다. 일부 구현들에서, 임베딩 모듈(127)은 명령 번들 임베딩(175)을 미리 생성하고, 명령 번들 임베딩(175)을 그들의 대응하는 명령 번들과 관련하여 명령 번들 데이터베이스(152)에 저장할 수 있다. 예를 들어, 임베딩 모듈(127)은 명령 번들의 생성에 응답하여 명령 번들에 대한 명령 번들 임베딩을 생성하고, 이를 명령 번들과 관련하여 명령 번들 데이터베이스(152)에 저장 하고, 그 후 명령 번들 데이터베이스(152)로부터 저장된 명령 번들 임베딩을 검색함으로써 명령 번들에 대한 명령 번들 임베딩을 결정할 수 있다. 명령 번들 임베딩 및 사용자 액션 임베딩을 생성하는 구현들에 대한 추가적인 설명이 도 3a 및 3b와 관련하여 아래에서 설명된다.
임베딩 모듈(127)은 또한, 사용자 액션 임베딩(174)을 생성한다. 임베딩 모듈(127)은 자동 어시스턴트(110)에 의해 사용자에 대해 수행되는 복수의 이력 액션(및 선택적으로 액션의 다른 특징(들))을 나타내는 사용자에 대한 어시스턴트 인터랙션 데이터(173)에 기초하여 사용자 액션 임베딩(174)을 생성한다. 예를 들어, 수행된 이력 액션의 표시는 입력으로서(입력의 일부로서 또는 입력의 전체로서) 액션 모델(154)에 적용될 수 있고, 액션 모델(154)에 걸쳐 처리되어 사용자 액션 임베딩(174)을 생성할 수 있다. 사용자 액션 임베딩(174)은 이력 액션 및/또는 다른 이력 특징의 의미론적 표현을 제공하는 다차원 공간에 매핑될 수 있는 복수의 값일 수 있다. 예를 들어, 사용자 액션 임베딩(174)은 256 값의 벡터일 수 있다. 사용자 액션 임베딩 및 명령 번들 임베딩을 생성하는 구현에 대한 추가적인 설명이도 3a 및 도 3b와 관련하여 아래에 설명된다.
점수화 모듈(128)은 필터링된 명령 번들(172)에 대한 점수를 생성하기 위해 사용자 액션 임베딩(174) 및 명령 번들 임베딩(175)을 이용한다. 예를 들어, 필터링된 명령 번들(172) 중 하나에 대한 점수는 사용자 액션 임베딩(174)과 필터링된 명령 번들에 대한 명령 번들 임베딩의 비교에 기초할 수 있다. 예를 들어, 점수는 다차원 공간에서 상기 2개의 임베딩 사이의 유클리드 거리(예를 들어, 코사인 유사성 측정)에 기초할 수 있다. 명령 번들에 대한 점수는 선택적으로 명령 번들의 (여러 사용자에 의한) 등급, (사용자 집단에 걸친)명령 번들의 사용량 및/또는 사용 빈도 등과 같은 추가적인 메트릭에 더 기초할 수 있다. 예를 들어, 명령 번들에 대한 점수는 다음의 함수에 기초할 수 있다: 사용자 액션 임베딩과 명령 번들의 명령 번들 임베딩 사이의 코사인 유사성 측정; 명령 번들의 사용자 할당 등급을 나타내는 측정 및/또는 명령 번들의 인기도를 나타내는 측정.
명령 번들(176)에 대한 점수는 추천 모듈(129)에 제공된다. 추천 모듈(129)은 명령 번들(176)에 대한 점수에 기초하여 추천(들)(177)을 클라이언트 장치(106)에 제공한다. 추천(들)(177) 각각은 대응하는 명령 번들에 대한 것일 수 있고, 클라이언트 장치(106)의 사용자에게 가청 및/또는 그래픽 표현을 위해 제공될 수 있다. 예를 들어, 추천(들)(177)중 하나는 특정 명령 번들에 대한 것일 수 있고, 특정 명령 번들에 대한 호출 문구, 특정 명령 및 번들에 의해 수행되는 액션(들)의 요약 및/또는 특정 명령 번들과 관련된 다른 정보를 포함할 수 있다.
추천 모듈(129)은 명령 번들(176)에 대한 점수(들)에 기초하여 추천(들)(177)을 제공하는데 있어 다양한 기술을 이용할 수 있다. 예를 들어, 추천 모듈(129)은 특정 명령 번들에 대한 점수가 임계 값을 만족하는 경우에만 특정 명령 번들에 대한 추천을 제공한다. 또한, 예를 들어, 추천 모듈(129)은 복수의 명령 번들들 중 대응하는 번들에 대해 각각씩 다수의 추천들을 제공하고, 복수의 명령 번들에 대한 점수에 기초한 방식으로 다수의 추천을 제공할 수 있다. 예를 들어, 최고 점수의 명령 번들에 대한 추천이 가장 두드러지게 (예를 들어, 1 등으로) 제시될 수 있고, 다음 최고 점수의 명령 번들에 대한 추가적인 추천이 다음으로 가장 두드러지게 (예를 들어, 2 등으로)제시될 수 있고, 기타 등등으로 될 수 있다. 또 다른 예로서, X의 최고 점수 명령 번들에 대한 추천이 클라이언트 장치(106)에서 초기 제시를 위해 제공될 수 있고, 추가적인 추천을 수신하고자 하는 바램을 나타내는 추가적인 사용자 인터페이스 입력에 응답하여 다음의 Y의 최고 점수 명령 번들에 대한 추천이 제공된다.
일부 구현들에서, 추천 모듈(129)은 추천들에 대한 하나 이상의 검색 기준을 지정하는 쿼리와 무관하게 추천들을 제공한다. 예를 들어, 추천 모듈(129)은, (예컨대, "조명 제어를 포함하는 추천들을 보여줘"와 같은 쿼리와 무관하게) 추천들에 대한 검색 기준을 나타내는 사용자의 자연 언어 입력에 기초한 어떤 쿼리도 수신함이 없이, 클라이언트 장치(106)에 "추천" 인터페이스로 디스플레이하기 위한(및/또는 청각적 제시를 위한) 추천들을 제공할 수 있다. 일부 다른 구현들에서, 추천 모듈(129)은 추천에 대한 하나 이상의 검색 기준을 지정하는 쿼리에 응답하여 추천들을 제공한다. 이러한 구현들 중 일부에서, 추천들을 필터링하기 위한 하나 이상의 기준을 식별하기 위해 쿼리가 파싱될 수 있고, 그 기준은 필터링된 명령 번들(172)을 생성하는데 있어 필터링 모듈(126)에 의해 적용될 수 있다. 예를 들어, "조명 제어를 포함하는 추천들을 보여줘"에 대한 쿼리에 응답하여, 필터링된 명령 번들(172)은 "조명 제어" 액션을 포함하는 번들들만을 포함할 수 있고, 점수화 모듈(128)은 클라이언트 장치(106)에 추천들을 제공할 필터링된 명령 번들(172)을 결정하는데 있어 그리고/또는 추천들을 제공할 방법을 결정하는데 있어 (예를 들어, 추천에 대한 순서 및/또는 다른 제시 프로미넌스를 결정함에 있어) 그러한 필터링된 명령 번들들(172)에 대한 점수를 생성할 수 있다.
이제 도 2b를 참조하면, 명령 번들이 호출됨을 결정함에 응답하여 명령 번들 엔진(120)이 어떻게 응답하는지에 대한 구현들 예가 제공된다. 도 2b에서, 명령 번들 호출(180)이 클라이언트 장치(106)로부터 수신된다. 명령 번들 호출(180)은 특정 명령 번들을 호출하고, 예를 들어, 추천들(177)(도 2a) 중 대응하는 것을 선택하거나 및/또는 추천들(177) 중 대응하는 추천에 대한 호출 문구를 포함하는 자연 언어 입력을 제공할 수 있다.
명령 번들 엔진(120)은 명령 번들 호출(180), 또는 명령 번들 호출(180)에 대응하는 주석이 달린 입력을 (입력 처리 엔진(112)으로부터) 수신한다. 명령 번들 엔진(120)은 명령 번들 호출(180)에 대응하는 명령 번들을 결정한다. 예를 들어, 명령 번들 엔진(120)은 명령 번들 데이터베이스(152)를 참조하여 명령 번들을 결정할 수 있다.
일부 구현들에서, 명령 번들의 적어도 하나의 액션은 고정된 값이 없는 적어도 하나의 슬롯(즉, 명시적인 "정의되지 않은" 또는 "변수" 값을 갖는 슬롯, 또는 그 슬롯에 대한 어떤 값의 정의가 없는 슬롯)을 포함한다. 이들 구현들 중 일부에서, 예컨대, 명령 번들 호출(180)이 사용자에 의한 명령 번들의 최초 호출인 경우,명령 번들 엔진(120)은 슬롯(들)(즉, 고정된 값이 없는 슬롯(들))의 값(들)에 대한 프롬프트(들)(181)를 제공한다. 프롬프트(들)(181)에 응답하여, 클라이언트 장치(106)의 사용자는 하나 이상의 응답(182)을 제공하기 위해 하나 이상의 사용자 인터페이스 입력 장치를 이용할 수 있다. 명령 번들 엔진(120)은 그들 슬롯(187)(임의의 고정된 값이 없는 슬롯)에 대한 결정된 값(들)을 결정하기 위해 상기 응답(들)을 이용할 수 있다. 예를 들어, 입력 처리 엔진(112)은 주석이 달린 입력을 생성하기 위해 상기 응답(들)을 처리할 수 있고, 명령 번들 엔진(120)은 그러한 주석이 달린 입력에 기초하여 그 값(들)을 해결할 수 있다. 명령 번들 엔진(120)은 슬롯(들)(187)에 대한 그 분석된 값(들)을 사용자 데이터(156)(또는 다른 데이터베이스)에 저장할 수 있다. 이는 명령 번들 엔진(120)으로 하여금, (클라이언트 장치(106) 또는 사용자의 다른 클라이언트 장치를 통해) 사용자에 의한 명령 번들 호출(180)의 미래 인스턴스에 응답하여, 명령 번들의 액션들이 - 그 값들에 대해 사용자에게 다시 프롬프트함이 없이 및/또는 그 값들에 대한 어떤 후속적인 사용자 확인을 요함이 없이 - 상기 해결된 값(들)(187)로 수행되도록 할 수 있게 한다.
명령 번들 엔진(120)은 또한 에이전트 명령(183)이 에이전트(140A)로 전송되게하고, 에이전트 명령(185)이 에이전트(140B)로 전송되게 할 수 있다. 예를 들어, 명령 번들 엔진(120)은 호출/인터랙션 엔진(118)(도 1)이 명령을 에이전트(140A 및 140B)에 전송하게 할 수 있다. 에이전트 명령(183) 및/또는 에이전트 명령(185)은 각각 선택적으로 응답(들)(182)을 이용하여 결정되는 바와 같은 슬롯(들)에 대한 해결된 값(들) 중 하나 이상의 대응하는 값을 포함할 수 있다. 에이전트(140A)는 에이전트 명령(183)에 응답하여 응답 콘텐츠(184)를 생성한다. 응답 콘텐츠(184)는 하나 이상의 주변 장치의 상태가 변경되게 할 수 있고(예를 들어, 조명을 켜거나 끄고, 밝기 레벨을 조정하고, 출력 색상을 조정한다) 그리고/또는 출력 엔진(116)에 제공될 수 있게 하며, 이는 대응하는 콘텐츠가 청각적으로 및/또는 그래픽으로 클라이언트 장치(106)에 제공될 수 있게 한다. 에이전트(140B)는 에이전트 명령(185)에 응답하여 응답 콘텐츠(186)를 생성한다. 응답 콘텐츠(186)는 하나 이상의 주변 장치의 상태가 변경되게 하고 그리고/또는 출력 엔진(116)에 제공될 수 있게 하며, 이는 대응하는 콘텐츠가 청각적으로 및/또는 그래픽으로 클라이언트 장치(106)에 제공될 수 있게 한다.
이제, 도 3a 및 도 3b를 참조하면, 액션 모델(154)(도 1)의 구현의 예(154A 및 154B)가, 사용자의 어시스턴트 인터랙션 데이터(173A 및 173B)가 액션 모델(154A 및 154B)을 사용하여 어떻게 처리되어 사용자 액션 임베딩(174A 및 174B)을 생성할 수 있는지에 관한 예와 함께 도시된다. 또한, 액션 모델(154A 및 154B)이 명령 번들에 대한 명령 번들 임베딩을 생성하기 위해 어떻게 이용될 수 있는지에 관한 설명이 제공된다.
도 3a에, 어시스턴트 인터랙션 데이터(173A)가 도시되어 있으며, 이는 복수의 액션 표시(173A1-N)를 포함한다. 복수의 액션 표시(173A1-N)는 자동 어시스턴트와 인터랙션하는 자동 어시스턴트 인터페이스(들)를 통해 사용자에 의해 제공되는 사용자 인터페이스 입력 인스턴스들에 응답하여, 자동 어시스턴트에 의해 특정 사용자에 대해 수행된 N 개의 가장 최근의 액션들을 나타낼 수 있다. 도 3a의 액션 표시(173A1-N)는 비교적 거친 입도로 도시되어있다. 그러나, 보다 세분화된 액션 표시가 제공될 수 있다. 예를 들어, 액션 표시(173A1)로 표시한 "음악 재생" 대신에, 액션 표시(173A1)는 재생된 음악의 장르(예를 들어, 레게 또는 클래식 록) 및/또는 "음악 재생" 액션(예컨대, 음악 에이전트 1 또는 음악 에이전트 2)을 수행함에 있어 인터랙션한 에이전트를 추가로 표시할 수 있다. 액션 표시(173A1-N)를 설명하는 텍스트가 간략성을 위해 도 3a에 도시되고, 텍스트가 일부 구현들에서 입력으로서 적용될 수 있다. 그러나, 다른 값들도 이용될 수 있음을 이해해야 한다. 하나의 비-제한적인 예로서, "음악 재생" 액션은 이진값 "0010"으로 대신 표시될 수 있고, "조명 제어" 액션은 이진값 "0011"으로 대신 표시될 수 있다.
도 3a에서, 복수의 액션 표시(173A1-N) 각각은 액션 모델(154A)의 N 개의 입력(1551A1-N) 중 대응하는 하나에 적용되며, 선택적으로 임의의 순서로 적용될 수 있다. 일부 다른 구현들에서, N 개의 입력(1551A1-N)은 최근성에 기초한 순서로 적용된다. 예를 들어, 액션 표시(173A1)는 가장 최근의 액션에 대응할 수 있고, 액션 표시(173A2)는 두번째의 가장 최근의 액션에 대응할 수 있다. 또한, 도 3a에서, 복수의 액션 표시(173A1-N) 각각은 동일하게 가중된다. 그러나, 다른 구현들에서, 보다 최근의 액션 표시들이 덜 최근의 액션 표시들보다 더 크게 가중될 수 있다.
하나 이상의 프로세서가 인코딩 계층(들)(1542A)에 걸쳐 입력 액션 표시(173A1-N)를 처리하여 사용자 액션 임베딩(174A)을 생성할 수 있다. 인코딩 계층(들)(1542A)은 피드 포워드 신경망 계층과 같은 하나 이상의 신경망 계층을 포함할 수 있다. 일부 구현들에서, 인코딩 계층(들)(1542A)은 적용된 액션 표시들을 재생성하기 위해 많은 양의 트레이닝 예들을 이용하여 트레이닝되는 인코더-디코더 네트워크로부터의 인코딩 계층들이다. 예를 들어, 각각의 트레이닝 예는 대응하는 액션 표시를 포함하는 트레이닝 예 입력 및 대응하는 액션 표시를 포함하는 트레이닝 예 출력을 포함할 수 있다. 트레이닝 동안, 트레이닝 예의 트레이닝 예 입력이 인코딩 레이어들(1542A)에 적용될 수 있고, 인코딩 레이어들(1542A)의 숨겨진 상태가 트레이닝 예 입력과 동일한 차원을 갖는 예측된 출력을 생성하기 위해 디코딩 레이어들에 적용될 수 있다. 그 후, 예측된 출력을 (트레이닝 예 입력과 동일한)트레이닝 예 출력과 비교함에 기초하여 에러를 결정할 수 있고, 이 에러는 디코딩 계층 및 인코딩 계층(1542A)들의 가중치를 갱신하기 위해 디코딩 계층 및 인코딩 계층들(1542A)에 걸쳐 역전파(backpropagation)된다. 이러한 방식으로, 인코딩 계층들(1542A)은 입력으로서 적용되는 액션 표시들의 축약된 표현(condensed representation)을 생성하도록 트레이닝되어, 디코딩 계층들이 액션 표시를 재생하는 예측을 생성할 수 있게 한다. 인코더-디코더 네트워크의 트레이닝 후, "인코더 부분"은 인코딩 계층(1542A)으로서 이용될 수 있고, 인코딩 계층(1542A)의 출력은 사용자 액션 임베딩 및 명령 번들 임베딩을 생성하는데 이용될 수 있다.
도 3에는 도시되지 않았지만, 명령 번들 임베딩이 액션 모델(154A)에의 입력으로서 명령 번들의 액션의 액션 표시를 적용함으로써 - 명령 번들에 존재하지 않는 N개의 액션 표시들 중 어느 것에 대한 "패딩" 값(들)을 선택적으로 사용함으로써 - 액션 모델(154A)을 이용하여 생성될 수 있다. 예를 들어, N이 50이고 명령 번들이 5개의 액션만을 포함하는 경우, "패딩" 값(들)이 45개의 액션 표시에 사용될 수 있다. 하나 이상의 프로세서가 명령 번들에 대한 명령 번들 임베딩을 생성하기 위해 인코딩 계층(들)(1542A)에 걸쳐 명령 번들의 입력 액션 표시들을 처리할 수 있다.
도 3b에서, 복수의 액션 표시(173B1-N) 각각은 대응하는 액션 및 대응하는 액션에 대한 가중치를 표시한다. 예를 들어, 액션 표시(173B1)는 "알람 설정" 액션 및 "0.2"의 가중치를 표시한다. 각 액션 표시에 대한 가중치는 사용자에 대한 액션 수행의 최근성, 사용자에 대한 액션 수행 횟수, 및/또는 사용자에 대한 액션 수행 빈도에 기초할 수 있다. 예를 들어, 액션 표시(173B3)의 "조명 제어" 액션에 대한 0.3의 가중치는, 도 3b에 명시적으로 표시된 다른 액션들(모두 보다 적은 가중치를 가짐)보다 더 최근에, 더 많은 양의 횟수로 및/또는 더 큰 빈도로 수행되는 액션에 기초할 수 있다.
도 3b에서, 액션 모델(154B)의 N 개의 입력(1551B1-N) 각각은 고유한(unique) 액션 표시에 대응한다. 즉, 입력 1541B1는 "알람 설정" 액션에 대응하고 입력 1541B2는 "온도 조절 장치 조정" 액션에 대응한다. 도 3b에서, 각각의 액션 표시(173B1-N)에 대한 가중치는 그들의 대응하는 입력(1541B1-N)에 적용될 수 있고, 인코딩 계층(1542B)에 걸쳐 처리되어 사용자 액션 임베딩(174B)을 생성할 수 있다. "0" 가중치 또는 다른 널(null) 가중치는 사용자에 대해 대응하는 액션이 수행되지 않은 그리고/또는 가중치가 "널"인 임의의 입력(1551B1-N)에 대해 이용될 수 있다. 일부 구현들에서, 인코딩 계층(들)(1542B)은 액션 표시들에 대해 적용된 가중치들을 재생성하기 위해 많은 양의 트레이닝 예들을 이용하여 트레이닝되는 인코더-디코더 네트워크로부터의 인코딩 계층들이다.
도 3에는 도시되지 않았지만. 액션 모델(154B)에 대한 입력으로서 명령 번들의 액션들에 대응하는 입력(1551B1-N)에 대한 "1" 또는 다른 값(들)을 적용하고 그리고 다른 입력(1541B1-N)에 대한 "0 "또는 기타 널 가중치를 적용함으로써, 액션 모델(154B)을 이용하여 명령 번들 임베딩이 생성될 수 있다. 예를 들어, "온도 조절기 조정" 액션 및 "조명 제어" 액션만을 포함하는 명령 번들의 경우, 입력 (1541B2 및 1541B3) 각각에 "1"이 적용되고 다른 모든 입력에 "0"이 적용될 수 있다.
이제 도 4a 및 4b를 참조하면, 클라이언트 장치(106)(도 1)의 예(106A)가 도시되어있다. 클라이언트 장치(106A)는 도 4a에서 제 1 명령 번들에 대한 제 1 추천(177A), 제 2 명령에 대한 제 2 추천(177B) 및 선택적으로 하나 이상의 추가적인 추천(도 4A에서 생략 부호로 표시됨)을 그래픽으로 디스플레이하는 디스플레이 스크린(140)을 포함한다. 도 4b에서, 디스플레이 스크린(140)은 도 4a의 추천(177A)의 명령 번들의 초기 호출시에 발생할 수 있는 대화의 예 및 그 명령 번들의 후속 호출시에 발생할 수 있는 대화의 예를 디스플레이한다.
도 4a 및 도 4b의 디스플레이 스크린(140)은 사용자가 가상 키보드를 통해 사용자 인터페이스 입력을 생성하기 위해 선택할 수 있는 텍스트 응답 인터페이스 요소(188) 및 사용자가 마이크로폰을 통해 사용자 인터페이스 입력을 생성하기 위해 선택할 수 있는 음성 응답 인터페이스 요소(189)를 더 포함한다. 일부 구현들에서, 사용자는 음성 응답 인터페이스 요소(189)의 선택없이 마이크로폰을 통해 사용자 인터페이스 입력을 생성할 수 있다. 예를 들어, 대화 동안, 사용자가 음성 응답 인터페이스 요소(189)를 선택할 필요가 없도록 마이크를 통한 가청 사용자 인터페이스 입력에 대한 능동적인 모니터링이 발생할 수 있다. 이들 구현들 중 일부 및/또는 다른 구현들에서, 음성 응답 인터페이스 요소(189)는 생략될 수 있다. 더욱이, 일부 구현들에서, 텍스트 응답 인터페이스 요소(188)는 추가적으로 및/또는 대안적으로 생략될 수 있다(예를 들어, 사용자는 가청 사용자 인터페이스 입력만을 제공할 수 있다). 도 4a 및 도 4b의 디스플레이 스크린(140)은 또한, 클라이언트 장치(106A)가 하나 이상의 액션을 수행하도록 사용자에 의해 인터랙션될 수 있는 시스템 인터페이스 요소(190A, 190B, 190C)를 포함한다. 다른 구현들에서, 음성 입력만을 받아들이고 가청 출력만을 제공하는 "오디오 인터페이스 전용" 컴퓨팅 장치(즉, 디스플레이 스크린이 없는 컴퓨팅 장치)가 제공될 수 있다.
도 4a에서, 제 1 추천(177A)은 제 1 명령 번들에 의해 수행되는 액션의 표시와 함께 제 1 명령 번들에 대한 호출 문구("안녕히 주무세요")를 디스플레이한다. 유사하게, 제 2 추천(177B)은 제 2 명령 번들에 의해 수행되는 액션의 표시와 함께 제 2 명령 번들에 대한 호출 문구( "좋은 아침")를 표시한다. 추천(177A 및 177B)은 본 명세서에 기술된 바와 같이 그들의 대응하는 명령 번들들의 점수에 기초하여 제시를 위해 선택될 수 있다. 또한, 일부 구현들에서, 추천들(177A)은 그들의 대응하는 명령 번들들의 점수에 기초하여 추천(177B)위에 제시될 수 있다. 예를 들어, 추천은 그들의 대응하는 명령 번들의 점수에 기초하여 순위가 매겨질 수 있고, 추천(177A)은 가장 높은 점수의 명령 번들에 대응하는 것에 기초하여 초기에 제시된다.
도 4b에서, 제 1 추천(177A)(도 4A)과 관련된 명령 번들은 사용자 인터페이스 입력에 응답하여 초기에 호출되었다. 예를 들어, 사용자에 의한 추천(177A)의 선택(예를 들어, 추천(177A)의 "탭")에 기초하거나 또는 사용자가 호출 문구 "안녕히 주무세요"를 말하거나(또는 타이핑하는) 것에 기초하여 명령 번들이 초기에 호출될 수 있다. 일부 구현들에서, 사용자는 자신이 선호하는 호출 문구가 명령 번들에 배정되게 할 수 있다. 그러한 호출 문구는 "안녕히 주무세요" 호출 문구 대신 사용되거나 추가적인 호출 문구로 사용될 수 있다. 예를 들어, 엑스트라 인터페이스 요소가 제공되어, 사용자에게 있어 상기 호출 문구를 "잘 자요(nighty night)"로 변경하기 위해 사용자에 의해 선택될 수 있거나 또는 사용자가 어시스턴트 인터페이스를 통해 자동 어시스턴트에게 제공되는 음성 명령(들)(예컨대, 내가 '잘 자요'라고 말하면, '안녕히 주무세요'번들을 실행하라)을 통해 그 호출 문구를 변경할 수 있다.
도 4b에서, 제 1 추천(177A)과 관련된 명령 번들은 "조명 꺼" 액션의 "조명 식별자" 슬롯에 대한 고정된 값을 가지고 있지 않다. 이에 기초하여, 사용자에게 "조명 식별자" 슬롯에 대한 값의 해결을 가능하게 하는 입력을 제공할 것을 요청하는 프롬프트(482A)가 자동 어시스턴트에 의해 사용자에게 제공된다. 이에 응답하여, 사용자는 "모든"의 입력(480A)을 제공하며, 이는 자동 어시스턴트와 관련된 사용자의 모든 조명들을 식별하는 값으로 해결될 수 있다.
도 4b에서, 제 1 추천(177A)과 관련된 명령 번들 역시, "알람 설정" 액션의 "알람 시간" 슬롯에 대한 고정된 값을 가지고 있지 않다. 이에 기초하여, 사용자에게 "알람 시간" 슬롯에 대한 값의 해결을 가능하게 하는 입력을 제공할 것을 요청하는 프롬프트(482B)가 자동 어시스턴트에 의해 사용자에게 제공된다. 이에 응답하여, 사용자는 "오전 8시"의 입력(480B)을 제공하며, 이는 대응 시간 값으로 해결될 수 있다.
그 후, 자동 어시스턴트는 값들이 해결되었음을 표시하는 출력(482C)을 제공하고, 또한 사용자에게 해결된 값을 변경하기 위해 및/또는 명령 번들에 대한 호출 문구를 변경하기 위해 제공될 수 있는 추가적인 사용자 인터페이스 입력을 지시한다. 일부 구현들에서, 자동 어시스턴트는 사용자에게 명령 번들에 대한 "디폴트"로서 상기 해결된 값들을 저장하기를 원하는지를 사용자에게 추가로 프롬프트할 수 있고, 그렇게하기 전에 응답으로 긍정적인 사용자 인터페이스 입력을 선택적으로 요구할 수 있다. 또한, 이러한 구현들 중 일부에서, 자동 어시스턴트는 추가적으로 또는 대안적으로, 사용자가 명령 번들을 호출할 때마다, "조명 식별자" 슬롯 및/또는 "알람 시간" 슬롯에 대해 사용자가 그 인스턴스에 대해 사용하고자 하는 값(들)에 대해 프롬프트되게 대신 선택할 수 있게 하는 출력을 제공할 수 있다.
도 4b는 또한, 사용자가 나중에 "안녕히 주무세요"의 후속 입력(480C)을 제공하는 것을 도시한다. 자동 어시스턴트는 입력(480C)이 명령 번들에 대한 호출 문구임을 결정할 수 있고, 이에 응답하여 프롬프트(482A, 482B) 및 입력(480A 및 480B)을 통해 결정된 해결된 값으로 명령 번들의 액션이 프롬프트되게 할 수 있다. 자동 어시스턴트는 "조명 끄기" 액션 및 "알람 설정" 액션이 해결된 값으로 수행되었음을 나타내는 추가적인 출력(482D)을 제공하고, "내일의 일기 예보 입수" 액션 (이에 대해 고정된 "현지 날씨" 값이 이용될 수 있다)에 응답하여 에이전트로부터 수신되는 "내일날씨는 청명하며 화씨 82도로 기온이 높겠다"의 출력을 제공한다. 다른 구현들에서, 추가적인 출력(482D)은 선택적으로, 상기 해결된 값들이 "조명 끄기"및 "알람 설정" 액션들에 이용되었다는 확인을 갖지 않을 수 있다. 예를 들어 "조명 끄기, 알람 설정, 내일 날씨는 청명하며 화씨 82도로 기온이 높겠다"의 출력이 대신 제공할 수 있다.
도 5는 본 명세서에 개시된 구현들에 따른 예시적인 방법(500)을 나타내는 흐름도이다. 편의상, 도 5의 흐름도의 동작들이 동작을 수행하는 시스템을 참조하여 설명된다. 이 시스템은 자동 어시스턴트(110)의 하나 이상의 컴포넌트와 같은 다양한 컴퓨터 시스템의 다양한 컴포넌트를 포함할 수 있다. 더욱이, 방법(500)의 동작이 특정 순서로 도시되어 있지만, 이는 제한적인 의미가 아니다. 하나 이상의 동작이 재정렬, 생략 또는 추가될 수 있다.
블록 550에서, 시스템은 명령 번들들의 코퍼스를 식별한다.
블록 552에서, 시스템은 하나 이상의 기준에 기초하여 명령 번들의 서브 세트를 식별한다. 이 기준은 예를 들어, 만일 이들 명령 번들들이 사용자를 위해 자동 어시스턴트 애플리케이션과 아직 페어링되지 않은 주변 장치를 필요로 하는 액션들을 포함하는 경우 서브 세트로부터 명령 번들들을 배제하는 것을 포함할 수 있다. 주변 장치가 어시스턴트 애플리케이션에 의해 "발견"되고 어시스턴트 애플리케이션에 의해 제어될 수 있는 경우, 주변 장치는 사용자를 위해 자동 어시스턴트 애플리케이션과 페어링된다. 일부 구현들에서, 기준은 예를 들어, 만일 이들 명령 번들들이 사용자 입력 및/또는 하나 이상의 네트워크 패킷을 통해 존재가 사용자에 대해 아직 검출되지 않은 임의의 주변 장치를 필요로 하는 액션들을 포함하는 경우 서브 세들로부터 명령 번들들을 배제하는 것을 대안적으로 포함할 수 있다. 이러한 예에서, 특정 주변 장치가 명시적으로 페어링되지 않았더라도 그 주변 장치를 필요로 하는 액션을 포함하는 명령 번들이 여전히 포함될 수 있다. 예를 들어, 특정 주변 장치는 이 주변 장치가 (예를 들어, 명시적인 사용자 인터페이스 입력에 응답하여 개시되는 "발견 요청"에 응답하여) 자동 어시스턴트에 의해 명시적으로 "발견"되지 않은 경우에도, (예를 들어, 사용자가 주변 장치를 가지고 있음을 나타내는) 사용자 입력 및/또는 (주변 장치에 의한 생성을 나타내는 특성을 갖는)네트워크 패킷에 기초하여 검출될 수 있다. 본 명세서에 설명된 하나 이상의 기준과 같은 추가적인 기준/또는 대안적인 기준이 고려될 수 있다. 일부 구현들에서, 블록(552)은 생략될 수 있고, 코퍼스의 모든 명령 번들은 후속 블록에서 고려된다.
블록 554에서, 시스템은 방법(500)의 반복에서 고려되는 사용자에 대한 어시스턴트 인터랙션 데이터를 식별한다.
블록(556)에서, 시스템은 블록(554)에서 식별된 어시스턴트 인터랙션 데이터에 기초하여 사용자에 대한 사용자 액션 임베딩을 생성한다.
블록(558)에서, 시스템은 블록(552)의 서브 세트의 명령 번들에 대한 명령 번들 임베딩을 결정한다. 예를 들어, 시스템은 명령 번들 임베딩들을 미리 생성하고, 이들의 대응하는 명령 번들들과 관련하여 미리 생성된 명령 번들 임베딩들을 저장하고, 미리 생성된 명령 번들 임베딩들을 스토리지로부터 검색할 수 있다.
블록(560)에서, 시스템은 서브 세트의 명령 번들들 각각에 대해, 사용자 액션 임베딩 및 명령 번들 임베딩에 기초하여 유사성 점수를 생성한다. 예를 들어, 특정 명령 번들에 대해, 이 유사성 점수는 사용자 액션 임베딩과 특정 명령 번들에 대한 명령 번들 임베딩 사이의 코사인 유사성 측정에 적어도 부분적으로 기초할 수 있다.
블록(562)에서, 시스템은 블록(560)의 유사성 점수 중 하나 이상에 기초하여 하나 이상의 명령 번들에 대한 하나 이상의 추천을 제시한다. 예를 들어, 시스템은 유사성 점수에 적어도 부분적으로 기초하여 명령 번들들의 순위를 매길 수 있고, 순위에 기초하여 하나 이상의 명령 번들을 선택하고, 선택된 명령 번들(들)과 관련된 정보를 추천으로서 제시할 수 있다.
블록(564)에서, 시스템은 선택적으로, 추천(들) 중 하나의 명령 번들 중 하나의 액션(들)에 대한 미해결 슬롯(들)이 있다면 이를 사용자에게 맞도록 조정한다. 일부 구현들에서, 시스템은 하나 이상의 프롬프트를 제시하고 프롬프트(들)에 대한 하나 이상의 응답을 이용하여 슬롯(들)에 대한 값(들)을 해결함으로써 미해결 슬롯(들)을 조정한다. 이러한 구현들 중 일부에서, 프롬프트(들)는 추천들 중 하나의 선택, 추천들 중 하나의 명령 번들에 대한 호출 문구의 수신 및/또는 명령 번들의 액션(들) 수행이 이루어지게 하고 그리고 및/또는 명령 번들을 사용자와 관련시키기를 원하는 소망을 나타내는 다른 사용자 인터페이스 입력에 응답하여 프롬프트(들)가 제시된다.
블록(566)에서, 시스템은 명령 번들의 호출에 응답하여 추천들 중 하나의 명령 번들의 액션(들)을 수행한다. 액션(들)은 블록(564)의 하나 이상의 조정된 값을 사용하여 선택적으로 수행될 수 있다. 일부 구현들에서, 액션들을 수행하는 것은 하나 이상의 에이전트 명령들을 하나 이상의 에이전트들로 전송하는 것을 포함하고, 선택적으로 하나 이상의 에이전트 명령들에서 에이전트 명령의 슬롯(들)에 대한 하나 이상의 조정된 값들을 포함하는 것을 포함한다.
도 6은 본 명세서에 설명된 기술의 하나 이상의 양태를 수행하기 위해 선택적으로 사용될 수 있는 예시적인 컴퓨팅 장치(610)의 블록도이다. 일부 구현들에서, 클라이언트 컴퓨팅 장치, 사용자 제어 리소스 엔진(130) 및/또는 다른 컴포넌트(들) 중 하나 이상은 예시적인 컴퓨팅 장치(610)의 하나 이상의 컴포넌트를 포함할 수 있다.
컴퓨팅 장치(610)는 전형적으로 버스 서브 시스템(612)을 통해 다수의 주변 장치들과 통신하는 적어도 하나의 프로세서(614)를 포함한다. 이러한 주변 장치들은, 예를 들어, 메모리 서브 시스템(625) 및 파일 스토리지 서브 시스템(626), 사용자 인터페이스 출력 장치(620), 사용자 인터페이스 입력 장치(622) 및 네트워크인터페이스 서브 시스템(616)을 포함하는 스토리지 서브 시스템(624)을 포함할 수 있다. 입력 및 출력 장치는 컴퓨팅 장치(610)와의 사용자 인터랙션을 허용한다. 네트워크 인터페이스 서브 시스템(616)은 외부 네트워크에 인터페이스를 제공하고, 다른 컴퓨팅 장치의 대응하는 인터페이스 장치에 연결된다.
사용자 인터페이스 입력 장치(622)는 키보드, (마우스, 트랙볼, 터치 패드 또는 그래픽 태블릿과 같은) 포인팅 장치, 스캐너, 디스플레이에 통합된 터치 스크린, (음성 인식 시스템과 같은) 오디오 입력 장치, 마이크로폰 및/또는 다른 유형의 입력 장치를 포함할 수 있다. 일반적으로, 용어 "입력 장치"의 사용은 모든 가능한 유형의 장치, 및 컴퓨팅 장치(610) 또는 통신 네트워크에 정보를 입력하는 방법을 포함하도록 의도된 것이다.
사용자 인터페이스 출력 장치(620)는 디스플레이 서브 시스템, 프린터, 팩스기, 또는 오디오 출력 장치와 같은 비-시각적 디스플레이를 포함할 수 있다. 디스플레이 서브 시스템은 음극선관(CRT), 액정 디스플레이(LCD)와 같은 평판 장치, 투영 장치, 또는 시각적 이미지를 생성하기 위한 다른 메커니즘을 포함할 수 있다. 디스플레이 서브 시스템은 또한 오디오 출력 장치를 통해서와 같이 비-시각적 디스플레이를 제공할 수 있다. 일반적으로, 용어 "출력 장치"의 사용은 모든 가능한 유형의 장치, 및 컴퓨팅 장치(610)로부터 사용자 또는 다른 머신 또는 컴퓨팅 장치로 정보를 출력하는 방법을 포함하도록 의도된 것이다.
스토리지 서브 시스템(624)은 본 명세서에 설명된 일부 또는 모든 모듈의 기능을 제공하는 프로그래밍 및 데이터 구성을 저장한다. 예를 들어, 스토리지 서브 시스템(624)은 도 5의 방법 및/또는 본 명세서에 설명된 다른 방법들의 선택된 양태들을 수행하는 로직을 포함할 수 있다.
이들 소프트웨어 모듈은 일반적으로 프로세서(614)에 의해 단독으로 또는 다른 프로세서와의 조합으로 실행된다. 스토리지 서브 시스템(624)에 사용되는 메모리(625)는 프로그램 실행 동안 명령 및 데이터의 저장을 위한 메인 랜덤 액세스 메모리(RAM)(630) 및 정해진 명령들이 저장된 판독 전용 메모리(ROM)(632)를 비롯한 다수의 메모리를 포함할 수 있다. 파일 저장 서브 시스템(626)은 프로그램 및 데이터 파일을 위한 영구 저장을 제공할 수 있으며, 하드 디스크 드라이브, 관련 이동식 매체와 함께하는 플로피 디스크 드라이브, CD-ROM 드라이브, 광학 드라이브 또는 이동식 매체 카트리지를 포함할 수 있다. 특정 구현의 기능을 구현하는 모듈은 파일 스토리지 서브 시스템(626)에 의해 스토리지 서브 시스템(624) 또는 프로세서(들)(614)에 의해 액세스 가능한 다른 머신들에 저장될 수 있다.
버스 서브 시스템(612)은 컴퓨팅 장치(610)의 다양한 컴포넌트 및 서브 시스템이 의도된 대로 서로 통신하도록 하는 메커니즘을 제공한다. 버스 서브 시스템(612)이 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브 시스템의 대안적인 구현들은 다수의 버스를 사용할 수 있다.
컴퓨팅 장치(610)는 워크스테이션, 서버, 컴퓨팅 클러스터, 블레이드 서버, 서버 팜, 또는 임의의 다른 데이터 처리 시스템 또는 컴퓨팅 장치를 포함하는 다양한 유형일 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 6에 도시된 컴퓨팅 장치(610)의 설명은 일부 구현을 설명하기 위한 특정 예로서만 의도된 것이다. 컴퓨팅 장치(610)의 많은 다른 구성이 도 6에 도시된 컴퓨팅 장치보다 더 많거나 적은 컴포넌트를 가질 수 있다.
106: 클라이언트 장치, 110: 자동 어시스턴트
112: 입력 처리 엔진, 114: 음성-텍스트 모듈
116: 출력 엔진, 118: 호출/인터랙션 엔진
120: 명령 번들 엔진, 125: 추천 엔진
126: 필터링 모듈, 127: 임베딩 모듈
128: 점수화 모듈, 129: 추천 모듈
140A-N: 에이전트, 156: 사용자 데이터
153: 명령 번들들, 154: 액션들 모델

Claims (19)

  1. 하나 이상의 프로세서들에 의해 구현되는 방법으로서,
    사용자에 대한 어시스턴트 인터랙션 데이터(assistant interaction data)를 식별하는 단계, 상기 어시스턴트 인터랙션 데이터는 자동 어시스턴트 애플리케이션(automated assisstant application)에 의해 사용자에 대해 수행된 복수의 이력 액션들(historical actions)을 나타내고, 상기 이력 액션들 각각은 자동 어시스턴트 애플리케이션과 인터랙션하는 하나 이상의 자동 어시스턴트 인터페이스를 통해 상기 사용자에 의해 제공된 대응하는 사용자 인터페이스 입력에 응답하여 수행되며;
    사용자 액션 임베딩(user action embedding)을 생성하기 위해, 트레이닝된 기계 학습 모델을 사용하여 어시스턴트 인터랙션 데이터의 적어도 일부를 프로세싱하는 단계;
    복수의 명령 번들들을 식별하는 단계, 상기 복수의 명령 번들들 각각은 상기 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 대응하는 개별 액션들을 식별하는 명령 번들 데이터(command bundle data)를 포함하고;
    상기 명령 번들들 각각에 대해:
    명령 번들 임베딩(command bundle embedding)을 생성하기 위해, 상기 트레이닝된 기계 학습 모델 또는 추가의 트레이닝된 기계 학습 모델을 사용하여 상기 명령 번들 데이터의 적어도 일부를 프로세싱하는 단계, 및
    상기 명령 번들에 대한 유사성 점수(similarity score)를 생성하는 단계, 상기 명령 번들들 각각에 대한 유사성 점수를 생성하는 단계는 상기 사용자 액션 임베딩을 상기 명령 번들에 대한 명령 번들 임베딩과 비교하는 것을 포함하며;
    상기 복수의 명령 번들들 중 특정 명령 번들을 선택하는 단계, 상기 특정 명령 번들을 선택하는 단계는 상기 특정 명령 번들에 대한 유사성 점수에 기초하며;
    상기 특정 명령 번들을 선택함에 응답하여:
    상기 특정 명령 번들과 관련된 정보가 상기 사용자의 컴퓨팅 장치를 통해 상기 사용자에게 제시되게 하는 단계를 포함하며,
    상기 사용자 인터페이스 입력에 응답하여 상기 사용자에 대한 특정 명령 번들을 호출함은 상기 자동 어시스턴트 애플리케이션으로 하여금 상기 특정 명령 번들의 대응하는 개별 액션들을 수행하게 하는, 방법.
  2. 제 1 항에 있어서,
    상기 사용자에게 제시되는 특정 명령 번들과 관련된 정보는 상기 특정 명령 번들에 대한 호출 문구를 포함하며,
    상기 특정 명령 번들과 관련된 정보가 제시되도록 하는 것에 후속하여, 상기 어시스턴트 인터페이스들 중 하나를 통해 상기 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계;
    상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구에 일치하는지를 결정하는 단계; 및
    상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구에 일치한다는 결정에 응답하여, 상기 자동 어시스턴트 애플리케이션에 의해, 상기 특정 명령 번들의 대응하는 개별 액션들을 수행하는 단계를 더 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 특정 명령 번들의 대응하는 개별 액션들은:
    상기 자동 어시스턴트 애플리케이션으로 하여금 제 1 전자 장치에 제 1 명령을 전송하게 하는 제 1 개별 액션; 및
    상기 자동 어시스턴트 애플리케이션으로 하여금 제 2 전자 장치에 제 2 명령을 전송하게 하는 제 2 개별 액션을 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 특정 명령 번들의 대응하는 개별 액션들은:
    상기 자동 어시스턴트 애플리케이션으로 하여금 제 1 에이전트에 제 1 명령을 전송하게 하는 제 1 개별 액션; 및
    상기 자동 어시스턴트 애플리케이션으로 하여금 제 2 에이전트에 제 2 명령을 전송하게 하는 제 2 개별 액션을 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 유사성 점수들에 기초하여 명령 번들들을 순위화하는 단계를 더 포함하며,
    상기 특정 명령 번들을 선택하는 단계는 상기 명령 번들들 중 다른 명령 번들에 대한 상기 특정 명령 번들의 순위에 기초하는, 방법.
  6. 제 5 항에 있어서,
    상기 특정 명령 번들과 관련된 정보가 사용자의 컴퓨팅 장치를 통해 사용자에게 제시되게 하는 단계는 상기 정보가 특정 명령 번들의 순위에 기초한 디스플레이 프로미넌스로(display prominence)로 제시되게하는 것을 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 복수의 명령 번들을 식별하는 단계는 이용 가능한 명령 번들들의 코퍼스(corpus)로부터, 선택된 복수의 명령 번들들과 상기 사용자의 사용자 특정 데이터 사이의 일치에 기초하여 상기 복수의 명령 번들들을 선택하는 것을 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 선택된 복수의 명령 번들들과 상기 사용자의 사용자 특정 데이터 사이의 일치에 기초하여 복수의 명령 번들들을 선택하는 것은:
    상기 이용 가능한 명령 번들들 중 특정 이용 가능한 명령 번들을 상기 선택된 복수의 명령 번들로부터 배제하는 것을 포함하며, 상기 특정의 이용 가능한 명령 번들을 배제하는 것은:
    상기 특정의 이용 가능한 명령 번들에 대한 필요한 주변 장치를 식별하는 것; 및
    상기 사용자 특정 데이터에 기초하여, 상기 자동 어시스턴트 애플리케이션이 상기 사용자에 대해 상기 필요한 주변 장치로의 액세스가 없다고 결정하는 것에 기초하는, 방법.
  9. 제 1 항에 있어서,
    상기 명령 번들 데이터의 적어도 일부의 프로세싱은 상기 트레이닝된 기계 학습 모델을 사용하여 수행되는, 방법.
  10. 제 1 항에 있어서,
    명령 번들들 각각에 대한 유사성 점수를 생성하는 단계는 상기 사용자 액션 임베딩과 상기 명령 번들에 대한 명령 번들 임베딩 사이의 유클리드 거리에 기초하는, 방법.
  11. 제 1 항에 있어서,
    상기 특정 명령 번들은 상기 대응하는 액션들 중 적어도 하나의 액션에 대해 정의되지 않은 값을 갖는 적어도 하나의 슬롯을 포함하며, 상기 방법은:
    상기 특정 명령 번들과 관련된 정보가 제시되게 하는 것에 응답하여 상기 특정 명령 번들의 선택을 수신하는 단계;
    상기 선택을 수신함에 응답하여, 상기 슬롯에 대한 값을 해결하기 위해 상기 자동 어시스턴트 애플리케이션을 통해 상기 사용자와 대화에 참여하는 단계; 및
    상기 특정 명령 번들 및 상기 사용자에 대해 상기 슬롯과 관련하여 상기 값을 저장하는 단계를 더 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 특정 명령 번들 및 상기 사용자에 대해 상기 슬롯과 관련하여 상기 값을 저장함에 후속하여,
    상기 어시스턴트 인터페이스들 중 하나를 통해 상기 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계;
    상기 자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구에 일치하는지를 결정하는 단계; 및
    상기 자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구에 일치한다는 결정함에 응답하여, 그리고 상기 저장된 값에 기초하여:
    상기 자동 어시스턴트 애플리케이션에 의해, 상기 슬롯에 대한 값을 이용해서 상기 적어도 하나의 액션을 수행하는 것을 포함하여 상기 특정 명령 번들의 대응하는 별개의 액션들을 수행하는 단계를 더 포함하는, 방법.
  13. 하나 이상의 프로세서들에 의해 구현되는 방법으로서,
    명령 번들들의 코퍼스를 식별하는 단계, 상기 명령 번들들 각각은 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 대응하는 개별 액션들을 식별하는 명령 번들 데이터를 포함하고;
    사용자에 대한 주변 장치 데이터를 식별하는 단계, 상기 주변 장치 데이터는 상기 자동 어시스턴트 애플리케이션과 짝을 이루는 상기 사용자의 주변 장치들을 나타내고;
    상기 명령 번들들의 코퍼스로부터, 상기 사용자에 대한 복수의 후보 명령 번들들을 선택하는 단계, 상기 복수의 후보 명령 번들들을 선택하는 것은 상기 주변 장치 데이터와 상기 명령 번들들의 명령 번들 데이터와의 비교에 기초하며;
    상기 명령 번들 데이터 및 상기 자동 어시스턴트 애플리케이션에 의해 상기 사용자에 대해 수행되는 복수의 이력 액션들을 나타내는 어시스턴트 인터랙션 데이터에 기초하여 상기 후보 명령 번들들의 순위를 정하는 단계; 및
    상기 후보 명령 번들들 중 하나 이상과 관련된 정보가 상기 순위에 기초하여 제시되게 하는 단계를 포함하며, 상기 정보는 상기 사용자의 컴퓨팅 장치를 통해 상기 사용자에게 제시되는, 방법.
  14. 제 13 항에 있어서,
    상기 하나 이상의 명령 번들 중 특정 명령 번들과 관련된 정보는 상기 특정 명령 번들에 대한 호출 문구를 포함하며, 상기 방법은:
    상기 하나 이상의 명령 번들과 관련된 정보가 제시되도록 함에 후속하여, 상기 자동 어시스턴트 애플리케이션과 관련된 어시스턴트 인터페이스를 통해 상기 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계;
    상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구와 일치함을 결정하는 단계; 및
    상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구와 일치한다는 결정에 응답하여, 상기 자동 어시스턴트 애플리케이션에 의해 상기 특정 명령 번들의 대응하는 개별 액션들을 수행하는 단계를 더 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 특정 명령 번들의 대응하는 개별 액션들은:
    상기 자동 어시스턴트 애플리케이션으로 하여금 제 1 전자 장치에 제 1 명령을 전송하게 하는 제 1 개별 액션; 및
    상기 자동 어시스턴트 애플리케이션으로 하여금 제 2 전자 장치에 제 2 명령을 전송하게 하는 제 2 개별 액션을 포함하는, 방법.
  16. 하나 이상의 프로세서들에 의해 수행되는 방법으로서,
    명령 번들들의 코퍼스를 식별하는 단계, 상기 코퍼스의 명령 번들들 각각은 자동 어시스턴트 애플리케이션에 의해 수행될 수 있는 복수의 대응하는 개별 액션들을 식별하는 명령 번들 데이터를 포함하며;
    사용자의 데이터를 식별하는 단계;
    상기 명령 번들들의 코퍼스로부터, 상기 사용자에 대한 복수의 후보 명령 번들들을 선택하는 단계, 상기 복수의 후보 명령 번들들을 선택하는 단계는 상기 사용자의 데이터와 상기 명령 번들들의 명령 번들 데이터와의 비교에 기초하며;
    상기 사용자에 대한 어시스턴트 인터랙션 데이터를 식별하는 단계, 상기 어시스턴트 인터랙션 데이터는 상기 자동 어시스턴트 애플리케이션에 의해 상기 사용자에 대해 수행된 복수의 이력 액션들을 나타내고, 상기 복수의 이력 액션들 각각은 상기 자동 어시스턴트 애플리케이션과 인터랙션하는 하나 이상의 어시스턴트 인터페이스를 통해 상기 사용자에 의해 제공되는 대응하는 사용자 인터페이스 입력에 응답하여 수행되며;
    사용자 액션 임베딩을 생성하기 위해, 트레이닝된 기계 학습 모델을 사용하여 상기 어시스턴트 인터랙션 데이터의 적어도 일부를 프로세싱하는 단계;
    상기 복수의 후보 명령 번들들로부터, 상기 사용자 액션 임베딩과 특정 명령 번들에 대한 명령 번들 임베딩과의 비교에 기초하여 상기 특정 명령 번들을 선택하는 단계;
    상기 특정 명령 번들을 선택함에 응답하여:
    상기 특정 명령 번들과 관련된 정보가 상기 사용자의 컴퓨팅 장치를 통해 상기 사용자에게 제시되도록 하는 단계를 포함하며,
    상기 사용자 인터페이스 입력에 응답하여 상기 사용자에 대한 특정 명령 번들을 호출함은 상기 자동 어시스턴트 애플리케이션으로 하여금 상기 특정 명령 번들의 대응하는 개별 액션들을 수행하게 하는, 방법.
  17. 제 16 항에 있어서,
    상기 사용자에게 제시된 특정 명령 번들과 관련된 정보는 상기 특정 명령 번들에 대한 호출 문구를 포함하며, 상기 방법은:
    상기 특정 명령 번들과 관련된 정보가 제시되게 함에 후속하여, 상기 어시스턴트 인터페이스들 중 하나를 통해 상기 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계;
    상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구와 일치함을 결정하는 단계; 및
    상기 자연 언어 사용자 인터페이스 입력이 상기 호출 문구와 일치함을 결정함에 응답하여, 상기 자동 어시스턴트 애플리케이션에 의해 상기 특정 명령 번들의 대응하는 개별 액션들을 수행하는 단계를 더 포함하는, 방법.
  18. 제 16 항에 있어서,
    상기 특정 명령 번들은 대응하는 액션들 중 적어도 하나의 액션에 대해 정의되지 않은 값을 갖는 적어도 하나의 슬롯을 포함하며, 상기 방법은:
    상기 특정 명령 번들과 관련된 정보가 제시되게 함에 후속하여, 상기 특정 명령 번들의 호출을 수신하는 단계;
    상기 호출을 수신함에 응답하여, 상기 슬롯에 대한 값을 해결하기 위해 상기 자동 어시스턴트 애플리케이션을 통해 상기 사용자와의 대화에 참여하는 단계; 및
    상기 특정 명령 번들 및 사용자에 대한 상기 슬롯과 관련하여 상기 값을 저장하는 단계를 더 포함하는, 방법.
  19. 제 18 항에 있어서,
    상기 특정 명령 번들 및 사용자에 대한 상기 슬롯과 관련하여 상기 값을 저장함에 후속하여,
    상기 어시스턴트 인터페이스들 중 하나를 통해 상기 사용자에 의해 제공되는 자연 언어 사용자 인터페이스 입력을 수신하는 단계와;
    자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구와 일치함을 결정하는 단계와;
    상기 자연 언어 사용자 인터페이스 입력이 상기 명령 번들에 대한 호출 문구와 일치함을 결정함에 응답하여, 그리고 저장되는 상기 값에 기초하여:
    상기 자동 어시스턴트 애플리케이션에 의해, 상기 슬롯에 대한 값을 이용하여 상기 적어도 하나의 액션을 수행하는 것을 포함하여 상기 대응하는 개별 액션들을 수행하는 단계를 더 포함하는, 방법.
KR1020197036636A 2017-10-03 2018-10-02 자동 어시스턴트를 위한 명령 번들 제안 제공 KR102313473B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762567732P 2017-10-03 2017-10-03
US62/567,732 2017-10-03
US15/730,514 2017-10-11
US15/730,514 US10546023B2 (en) 2017-10-03 2017-10-11 Providing command bundle suggestions for an automated assistant
PCT/US2018/054012 WO2019070747A1 (en) 2017-10-03 2018-10-02 PROVIDING PACKAGE SUGGESTIONS FOR AN AUTOMATED ASSISTANT

Publications (2)

Publication Number Publication Date
KR20200007882A KR20200007882A (ko) 2020-01-22
KR102313473B1 true KR102313473B1 (ko) 2021-10-18

Family

ID=65897329

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197036636A KR102313473B1 (ko) 2017-10-03 2018-10-02 자동 어시스턴트를 위한 명령 번들 제안 제공

Country Status (6)

Country Link
US (4) US10546023B2 (ko)
EP (2) EP3491533B1 (ko)
JP (1) JP6978520B2 (ko)
KR (1) KR102313473B1 (ko)
CN (2) CN117194609A (ko)
WO (1) WO2019070747A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10546023B2 (en) * 2017-10-03 2020-01-28 Google Llc Providing command bundle suggestions for an automated assistant
US11398231B2 (en) * 2018-05-07 2022-07-26 Google Llc Recommending automated assistant action for inclusion in automated assistant routine
US20190348033A1 (en) * 2018-05-10 2019-11-14 Fujitsu Limited Generating a command for a voice assistant using vocal input
KR20200027753A (ko) * 2018-09-05 2020-03-13 삼성전자주식회사 전자 장치 및 단축 명령어에 대응하는 태스크 수행 방법
US11093715B2 (en) 2019-03-29 2021-08-17 Samsung Electronics Co., Ltd. Method and system for learning and enabling commands via user demonstration
US11468881B2 (en) * 2019-03-29 2022-10-11 Samsung Electronics Co., Ltd. Method and system for semantic intelligent task learning and adaptive execution
KR20200126509A (ko) * 2019-04-30 2020-11-09 삼성전자주식회사 가전기기 및 이의 제어 방법
EP3942550A1 (en) 2019-05-06 2022-01-26 Google LLC Performing subtask(s) for a predicted action in response to a separate user interaction with an automated assistant prior to performance of the predicted action
US10719666B1 (en) * 2020-01-31 2020-07-21 Capital One Services, Llc Computer-based systems utilizing textual embedding space software engines for identifying candidate phrases in a text document and methods of use thereof
CN115210692A (zh) * 2020-02-28 2022-10-18 谷歌有限责任公司 用于数字动作执行的接口和模式选择
US11594213B2 (en) 2020-03-03 2023-02-28 Rovi Guides, Inc. Systems and methods for interpreting natural language search queries
US11914561B2 (en) 2020-03-03 2024-02-27 Rovi Guides, Inc. Systems and methods for interpreting natural language search queries using training data
WO2021227059A1 (zh) * 2020-05-15 2021-11-18 深圳市世强元件网络有限公司 一种基于多叉树的搜索词推荐方法及系统
CN111881263A (zh) * 2020-08-12 2020-11-03 福州大学 面向智能家居场景的服务推荐在线优化方法
US11507572B2 (en) * 2020-09-30 2022-11-22 Rovi Guides, Inc. Systems and methods for interpreting natural language search queries
US20220415319A1 (en) * 2021-06-28 2022-12-29 Google Llc On-device generation and personalization of zero-prefix suggestion(s) and use thereof
KR20230045333A (ko) * 2021-09-28 2023-04-04 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법
US11803253B2 (en) * 2021-11-29 2023-10-31 International Business Machines Corporation Keyword recommendations for virtual keyboards
US20230402037A1 (en) * 2022-06-09 2023-12-14 MagicX Inc. Digital interface with user input guidance
WO2024067981A1 (en) * 2022-09-29 2024-04-04 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Dialog system and method with improved human-machine dialog concepts
US11908475B1 (en) * 2023-02-10 2024-02-20 Cephable Inc. Systems, methods and non-transitory computer readable media for human interface device accessibility

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090228479A1 (en) 2008-02-28 2009-09-10 Risa Nishiyama Operational assistance server device, operational assistance method and computer program
WO2016205147A1 (en) 2015-06-15 2016-12-22 Microsoft Technology Licensing, Llc Contextual language generation by leveraging language understanding

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513006B2 (en) * 1999-08-26 2003-01-28 Matsushita Electronic Industrial Co., Ltd. Automatic control of household activity using speech recognition and natural language
JP4684739B2 (ja) * 2005-05-13 2011-05-18 クラリオン株式会社 音声処理装置
WO2012135226A1 (en) * 2011-03-31 2012-10-04 Microsoft Corporation Augmented conversational understanding architecture
KR102091003B1 (ko) * 2012-12-10 2020-03-19 삼성전자 주식회사 음성인식 기술을 이용한 상황 인식 서비스 제공 방법 및 장치
US9047271B1 (en) * 2013-02-28 2015-06-02 Google Inc. Mining data for natural language system
EP3005150A4 (en) * 2013-06-07 2016-06-15 Apple Inc INTELLIGENT AUTOMATIC ASSISTANT
WO2015076609A1 (en) * 2013-11-21 2015-05-28 Samsung Electronics Co., Ltd. Method and apparatus for controlling home devices on group basis in a home network system
US10170123B2 (en) * 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
EP3149728B1 (en) * 2014-05-30 2019-01-16 Apple Inc. Multi-command single utterance input method
US9576575B2 (en) 2014-10-27 2017-02-21 Toyota Motor Engineering & Manufacturing North America, Inc. Providing voice recognition shortcuts based on user verbal input
US9646611B2 (en) * 2014-11-06 2017-05-09 Microsoft Technology Licensing, Llc Context-based actions
US9661105B2 (en) * 2014-12-11 2017-05-23 Wand Labs, Inc. Virtual assistant system to enable actionable messaging
US9508339B2 (en) * 2015-01-30 2016-11-29 Microsoft Technology Licensing, Llc Updating language understanding classifier models for a digital personal assistant based on crowd-sourcing
US10270609B2 (en) * 2015-02-24 2019-04-23 BrainofT Inc. Automatically learning and controlling connected devices
US10262654B2 (en) 2015-09-24 2019-04-16 Microsoft Technology Licensing, Llc Detecting actionable items in a conversation among participants
US10018977B2 (en) * 2015-10-05 2018-07-10 Savant Systems, Llc History-based key phrase suggestions for voice control of a home automation system
US20170250930A1 (en) * 2016-02-29 2017-08-31 Outbrain Inc. Interactive content recommendation personalization assistant
EP3482393A4 (en) 2016-07-08 2019-12-18 Asapp, Inc. AUTOMATIC RESPONSE TO A REQUEST FROM A USER
US10444717B2 (en) * 2016-09-16 2019-10-15 Whirlpool Corporation Coordination of control modes among appliances and utilities
KR101741647B1 (ko) 2016-09-30 2017-05-30 현대자동차주식회사 차량 및 그 제어방법
US20180277123A1 (en) * 2017-03-22 2018-09-27 Bragi GmbH Gesture controlled multi-peripheral management
US11074280B2 (en) * 2017-05-18 2021-07-27 Aiqudo, Inc Cluster based search and recommendation method to rapidly on-board commands in personal assistants
US10546023B2 (en) * 2017-10-03 2020-01-28 Google Llc Providing command bundle suggestions for an automated assistant

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090228479A1 (en) 2008-02-28 2009-09-10 Risa Nishiyama Operational assistance server device, operational assistance method and computer program
WO2016205147A1 (en) 2015-06-15 2016-12-22 Microsoft Technology Licensing, Llc Contextual language generation by leveraging language understanding

Also Published As

Publication number Publication date
KR20200007882A (ko) 2020-01-22
EP3491533A1 (en) 2019-06-05
US20230401259A1 (en) 2023-12-14
US20220148595A1 (en) 2022-05-12
EP3491533B1 (en) 2023-04-19
CN111033492B (zh) 2023-10-10
CN117194609A (zh) 2023-12-08
US20200089709A1 (en) 2020-03-19
CN111033492A (zh) 2020-04-17
JP6978520B2 (ja) 2021-12-08
JP2020530581A (ja) 2020-10-22
US11720635B2 (en) 2023-08-08
US10546023B2 (en) 2020-01-28
US11232155B2 (en) 2022-01-25
EP4213043A1 (en) 2023-07-19
US20190102482A1 (en) 2019-04-04
WO2019070747A1 (en) 2019-04-11

Similar Documents

Publication Publication Date Title
KR102313473B1 (ko) 자동 어시스턴트를 위한 명령 번들 제안 제공
US20210132986A1 (en) Back-end task fulfillment for dialog-driven applications
US10331791B2 (en) Service for developing dialog-driven applications
JP2023520416A (ja) ドメイン外(ood)検出のための改良された技術
US11626115B2 (en) Voice to text conversion based on third-party agent content
AU2021203758A1 (en) Tailoring an interactive dialog application based on creator provided content
JP2023519713A (ja) 自然言語処理のためのノイズデータ拡張
US20230169102A1 (en) Determining responsive content for a compound query based on a set of generated sub-queries
CN116635862A (zh) 用于自然语言处理的域外数据扩充
CN116615727A (zh) 用于自然语言处理的关键词数据扩充工具
AU2023201871A1 (en) Automated assistant for generating, in response to a request from a user, application input content using application data from other sources
US11756544B2 (en) Selectively providing enhanced clarification prompts in automated assistant interactions
US20240038246A1 (en) Non-wake word invocation of an automated assistant from certain utterances related to display content

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