KR102293281B1 - 가상 어시스턴트의 개인화 - Google Patents

가상 어시스턴트의 개인화 Download PDF

Info

Publication number
KR102293281B1
KR102293281B1 KR1020197012954A KR20197012954A KR102293281B1 KR 102293281 B1 KR102293281 B1 KR 102293281B1 KR 1020197012954 A KR1020197012954 A KR 1020197012954A KR 20197012954 A KR20197012954 A KR 20197012954A KR 102293281 B1 KR102293281 B1 KR 102293281B1
Authority
KR
South Korea
Prior art keywords
user
assistant
initial
user input
computing device
Prior art date
Application number
KR1020197012954A
Other languages
English (en)
Other versions
KR20190062521A (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 KR20190062521A publication Critical patent/KR20190062521A/ko
Application granted granted Critical
Publication of KR102293281B1 publication Critical patent/KR102293281B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • G06F16/337Profile generation, learning or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

하나 이상의 프로세서에서 실행하는 어시스턴트가 기술되며, 상기 어시스턴트는 사용자와 어시스턴트 간의 초기 대화를 나타내는 초기 사용자 입력의 표시를 수신한다. 어시스턴트는 초기 커맨드에 대한 초기 사용자 입력을 파싱하고 그리고 이전에 사용자에게 특정한 값과 관련되지 않은 개인 정보에 대한 초기 참조를 식별한다. 어시스턴트는 개인 정보에 대한 표시를 저장하는, 사용자와 관련된 개인 레코드를 생성한다. 어시스턴트는 사용자와 어시스턴트 간의 후속 대화를 나타내는 후속 사용자 입력의 표시를 수신한다. 어시스턴트는 후속 명령에 대한 후속 사용자 입력을 분석하고 개인 레코드에 저장된 개인 정보에 대한 후속 참조를 식별한다. 어시스턴트는 개인 레코드에 저장된 개인 정보에 기초하여 후속 커맨드를 실행한다.

Description

가상 어시스턴트의 개인화
본 발명은 가상 어시스턴트에 관한 발명이다.
일부 컴퓨팅 플랫폼은 사용자가 가상의 컴퓨팅 어시스턴트(예를 들어, "지능형 어시스턴트" 또는 단순히 "어시스턴트"라고도 함)와 채팅, 말하기 또는 다른 방식으로 통신할 수 있는 사용자 인터페이스를 제공할 수 있는바, 어시스턴트는 유용한 정보를 출력하거나, 사용자의 요구에 응답하거나, 다른 작업을 수행하여 사용자가 다양한 실제 작업 또는 가상 작업을 완료하는데 도움을 줄 수 있다. 어시스턴트는 사용자의 지시 사항을 신속하게 확인하고 그리고 작업을 완료하기 위해 즉각적으로 조치를 취하는 경우, 보다 자연스럽게 작동할 수 있을 것이다.
불행히도 일부 어시스턴트는 어시스턴트가 작업을 완료하기 위해 특정 정보를 필요로 할 때마다, 여러 가지 정보 소스(내부 및 외부)를 반복적으로 검색해야거나 추가적인 사용자 입력을 필요로 할 수도 있다. 복잡하고 시간이 많이 걸리는 검색을 자주 실행해야거나 추가 사용자 입력을 필요로 하는 경우, 어시스턴트가 느리게 실행될 수 있으며, 어시스턴트와의 대화에서 일시 중지 또는 주저가 발생할 수 있다.
일 실시예에서, 본 발명은 방법에 관한 것이며, 상기 방법은 하나 이상의 프로세서에서 실행하는 어시스턴트에 의해, 컴퓨팅 디바이스의 사용자와 어시스턴트 사이의 초기 대화를 나타내는 초기 사용자 입력의 표시를 수신하는 단계; 초기 커맨드에 대한 초기 사용자 입력을 파싱하는 단계; 초기 사용자 입력에 기초하여, 어시스턴트에 의해, 사용자에게 특정한 값과 이전에 관련되지 않은 개인 정보에 대한 초기 참조를 식별하는 단계; 및 상기 어시스턴트에 의해, 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 개인 레코드를 생성하는 단계를 포함한다. 상기 방법은 또한, 어시스턴트에 의해, 사용자와 어시스턴트 간의 후속 대화를 나타내는 후속 사용자 입력의 표시를 수신하는 단계; 초기 커맨드에 대해 후속 사용자 입력을 파싱하는 단계; 상기 후속 사용자 입력에 기초하여 상기 어시스턴트에 의해 상기 개인 정보에 대한 후속 참조를 식별하는 단계; 및 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 상기 개인 레코드의 표시에 기초하여 상기 어시스턴트에 의해 상기 후속 커맨드를 실행하는 단계를 포함한다.
다른 예에서, 본 발명은 하나 이상의 프로세서들 및 명령들을 포함하는 메모리를 포함하는 시스템에 관한 것이며, 상기 명령들은 실행될 때, 상기 하나 이상의 프로세서들로 하여금, 컴퓨팅 디바이스의 사용자와 어시스턴트 간의 초기 대화를 나타내는 초기 사용자 입력의 표시를 수신하고; 초기 커맨드에 대한 초기 사용자 입력을 파싱하고; 초기 사용자 입력에 기초하여, 상기 사용자에 특정한 값과 이전에 관련되지 않은 개인 정보에 대한 초기 참조를 식별하고; 그리고 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 개인 레코드를 생성하게 한다. 또한, 상기 명령들은 실행되는 때에 상기 하나 이상의 프로세서들로 하여금 상기 사용자와 어시스턴트 간의 후속 대화를 나타내는 후속 사용자 입력의 표시를 수신하고; 후속 커맨드에 대한 후속 사용자 입력을 파싱하고; 상기 후속 사용자 입력에 기초하여 상기 개인 정보에 대한 후속 참조를 식별하고; 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 상기 개인 레코드의 표시에 기초하여, 상기 후속 커맨드를 실행하게 한다.
또 다른 예에서, 본 발명은 명령들을 포함하는 컴퓨터-판독가능 저장 매체에 관한 것이며, 상기 명령들은 실행될 때, 시스템의 하나 이상의 프로세서들로 하여금, 컴퓨팅 디바이스의 사용자와 어시스턴트 간의 초기 대화를 나타내는 초기 사용자 입력의 표시를 수신하고; 초기 커맨드에 대한 초기 사용자 입력을 파싱하고; 초기 사용자 입력에 기초하여, 상기 사용자에 특정한 값과 이전에 관련되지 않은 개인 정보에 대한 초기 참조를 식별하고; 그리고 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 개인 레코드를 생성하게 한다. 또한, 상기 명령들은 실행되는 때에 상기 하나 이상의 프로세서들로 하여금 상기 사용자와 어시스턴트 간의 후속 대화를 나타내는 후속 사용자 입력의 표시를 수신하고; 후속 커맨드에 대한 후속 사용자 입력을 파싱하고; 상기 후속 사용자 입력에 기초하여 상기 개인 정보에 대한 후속 참조를 식별하고; 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 상기 개인 레코드의 표시에 기초하여, 상기 후속 커맨드를 실행하게 한다.
또 다른 예에서, 본 발명은 시스템에 관한 것으로, 상기 시스템은 컴퓨팅 디바이스의 사용자와 어시스턴트 간의 초기 대화를 나타내는 초기 사용자 입력의 표시를 수신하는 수단; 초기 커맨드에 대한 초기 사용자 입력을 파싱하는 수단; 초기 사용자 입력에 기초하여, 상기 사용자에 특정한 값과 이전에 관련되지 않은 개인 정보에 대한 초기 참조를 식별하는 수단; 및 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 개인 레코드를 생성하는 수단을 포함한다. 또한, 상기 시스템은 상기 사용자와 어시스턴트 간의 후속 대화를 나타내는 후속 사용자 입력의 표시를 수신하는 수단; 후속 커맨드에 대한 후속 사용자 입력을 파싱하는 수단; 상기 후속 사용자 입력에 기초하여 상기 개인 정보에 대한 후속 참조를 식별하는 수단; 및 상기 개인 정보의 표시를 저장하는 상기 사용자와 관련된 상기 개인 레코드의 표시에 기초하여, 상기 후속 커맨드를 실행하는 수단을 더 포함한다.
하나 이상의 실시예의 세부 사항은 첨부된 도면을 참조하여 및 아래에 설명된다. 본 발명의 다른 특징, 목적 및 이점은 상세한 설명, 도면 및 청구 범위로부터 명백해질 것이다.
도 1은 본 발명의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하는 예시적인 시스템을 나타내는 개념도이다.
도 2는 본 개시의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 컴퓨팅 디바이스를 나타내는 블록도이다.
도 3은 본 발명의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하는 하나 이상의 프로세서에 의해 수행되는 예시적인 동작을 도시한 흐름도이다.
도 4는 본 발명의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 컴퓨팅 디바이스를 나타내는 블록도이다.
일반적으로, 본 명세서에 개시된 기술에 따르면, 사용자와 어시스턴트 간의 진행 중인 대화 중에, 가상의 컴퓨팅 어시스턴트(예를 들어, "지능형 어시스턴트" 또는 간단히 "어시스턴트"라고도 함)는 컴퓨팅 디바이스의 사용자와 관련된 개인 정보를 자동으로 획득할 수 있다. 어시스턴트는 어시스턴트가 사용자와 정기적으로 대화하는 동안 획득한 정보에 대한 개인 레코드를 자동으로 보관할 수 있다. 어시스턴트는 이러한 정보를 개인 레코드로서, 구조화되고 의미론적인 방식으로 저장할 수 있다. 개인 레코드를 보관함으로써, 나중에 상기 어시스턴트는 어시스턴트가 검색을 실행하거나 추가적인 사용자 입력을 유발함이 없이도 개인 정보에 빨리 액세스하여, 실제 작업, 가상 작업을 완료할 수 있거나 또는 사용자의 당면한(immediate) 요구 혹은 미래의 요구에 응답할 수 있다.
어시스턴트는 사용자로부터 명시적 허가를 먼저 수신한 후, 사용자와 관련된 개인 레코드를 유지할 수 있다. 따라서, 사용자는 어시스턴트가 사용자에 관한 정보를 수집하고 사용하는 방법을 완전히 제어할 수 있다. 어시스턴트가 개인 정보를 개인 레코드로 저장하거나 혹은 다른 형태로 저장하기 전에, 어시스턴트는 사용자의 실제 신원을 삭제하도록 상기 정보를 암호화하거나 달리 처리할 수 있으며, 따라서 개인을 식별할 수 있는 정보는 사용자의 개인 레코드로부터 제거된다. 어시스턴트는 개인 레코드로부터 정보를 수정하거나 제거할 수 있는 방법을 사용자에게 제공할 수 있다. 이러한 방식으로, 사용자는 어시스턴트에 의해 보유되는 정보에 대한 완전한 제어 권한을 가질 수 있다.
개인 레코드 내의 각각의 항목(entry)은, 사용자의 요구를 보다 잘 이해하고 그리고 사용자를 도와 작업을 완료하기 위해 어시스턴트가 더 많은 정보(예컨대, 사용자 입력으로부터 제공되는 것 이상으로)를 필요로 할 때 어시스턴트에 의해서 빠르게 파싱될 수 있는 기정의된 스키마와 관련될 수 있다. 일단 개인 정보가 개인 레코드로서 기록되거나 또는 사용자에게 특정한 값으로서 기록되면, 어시스턴트는 해당 정보를 사용하여(예컨대, 특정 값을 사용하여) 작업을 완료할 수 있다. 진행중인 작업이 없으면, 어시스턴트는 어시스턴트가 나중에 사용자를 돕기 위하여 상기 정보를 사용할 수 있는 방법의 일례들을 사용자에게 제공할 수 있다. 사용자는 나중에 어시스턴트에게 이러한 정보를 망각하거나 수정하도록 요청할 수 있다(예컨대, 사용자에게 특정한 값을 변경함으로써).
예를 들어, 사용자에 대한 개인 정보를 어시스턴트에게 제공하는 것에 대한 사용자 동의를 나타내는 사용자 입력을 어시스턴트가 수신한 후에, 어시스턴트는 작업을 수행하도록 어시스턴트에게 지시하는 사용자로부터의 입력(예를 들어, 음성, 텍스트, 이메일 등등을 포함하지만, 간략함을 위해 본 명세서에서는 음성 입력이라 지칭됨)을 수신할 수 있다. 만일, 보다 공개적인 성질의 것(예컨대, "어제 밤 대학 풋볼 챔피언쉽의 승자가 누군지 말해줘" 혹은 "근처의 치과의사를 찾아줘")과는 달리, 음성 입력이 보다 개인적인 성질의 작업(예컨대, "엄마"에게 전화해줘) 또는 개인 정보에 대한 사용자-특정 선호도(예컨대, 나의(MY) 치과의사에게 전화해줘)를 나타낸다라고 어시스턴트가 간주한다면, 어시스턴트는 이전에 저장된 개인 레코드를 파싱, 검색, 혹은 분석하여, 상기 음성 입력에 의해 특정된 작업을 완료하는데 필요한 정보(예컨대, 사용자와 모자 관계(maternal relationship)를 갖는 사람을 나타내는 정보)를 재빠르게 확인할 수 있다. 어시스턴트가 사용자의 개인 레코드로부터 필요한 정보를 얻지 못한다면, 어시스턴트는 누락된 정보를 얻을 때까지 자동으로 사용자와의 대화에 참여할 수 있다(예컨대, 추가적인 음성 또는 텍스트 입력을 요청함). 누락된 정보를 얻으면 어시스턴트는 누락된 정보를 개인 레코드에 추가할 수 있으며, 따라서 누락된 정보는 향후 사용자 입력에 응답하기 위해 필요할 때 신속하고 용이하게 이용될 수 있다.
이러한 방식으로, 어시스턴트는 사용자와의 일상 대화 중에, 사용자 입력으로부터 개인 정보를 자동으로 수집하여, 예시적인 어시스턴트가 추후의 작업을 완료하는데 필요하다고 추측할 수 있다. 본 명세서에서 사용되는 "대화" 라는 용어는, 초기 설정, 설치, 최초 사용 또는 기타 등등 동안 발생할 수 있는 상호 작용이 아니라, 컴퓨팅 디바이스의 사용자와 컴퓨팅 디바이스에서 실행되거나 컴퓨팅 디바이스에서 액세스가능한 어시스턴트 간의 일상적인 상호 작용을 지칭한다. 즉, 대화는 사용자가 어시스턴트를 설정하는 것 이외의 작업을 수행할 때, 사용자에 의해서 어시스턴트를 일상적으로 사용하는 동안 발생한다. 본 명세서에 사용된 바와 같은 대화는, 앱(app) 설정의 일부로서 질문들에 사용자가 대답하는 것 또는 사용자 인터페이스의 프리셋(preset) 필드들에 제공하는 것을 지칭하는 것이 아니다.
예시적인 어시스턴트는 사용자와의 대화 도중에 예시적인 어시스턴트가 신속하게 정보를 검색할 수 있도록 개인 정보를 개인 레코드(personal records)로서 보유할 수 있다. 따라서, 본 발명과는 다른 어시스턴트들은, 이러한 다른 어시스턴트들이 특정한 사용자의 요구에 응답할 때마다, 여러 개의 정보 소스들(내부 또는 외부)을 반복적으로 검색하거나 추가적인 사용자 입력을 촉구할 필요가 있을 수 있는 반면에, 예시적인 어시스턴트는 사용자에 관한 개인 정보를 기억하는 개인 레코드에 의존하여 사용자가 필요로 하는 것을 더 빨리 확인할 수 있으며, 그리고 사용자에게 발생할 수 있는 것이 여러 정보 소스를 검색할 필요없이, 즉시 개시되어 요구를 충족시킬 수 있다. 따라서, 예시적인 어시스턴트는 컴퓨팅 디바이스 및/또는 시스템의 능력을 지원하여, 보다 신속하게 작업을 완료하고 및/또는 다른 어시스턴트보다 더 빨리 사용자 입력에 응답할 수 있다. 보다 빨리 실행함으로써, 예시적인 어시스턴트는 사용자와의 대화에서 일시 중지 또는 주저를 최소화할 수 있는바, 이는 어시스턴트와의 대화를 보다 자연스럽고 덜 어색하고 사용자에게 더 바람직하게 보이게 한다.
본 명세서 전반에 걸쳐, 일례들이 설명되어 있는데, 상기 일례들에서 컴퓨팅 디바이스 및/또는 컴퓨팅 시스템은, 컴퓨팅 디바이스 및 컴퓨팅 디바이스의 사용자와 관련된 정보(예를 들어, 컨텍스트, 위치, 통신, 컨택, 채팅 대화, 음성 대화 등)를 분석하지만, 상기 컴퓨팅 디바이스가 컴퓨팅 디바이스의 사용자로부터 이러한 정보를 분석하기 위한 허가를 수신한 경우에만 정보를 분석할 수 있다. 예를 들어, 아래에서 논의되는 상황들에서, 컴퓨팅 디바이스 또는 컴퓨팅 시스템에서 실행되는 어시스턴트가 사용자와 관련된 정보를 수집하거나 사용할 수 있기 전에, 사용자는 어시스턴트(또는 컴퓨팅 디바이스 및/또는 컴퓨팅 시스템의 다른 프로그램 또는 피처들)가 사용자 정보를 수집 및 사용할 수 있는지의 여부를 제어할 수 있는 입력을 제공하기 위한 기회 또는 컴퓨팅 디바이스 및/또는 컴퓨팅 시스템이 사용자와 관련될 수도 있는 콘텐츠를 수신할 수 있는지 및/또는 어떻게 수신하는지를 지시하기 위한 입력을 제공하기 위한 기회를 제공받을 수 있다. 또한, 소정 데이터는 어시스턴트 또는 기본 컴퓨팅 디바이스 및/또는 컴퓨팅 시스템에 의해 저장되거나 사용되기 전에, 개인 식별 정보가 제거되는 하나 이상의 방법으로 암호화 및/또는 취급될 수 있다. 예를 들어, 사용자의 신원을 처리하여 사용자에 대한 그 어떤 개인 식별 정보도 판별될 수 없게 하거나, 또는 사용자의 지리적 위치는 위치 정보가 획득된 곳에 대해서 일반화될 수 있는바(예컨대, 좌표 위치 또는 물리적 주소와 달리, 도시 단위, 우편 번호, 또는 주 단위로 일반화), 따라서, 사용자의 특정 위치가 판별될 수 없다. 따라서, 사용자는 사용자에 관한 정보가 어시스턴트 및 상기 어시스턴트를 실행하는 컴퓨팅 디바이스 및 컴퓨팅 시스템에 의해서 어떻게 수집되고 활용되는지를 제어할 수 있다.
도 1은 본 발명의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하는 예시적인 시스템을 나타내는 개념도이다. 도 1의 시스템(100)은 네트워크(130)를 통해 검색 서버 시스템(180) 및 컴퓨팅 디바이스(110)와 통신하는 어시스턴트 서버 시스템(160)을 포함한다. 비록, 상기 시스템(100)은 어시스턴트 서버 시스템(160), 검색 서버 시스템(180) 및 컴퓨팅 디바이스(110) 사이에 분산되어있는 것으로 도시되어 있지만, 다른 일례들에서 시스템(100)에 속한 피처들 및 기술들은 컴퓨팅 디바이스(110)의 로컬 컴포넌트들에 의해서 내부적으로 수행될 수도 있다. 이와 유사하게, 어시스턴트 서버 시스템(160)은 특정 컴포넌트들을 포함할 수 있으며, 그리고 아래의 설명에서 검색 서버 시스템(180)/또는 컴퓨팅 디바이스(110)에 속할 수도 있는 다양한 기술들을 수행할 수 있다.
네트워크(130)는 컴퓨팅 시스템, 서버 및 컴퓨팅 디바이스 간에 데이터를 전송하기 위한 임의의 공개 또는 사설 통신 네트워크, 예를 들어 셀룰러, Wi-Fi 및/또는 다른 유형의 네트워크들을 나타낸다. 어시스턴트 서버 시스템(160)은 컴퓨팅 디바이스(110)가 네트워크(130)에 접속될 때 컴퓨팅 디바이스(110)에 액세스 가능한 가상 어시스턴트 서비스를 제공하기 위해 컴퓨팅 디바이스(110)와 네트워크(130)를 통해 데이터를 교환할 수 있다. 어시스턴트 서버 시스템(160)는 네트워크(130)를 통해 검색 서버 시스템(180)과 데이터를 교환하여 검색 서버 시스템(180)에 의해 제공되는 검색 서비스에 액세스할 수 있다. 컴퓨팅 디바이스(110)는 네트워크(130)를 통해 검색 서버 시스템(180)과 데이터를 교환하여 검색 서버 시스템(180)에 의해 제공되는 검색 서비스에 액세스할 수 있다.
네트워크(130)는 서버 시스템(160 및 180)과 컴퓨팅 디바이스(110) 사이에서 정보의 교환을 제공하도록 동작 가능하게 상호 결합되는 하나 이상의 네트워크 허브, 네트워크 스위치, 네트워크 라우터 또는 임의의 다른 네트워크 장비를 포함할 수 있다. 컴퓨팅 디바이스(110), 어시스턴트 서버 시스템(160) 및 검색 서버 시스템(180)은 임의의 적절한 통신 기술을 사용하여 네트워크(130)를 통해 데이터를 송신 및 수신할 수 있다. 컴퓨팅 디바이스(110), 어시스턴트 서버 시스템(160) 및 검색 서버 시스템(180) 각각은 각각의 네트워크 링크를 사용하여 네트워크(130)에 동작 가능하게 연결될 수 있다. 컴퓨팅 디바이스(110), 어시스턴트 서버 시스템(160) 및 검색 서버 시스템(180)을 네트워크(130)에 연결시키는 링크는 이더넷 또는 다른 유형의 네트워크 연결일 수 있으며, 이러한 연결은 무선 및/또는 유선 연결일 수 있다.
어시스턴트 서버 시스템(160) 및 검색 서버 시스템(180)은 하나 이상의 데스크탑 컴퓨터, 랩톱 컴퓨터, 메인 프레임, 서버, 클라우드 컴퓨팅 시스템 등과 같은 임의의 적합한 원격 컴퓨팅 시스템을 나타내며, 네트워크(130)와 같은 네트워크와 정보를 송수신할 수 있다. 어시스턴트 서버 시스템(160)은 가상 어시스턴트 서비스를 호스팅(또는 적어도 액세스를 제공)한다. 검색 서버 시스템(180)은 검색 서비스를 호스팅(또는 적어도 액세스를 제공)한다. 일부 예에서, 어시스턴트 서버 시스템(160) 및 검색 서버 시스템(180)은 클라우드를 통해 각각의 서비스에 대한 액세스를 제공하는 클라우드 컴퓨팅 시스템을 나타낸다.
컴퓨팅 디바이스(110)는 개별 모바일 또는 비-모바일 컴퓨팅 디바이스를 나타낸다. 컴퓨팅 디바이스(110)의 예는 이동 전화, 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, 서버, 메인 프레임, 셋톱 박스, 텔레비전, 웨어러블 디바이스(예컨대, 컴퓨터화된 시계, 컴퓨터화된 안경, 컴퓨터화된 장갑 등), 홈 오토메이션 디바이스 혹은 시스템(가령, 지능형 써모스타트 혹은 홈 어시스턴트 디바이스), PDA(personal digital assistant), 게임 시스템, 미디어 플레이어, 전자-북 리더(e-book reader), 모바일 TV(mobile television) 플랫폼, 자동차 네비게이션 또는 인포테인먼트 시스템, 또는 가상 어시스턴트를 실행 혹은 액세스하고 네트워크(130)와 같은 네트워크를 통해 정보를 수신하도록 구성된 임의의 다른 유형의 모바일, 비-모바일, 웨어러블 및 비-웨어러블 컴퓨팅 디바이스일 수 있다.
어시스턴트 서버 시스템(160) 및/또는 검색 서버 시스템(180)은 네트워크(130)를 통해 컴퓨팅 디바이스(110)와 통신하여, 어시스턴트 서버 시스템(160)에 의해 제공되는 가상 어시스턴스 서비스에 대한 액세스를 컴퓨팅 디바이스(110)에 부여하거나 및/또는 검색 서버 시스템(180)에 의해 제공되는 검색 서비스에 대한 액세스를 컴퓨팅 디바이스(110)에 부여한다. 가상 어시스턴트 서비스를 제공하는 과정에서, 어시스턴트 서버 시스템(160)은 네트워크(130)를 통해 검색 서버 시스템(180)과 통신하여 검색 결과를 획득할 수 있는바 이는, 가상 어시스턴트 서비스 정보의 사용자에게 태스크를 완료하기 위한 정보를 제공하기 위한 것이다.
도 1의 일례에서, 어시스턴트 서버 시스템(160)은 원격 어시스턴트 모듈(122B) 및 사용자 정보 데이터 저장소(124B)를 포함한다. 원격 어시스턴트 모듈(122B)은 어시스턴트 서버 시스템(160)이 네트워크(130)를 통해(예를 들어 컴퓨팅 디바이스 110에 제공) 제공하는 가상 어시스턴트 서비스의 일부로서 사용자 정보 데이터 저장소(124B)를 유지할 수 있다. 컴퓨팅 디바이스(110)는 사용자 인터페이스 디바이스(UID)(112), 사용자 인터페이스(UI) 모듈(120), 로컬 어시스턴트 모듈(122A) 및 사용자 정보 데이터 저장소(124A)를 포함한다. 로컬 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110)에서 국부적으로 실행하는 가상 어시스턴트 서비스의 일부로서 사용자 정보 데이터 저장소(124A)를 유지할 수 있다. 원격 어시스턴트 모듈(122B) 및 로컬 어시스턴트 모듈(122A)은 총괄적으로 어시스턴트 모듈(122A 및 122B)로 지칭될 수 있다. 로컬 데이터 저장소(124A) 및 원격 데이터 저장소(124B)는 총괄적으로 저장소(124A 및 124B)로 지칭될 수 있다.
모듈들(120, 122A, 122B 및 182)은 컴퓨팅 디바이스(110), 어시스턴트 서버 시스템(160), 또는 검색 서버 시스템(180)에 상주하고 있거나 이들 중 하나에서 실행되는 하드웨어, 소프트웨어 및 펌웨어 혹은 하드웨어, 소프트웨어 및 펌웨어의 조합을 이용하여 서술된 동작들을 수행할 수 있다. 컴퓨팅 디바이스(110), 어시스턴트 서버 시스템(160) 및 검색 서버 시스템(180)은 다수의 프로세서 또는 다수의 디바이스를 갖는 모듈(120, 122A, 122B 및 182)을 실행할 수 있다. 컴퓨팅 디바이스(110), 어시스턴트 서버 시스템(160), 및 검색 서버 시스템(180)은 기저 하드웨어 상에서 실행되는 가상 머신들로서 모듈(120, 122A, 122B 및 182)들을 실행할 수 있다. 모듈(120, 122A, 122B 및 182)은 운영 시스템 또는 컴퓨팅 플랫폼의 하나 이상의 서비스로서 실행될 수 있다. 모듈들(120, 122A, 122B 및 182)은 컴퓨팅 플랫폼의 어플리케이션 계층에서 하나 이상의 실행가능한 프로그램들로서 실행될 수 있다.
컴퓨팅 디바이스(110)의 UID(112)는 컴퓨팅 디바이스(110)에 대한 입력 및/또는 출력 디바이스로서 기능할 수 있다. UID(112)는 다양한 기술을 사용하여 구현될 수 있다. 예를 들어, UID(112)는 저항성 터치스크린 , 표면 음향파 터치스크린, 용량성 터치스크린, 투영 커패시턴스 터치스크린, 압력 감지 스크린, 음향 펄스 인식 터치스크린 또는 다른 존재 감지형 디스플레이와 같은 존재 감지형 입력 스크린을 사용하는 입력 디바이스로서 기능할 수 있다.
UID(112)는 마이크로폰 기술, 적외선 센서 기술 또는 사용자 입력 수신에 사용하기 위한 다른 입력 디바이스 기술을 사용하는 입력 디바이스로서 기능할 수 있다. 예를 들어, UID(112)는 빌트-인 마이크로폰 기술을 사용하여 UI 모듈(120) 및/또는 로컬 어시스턴트 모듈(122A)이 작업을 완료하기 위해 처리하는 음성 입력을 검출할 수 있다. 다른 예로서, UID(112)는 컴퓨팅 디바이스(110)의 사용자로부터 촉각 입력을 수신할 수 있는 존재 감지 디스플레이를 포함할 수 있다. UID(112)는 사용자로부터 하나 이상의 제스처를 검출함으로써 촉각 입력의 표시를 수신할 수 있다(예컨대, 사용자가 손가락 또는 스타일러스 펜을 이용하여 UID 112의 하나 이상의 위치들을 터치하거나 포인팅함).
UID(112)는 출력 디바이스(예를 들어, 디스플레이)로서 기능하고 사용자에게 출력을 제공할 수 있다. UID(112)는 액정 디스플레이(LCD), 도트 매트릭스 디스플레이, 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 전자 잉크 또는 가시적인 정보를 컴퓨팅 디바이스(110)의 사용자에게 출력할 수 있는 유사한 흑백 또는 컬러 디스플레이 등의 임의의 하나 이상의 디스플레이 디바이스를 사용하는 출력 디바이스로서 기능할 수 있다. UID(112)는 스피커 기술, 햅틱 피드백 기술, 또는 사용자에게 정보를 출력하는데 사용하기 위한 다른 출력 디바이스 기술을 사용하는 출력 디바이스로서 기능할 수 있다. UID(112)는 로컬 어시스턴트 모듈(122A) 및/또는 원격 어시스턴트 모듈(122B)에 의해 제공되는 가상 어시스턴트와 관련된 사용자 인터페이스(예를 들어, 사용자 인터페이스(114))를 제공할 수 있다. UID(112)는 컴퓨팅 플랫폼의 다른 피처들, 운영 시스템, 어플리케이션, 및/또는 컴퓨팅 디바이스(110)에서 실행되거나 및/또는 컴퓨팅 디바이스(110)로부터 액세스가능한 서비스들(예를 들어, 전자 메일, 채팅, 온라인 서비스, 전화, 게임 등)에 관한 사용자 인터페이스를 제시할 수 있다.
UI 모듈(120)은 UID(112)를 통해 어시스턴트 서비스를 제공하기 위해, 어시스턴트 서버 시스템(160)과 상호작용하는 것을 포함하여 UID(112) 및 컴퓨팅 디바이스(110)의 다른 컴포넌트와의 사용자 상호작용을 관리할 수 있다. UI 모듈(120)은 컴퓨팅 디바이스(110)의 사용자가 출력을 보고 및/또는 UID(112)에서 입력을 제공함에 따라 UID(112)로 하여금 사용자 인터페이스(가령, 사용자 인터페이스 114 혹은 다른 예시적인 사용자 인터페이스)를 출력하게 할 수 있다. 다른 시간들에서, 그리고 사용자 및 컴퓨팅 디바이스(110)가 상이한 위치들에 있을 때, 사용자가 사용자 인터페이스와 상호작용함에 따라 UI 모듈(120)및 UID(112)는 입력(예컨대, 음성 입력, 제스처 입력 등)에 대한 하나 이상의 표시들을 사용자로부터 수신할 수 있다. UI 모듈(120) 및 UID(112)는 UID(112)에서 검출된 입력을 해석하고, UID(112)에서 검출된 입력에 관한 정보를 로컬 어시스턴트 모듈(122A) 및/또는 하나 이상의 다른 관련 플랫폼, 운영 시스템, 어플리케이션 및/또는 컴퓨팅 디바이스(110)에서 실행되는 서비스들 전달하여, 예를 들어 컴퓨팅 디바이스(110)로 하여금 기능을 수행하게 한다.
UI 모듈(120)은 컴퓨팅 디바이스(110) 및/또는 서버 시스템(160 및 180)과 같은 하나 이상의 원격 컴퓨팅 시스템에서 실행되는 하나 이상의 관련 플랫폼, 운영 시스템, 어플리케이션 및/또는 서비스로부터 정보 및 명령을 수신할 수 있다. 또한, UI 모듈(120)은 컴퓨팅 디바이스(110)에서 실행되는 하나 이상의 관련 플랫폼, 운영 체제, 어플리케이션 및/또는 서비스와 컴퓨팅 디바이스(110)의 다양한 출력 디바이스(예를 들어, 스피커, LED 표시기, 오디오 또는 햅틱 출력 디바이스 등) 사이에서 중재자로서 행동하여 컴퓨팅 디바이스(110)로 출력(예컨대, 그래픽, 빛의 플래시, 소리, 햅틱 응답 등)을 생성할 수 있다.
검색 모듈(182)은, 검색 모듈(182)이 자동으로 생성하는 검색 질의(예컨대, 컴퓨팅 디바이스 110와 관련된 상황 정보에 기초하여) 또는 어시스턴트 서버 시스템(160) 또는 컴퓨팅 디바이스(110)로부터 수신한 검색 질의(예를 들어, 가상 어시스턴트가 컴퓨팅 디바이스(110)의 사용자를 대신하여 완료하고 있는 작업의 일부로서)와 관련이 있다고 결정된 정보에 대한 검색을 실행할 수 있다. 검색 모듈(182)은 검색 질의에 기초하여 인터넷 검색을 수행하여, 검색 질의와 관련된 정보(예를 들어, 날씨, 교통 상황, 뉴스, 주가, 스포츠 스코어, 사용자 스케줄, 교통 스케줄, 소매 가격 등)를 다양한 정보 소스들로부터(예컨대, 검색 서버 시스템에 로컬적으로 저장되거나 또는 원격으로 저장된) 식별할 수 있다. 검색을 실행한 후에, 검색 모듈(182)은 검색으로부터 리턴된 정보(예를 들어, 검색 결과)를 어시스턴트 서버 시스템(160) 또는 컴퓨팅 디바이스(110)에 출력할 수 있다.
도 1의 일례에서 사용자 인터페이스(114)는 컴퓨팅 디바이스(110)에 의해 액세스되는 가상 어시스턴트 서비스와 연관된 그래픽 사용자 인터페이스이다(예컨대, 어시스턴트 서버 시스템(160)의 로컬 어시스턴트 모듈(122A) 및/또는 원격 어시스턴트 모듈(122B)에 의해 제공되는). 사용자 인터페이스(114)는 일부 예에서 가청 사용자 인터페이스일 수 있다. 도 1에 도시된 바와 같이, 사용자 인터페이스(114)는 컴퓨팅 디바이스(110)의 사용자와 컴퓨팅 디바이스(110)에서 실행되거나 액세스가능한 가상 어시스턴트 간의 대화 텍스트를 나타낸다. 사용자 인터페이스(114)는 가청 사운드, 진동, 텍스트, 그래픽, 콘텐츠 카드, 이미지 기타 등등의 다양한 형태의 가상 어시스턴트 정보를 포함할 수 있다. UI 모듈(120)은 UI 모듈(120)이 어시스턴트 서버 시스템(160)으로부터 네트워크(130)를 통해 수신하는 데이터에 기초하여 UID(112)로 하여금 사용자 인터페이스(114)를 출력하게 할 수 있다. UI 모듈(120)은 UID(112)에서 사용자 인터페이스(114) 내의 정보를 제공하기 위한 어시스턴트 서버 시스템(160) 및/또는 로컬 어시스턴트 모듈(122a)로부터의 명령들과 함께, 어시스턴트 서버 시스템(160) 및/또는 로컬 어시스턴트 모듈(122A)로부터 입력으로서 사용자 인터페이스(114)를 제공하기 위한 정보를 수신할 수 있다.
어시스턴트 서버 시스템(160)의 컴퓨팅 디바이스(110) 및 원격 어시스턴트 모듈(122A)의 로컬 어시스턴트 모듈(122A)은, 사용자와 어시스턴트 간의 진행 중인 대화 동안에 컴퓨팅 디바이스의 사용자와 관련된 개인 정보를 획득하도록 구성된 어시스턴트를 자동으로 실행하기 위해 여기에 서술된 유사한 기능들을 각각 수행할 수 있다. 원격 어시스턴트 모듈(122B) 및 사용자 정보 데이터 저장소(124B)는 예시적인 가상 어시스턴트의 서버 측 또는 클라우드 구현을 나타내는 반면에, 로컬 어시스턴트 모듈(122A) 및 사용자 정보 데이터 저장소(124A)는 예시적인 가상 어시스턴트의 클라이언트 측 또는 로컬 구현을 나타낸다.
모듈들(122A 및 122B) 각각은 컴퓨팅 디바이스(110)의 사용자와 같은 개인을 위해 작업 또는 서비스를 수행할 수 있는 지능형 개인 어시스턴트로서 실행하도록 구성된 각각의 소프트웨어 에이전트를 포함할 수 있다. 모듈(122A 및 122B)은 사용자 입력(예컨대, UID(112)에서 검출됨), 위치 인지(예를 들어, 콘텍스트에 기초하여) 및/또는 다양한 정보 소스들(컴퓨팅 디바이스(110), 어시스턴트 서버 시스템(160)에 국부적으로 저장되거나, 검색 서버 시스템(180)에 의해 제공되는 검색 서비스를 통해 획득됨)로부터 다른 정보(예를 들어, 날씨 혹은 교통 상황, 뉴스, 주식 가격, 경기 점수, 사용자 스케줄, 운송 스케줄, 소매 가격 등)에 액세스하는 능력에 기초하여, 이러한 작업 또는 서비스를 수행한다. 모듈(122A 및 122B)은 인공 지능 및/또는 기계 학습 기술을 수행하여 사용자를 대신하여 하나 이상의 작업을 자동으로 식별하고 완료할 수 있다.
원격 어시스턴트 모듈(122B) 및 로컬 어시스턴트 모듈(122A)에 의해 제공되는 각각의 어시스턴트는, 컴퓨팅 디바이스(110)의 사용자와의 대화를 지원하기 위한 동작을 실행하는 과정에서, 대화 중에 얻은 정보의 개인 레코드들을 자동으로 생성 또는 관리할 수 있으며 그리고 개인 레코드들을 사용자 정보 데이터 저장소(124B) 및 사용자 정보 데이터 저장소(124A)로서 각각 구조화되고 의미론적인 방식으로 사용자에게 특정한 값으로 저장할 수 있다. 데이터 저장소들(124B 및 124A) 각각은 원격 어시스턴트 모듈(122B) 및 로컬 어시스턴트 모듈(122A)에 의해 실행되는 각각의 어시스턴트가 실세계의 작업, 가상 작업을 완료하도록 개인 정보(예를 들어, 사용자에 특정한 값들)에 재빨리 액세스하게 할 수 있으며, 또는 컴퓨팅 디바이스(110)의 사용자의 즉각적인 요구 혹은 미래의 요구에 반응하게 할 수 있다. 설명의 편의를 위해, 본 명세서에 개시된 기술들은 주로 로컬 어시스턴트 모듈(122A)에 의해 수행되는 관점에서 설명된다.
어시스턴트 모듈(122A 및 122B)은 어시스턴트 모듈들(122A 및 122B)이 함께 또는 개별적으로 컴퓨팅 디바이스(110)에 제공하는 가상 어시스턴트 서비스의 일부로서 사용자 정보 데이터 저장소(124A 및 124B)를 유지할 수 있다. 어시스턴트 모듈(122A 및 122B)에 의해 제공되는 어시스턴트(들)는 컴퓨팅 디바이스(110)의 사용자와의 대화를 지원하기 위한 동작을 실행하는 과정에서, 대화로부터 자동적으로 추려진 정보의 개인 레코드들을 유지할 수 있으며 그리고 개인 레코드들을 사용자 정보 데이터 저장소(124A 및 124B)로서 구조화되고 의미론적으로 저장할 수 있다. 데이터 저장소들(124B 및 124A)은 어시스턴트 모듈들(122A 및 122B)에 의해 실행되는 어시스턴트가 실세계의 작업, 가상 작업을 완료하도록 개인 정보에 재빨리 액세스하게 할 수 있으며, 또는 컴퓨팅 디바이스(110)의 사용자의 즉시 및/또는 미래 요구들에 반응하게 할 수 있다.
어시스턴트 모듈(122A 및 122B)은, 그렇게 하라는 것에 대한 명백한 허가를 사용자로부터 먼저 수신한 이후에, 컴퓨팅 디바이스(110)의 사용자와 관련된 개인 레코드들을 보유할 수 있다. 따라서, 사용자는 어시스턴트가 사용자에 관한 정보를 수집하고 사용하는 방법을 완전히 제어할 수 있다. 예를 들어, 컴퓨팅 디바이스(110)의 사용자와 관련된 개인 레코드들을 보유하기 전에, 어시스턴트 모듈(122A 및 122B)은 UI 모듈(120)로 하여금 UID(112)를 통해 사용자 인터페이스를 제공하게 할 수 있으며, 이러한 사용자 인터페이스는 사용자에게 박스를 선택하거나, 버튼을 클릭하거나, 음성 입력을 말하거나 또는 어시스턴트 모듈(122A 및 122B)이 사용자의 개인 정보를 수집 및 사용하는 것에 대한 명백한 동의 확인으로서 어시스턴트 모듈(122A 및 122B)에 의해 해석되는 구체적인 입력을 사용자 인터페이스에 제공할 것을 요구한다.
어시스턴트 모듈(122A 및 122B)은 데이터 저장소(124A 및 124B)에 개인 정보를 저장하기 전에 사용자의 실제 신원을 제거하기 위해 개인 레코드로서 유지되는 정보를 암호화하거나 다르게 처리할 수 있다. 예를 들어, 정보는 어시스턴트 모듈(122A 및 122B)에 의해 처리되어 임의의 개인 식별 가능한 정보가 데이터 저장소(124A 및 124B)에 저장될 때 사용자의 개인 레코드로부터 제거될 수 있다.
어시스턴트 모듈(122A 및 122B)은 UI 모듈(120)로 하여금 UID(112)를 통해 사용자 인터페이스를 제시하게 할 수 있는바, 이를 통해 컴퓨팅 디바이스(110)의 사용자는 데이터 저장소(124A 및 124B)에 저장된 개인 레코드로부터 정보를 수정하거나 제거할 수 있다. 예를 들어, 사용자 인터페이스는 컴퓨팅 디바이스(110)의 사용자가 어시스턴트 모듈(122A 및 122B)에게 특정 개인 정보를 수정 또는 제거하라는 명령을 전달하기 위해 입력을 제공할 수 있는 영역을 제공할 수 있다. 이러한 방식으로, 컴퓨팅 디바이스(110)의 사용자는 데이터 저장소(124A 및 124B)에서 어시스턴트 모듈(122A 및 122B)에 의해 보유되는 정보에 대한 완전한 제어권을 가질 수 있다.
데이터 저장소들(124A 및 124B)에 의해 저장된 개인 레코드들 내의 각 엔트리는 미리정의된 스키마와 관련될 수 있는데, 이는 어시스턴트 모듈들(122A 및 122B)에 의해 신속히 트래버스되거나 파싱되어 사용자 요구를 이해하고 사용자가 작업을 완료하도록 돕기 위해 정보 어시스턴트 모듈들(122A 및 122B)이 현재 필요로 하는 것을 발견할 수 있다. 개인 정보가 사용자에 특정한 하나 이상의 값으로서 일단 기록되면, 어시스턴트 모듈(122A 및 122B)은 데이터 저장소(124A 및 124B)에 저장된 정보를 신속하게 사용하여 작업을 완료할 수 있다. 진행중인 작업이 없다면, 어시스턴트 모듈(122A 및 122B)은 어시스턴트가 미래에 사용자를 돕기 위해 정보를 어떻게 사용할 수 있는지에 대한 일례를 사용자에게(예를 들어, 사용자 인터페이스(114)를 통해) 제공할 수 있다. 사용자는 나중에 UID(112)에서 이러한 정보를 잊거나 수정하도록 어시스턴트 모듈(122A 및 122B)에 명령하기 위한 입력을 제공할 수 있다.
데이터 저장소(124A 및 124B)에 의해 저장된 값은 텍스트 값(예를 들어, 사람의 이름, 장소의 이름, 엔티티의 다른 텍스트 설명), 숫자 값(예를 들어, 나이, 키, 몸무게, 엔티티와 관련된 숫자 정보) 또는 사용자 고유의 값에 대한 포인터(예컨대, 사용자의 지식 그래프에서 엔티티에 대한 메모리의 위치, 주소록의 연락처에 대한 메모리의 위치 등)일 수 있다. 즉, 사용자에게 특정한 값은 많은 형식을 취할 수 있으며 기록 스키마에 의해 정의된 개인 레코드의 필드에 특정될 수 있다. 이 값은 사용자에게 특정한 실제 정보를 나타낼 수도 있고, 또는 사용자에게 특정한 정보를 검색할 수 있는 위치에 대한 참조일 수도 있다.
어시스턴트 모듈들(122A 및 122B)이 사용자에 관한 개인 정보를 어시스턴트 모듈들(122A 및 122B)에 제공하는 것에 동의한다는 것을 나타내는 UID(112)에 의해 검출된 사용자 입력의 표시를 수신한 후에, 어시스턴트 모듈들(122A 및 122B)은 어시스턴트 모듈들(122A 및 122B)로 하여금 무언가를 하게 하는 명령들을 포함하는 사용자 입력(예를 들어, 자연어 음성 입력 또는 텍스트 입력)의 표시를 UI 모듈(120)로부터 수신할 수 있다. 만일, 사용자 입력이 보다 공적인 요청(예컨대, "어제 밤 대학 풋볼 챔피언십에서 누가 이겼지?")이 아니라 보다 개인적인 요청(예컨대, "엄마"에게 전화해)을 나타낸다면, 어시스턴트 모듈들(122A 및 122B)은 사용자 입력에 의해 지정된 작업을 완료하는데 필요한 정보를 신속하게 확인하기 위해 데이터 저장소들(124A 및 124B)에 이전에 저장된 개인 레코드들을 분석하거나 트래버스할 수 있다. 반대로, 사용자 입력이 보다 개인적인 요청이 아니라 보다 공개적인 요청을 나타낸다면, 어시스턴트 모듈(122A 및 122B)은 사용자 입력 또는 그의 일부(예를 들어, 검색 질의의 표시로서)를 검색 서버 시스템(180)으로 전송하여, 검색 모듈(182)로 하여금 사용자 입력과 관련된 정보에 대한 검색을 실행하게 한다.
사용자 입력이 개인 데이터 대 공개 데이터를 제안하는지 여부를 결정하기 위해 다양한 방법이 이용될 수 있다. 예를 들어, 가령 가족 용어 등과 같이 사용자 입력에서 언급된 콘텐츠 유형 혹은 엔티티들을 입력하는 경우, 개인 대명사(personal pronoun)는 개인 데이터에 관심있는 신호일 수 있다. 사람 이름, 위치 등과 같은 저장된 개인 데이터와 매칭되는 것은 또한 개인 데이터에 대한 사용자의 관심을 나타낼 수 있다. 반대로, 가령 공적인 엔티티들에 대한 언급(예를 들어, 스포츠 팀, 공개적인 관심 포인트, 연예인, 등)과 같은 입력 콘텐츠에 대한 검사는 개인 데이터로부터 떨어진 것을 제안할 수 있다. 개인적인 정보 대 공적인 정보에 대한 사용자의 관심을 예측하기 위한 다른 기술들도 또한 고려될 수있는바, 사용자 이력 데이터를 활용하는 것, 제거 프로세스, 머신 학습 방법 기타 등등을 포함하여 여러 기술들이 고려될 수 있다.
일부 예에서, 어시스턴트 모듈(122A 및 122B)은 개인 레코드들을 생성하기 전에 사용자 입력이 공공 요청인지 또는 개인 요청인지를 결정할 수 있다. 달리 말하면, 어시스턴트 모듈(122A, 122B)은 먼저 사용자 입력이 개인 요청인지를 결정함으로써 개인 정보에 대한 초기 참조를 선점할 수 있다.
예를 들어, 어시스턴트 모듈(122A, 122B)은 사용자 입력으로부터 하나 이상의 공적인 엔티티 또는 공적인 컨텐트(예를 들어, 스포츠 팀, 유명 인사 명단, 식당, 지리적 위치, 일반적인 아이디어 또는 주제 등)를 식별하는 것에 응답하여 사용자 입력이 공적인 입력인 것으로 결정할 수 있다. 반대로, 어시스턴트 모듈(122A 및 122B)은 초기 사용자 입력으로부터 하나 이상의 개인 엔티티 또는 사적인 콘텐츠를 식별하는 것에 응답하여 사용자 입력이 개인적인 입력인 것으로 결정할 수 있다(예를 들어, 유명인이 아닌 혹은 주소록에 있는 사람의 이름, 개인 대명사, 가족 용어, 개인 레코드에 있는 필드의 특정 이름 또는 동의어 등).
초기 사용자 입력이 개인적인 요청이라는 결정에 응답하여, 어시스턴트 모듈(122A 및 122B)은 개인 정보에 대해 사용자와 관련된 개인 레코드를 분석할 수 있다. 반대로, 초기 사용자 입력이 공개적인 요청이라고 결정한 것에 응답하여, 어시스턴트 모듈(122A 및 122B)은 검색 모듈(182)로 하여금 명령을 실행하기 위해 정보에 대한 공개 검색을 실행하게 할 수 있다.
초기 사용자 입력이 개인적인 요청이라고 결정함에 응답하여, 어시스턴트 사용자 모듈(122A, 122B)은 개인 정보에 대한 사용자와 관련된 개인 레코드를 분석하고, 그리고 개인 레코드가 개인 정보와 관련된 필드에 널(null) 또는 0 값을 포함한다라고 결정함에 응답하여 개인 정보에 대한 초기 참조를 식별할 수 있다. 달리 말하면, 사용자 요청이 개인적인 것이며 본질적으로 공개적인 것이 아니라고 결정한 후에, 상기 요청을 충족시키는데 필요한 정보에 대하여 사용자의 개인 레코드들을 검색할 수 있으며 그리고 필요한 정보와 관련된 특정한 사용자 값이 없음을 식별함에 응답하여 어시스턴트 모듈(122A 및 122B)은 상기 요청 및 개인 정보에 대한 제 1 인스턴스 또는 초기 참조를 인식할 수 있다.
사용자 입력이 더 많은 개인 정보에 대한 참조들을 포함하고 따라서 보다 더 개인적인 요청인 경우, 어시스턴트가 데이터 저장소(124A 및 124B)에 저장된 사용자의 개인 레코드로부터 필요한 정보를 얻는데 실패한다면, 어시스턴트 모듈(122A 및 122B)이 추가적인 사용자 입력으로부터 누락된 정보를 획득할 때까지, 어시스턴트 모듈(122A 및 122B)은 UI 모듈(120A 및 122B)로 하여금 사용자와 대화하기 위한(예를 들어, 추가적인 음성 또는 텍스트 입력을 요청하기 위해) 텍스트 혹은 음성을 UID(112)를 통해 자동으로 출력하게 할 수 있다. 추가적인 사용자 입력으로부터 누락된 정보를 얻으면, 어시스턴트 모듈(122A 및 122B)은 누락된 정보를 데이터 저장소(124A 및 124B)에 저장된 개인 레코드에 추가할 수 있으며, 따라서 상기 정보는 미래의 사용자 입력에 응답할 때 신속하고 용이하게 획득될 수 있다.
동작시에, 로컬 어시스턴트 모듈(122A)은 UID(112)에서 UI 모듈(120)에 의해 검출된 사용자 입력에 대한 표시를 수신할 수 있으며, 이러한 사용자 입력은 로컬 어시스턴트 모듈(122A)이 사용자에 관한 개인 정보를 사용하고 저장하는 것에 사용자가 동의했음을 나타낼 수 있다. 사용자로부터 동의 표시를 수신하는 것에 응답하여, 로컬 어시스턴트 모듈(122A)은 UI 모듈(120)로부터 사용자의 음성 입력에 대한 표시를 수신할 수 있는바, 상기 음성 입력은 로컬 어시스턴트 모듈(122A)에게 지시하여 컴퓨팅 디바이스(110)로 하여금 "엄마에게 전화걸기"라는 작업을 수행하기 위한 동작들을 실행하게 할 수 있다. 예를 들어, 사용자 인터페이스(114)는 로컬 어시스턴트 모듈(122A)에 의해 인식되는 음성 입력의 표기(transcription)를 도시할 수 있으며 그리고 이에 응답하여 디스플레이용 또는 UID(112)를 통해 오디오 로 출력된다.
로컬 어시스턴트 모듈(122A)은 음성 입력을 파싱, 트래버싱 혹은 달리 분석하여(예를 들어, 자연어 프로세싱 또는 다른 음성 인식 기술을 사용하여), 음성 입력으로부터"엄마(mom)" 라는 단어를 인식한다. 로컬 어시스턴트 모듈(122A)은 "엄마"가 사용자에게 개인적이며(예를 들어, 엄마라는 단어의 성질로부터) 그리고 미래의 명령을 실행하기 위해 보유할 가치가 있는 사람에 대한 일반적인 또는 서술적인 신원을 지정하는 것으로 결정할 수 있다. "엄마(Mom)" , 맘(mom), 어머니(mother), 혹은 다른 동의어를 지칭하는 필드들을 구비한 이전에 생성된 임의의 개인 레코드들을 식별하지 못함에 응답하여, 로컬 어시스턴트 모듈(122A)은 미래의 액세스를 위해 "엄마(Mom)"라는 개인 연락처에 관한 정보를 저장하기 위해 데이터 저장소(124A)에 개인 레코드를 생성할 수 있다. 로컬 어시스턴트 모듈(122A)은 개인 연락처와 관련된 정보를 저장하기 위한 미리 정의된 스키마에 따라 데이터 저장소(124A)에 레코드를 생성할 수 있다. 즉, 개인 레코드에는 채워지지 않은 것으로 시작되는 하나 이상의 일반 "이름 필드" 또는 사용자에게 고유하지 않은 값(예컨대, 0 또는 null 값 또는 일반 자리 표시자 포함)이 포함될 수 있다. 개인 레코드에는 그 사람과 사용자 간의 관계를 명시하는 "관계 필드"가 포함될 수 있다. 로컬 어시스턴트 모듈(122A)은 가령, "엄마", "어머니", 부모님, 그 사람이 사용자의 엄마임을 나타내는 다른 동의어 등의 사용자에게 특정한 값으로 관계 필드를 자동으로 채울 수 있다.
일부 예에서, 로컬 어시스턴트 모듈(122A)이 사용자의 개인 정보의 구조화된/의미론적 기록을 갖고 있지 않는 경우(예를 들어, 로컬 어시스턴트 모듈(122A)이 사용자의 초기 입력을 성공적으로 파싱하지 못했으며 따라서 "엄마" 라는 단어를 올바르게 인식하지 못했기 때문에), 어시스턴트는 검색을 수행하여 그 정보를 찾아내고자 시도할 수 있다(예컨대, 컴퓨팅 디바이스(110)의 외부의 가령 인터넷 상에서, 또는 컴퓨팅 디바이스(110)에 로컬적으로 가령,사용자의 이전 채팅 히스토리, 검색 히스토리 등을 통해). 검색을 통해 정보를 찾으면, 로컬 어시스턴트 모듈(122A)은 이 새로운 정보를 데이터 저장소(124A)의 기록에 추가할 수 있다.
로컬 어시스턴트 모듈(122A)은 UI 모듈(120)이 UID(112)를 통해 "알겠습니다, 내가 도와줄 수 있다..." 라는 오디오 또는 텍스트를 출력하게 함으로써 사용자와의 대화에 관여할 수 있다. 로컬 어시스턴트 모듈(122A)이 사용자가 "엄마" 라고 식별한 개인 연락처에 대한 개인 레코드를 방금 생성했을 수 있으므로, 상기 기록은 불완전할 수 있다. 로컬 어시스턴트 모듈(122A)은 개인 레코드를 더 채우기 위한 노력에서 "엄마"로 식별될 수 있는 특정인의 신원을 결정하기 위한 시도에서 검색을 실행할 수 있다(예를 들어, 컴퓨팅 디바이스(110)에 국부적으로 또는 원격으로 저장된 주소록의 엔트리들 중에서). 하지만, 이러한 검색은 "엄마" 로 식별될 수 있는 특정 사람에 대한 검색 결과를 반환하지 못할 수도 있다. 예를 들어, 만일, 사용자의 어머니의 전화 번호가 "엄마" 혹은 다른 동의어로 라벨링된 연락처 항목으로 주소록에 저장되어 있지 않다면, 로컬 어시스턴트 모듈(122A)은 "엄마"라는 특정 인물의 신원을 식별하는데 실패할 수 있고, 그러므로 "엄마"에 대한 참조는 이전에 사용자에게 특정한 값과 관련되지 않은 개인 정보에 대한 초기 참조로 인식된다.
"엄마"의 신원을 획득하는데 실패한 이후, 로컬 어시스턴트 모듈(122A)은 사용자가 "엄마"라고 지칭할 때 사용자가 지칭하고 있는 특정 사람의 전화 번호를 식별하도록 로컬 어시스턴트 모듈(122A)을 도울 수 있는 추가 입력을 사용자가 UID(112)에서 제공할 것을 요청할 수 있다. 로컬 어시스턴트 모듈(122A)은 사용자와의 대화를 계속하여, UI 모듈(120)로 하여금 UID(112)를 통해 "하지만, 나는 너의 어머니에 대한 기록을 찾을 수 없을 것 같다. 그녀의 이름은 무엇인가?"라는 오디오 또는 텍스트를 출력하게 할 수 있다.
사용자는 "캣(Kat)" 이라는 단어를 말할 수 있으며 그리고 컴퓨팅 디바이스(110)는 발음된 단어 캣을 UID(112)를 통한 추가적인 음성 입력으로서 수신할 수 있다. 로컬 어시스턴트 모듈(122A)은 사용자가 "캣"이라고 말한 것에 응답하여, UI 모듈(120)로부터 추가적인 음성 입력에 대한 표시를 수신할 수 있으며 그리고 UI 모듈(120)로 하여금, UID(112)에서의 디스플레이를 위해 음성 입력 "캣(Kat)"의 표기를 출력하게 한다.
추가적인 입력에 대한 표시에 기초하여, 로컬 어시스턴트 모듈(122A)은 "엄마"가 "캣"이라는 이름의 사람을 지칭한다라고 결정할 수 있으며 캣"이라는 이름으로 생성된 기록의 이름 필드를 또한 채울 수 있다. 로컬 어시스턴트 모듈(122A)은 예를 들어, 컴퓨팅 디바이스(110)의 사용자와 연관된 주소록의 엔트리들 사이에서 후속 검색을 실행하여, 주소록에서 "캣"으로 식별된 특정 사람의 이름을 판별할 수 있다. 컴퓨팅 디바이스(110)의 사용자와 관련된 주소록이 "캐서린(Katherine) " 이라 명명된 2 이상의 연락처들을 포함한다라는 결정에 응답하여, 로컬 어시스턴트 모듈(122A)은 "캐서린(Katherine) " 이라 명명된 2 이상의 연락처들 각각을 "캣"이라는 이름의 잠재적인 매칭으로 고려할 수 있다.
2 이상의 캐서린 중 어느 것이 사용자에게 "엄마"로 알려졌는지를 결정하기 위해, 로컬 어시스턴트 모듈(122A)은 사용자와 동일한 성(last name)을 또한 공유하는 "캐서린"이라는 연락처가 사용자가 "엄마"라고 언급할 때 참조되는 특정 사람임을 자동으로 추론할 수 있다. 로컬 어시스턴트 모듈(122A)은, UI 모듈(120) 및 UID(112)로 햐여금 사용자로부터의 확인을 요청하는 텍스트 또는 오디오를 출력하게 함으로써, 사용자와 동일한 성(last name)을 또한 공유하는 "캐서린"이 사용자가 "엄마"라고 언급할 때 참조되는 특정 사람이라는 가정이 올바른지를 사용자가 확인해줄 것을 요청할 수 있다.
컴퓨팅 디바이스의 사용자가 상기 가정을 확인했음을 나타내는 UI 모듈(120)로부터의 사용자 입력의 표시(예를 들어, 사용자가 "예" 라는 단어를 말했을 때 컴퓨팅 디바이스(110)의 사용자에 의해 제공되는 음성 입력)를 수신한 것에 응답하여, 로컬 어시스턴트 모듈(122A)은 데이터 저장소(124A)에 처음 생성되어 저장되는 기록의 이름 필드에 주석을 달아, 사용자의 어머니는 이름(first name)이 "캐서린"이고, 때때로 "캣"이 되고, 사용자와 동일한 성을 공유하는 사람임을 나타내는 데이터를 저장할 수 있다. 로컬 어시스턴트 모듈(122A)은, UI 모듈(120) 및 UID(112)로 하여금 로컬 어시스턴트 모듈(122A)이 주소록의 엔트리와 사용자의 엄마 사이의 관련성을 저장하는 레코드를 생성했음을 나타내는 텍스트 또는 오디오를 출력하게함으로써, 피드백을 사용자에게 제공할 수 있다.
일부 일례들에서, 로컬 어시스턴트 모듈(122A)은 부정확한 가정을 행할 수도 있다. 예를 들어, 로컬 어시스턴트 모듈(122)은 컴퓨팅 디바이스의 사용자가 상기 가정을 거절했음을 나타내는 UI 모듈(120)로부터의 사용자 입력에 대한 표시를 수신할 수도 있다(예를 들어, 사용자가 "아니오" 라는 단어를 말했을 때 컴퓨팅 디바이스(110)의 사용자에 의해 제공되는 음성 입력)(예를 들어, 사용자와 어머니가 성(last name)을 공유하지 않는 경우 - 성(last name) 간의 공통성이 출생 권리가 아니라 결혼으로 인한 경우일 수 있다). 상기 가정을 거부하는 사용자 입력의 표시를 수신하는 것에 응답하여, 로컬 어시스턴트 모듈(122A)은 사용자의 엄마의 신원을 도출하도록 추가 질문을 후속할 수 있으며 그리고 종내에는 사용자 엄마의 신원이 판별되면 데이터 저장소(124A)에 처음 생성 및 저장된 기록의 이름 필드에 주석을 달 수 있다.
로컬 어시스턴트 모듈(122A)은 원래의 음성 입력(예를 들어, "엄마에게 전화 걸기")에 의해 특정된 작업을 완료하기 위해 하나 이상의 동작을 실행할 수 있다. 예를 들어, 로컬 어시스턴트 모듈(122A)은 컴퓨터 디바이스(110)로 하여금 이름은 캐서린(Katherine)이고 사용자와 성은 동일한 항목(entry) 아래의 컴퓨터 디바이스(110)의 사용자와 연관된 주소록에 저장된 전화 번호로 다이얼링하기 위해 전화 어플리케이션을 실행하게 할 수 있다.
사용자의 엄마에 대한 개인 레코드를 생성한 후에, 로컬 어시스턴트 모듈(122)은 다시 UI 모듈(120)로부터 "엄마"를 지칭하는 사용자로부터의 음성 입력에 대한 표시를 수신할 수 있다, 로컬 어시스턴트 모듈(122A)은 "엄마"에 대하여, 데이터 저장소(124A)에 저장된 개인 레코드의 스키마를 신속하게 파싱하거나 트래버스할 수 있으며, 그리고 사용자가 그의 어머니라고 생각하는 사람에 관한 정보를 제공하는 이전에 생성된 개인 레코드를 신속하게 식별할 수 있다. 따라서, 로컬 어시스턴트 모듈(122A)은 "엄마" 의 신원을 결정하기 위하여, 컴퓨팅 디바이스(110)로부터 국부적으로 또는 원격으로 저장된 다수의 정보 소스들 사이에서 로컬 또는 글로벌 검색을 실행할 필요가 없다. 로컬 어시스턴트 모듈(122A)은 사용자 입력에 응답함에 있어서, 훨씬 빠른 응답 시간을 가질 수 있는바, 여기서 사용자 입력은 개인 레코드에 포함되지 않은 데이터를 참조하는 사용자 입력들과 비교하여, 데이터 스토어(124A)에 저장된 이전에 생성된 개인 레코드에 포함된 데이터를 참조한다.
이러한 방법으로, 사용자와의 일상적인 대화를 하는 동안, 로컬 어시스턴트 모듈(122A)은 미래의 작업을 완료하는데 필요할 것이라고 로컬 어시스턴트 모듈(122A)이 추론하는 특정 개인 정보를 자동으로 인식 및 보유할 수 있다. 로컬 어시스턴트 모듈(122A)은 구조화되고 의미론적인 방법으로 데이터 저장소(124A)에 저장되는 개인 레코드로서 개인 정보를 유지할 수 있어, 로컬 어시스턴트 모듈(122A)이 사용자와의 대화를 수행하는 동안 정보의 신속한 장래 검색을 가능하게할 수 있다.
전술한 접근법에 의해 제공되는 여러 가지 장점들은 다음과 같다: (1) 개인 데이터를 불러내는 사용자 입력에 작용하는 디바이스의 처리 복잡성 및 시간이 감소될 수 있다; (2) 개인 데이터가 국부적으로 저장되므로, 개인 데이터에 대한 사용자 디바이스의 복잡하고 메모리를 소비하는 전송 보안 프로토콜의 필요성을 감소시킨다; (3) 특정 데이터는 사용자의 선호하는 질의 표현(query phrasing)과 연관되므로, 질의 재작성 및 다른 계산적으로 복잡한 데이터 검색에 대한 사용자 디바이스에 대한 요구를 감소시킬뿐만 아니라 결과 정확도를 향상시킨다;(4) 로컬 어시스턴트 모듈이 액세스할 필요가 있는 데이터가 네트워크 리소스가 아니라 로컬 저장소로부터 얻어질 수 있기 때문에 네트워크 사용이 감소될 수 있다.
다른 어시스턴트들은 이들 다른 어시스턴트들이 특정 사용자 필요에 응답하도록 임무가 주어질 때마다, 다수의(내부 또는 외부) 정보 소스들 사이에서 반복적으로 검색하거나 추가적인 사용자 입력을 이끌어 낼 필요가 있을 수 있지만, 본 발명에 따른 어시스턴트는 개인 레코드에 의존하여 사용자가 필요로하는 것을 보다 빨리 확인하고, 여러 정보 소스를 검색할 필요없이 필요를 충족시키기위한 조치를 취하기 시작할 수 있다. 개인 레코드는 사용자와의 정기적인 대화 중에 자동으로 생성될 수 있으므로, 사용자는 사용자에 대해 학습시키기 위해 예시적인 어시스턴트를 수동으로 프로그래밍하는데 시간을 낭비할 필요가 없다 따라서, 본 발명에 따른 어시스턴트는 다른 어시스턴트보다 더 신속하게 작업을 완료하고 및/또는 다른어시스턴트들 보다 사용자에게 보다 신속하게 응답할 수 있다. 보다 빨리 실행함으로써, 예시적인 어시스턴트는 사용자와의 대화에서 일시 중지 또는 주저를 최소화할 수 있는바, 이는 어시스턴트와의 대화를 보다 자연스럽고 덜 어색하고 사용자에게 더 바람직하게 보이게 할 수 있다.
도 2는 본 발명의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 컴퓨팅 디바이스를 나타내는 블록도이다. 도 2의 컴퓨팅 디바이스(210)는 도 1의 컴퓨팅 디바이스(110)의 일례로서 아래에서 설명된다. 도 2는 컴퓨팅 디바이스(210)의 단지 하나의 특정 예를 도시하고, 컴퓨팅 디바이스(210)의 다른 많은 예는 다른 경우에 사용될 수 있으며, 예시적인 컴퓨팅 디바이스(210)에 포함된 컴포넌트들의 서브 세트를 포함하거나 도 2에 도시되지 않은 부가적인 컴포넌트를 포함할 수 있다.
도 2의 일례에 도시된 바와 같이, 컴퓨팅 디바이스(210)는 사용자 인터페이스 디바이스(USD)(212), 하나 이상의 프로세서(240), 하나 이상의 통신 유닛(242), 하나 이상의 입력 컴포넌트(244), 하나 이상의 출력 컴포넌트(246) 및 하나 이상의 저장 컴포넌트(248)를 포함한다. USD(212)는 디스플레이 컴포넌트(202), 존재-감지 입력 컴포넌트(204), 마이크로폰 컴포넌트(206), 및 스피커 컴포넌트(208)를 포함할 수 있다. 컴퓨팅 디바이스(210)의 저장 컴포넌트(248)는 UI 모듈(220), 어시스턴트 모듈(222), 검색 모듈(282), 하나 이상의 어플리케이션 모듈(226), 문맥 모듈(230), 및 사용자 정보 데이터 저장소(224)를 포함한다.
통신 채널(250)은 컴포넌트 간 통신(물리적으로, 통신가능하게 및/또는 동작가능하게)을 위해 컴포넌트들(212, 240, 242, 244, 246 및 248) 각각을 상호연결할 수 있다. 일부 예에서, 통신 채널(250)은 시스템 버스, 네트워크 접속, 프로세스 간 통신 데이터 구조, 또는 데이터를 통신하기 위한 임의의 다른 방법을 포함할 수 있다.
컴퓨팅 디바이스(210)의 하나 이상의 통신 유닛(242)은 하나 이상의 네트워크들(예를 들어,도 1의 시스템(100)의 네트워크(130)) 상에서 네트워크 신호를 송신 및/또는 수신함으로써, 하나 이상의 유선 및/또는 무선 네트워크를 통해 외부 디바이스(예컨대, 도 1의 시스템(100)의 어시스턴트 서버 시스템(160) 및/또는 검색 서버 시스템(180))와 통신할 수 있다. 통신 유닛(242)의 일례들은 네트워크 인터페이스 카드(예컨대, 이더넷 카드와 같은), 광 트랜시버, 무선 주파수 송수신기, GPS 수신기, 또는 정보를 송신 및/또는 수신할 수 있는 임의의 다른 유형의 디바이스를 포함한다. 통신 유닛(242)의 다른 일례들은 단파 라디오, 셀룰러 데이터 라디오, 무선 네트워크 라디오 및 범용 직렬 버스(USB) 컨트롤러를 포함할 수 있다.
컴퓨팅 디바이스(210)의 하나 이상의 입력 컴포넌트(244)는 입력을 수신할 수 있다. 예시적인 입력들은 촉각, 오디오 및 비디오 입력이다. 일례에서, 컴퓨팅 디바이스(210)의 입력 컴포넌트(242)는 존재-감지 입력 디바이스(예를 들어, 터치 감지 스크린, PSD), 마우스, 키보드, 음성 응답 시스템, 카메라, 마이크로폰 또는 인간 또는 기계로부터의 입력을 검출하는 임의 유형의 디바이스를 포함할 수 있다. . 일부 실시예에서, 입력 컴포넌트(242)는 하나 이상의 센서 컴포넌트, 하나 이상의 위치 센서(GPS 컴포넌트, Wi-Fi 컴포넌트, 셀룰러 컴포넌트), 하나 이상의 온도 센서, 하나 이상의 움직임 센서(예컨대, 가속도계, 자이로 스코프), 하나 이상의 압력 센서(예를 들어, 기압계), 하나 이상의 주변 광 센서, 및 하나 이상의 다른 센서(예를 들어, 적외선 근접 센서, 습도계 센서 등)를 포함할 수 있다. 다른 센서들은, 이런 것으로 한정되는 것은 아니지만, 심장 박동 센서, 자기력계, 글루코스 센서, 후각 센서, 컴파스 센서, 스텝 카운터 센서 등을 포함할 수 있다.
컴퓨팅 디바이스(110)의 하나 이상의 출력 컴포넌트(246)는 출력을 생성할 수 있다. 출력의 일례들은 촉각, 오디오 및 비디오 출력이 있다. 일례에서, 컴퓨팅 디바이스(210)의 출력 컴포넌트(246)는 존재 감지 디스플레이, 사운드 카드, 비디오 그래픽 어댑터 카드, 스피커, 음극선 관(CRT) 모니터, 액정 디스플레이(LCD) 또는 인간 또는 기계에게 출력을 생성하기 위한 임의의 다른 유형의 디바이스를 포함할 수 있다.
컴퓨팅 디바이스(210)의 UID(212)는 컴퓨팅 디바이스(110)의 UID(112)와 유사할 수 있으며, 디스플레이 컴포넌트(202), 존재 감지 입력 컴포넌트(204), 마이크로폰 컴포넌트(206) 및 스피커 컴포넌트(208)를 포함한다. 디스플레이 컴포넌트(202)는 UID(212)에 의해서 정보가 디스플레이되는 스크린일 수 있으며, 존재 감지 입력 컴포넌트(204)는 디스플레이 컴포넌트(202)에서 및/또는 디스플레이 컴포넌트(202) 근처에서 대상물을 검출할 수 있다. 스피커 컴포넌트(208)는 UID(212)에 의해서 청각 정보가 재생되는 스피커일 수 있으며, 마이크로폰 컴포넌트(206)는 디스플레이 컴포넌트(202) 및/또는 스피커 컴포넌트(208)에서 제공되는 청각 입력을 검출할 수 있다.
비록, 컴퓨팅 디바이스(210)의 내부 컴포넌트로서 도시되어 있지만, UID(212)는 송신 및/또는 입력 및 출력을 송/수신하기 위해 컴퓨팅 디바이스(210)와 데이터 경로를 공유하는 외부 컴포넌트를 나타낼 수도 있다. 예를 들어, 일 실시예에서, UID(212)는 컴퓨팅 디바이스(210)의 외부 패키징(예를 들어, 이동 전화상의 스크린) 내에 위치되고 물리적으로 연결된 컴퓨팅 디바이스(210)의 빌트-인 컴포넌트를 나타낼 수 있다. 다른 일례에서, UID(212)는 컴퓨팅 디바이스(210)의 패키징 또는 하우징(예를 들어, 컴퓨팅 디바이스(210)와 유선 및/또는 무선 데이터 경로를 공유하는 모니터, 프로젝터 등)의 외부에 위치하며 및 물리적으로 분리된 컴퓨팅 디바이스(210)의 외부 컴포넌트를 나타낼 수 있다,
하나의 예시적인 범위로서, 존재 감지 입력 컴포넌트(204)는 디스플레이 컴포넌트(202)의 2 인치 또는 그 이하의 손가락 또는 스타일러스와 같은 객체를 검출할 수 있다. 존재 감지 입력 컴포넌트(204)는 객체가 검출되었던 디스플레이 컴포넌트(202)의 위치(예를 들어, [x, y] 좌표)를 검출한다. 다른 일례로서, 존재 감지 입력 컴포넌트(204)는 디스플레이 컴포넌트(202)로부터 6 인치 또는 그 이하의 객체를 검출할 수 있고 다른 범위도 또한, 가능하다.존재 감지 입력 컴포넌트(204)는 용량성, 유도성 및/또는 광학 인식 기술을 사용하여 사용자의 손가락 의해 선택된 디스플레이 컴포넌트(202)의 위치를 결정할 수 있다. 일부 예에서, 존재 감지 입력 컴포넌트(204)는 또한 디스플레이 컴포넌트(202)와 관련하여 기술된 바와 같이 촉각, 오디오 또는 비디오 자극을 사용하여 사용자에게 출력을 제공한다. 도 2의 일례에서, PSD(212)는 사용자 인터페이스(도 1의 그래픽 사용자 인터페이스(114)와 같은)를 나타낼 수 있다.
스피커 컴포넌트(208)는 컴퓨팅 디바이스(210)의 하우징에 내장된 스피커를 포함할 수 있으며, 일부 예에서는 컴퓨팅 디바이스(210)에 동작가능하게 결합된 유선 또는 무선 헤드폰 세트에 내장된 스피커일 수 있다. 마이크로폰 컴포넌트(206)는 UID(212)에서 또는 그 근처에서 발생하는 가청 입력을 검출할 수 있다. 마이크로폰 컴포넌트(206)는 배경 잡음을 제거하고 검출된 오디오 신호로부터 사용자 음성을 분리하기 위해 다양한 잡음 소거 기술을 수행할 수 있다.
컴퓨팅 디바이스(210)의 UID(212)는 컴퓨팅 디바이스(210)의 사용자로부터 입력으로서 2 차원 및/또는 3 차원 제스처를 검출할 수 있다. 예를 들어, UID(212)의 센서는 UID(212)의 센서의 임계 거리 내에서 사용자의 움직임(예컨대, 손, 팔, 펜, 스타일러스 등을 움직임)을 검출할 수 있다. UID(212)는 움직임의 2 차원 또는 3 차원 벡터 표현을 결정하고 그리고 상기 벡터 표현을 다수의 차원들을 갖는 제스처 입력(예를 들어, 핸드-웨이브, 핀치, 클랩(clap), 펜 스트로크 등)과 상관시킬 수 있다. 달리 말하면, UID(212)는 다차원 제스처를 검출할 수 있다(UID(212)가 디스플레이를 위해 정보를 출력하는 스크린 또는 표면에서 또는 그 부근에서 사용자가 제스처할 것을 요구함이 없이). 대신에, UID(212)는 UID(212)가 디스플레이를 위해 정보를 출력하는 스크린 또는 표면 근처에 위치할 수도 또는 위치하지 않을 수도 있는 센서에서 또는 그 부근에서 수행되는 다차원 제스처를 검출할 수 있다.
하나 이상의 프로세서(240)들은 컴퓨팅 디바이스(210)와 관련된 기능을 구현하거나 및/또는 명령들을 실행할 수 있다. 프로세서(240)의 일례들은 어플리케이션 프로세서, 디스플레이 제어기, 보조 프로세서, 하나 이상의 센서 허브, 및 프로세서, 프로세싱 유닛, 또는 프로세싱 디바이스로서 기능하도록 구성된 임의의 다른 하드웨어를 포함한다. 모듈들(220, 222, 226, 230 및 282)은 컴퓨팅 디바이스(210)의 다양한 행동들, 동작들 또는 기능들을 수행하기 위해 프로세서(240)에 의해 동작가능할 수 있다. 예를 들어, 컴퓨팅 디바이스(210)의 프로세서들(240)은 프로세서(240)로 하여금 모듈들(220, 222, 226, 230, 및 282)을 동작하게 하는, 저장 컴포넌트들(248)에 의해 저장된 명령들을 검색하고 실행할 수 있다. 이러한 명령들은 프로세서(240)에 의해 실행될 때, 컴퓨팅 디바이스(210)로 하여금 저장 컴포넌트(248) 내에 정보를 저장하게 한다.
컴퓨팅 디바이스(210) 내의 하나 이상의 저장 컴포넌트(248)는 컴퓨팅 디바이스(210)의 동작 동안 프로세싱을 위한 정보를 저장할 수 있다(예를 들어, 컴퓨팅 디바이스(210)는 컴퓨팅 디바이스(210)에서의 실행 동안 모듈들(220, 222, 226, 230 및 282)에 의해 액세스되는 데이터를 저장할 수 있다). 일부 예에서, 저장 컴포넌트(248)는 일시적인 메모리이며, 이는 저장 컴포넌트(248)의 주요 목적이 장기 저장이 아니라는 것을 의미한다. 컴퓨팅 디바이스(210) 상의 저장 컴포넌트(248)는 정보의 단기 저장을 위해 휘발성 메모리로서 구성될 수 있고, 따라서 전원이 꺼지면 저장된 컨텐츠를 보유하지 않을 수 있다. 휘발성 메모리의 일례는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 및 당업계에 공지된 다른 형태의 휘발성 메모리를 포함한다.
일부 예에서, 저장 컴포넌트(248)는 하나 이상의 컴퓨터 판독가능 저장 매체를 또한 포함한다. 일부 실시예에서 저장 컴포넌트(248)는 하나 이상의 비일시적인 컴퓨터 판독가능 저장 매체를 포함한다. 저장 컴포넌트(248)는 전형적으로 휘발성 메모리에 의해 저장되는 것보다 많은 양의 정보를 저장하도록 구성될 수 있다. 저장 컴포넌트(248)는 또한 비휘발성 메모리 공간으로서 정보의 장기 저장을 위해 구성될 수 있고, 전원 온/오프 사이클 후에도 정보를 유지할 수 있다. 비휘발성 메모리의 예는 자기 하드 디스크, 광 디스크, 플로피 디스크, 플래시 메모리, 또는 전기적으로 프로그램 가능한 메모리(EPROM) 또는 전기적으로 소거 가능하고 프로그램 가능한(EEPROM) 메모리의 형태를 포함한다. 저장 컴포넌트(248)는 모듈(220, 222, 226, 230, 240) 및 데이터 저장소(224)와 관련된 프로그램 명령 및/또는 정보(예를 들어, 데이터)를 저장할 수 있다. 저장 컴포넌트(248)는 모듈(220, 222, 226, 230, 및 282) 및 데이터 저장소(224)와 관련된 데이터 또는 다른 정보를 저장하도록 구성된 메모리를 포함할 수있다.
UI 모듈(220)은 도 1의 컴퓨팅 디바이스(110)의 UI 모듈(120)의 모든 기능을 포함할 수 있으며 그리고 컴퓨팅 디바이스(110)의 사용자와 어시스턴트 모듈(222) 간의 상호 작용을 용이하게 하기 위해 컴퓨팅 디바이스(210)가 USD(212)에서 제공하는 사용자 인터페이스(예를 들어, 사용자 인터페이스 114)를 관리하기 위한 UI 모듈(120)과 유사한 동작을 수행할 수 있다. 예를 들어, 컴퓨팅 디바이스(210)의 UI 모듈(220)은 어시스턴트 사용자 인터페이스(예컨대, 사용자 인터페이스 114)를 출력(예를 들어, 디스플레이하거나 또는 오디오를 재생)하기 위한 명령을 포함하는 어시스턴트 모듈(222)로부터의 정보를 수신 할 수 있다. UI 모듈(220)은 통신 채널(250)을 통해 어시스턴트 모듈(222)로부터 정보를 수신하고 데이터를 사용하여 사용자 인터페이스를 생성할 수 있다. UI 모듈(220)은 UID(212)가 UID(212)에서 사용자 인터페이스를 제공하게 하기 위해 통신 채널(250)을 통해 디스플레이 또는 가청 출력 명령 및 관련 데이터를 전송할 수 있다.
일부 예에서, UI 모듈(220)은 UID(212)에서 검출된 하나 이상의 사용자 입력들에 대한 표시를 수신하고 그리고 사용자 입력들 관한 정보를 어시스턴트 모듈(222)로 출력할 수 있다. 예를 들어, UID(212)는 사용자로부터의 음성 입력을 검출하고 그리고 음성 입력에 관한 데이터를 UI 모듈(220)에 전송할 수 있다.
UI 모듈(220)은 추가 해석을 위해 어시스턴트 모듈(222)에 음성 입력의 표시를 전송할 수 있다. 어시스턴트 모듈(222)은 음성 입력에 기초하여, 검출된 음성 입력이 어시스턴트 모듈(222)이 하나 이상의 작업을 수행하기 위한 사용자 요청을 나타내는지를 결정할 수 있다.
어플리케이션 모듈(226)은 사용자에게 정보를 제공하거나 및/또는 작업을 수행하기 위해 어시스턴트 모듈(222)과 같은 어시스턴트에 의해 액세스될 수 있는 컴퓨팅 디바이스(210)에서 실행되고 액세스가능한 다양한 개별 어플리케이션 및 서비스들을 나타낸다. 컴퓨팅 디바이스(210)의 사용자는 하나 이상의 어플리케이션 모듈(226)과 관련된 사용자 인터페이스와 상호작용하여, 컴퓨팅 디바이스(210)가 기능을 수행하게 할 수 있다. 어플리케이션 모듈(226)의 다수의 일례들이 존재할 수 있으며, 여기에는 피트니스 어플리케이션, 캘린더 어플리케이션, 검색 어플리케이션, 맵 또는 네비게이션 어플리케이션, 운송 서비스 어플리케이션(버스 또는 기차 추적 어플리케이션), 소셜 미디어 어플리케이션, 게임 어플리케이션, 전자 메일 어플리케이션, 채팅 또는 메시징 어플리케이션, 인터넷 브라우저 어플리케이션 등을 포함할 수 있다.
컴퓨팅 디바이스(210)의 검색 모듈(282)은 컴퓨팅 디바이스(210) 대신에 통합 검색 기능을 수행할 수 있다. 검색 모듈(282)은 UI 모듈(220), 하나 이상의 어플리케이션 모듈(226) 및/또는 어시스턴트 모듈(222)에 의해 호출될 수 있으며 그들을 대신하여 검색 동작을 수행한다. 호출될 때, 검색 모듈(282)은 가령, 검색 질의를 생성하고 그리고 생성된 검색 질의에 기초하여 다양한 로컬 및 원격 정보 소스에 대해서 검색을 실행하는 것과 같은 검색 기능을 수행할 수 있다. 검색 모듈(282)은 실행된 검색의 결과를 호출 컴포넌트 또는 모듈에 제공할 수 있다. 즉, 검색 모듈(282)은 호출 명령에 응답하여 검색 결과를 UI 모듈(220), 어시스턴트 모듈(222) 및/또는 어플리케이션 모듈(226)에 출력할 수 있다.
콘텍스트 모듈(230)은 컴퓨팅 디바이스(210)의 콘텍스트를 정의하기 위해 컴퓨팅 디바이스(210)와 관련된 콘텍스트 정보를 수집할 수 있다. 특히, 콘텍스트 모듈(210)은 주로 어시스턴트 모듈(222)에 의해 이용되어, 특정 시간에서 컴퓨팅 디바이스(210)의 물리적 및/또는 가상 환경 및 컴퓨팅 디바이스(210)의 사용자의 특징들을 나타내는 컴퓨팅 디바이스(210)의 콘텍스트를 정의할 수 있다.
본 명세서에서 사용되는 바와 같이, "콘텍스트 정보"라는 용어는 컴퓨팅 디바이스 및 컴퓨팅 디바이스의 사용자가 특정 시간에서 경험할 수 있는 가상 및/또는 물리적 환경 특성들을 정의하기 위해 콘텍스트 모듈(230)에 의해 사용될 수 있는 임의의 정보를 서술하는데 사용된다. 콘텍스트 정보의 일례는 매우 다양하며, 예컨대 컴퓨팅 디바이스(210)의 센서(예를 들어 위치 센서, 가속도계, 자이로, 기압계, 주변 광 센서, 근접 센서, 마이크로폰 및 임의의 다른 센서)에 의해 얻어진 센서 정보, 컴퓨팅 디바이스(210)의 통신 모듈에 의해 송수신되는 정보(예를 들어, 텍스트 기반 통신, 가청 통신, 비디오 통신 등), 컴퓨팅 디바이스(210)에서 실행되는 어플리케이션과 관련된 어플리케이션 사용 정보(예를 들어, 어플리케이션에 관련된 어플리케이션 데이터, 인터넷 검색 히스토리, 텍스트 통신, 음성 및 비디오 통신, 캘린더 정보, 소셜 미디어 포스트 및 관련 정보 등)를 포함할 수 있다. 콘텍스트 정보의 추가적인 일례는 컴퓨팅 디바이스(210) 외부의 송신 디바이스들로부터 획득된 신호들 및 정보를 포함한다. 예를 들어, 컨텍스트 모듈(230)은 컴퓨팅 디바이스(210)의 라디오 또는 통신 유닛을 통해, 상인의 실제 위치 또는 그 근처에 위치한 외부 비콘으로부터 송신된 비콘 정보를 수신할 수 있다.
어시스턴트 모듈(222)은 도 1의 컴퓨팅 디바이스(110)의 로컬 어시스턴트 모듈(122A)의 모든 기능을 포함할 수 있으며 그리고 어시스턴트를 제공하기 위한 로컬 어시스턴트 모듈(122A)과 유사한 동작들을 수행할 수 있다. 일부 예에서, 어시스턴트 모듈(222)은 국부적으로(예를 들어, 프로세서(240)에서) 실행되어, 어시스턴트 기능을 제공할 수 있다. 일부 실시예에서, 어시스턴트 모듈(222)은 컴퓨팅 디바이스(210)에 액세스할 수 있는 원격 어시스턴트 서비스에 대한 인터페이스 역할을 할 수 있다, 예를 들어, 어시스턴트 모듈(222)은 도1의 어시스턴트 서버 시스템(160)의 원격 어시스턴트 모듈(122B)에 대한 인터페이스 또는 어플리케이션 프로그래밍 인터페이스(API)일 수 있다.
도 1의 시스템(100)의 데이터 저장소(124A 및 124B)와 유사하게, 사용자 정보 데이터 저장소(224)는 어시스턴트 모듈(222)에 의해 생성된 개인 레코드를 저장할 수 있으며, 개인 레코드는 어시스턴트 모듈(222)에 의해 제공된 어시스턴트와 사용자 간의 대화 중에 어시스턴트 모듈(222)이 컴퓨팅 디바이스(210)의 사용자에 대해 알게된 정보를 포함한다. 어시스턴트 모듈(222)은 컨텍스트 모듈(230) 및/또는 검색 모듈(282)에 의해 제공된 임의의 정보 뿐만 아니라 데이터 저장소(224)에 저장된 정보에 의존하여, 어시스턴트 작업을 수행할 수 있다.
데이터 저장소(224)에 포함된 정보는 구조화되고 의미론적 방식으로 저장될 수 있다. 예를 들어, UID(212)에서 "나의 이름은 존" 이라는 음성 입력을 검출하는 것에 응답하여, 어시스턴트 모듈(222)은 문자열 "존(john)"(예컨대, (name,john))으로 채워지는 이름 필드를 포함하는 기록(record)을 데이터 저장소(224)에 생성할 수 있다. 이름 필드 이외에도, 어시스턴트 모듈(222)은 데이터 저장소(224)에 의해 저장된 레코드에 음성 입력이 수신된 시간에서 컨텍스트 모듈(230)로부터 수신된 컨텍스트 정보(예를 들어, 날짜, 컴퓨팅 디바이스의 위치 210 및 기타 콘텍스트 정보)를 포함시킬 수 있다.
또 다른 예로서, 어시스턴트 모듈(222)에 의해 제공된 어시스턴트와 사용자 간의 대화 동안, 사용자는 "나는 지역 도서관의 참조 사무원이다("I'm a reference clerk at the local library)" 라는, UID(212)에 의해서 텍스트 문자열로서 인식되는 입력을 UID(212)에 제공할 수 있다. 어시스턴트 모듈(222)은 텍스트 문자열의 표시를 수신할 수 있으며 그리고 직업 필드를 포함하는 개인 레코드를 데이터 저장소(224)에 생성할 수 있다. 어시스턴트 모듈(222)은 사용자 입력으로부터 추론된 유형 및 위치로 직업 필드를 채울 수 있다. 예를 들어, 직업 필드는 "참조_사무원(reference_clerk)" 이라는 유형 참조를 포함할 수 있으며 그리고 "스프링필드 오하이오 공립 도서관" 이라는 엔티티로서 고용 장소 참조를 포함할 수 있다(예컨대, (occupation, \type reference clerk) and (place_of_employment, \entity Springfield_Ohio_Public_Library)). 어시스턴트 모듈(222)은 데이터 저장소(224)에 의해 저장된 개인 레코드들의 필드들을, 이들 기본 의미에 대한 정보의 잘 정의된, 정규화된 및 일관된 표현으로 채울 수 있다.
어시스턴트 모듈(222)은 사용자와의 대화 중에 획득된 정보가 더 넓은 구조를 전달하는 규칙적인 스키마와 연관될 수 있다는 것을 인식할 수 있다. 어시스턴트 모듈(222)이 더 넓은 구조의 모든 필드를 채우는데 필요한 정보를 사용자로부터 아직 도출하지 못한 경우, 어시스트 모듈(222)은 널(null) 또는 빈 자리표시자(empty placeholders)를 갖는 더 넓은 구조에 따라 레코드를 생성할 수 있다. 어시스턴트 모듈(222)이 사용자와 점점 더 대화함에 따라, 어시스턴트 모듈(222)은 향후 상호 작용을 더 쉽고 신속하게 하기 위하여 데이터 저장소(224)에서 개인 레코드의 필드들을 채울 수 있다.
예를 들어, 어시스턴트 모듈(222)은 이름 외에도, 사람들이 빈번하게 생년월일, 집 위치 및 고용 장소를 갖는 것을 지정하는 규칙에 따라 동작할 수 있다. "나의 이름은 존 이다" 라는 입력에 응답하여 데이터 저장소(224)에 개인 레코드를 생성하는 것에 응답하여, 어시스턴트 모듈(222)은 UID(212)로 하여금 "안녕 존, 만나서 반가워요, 어디에서 일합니까?"를 출력하고 그리고 UID(212)에 의해 수신된 결과적인 사용자 응답을 저장하게 할 수 있으며, 이는 사용자 어시스턴트 모듈(222)의 보다 완전한 이해를 구축하는데 도움이 된다. 이러한 2차적인 정보 도출(elicitation)에 따라 동작함으로써, 어시스턴트 모듈(222)은 어시스턴트 모듈(222)이 동작하는 규칙들에 의해서 후속 도출을 출력하도록 유도될 수 있다. 이러한 규칙들은, 특정한 2차적인 특징들의 중요도 및/또는 인기도에 관한 규칙들, 사용자가 최근에 그런 질문을 받았는지의 여부, 과거에 그러한 질문에 사용자가 답변하는 경향이 있는지 여부 등등을 포함할 수 있다.
동작시에, 컴퓨팅 디바이스(210)의 사용자는 상대적으로 촉구되지 않는 방식으로(in a relatively unprompted manner) 어시스턴트 모듈(222)에게 지시하는 음성 입력을 UID(212)에 제공할 수 있다. 예를 들어, 사용자는 "내 이름은 존이다" , "나는 고양이 두 마리와 개 한마리가 있다" , "나는 지역 도서관의 참조 사무원이다" , "나는 야구를 좋아하고 내가 좋아하는 팀은 레드 삭스이다" , "내 동생의 이름은 테드이다" 기타 등등의 음성 입력을 제공할 수 있다.
일부 실시예에서, 어시스턴트 모듈(222)은 진행중인 작업의 일부로서 컴퓨팅 디바이스(210)의 사용자로부터의 정보를 도출할 수 있다. 예를 들어, 컴퓨팅 디바이스(210)의 사용자는 "오늘 교통 상황은 어때"와 음성 입력을 제공할 수 있고, 어시스턴트 모듈(222)은 UI 모듈(220) 및 UID(212)로 하여금 "내가 그것을 체크할 수 있어요, 어디서 근무하십니까?" 라는 음성 혹은 그래픽 표시를 출력하게 할 수 있다. 또한, 컴퓨팅 디바이스(210)의 사용자는 어시스턴트 모듈(222)에게 "세계에서 무슨 일이 일어나고 있지?" 라고 질문하는 음성 입력을 제공할 수 있으며, 로컬 어시스턴트 모듈(222)은 UI 모듈(220) 및 UID(212)로 하여금 "어디에서 당신의 뉴스를 얻고 싶습니까?(where do you prefer to get your news from?)" 라는 음성 혹은 그래픽 표현을 출력하게 할 수 있다.
일부 실시예에서, 로컬 어시스턴트 모듈(222)은 타당하지만 확실하지 않은 대답을 정보 어시스턴트 모듈(222)에 제공하는 다른 정보(예를 들어, 어플리케이션 모듈(226) 및/또는 콘텍스트 모듈(230)에 의해 유지되거나 유지되지 않을 수도 있는 주소록, 위치 이력, 통신 등과 같은)에 액세스할 수 있다. 예를 들어, 사용자가 직장까지의 교통 상황을 질문하는 경우, 사용자와 관련되고 어플리케이션 모듈(226)의 네비게이션 어플리케이션에 의해 유지되는 위치 이력은, 사용자가 매일 어디로 드라이브하는지를 나타내는 증거를 포함할 수 있다. 어시스턴트 모듈(222)은 이러한 목적지를 사용하여 "내가 당신을 위해 이것을 체크할 수 있습니다. 당신의 위치 기록으로부터 당신은 스프링 필드 도서관에서 일하는 것처럼 보입니다. 맞습니까?" 라는 질문을 할 수 있다. 이러한 정보는 위치 이력, 검색 또는 브라우징 활동, 전자 메일, 어시스턴트 혹은 다른 엔티티들과의 채팅 또는 다른 서신들, 소셜 네트워크 또는 사용자와 관련된 다른 서비스들을 포함하여, 어시스턴트가 액세스했던 다양한 소스들로부터 올 수 있다.
어시스턴트 모듈(222)은 모호성을 해결하기 위해 사용자로부터 도출된 정보에 대한 세분화를 수행할 수 있다. 예를 들어, 2 개의 지역 도서관들이 있을 수도 있으며, 어시스턴트 모듈(222)은 사용자에게 어느 것이 옳은지를 나타내도록 사용자에게 프롬프트할 수 있다. 또는, 사용자의 이름이 동음 이의어를 가질 수 있고, 어시스턴트 모듈(222)은 UID(212)를 통해 정보를 출력하여 정확한 철자가 무엇인지를 물을 수 있다. 어시스턴트 모듈(222)은 UI 모듈(220)로 하여금 UID(212)에서 시각적 요소를 제공하게 할 수 있는바, 가령, 대안예들의 목록들, 핀이 있는 지도, 또는 가장 유용하고 정확한 대답을 결정하기 위한 추가적인 차별화된 세부 사항들을 갖는 그림/카드와 같은 시각적 요소를 제공하게 할 수 있다. 일단 개인 정보가 제공되고 이해되면, 어시스턴트 모듈(222)은 개인 정보를 하나 이상의 개인 레코드로서 데이터 저장소(224)에 저장할 수 있다.
적절한 경우, 어시스턴트 모듈(222)은 작업을 완료하기 위해 데이터 저장소(224)에 방금 저장된 정보를 사용할 수 있다. 예를 들어, 어시스턴트 모듈(222)은 UI 모듈(220)로 하여금 UID(212)에서 "오케이, 나는 당신이 거기에 근무함을 기억할 것입니다. 오늘 교통 상황은 매우 안 좋으며, 직장까지 40분 정도 소요될 것입니다" 라는 청각적 또는 그래픽적 표시를 출력하게 할 수 있다.
일부 실시예에서, 진행중인 작업이 없다면, 어시스턴트 모듈(222)은 어시스턴트 모듈(222)이 미래에 사용자를 돕기 위해 데이터 스토어(224)에 최근에 저장된 정보를 어떻게 사용할 수 있는지에 대한 일례를 제공할 수 있다. 예를 들어, 어시스턴트 모듈(222)은 UI 모듈(220)로 하여금 UID(212)에서 "오케이, 나는 당신이 라이온즈를 좋아한다는 것을 기억할 것입니다. 그들이 경기를 할때 점수를 받아보기를 원하십니까?" 또는 "오케이, 나는 당신의 동생 이름이 테드라는 것을 기억할 것입니다. 이제부터는 '내 동생에게 전화해' 라고 말하면 그에게 연락될 것입니다" 라는 청각적 또는 그래픽적 표시를 출력하게 할 수 있다. 일부 일례들에서, 어시스턴트 모듈(222)은 "내 동생(my brother)", "직장(work)" 및 "내 강아지(my dog)" 와 같은 개인적인 참조들이 사용되는 때를 인식할 수 있으며, 그리고 데이터 저장소(224)에 저장된 정보에 기초하여 올바른 개인적인 해석을 대체할 수 있는바, 따라서 어시스턴트 모듈(222)은 작업을 정확하고 성공적으로 완료할 수 있다.
어시스턴트 모듈(222)은 컴퓨팅 디바이스(210)의 사용자에게 어시스턴트 모듈(222)이 데이터 저장소(224)에 저장된 정보를 잊거나 수정하도록 선택할 기회를 제공할 수 있다. 예를 들어, 어시스턴트 모듈(222)은 "내가 도서관에서 일한다는 사실을 잊어라" , "나는 존 스미스로 내 이름을 바꿨다" 또는 "나는 이제 야구를 좋아하지 않는다" 또는 "내 친구 피터에 대해 내가 너에게 말한 것" 및 "그 모든 것을 잊어줘" 라고 후속으로 말하는 것 등과 같은, UI 모듈(220) 및 UID(212)에 의해 검출되는 음성 명령을 인식할 수 있다. 이러한 명령에 응답하여, 어시스턴트 모듈(222)은 데이터 저장소(224)에 저장된 개인 레코드를 변경하여, 제거 명령에 의해 지정된 정보를 제거할 수 있다. 또한, 어시스턴트 모듈(222)은 사용자가 데이터 저장소(224)에 저장된 특정 정보를 커스터마이징하거나 수동으로 제거할 수 있는 세팅 메뉴 또는 다른 그래픽 사용자 인터페이스를 제공할 수 있다.
또한, 어시스턴트 모듈(222)은 데이터 저장소(224)에 저장된 데이터에 대한 충돌을 관리할 수 있다. 예를 들어, 사용자가 "나의 이름은 존 이다" 라는 입력을 이전에 제공한 다음, "나의 이름은 조나단 이다" 라는 입력을 나중에 제공한 경우, 어시스턴트 모듈은 다음을 수행할 수 있다: (a) "바브(Barb)"와 "바바라(Barbara)" 둘다를 사용자 이름에 대한 사용자 고유의 값으로 저장하거나, (b) 닉네임에 대한 값으로서 하나의 이름을 저장하기를 원하는지, 하나의 이름에 대한 값을 덮어쓰는지, 기타 등등과 같이 사용자에게 확인을 요청하거나, (c) 어떤 데이터를 사용할지를 결정하기 위해 외부 리소스를 체크하거나, (d) 가령, 오래된 데이터를 새로운 데이터로 항상 덮어쓰는 디폴트 기타 등등과 같은 기정의된 임의의 다른 프로토콜을 따르는 것을 수행할 수 있다.
어시스턴트 모듈(222)은 어시스턴트 모듈(222)이 다양한 정보 소스로부터 수집한 정보로 데이터 저장소(224)에 저장된 정보를 자동으로 보충할 수 있다. 달리 말하면, 일부 일례들에서 어시스턴트 모듈(222)은 컴퓨팅 디바이스(210)의 사용자로부터 추가 정보를 도출하여 데이터 저장소(224)의 개인 레코드의 빈 필드를 채울 수 있지만, 일부 일례들에서 어시스턴트 모듈(222)은 검색 모듈(282) 및 컨텍스트 모듈(230)을 호출하여 정보의 다양한 피스들을 채울 수 있다. 예를 들어, 어시스턴트 모듈(222)은 정보 어시스턴트 모듈(222)이 주소록, 위치 히스토리, 이메일 또는 메시지, 소셜 미디어 계정, 또는 검색 모듈(282), 컨텍스트 모듈(230), 및/또는 하나 이상의 어플리케이션 모듈(226)을 통해 액세스 가능한 임의의 다른 정보 소스로부터 획득한 것으로 개인 레코드 내의 누락된 필드를 채울 수 있다. 어시스턴트 서비스의 실행을 늦추지 않기 위하여, 어시스턴트 모듈(222)은 사용자와의 대화가 중단될 때까지 데이터 저장소(224)에 저장된 개인 레코드들의 보충을 지연할 수 있다.
도 3은 본 발명의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하는 하나 이상의 프로세서에 의해 수행되는 예시적인 동작을 도시한 흐름도이다. 도 3의 시스템(100)은 도 1의 시스템(100)과 관련하여 이하에서 설명된다. 예를 들어, 컴퓨팅 디바이스(110)의 하나 이상의 프로세서에서 실행되는 동안 로컬 어시스턴트 모듈(122A)은 본 발명의 하나 이상의 양상들에 따라, 동작들(300-380)을 수행할 수 있다. 일부 실시예에서, 어시스턴트 서버 시스템(160)의 하나 이상의 프로세서에서 실행하는 동안 원격 어시스턴트 모듈(122B)은 본 발명의 하나 이상의 양상들에 따라, 동작들(300-380)을 수행할 수 있다. 설명을 위해서만, 도 3의 실시예는 도 1의 컴퓨팅 디바이스(110)의 문맥 내에서 아래에서 설명된다.
동작시에, 컴퓨팅 디바이스(110)는 컴퓨팅 디바이스의 사용자와 어시스턴트 사이의 초기 대화를 나타내는 초기 사용자 입력에 대한 표시를 수신할 수 있다(300). 예를 들어, 컴퓨팅 디바이스(110)의 사용자는 "치과가 언제 열리지" 라는 로컬 어시스턴트 모듈(122A)에 의해 수신되는 음성 입력을 UID(112)에 제공할 수 있다.
컴퓨팅 디바이스(110)는 초기 커맨드에 대한 초기 사용자 입력을 파싱할 수 있다(310). 예를 들어, 로컬 어시스턴트 모듈(122A)은, 자연어 처리 및/또는 기계 학습 기술을 사용하여, 상기 음성 입력이 비즈니스(예를 들어, 우리의 치과 의사)와 관련된 정보(예를 들어, 영업 시간)에 대한 요청을 나타내는지를 판별할 수 있다.
초기 커맨드(310)에 대한 초기 사용자 입력을 분석하는 동안, 컴퓨팅 디바이스(110)는 초기 사용자 입력에 기초하여, 그 사용자에 특정한 값과 이전에 관련되지 않은 개인 정보에 대한 초기 참조를 식별할 수 있다(320). 예를 들어, 로컬 어시스턴트 모듈(122A)은 "우리의 치과 의사"를 데이터 저장소(124A)에서 유지되는 개인 레코드에 보관할 가치가 있는 개인 정보의 조각에 대한 표시자로서 인식할 수 있다. 로컬 어시스턴트 모듈(122A)은 데이터 저장소(124A)의 스키마를 신속하게 파싱하고 그리고 사용자와 관련된 치과 의사에 대한 레코드가 데이터 저장소(124A)에 존재하지 않음을 결정할 수 있다. 이에 응답하여, 로컬 어시스턴트 모듈(122A)은 "치과 의사"가 사용자에 특정한 임의의 값(예를 들어, 개인 레코드)과 이전에 연관되어 있지 않다라고 결정할 수 있다.
일부 예에서, 컴퓨팅 디바이스(110)는 상기 개인 정보에 대한 참조가 언급이 사용자와 어시스턴트 간의 임의의 이전 대화 에서 언급되지 않았음을 결정함으로써, 사용자에 특정한 값과 이전에 연관되어 있지 않은 개인 정보에 대한 초기 참조를 식별할 수 있다. 다른 일례들에서, 비록 참조가 이전에 행해졌을 수도 있지만, 로컬 어시스턴트 모듈(122A)은 이러한 참조가 개인 레코드의 일부로서 개인 정보를 기록할 정도로 충분히 중요하다라고 간주하지 않았을 수도 있으며, 따라서 로컬 어시스턴트 모듈(122A)에 의해 저장된 값은 제로(0), 널(null), 혹은 사용자에게 특정하지 않은 임의의 다른 디폴트 값에 해당할 수 있다.
컴퓨팅 디바이스(110)는 개인 정보를 사용 및 저장하기 위해 사용자로부터 동의를 수신할 수 있다(330). 예를 들어, 전술한 상호작용들 이전에, 또는 잠재적인 개인 정보를 식별하는 것에 응답하여, 로컬 어시스턴트 모듈(122A)은 UI 모듈(120)로 하여금 로컬 어시스턴트 모듈(122A)과 사용자의 상호작용 동안 획득된 개인 정보를 저장 및 사용하기 위해 사용자에게 허가를 요청하게 할 수 있다. 다음을 유의해야 하는바, 컴퓨팅 디바이스(110)는 로컬 어시스턴트 모듈이 개인 정보를 사용 또는 저장하기를 원할 때마다 사용자가 동의할 것을 요구하지 않을 수도 있다. 예를 들어, 컴퓨팅 디바이스(110)가 일년에 한 번, 하루에 한 번 또는 심지어 단 한 번 동의를 받는다면(예컨대, 초기 제품 구매, 설정, 기타 등등 후에), 컴퓨팅 디바이스(110)는 이러한 사전 동의를 장래에 개인 정보를 사용하고 저장하기 위한 동의로 간주할 수 있다. 사용자가 동의를 제공할 수 있는 방법의 일례로서, 사용자는 "네가 나에 관한 정보를 저장해도 좋다" 라는 음성 입력을 제공할 수 있고, 이러한 음성 입력에 응답하여, 로컬 어시스턴트 모듈(122A)은 사용자에 관한 개인 레코드를 데이터 저장소(122A)에 보관하기 시작할 수 있다.
컴퓨팅 디바이스(110)는 사용자에게 많은 것을 확인하는 질문을 제기함으로써 개인 정보에 대한 초기 참조를 확인할 수 있다(335). 달리 말하면, 로컬 어시스턴트 모듈(122A)은 UI 모듈(120) 및 UID(112)로 하여금 사용자에 특정한 값의 확인을 위한 요청을 출력하게 하고 사용자에 특정한 값에 대한 사용자 확인을 수신하게 할 수 있다. 즉, 사용자의 치과 의사에 대한 레코드가 데이터 저장소(122A)에 존재하지 않기 때문에, 로컬 어시스턴트 모듈(122A)은 UI 모듈(120) 및 UID(112)가 "누가 당신의 치과 의사인가?" 라는 질문의 텍스트 또는 오디오를 출력하게 할 수 있다.
이러한 질문을 출력함에 응답하며, 컴퓨팅 디바이스(110)는 "나의 치과 의사 닥터. 스마일리 치과 의사이다(my dentist is Dr. Smiley Dentist)" 라는 음성 입력을 사용자로부터 수신할 수 있다. 이러한 음성 입력에 응답하여, 로컬 어시스턴트 모듈(122A)은 사용자의 치과 의사가 "닥터. 스마일리 치과 의사" 라고 결정할 수 있으며 그리고 UI 모듈(120) 및 UID(112)로 하여금 "알겠습니다, 당신의 치과 의사는 미국 스트링필드의 닥터. 스마일리 치과의사 입니다" 라는 텍스트 혹은 오디오 확인을 출력하게 할 수 있다.
컴퓨팅 디바이스(110)는 사용자와 관련된 개인 레코드를 생성할 수 있으며(340) 이는 개인 정보에 대한 표시를 저장한다. 예를 들어, 로컬 어시스턴트 모듈(122A)이 사용자의 치과에 대해 얻은 지식을 보존하기 위하여, 로컬 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110)의 사용자와 관련된 개인 정보의 새로운 또는 이미 존재하는 데이터 구조에 필드를 생성하여 사용자의 치과 의사에 대한 정보를 저장할 수 있다. 즉, 로컬 어시스턴트 모듈(122A)은 사람, 장소, 사물 또는 다른 엔티티들에 관한 정보를 저장하기 위한 복수의 필드들을 지정하는 미리 정의된 스키마에 따라 개인 레코드를 생성할 수 있다.
개인 레코드를 생성할 때, 로컬 어시스턴트 모듈(122A)은 사용자에 특정한 값을 저장하기 위해 복수의 필드 중에서 특정 필드를 결정할 수 있고, 상기 특정 필드가 사용자에 특정한 임의의 값과 관련이 없다고 결정함에 응답하여, 로컬 어시스턴트 모듈(122A)은 사용자에게 특정한 값으로 상기 특정 필드를 채울 수 있다. 예를 들어, 치과 의사 필드가 널 값, 제로 값을 포함하거나 또는 그렇지 않으면 사용자에 특정한 임의의 값을 포함하지 않는다라고 결정함에 응답하여, 로컬 어시스턴트 모듈(122A)은 개인 레코드의 치과 의사 필드에 충분한 정보를 저장할 수 있어, 로컬 어시스턴트 모듈(122A)은 컴퓨팅 디바이스(110)의 사용자가 자신의 "치과 의사"를 언급할 때 컴퓨팅 디바이스(110)의 사용자가 지칭하고 있는 것이 무엇인지를 신속하게 확인할 수 있다. 예를 들어, 치과 의사 필드는, 사업장 이름, 온라인 정보 링크(예컨대, 웹 사이트), 주소, 전화 번호 등을 포함할 수 있다.
사용자의 치과 의사에 대한 레코드를 생성하면, 컴퓨팅 디바이스(110)는 초기 사용자 입력과 연관된 작업을 완료할 수 있다. 예를 들어, 초기 사용자 입력은 자신의 치과 의사의 영업 개시 시간에 관한 정보에 대한 사용자로부터의 요청이었기 때문에, 로컬 어시스턴트 모듈(122A)은 사용자의 치과 의사와 관련된 개인 레코드에 저장된 정보를 영업 시간에 대하여 조작할 수 있다. 오프닝 시간을 식별하는 것에 응답하여, 로컬 어시스턴트 모듈(122A)은 UI 모듈(120) 및 UID(112)로 하여금 치과 의사의 병원 영업 시간에 대한 표시를 출력하게 할 수 있다(예를 들어, "너의 치과는 오늘 오전 7시에 오픈한다 - 병원에 전화를 걸까요?").
컴퓨팅 디바이스(110)는 사용자와 어시스턴트 간의 후속 대화를 나타내는 후속 사용자 입력에 대한 표시를 수신할 수 있다(350). 예를 들어, 나중 시점에서, 컴퓨팅 디바이스(110)의 사용자는 로컬 어시스턴트 모듈(122A)에 의해 수신되는, "치과에 가기 위한 교통 상황은 어떻지?" 라는 음성 입력을 UID(112)에서 제공할 수 있다. 일부 예에서, 후속 사용자 입력은 초기 사용자 입력의 표시를 수신하는 것의 일부로서 이미 수신되었을 수도 있다. 예를 들어, 초기 사용자 입력의 일부로서 수신된 후속 사용자 입력은 "약속을 취소하기 위해 그들에게 전화하도록 나를 상기시켜줘" 라는 명령일 수 있다. 따라서, 로컬 어시스턴트 모듈(122A)에 의해 수신된 전체 입력은 "언제 내 치과가 오픈하는지, 내 약속을 취소하기 위해 그들에게 전화하도록 나를 상기시켜줘"일 수 있다.
컴퓨팅 디바이스(110)는 후속 커맨드에 대한 후속 사용자 입력을 파싱할 수 있다(360). 예를 들어, 로컬 어시스턴트 모듈(122A)은 자연어 처리 및/또는 머신 러닝 기법을 이용하여, 음성 입력이 사업장(예를 들어, 치과 의사)과 관련된 정보(예를 들어, 예상 여행 시간)에 대한 요청을 나타내는지 또는 전술한 바와 같이, 사업장에 전화하기 위해 사용자에게 리마인더를 설정하는 명령을 나타내는지를 판별할 수 있다.
후속 커맨드에 대한 후속 사용자 입력을 분석하는 동안 또는 후에, 컴퓨팅 디바이스(100)는 후속 사용자 입력에 기초하여 개인 정보에 대한 후속 참조를 식별할 수 있다(370). 예를 들어, "치과 의사" 라는 것은 콘텍스트가 없다면 모호하기 때문에(전 세계에는 단 하나가 아니라 수 많은 치과가 존재함), 로컬 어시스턴트 모듈(122A)은 데이터 저장소(124A)의 개인 레코드들을 파싱하여, 사용자가 담당 치과 의사가 있는지를 알아볼 수 있다. 로컬 어시스턴트 모듈(122A)은 이전의 음성 입력에 응답하여 이전에 생성된 개인 레코드를 식별할 수 있으며 그리고 개인 레코드로부터 사용자의 치과 병원의 위치를 판별할 수 있다.
컴퓨팅 디바이스(110)는 개인 정보의 표시를 저장하는 사용자와 관련된 개인 레코드의 표시에 기초하여, 후속 커맨드를 실행할 수 있다(380). 예를 들어, 로컬 어시스턴트 모듈(122A)은 검색 서버 시스템(180)의 검색 모듈(182)을 호출하여, 컴퓨팅 디바이스(110)의 현재 위치로부터 사용자의 치과 병원의 위치까지의 추정된 이동 시간 기간을 결정할 수 있다. 로컬 어시스턴트 모듈(122A)은 검색 서버 시스템(180)으로부터 추정된 이동 시간 기간에 대한 표시를 수신할 수 있다. 로컬 어시스턴트 모듈(122A)은 UID(112)를 이용하여 UI 모듈(120)로 하여금, "교통 상황은 양호합니다. 당신의 현재 위치에서 미국 스트링필드의 닥터. 스마일리의 치과까지 지금 이동한다면 대략 17분이 소요될 것입니다." 라는 추정된 이동 시간 기간에 대한 오디오 및/또는 그래픽 표시를 출력하게 할 수 있다.
또한, 도 4는 본 발명의 하나 이상의 양태에 따라 예시적인 가상 어시스턴트를 실행하도록 구성된 예시적인 컴퓨팅 시스템을 나타내는 블록도이다. 도 4의 어시스턴트 서버 시스템(460)은 도 1의 예시적인 어시스턴트 서버 시스템(160)의 일례로서 아래에서 설명된다. 도 4는 어시스턴트 서버 시스템(460)의 단지 하나의 특정 일례만을 도시하며, 어시스턴트 서버 시스템(460)의 다른 많은 일례들이 다른 경우들에 사용될 수 있으며, 어시스턴트 서버 시스템(460)의 다른 많은 일례들은 예시적인 어시스턴트 서버 시스템(460)에 포함된 컴포넌트의 서브 세트를 포함할 수 있거나 또는 도 4에 도시되지 않은 부가적인 컴포넌트들을 포함할 수 있다.
도 4의 일례에 도시된 바와 같이, 어시스턴트 서버 시스템(460)은 하나 이상의 프로세서들(440), 하나 이상의 통신 유닛들(442), 및 하나 이상의 저장 컴포넌트들(448)을 포함한다. 저장 컴포넌트들(448)은, 어시스턴트 모듈(422), 검색 모듈(482), 컨텍스트 모듈(430), 및 사용자 정보 데이터 저장소(424)를 포함한다.
프로세서들(440)은 도 2의 컴퓨팅 시스템(210)의 프로세서들(240)과 유사하다. 통신 유닛들(442)은 도 2의 컴퓨팅 시스템(210)의 통신 유닛들(242)과 유사하다. 저장 디바이스들(448)은 도 2의 컴퓨팅 시스템(210)의 저장 디바이스들(248)과 유사하다. 통신 채널(450)은 도 2의 컴퓨팅 시스템(210)의 통신 채널(250)과 유사하며 따라서, 컴포넌트간 통신을 위해 컴포넌트(440, 442 및 448) 각각을 상호연결할 수 있다. 일부 예에서, 통신 채널(450)은 시스템 버스, 네트워크 접속, 프로세스 간 통신 데이터 구조, 또는 데이터를 통신하기 위한 임의의 다른 방법을 포함할 수 있다.
어시스턴트 서버 시스템(460)의 검색 모듈(482)은 컴퓨팅 디바이스(210)의 검색 모듈(282)과 유사하며, 어시스턴트 서버 시스템(460)을 대신하여 통합 검색 기능을 수행할 수 있다. 즉, 검색 모듈(482)은 어시스턴트 모듈(422)을 대신하여 검색 동작을 수행할 수 있다. 일부 실시예에서, 검색 모듈(482)은 어시스턴트 모듈(422)을 대신하여 검색 동작을 수행하기 위해, 검색 서버 시스템(180)과 같은 외부 검색 시스템과 인터페이스할 수 있다. 호출될 때, 검색 모듈(482)은 검색 질의를 생성하고 그리고 생성된 검색 질의에 기초하여 다양한 로컬 및 원격 정보 소스들에 대해 검색을 실행하는 것 등의 검색 기능들을 수행할 수 있다. 검색 모듈(482)은 실행된 검색의 결과들을 호출 컴포넌트 또는 모듈에 제공할 수 있다. 즉, 검색 모듈(482)은 어시스턴트 모듈(422)에 검색 결과를 출력할 수 있다.
어시스턴트 서버 시스템(460)의 콘텍스트 모듈(430)은 컴퓨팅 디바이스(210)의 콘텍스트 모듈(230)과 유사하다. 콘텍스트 모듈(430)은 가령, 도 1의 컴퓨팅 디바이스(110) 및 도 2의 컴퓨팅 디바이스(210)와 같은 컴퓨팅 디바이스들과 관련된 콘텍스트 정보를 수집하여, 컴퓨팅 디바이스의 컨텍스트를 정의한다. 컨텍스트 모듈(430)은 어시스턴트 모듈(422) 및/또는 검색 모듈(482)에 의해 주로 사용되어, 어시스턴트 서버 시스템(160)에 의해 제공되는 서비스와 인터페이싱하고 액세스하는 컴퓨팅 디바이스의 컨텍스트를 정의할 수 있다. 컨텍스트는 특정 시간에서 컴퓨팅 디바이스 및 컴퓨팅 디바이스의 사용자의 물리적 및/또는 가상 환경의 특징들을 특정할 수 있다.
어시스턴트 모듈(422)은 도 1의 로컬 어시스턴트 모듈(122A) 및 원격 어시스턴트 모듈(122B) 뿐만 아니라, 도 2의 컴퓨팅 디바이스(210)의 어시스턴트 모듈(222)의 모든 기능을 포함할 수 있다. 어시스턴트 모듈(422)은 어시스턴트 서버 시스템(460)을 통해 액세스가능한 어시스턴트 서비스를 제공하기 위해 원격 어시스턴트 모듈(122B)과 유사한 동작을 수행할 수 있다. 즉, 어시스턴트 모듈(422)은 어시스턴트 서버 시스템(460)과 네트워크를 통해 통신하는 컴퓨팅 디바이스에 액세스가능한 원격 어시스턴트 서비스에 대한 인터페이스로서 동작할 수 있다. 예를 들어, 어시스턴트 모듈(422)은 도 1의 어시스턴트 서버 시스템(160)의 원격 어시스턴트 모듈(122B)에 대한 인터페이스 또는 API 일 수 있다.
사용자 정보 데이터 저장소(424)는 도 2의 사용자 정보 데이터 저장소(224)와 유사하며 그리고 어시스턴트 모듈(422)에 의해 생성된 개인 레코드들을 저장하도록 구성되는바, 상기 개인 레코드들은 어시스턴트 모듈(422)에 의해 제공된 어시스턴트와 사용자 간의 대화 동안에 컴퓨팅 디바이스의 사용자에 대해 어시스턴트 모듈(422)이 학습한 정보를 포함한다. 어시스턴트 모듈(422)은 데이터 저장소(424)에 저장된 정보에 의존하여, 뿐만 아니라 콘텍스트 모듈(430) 및/또는 검색 모듈(482)에 의해 제공된 임의의 정보에 의존하여, 어시스턴트 작업들을 수행할 수 있다.
예를 들어, 다음의 설명은 도 1의 컴퓨팅 디바이스(110)의 사용자와 어시스턴트 모듈(422)에 의해 제공되는 어시스턴트 사이의 다양한 시나리오들을 나타낸다. 각각의 시나리오에서, 사용자와 어시스턴트 사이에는 소정의 초기 정보 교환이 존재하며, 그리고 이러한 것이 사용자 경험에 미치는 영향을 나타내는 하나 이상의 일례들이 제공된다.
제 1 장(Clause 1). 방법으로서, 상기 방법은 하나 이상의 프로세서들 상에서 실행되는 어시스턴트에 의해서, 컴퓨팅 디바이스의 사용자와 상기 어시스턴트 사이의 초기 대화를 나타내는 초기 사용자 입력에 대한 표시를 수신하는 단계; 상기 어시스턴트에 의해서, 초기 커맨드(initial command)를 식별하도록 상기 초기 사용자 입력을 파싱하는 단계; 상기 어시스턴트에 의해서, 상기 초기 사용자 입력에 기초하여, 상기 사용자에게 특정한 값과 이전에 관련되지 않은 개인 정보(personal information)에 대한 초기 참조(initial reference)를 식별하는 단계; 상기 어시스턴트에 의해서, 상기 사용자와 관련된 개인 레코드(personal record)를 생성하는 단계, 상기 개인 레코드는 상기 사용자에게 특정한 값으로서 상기 개인 정보를 저장하며; 그리고 상기 어시스턴트에 의해서, 상기 사용자에게 특정한 상기 값에 기초하여 상기 초기 커맨드를 실행하는 단계를 포함한다.
제 2 장(Clause 2). 제 1 장의 방법으로서, 상기 어시스턴트에 의해서, 상기 사용자와 상기 어시스턴트 사이의 후속 대화를 나타내는 후속 사용자 입력에 대한 표시를 수신하는 단계; 상기 어시스턴트에 의해서, 후속 커맨드에 대해 상기 후속 사용자 입력을 파싱하는 단계; 상기 어시스턴트에 의해서, 상기 후속 사용자 입력에 기초하여 상기 개인 정보에 대한 후속 참조를 식별하는 단계; 및 상기 어시스턴트에 의해서, 상기 사용자에게 특정한 상기 값에 기초하여, 상기 후속 커맨드를 실행하는 단계를 더 포함하는 방법.
제 3 장. 제1-2장 중 어느 하나의 방법으로서, 상기 어시스턴트에 의해서, 상기 컴퓨팅 디바이스로 하여금 상기 사용자에게 특정한 값에 대한 확인 요청을 출력하게 하는 단계; 및 상기 어시스턴트에 의해서, 상기 사용자에게 특정한 값에 대한 사용자 확인을 수신하는 단계를 더 포함하는 방법.
제 4 장. 제1-3장 중 어느 하나의 방법으로서, 상기 개인 레코드를 생성하는 단계는, 상기 어시스턴트에 의해서, 복수의 필드들을 특정하는 기정의된 스키마에 따라 상기 개인 레코드를 산출하는 단계; 상기 어시스턴트에 의해서, 상기 사용자에게 특정한 값을 저장하기 위해 상기 복수의 필드들 중 특정 필드를 결정하는 단계; 및 상기 특정 필드가 상기 사용자에게 특정한 임의의 값과 관련이 없다라고 결정함에 응답하여, 상기 어시스턴트에 의해서, 상기 특정 필드를 상기 사용자에게 특정한 값으로 채우는 단계를 포함하는 방법.
제 5 장. 제1-4장 중 어느 하나의 방법으로서, 상기 어시스턴트에 의해서, 상기 초기 사용자 입력이 공개적인 요청인지 또는 개인적인(personal) 요청인지를 결정하는 단계를 더 포함하며, 상기 초기 사용자 입력이 개인적인 요청이라고 결정함에 응답하여 상기 개인 정보에 대한 초기 참조가 식별되는 것인 방법.
제 6 장. 제5장의 방법으로서, 상기 초기 사용자 입력이 개인적인 요청이라고 결정함에 응답하여, 상기 어시스턴트에 의해서, 상기 개인 정보에 대해 상기 사용자와 관련된 상기 개인 레코드를 파싱하는 단계를 더 포함하며, 상기 개인 레코드가 상기 개인 정보와 관련된 필드에서 널(null) 혹은 제로(zero) 값을 포함한다라고 결정함에 응답하여, 상기 개인 정보에 대한 초기 참조가 식별되는 것인 방법.
제 7 장. 제5-6장 중 어느 하나의 방법으로서, 상기 초기 사용자 입력이 공개적인 요청이라고 결정함에 응답하여, 상기 어시스턴트에 의해서, 상기 초기 커맨드를 실행하기 위한 정보에 대한 공개적인(public) 검색을 실행하는 단계를 더 포함하는 방법.
제 8 장. 제5-7장 중 어느 하나의 방법으로서, 상기 어시스턴트에 의해서, 상기 초기 사용자 입력으로부터 하나 이상의 공개적인 엔티티들 또는 공개적인 콘텐츠를 식별함에 응답하여 상기 초기 사용자 입력이 공개적인 요청이라고 결정하는 단계; 및 상기 어시스턴트에 의해서, 상기 초기 사용자 입력으로부터 하나 이상의 사적인(private) 엔티티들 또는 사적인 콘텐츠를 식별함에 응답하여 상기 초기 사용자 입력이 개인적인 요청이라고 결정하는 단계를 더 포함하는 방법.
제 9 장. 제8장의 방법으로서, 상기 하나 이상의 사적인 엔티티들 또는 사적인 콘텐츠는 하나 이상의 가족 용어들(familial terms), 개인 대명사들(personal pronouns), 개인 레코드의 필드들을 포함하는 방법.
제 10 장. 제1-9장 중 어느 하나의 방법으로서, 상기 어시스턴트에 의해서, 상기 사용자와 상기 어시스턴트 사이의 후속 대화를 나타내는 후속 사용자 입력에 대한 표시를 수신하는 단계; 상기 어시스턴트에 의해서, 후속 커맨드를 식별하도록 상기 후속 사용자 입력을 파싱하는 단계; 상기 어시스턴트에 의해서, 상기 후속 사용자 입력에 기초하여 상기 개인 정보를 수정하기 위한 커맨드를 식별하는 단계; 및 상기 어시스턴트에 의해서, 상기 후속 사용자 입력에 기초하여, 상기 사용자에게 특정한 값을 수정하는 단계를 더 포함하는 방법.
제 11 장. 제1-10장 중 어느 하나의 방법으로서, 상기 컴퓨팅 디바이스는 상기 하나 이상의 프로세서를 포함하거나 또는 상기 하나 이상의 프로세서를 포함하는 컴퓨팅 시스템을 포함하는 방법.
제 12 장. 컴퓨팅 디바이스로서, 사용자 인터페이스 디바이스; 적어도 하나의 프로세서; 및 명령들을 포함하는 적어도 하나의 메모리를 포함하며, 상기 명령들은 실행되는 때에 상기 적어도 하나의 프로세서로 하여금 어시스턴트를 제공하게 하며, 상기 어시스턴트는, 상기 사용자 인터페이스로부터, 상기 컴퓨팅 디바이스의 사용자와 상기 어시스턴트 사이의 초기 대화를 나타내는 초기 사용자 입력에 대한 표시를 수신하고; 초기 커맨드를 식별하도록 상기 초기 사용자 입력을 파싱하고; 상기 초기 사용자 입력에 기초하여, 상기 사용자에게 특정한 값과 이전에 관련되지 않은 개인 정보에 대한 초기 참조를 식별하고; 상기 적어도 하나의 메모리에, 상기 사용자와 관련된 개인 레코드를 생성하고, 상기 개인 레코드는 상기 사용자에게 특정한 값을 저장하며; 그리고 상기 사용자에게 특정한 상기 값에 기초하여 상기 초기 커맨드를 실행하도록 구성되는 컴퓨팅 디바이스.
제 13 장. 제12장의 컴퓨팅 디바이스로서, 상기 어시스턴트는 또한, 상기 사용자와 상기 어시스턴트 사이의 후속 대화를 나타내는 후속 사용자 입력에 대한 표시를 수신하고; 후속 커맨드에 대해 상기 후속 사용자 입력을 파싱하고; 상기 후속 사용자 입력에 기초하여 상기 개인 정보에 대한 후속 참조를 식별하고; 상기 적어도 하나의 메모리로부터 상기 사용자에 특정한 값을 검색하며; 그리고 상기 사용자에 특정한 값에 기초하여, 상기 후속 커맨드를 실행하도록 구성되는 컴퓨팅 디바이스.
제 14 장. 제12-13장 중 어느 하나의 컴퓨팅 디바이스로서, 상기 어시트턴트는 또한, 상기 사용자 인터페이스 디바이스에서, 상기 사용자에 특정한 값을 확인하기 위한 요청을 출력하고, 그리고 상기 사용자 인터페이스 디바이스로부터, 상기 사용자에 특정한 값에 대한 사용자 확인을 수신하도록 구성되는 컴퓨팅 디바이스.
제 15 장. 제12-14장 중 어느 하나의 컴퓨팅 디바이스로서, 상기 어시스턴트는 또한, 복수의 필드를 지정하는 미리 정의된 스키마에 따라 상기 개인 레코드를 생성하고; 상기 사용자에 특정한 값을 저장하기 위해 상기 복수의 필드들로부터 특정 필드를 결정하고; 상기 특정 필드가 상기 사용자에 특정한 임의의 값과 관련이 없다는 결정에 응답하여 상기 특정 필드를 상기 사용자에 특정한 값으로 채우도록 구성되는 컴퓨팅 디바이스.
제 16 장. 제12-15장 중 어느 하나의 컴퓨팅 디바이스로서, 상기 어시스턴트는 또한, 초기 사용자 입력이 공개적인 요청인지 또는 개인적인 요청인지를 결정하고; 상기 초기 사용자 입력이 개인적인 요청인 것으로 결정한 것에 응답하여, 상기 개인 정보에 대하여 상기 사용자와 관련된 상기 개인 레코드를 파싱하고, 상기 개인 정보에 대한 초기 참조는 상기 개인 레코드가 상기 개인 정보와 관련된 필드에서 널 혹은 제로 값을 포함한다고 결정함에 응답하여 식별되며; 그리고 상기 초기 사용자 입력이 공개적인 요청인 것으로 결정한 것에 응답하여, 상기 초기 커맨드를 실행하기 위한 정보에 대한 공개 검색을 실행하도록 구성되는 컴퓨팅 디바이스.
제 17 장. 제12-16장 중 어느 하나의 컴퓨팅 디바이스로서, 상기 컴퓨팅 디바이스는 이동 전화, 태블릿 컴퓨터, 컴퓨터화된 시계, 홈 어시스턴트 디바이스, 텔레비젼, 서버, 랩탑 컴퓨터, 게임 시스템 또는 자동차 시스템을 포함하는 컴퓨팅 디바이스.
제 18 장. 명령들을 포함하는 컴퓨터 판독가능한 저장매체로서, 상기 명령들은 실행될 때, 어시스턴트 서버 시스템의 하나 이상의 프로세서로 하여금, 모바일 컴퓨팅 디바이스로부터, 상기 모바일 컴퓨팅 디바이스의 사용자와 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 어시스턴트 사이의 초기 대화를 나타내는 초기 사용자 입력에 대한 표시를 수신하고; 초기 커맨드를 식별하도록 상기 초기 사용자 입력을 파싱하고; 상기 초기 사용자 입력에 기초하여, 상기 사용자에게 특정한 값과 이전에 관련되지 않은 개인 정보에 대한 초기 참조를 식별하고; 상기 어시스턴트 서버 시스템의 메모리에, 상기 사용자와 관련된 개인 레코드를 생성하고, 상기 개인 레코드는 상기 사용자에게 특정한 값을 저장하며; 그리고 상기 사용자에게 특정한 상기 값에 기초하여 상기 초기 커맨드를 실행하게 하는 컴퓨터 판독가능한 저장매체.
제 19 장. 제18장의 컴퓨터 판독가능한 저장매체로서, 상기 명령들은 실행될 때, 또한 상기 하나 이상의 프로세서로 하여금, 홈 오토메이션 디바이스의 사용자와 상기 홈 오토메이션 디바이스 상에서 실행되는 어시스턴트 사이의 후속 대화를 나타내는 후속 사용자 입력에 대한 표시를 수신하고; 후속 커맨드에 대해 상기 후속 사용자 입력을 파싱하고; 상기 후속 사용자 입력에 기초하여 상기 개인 정보에 대한 후속 참조를 식별하고; 하나 이상의 메모리로부터 사용자에게 특정한 값을 검색하고; 그리고 상기 어시스턴트에 의해서, 상기 사용자에게 특정한 상기 값에 기초하여, 상기 후속 커맨드를 실행하게 하는 컴퓨터 판독가능한 저장매체.
제 20 장. 제19장의 컴퓨터 판독가능한 저장매체로서, 상기 모바일 컴퓨팅 디바이스의 사용자는 상기 홈 오토메이션 디바이스의 사용자인 것을 특징으로 하는 컴퓨터 판독가능한 저장매체.
제 21 장. 제1-11장 중 어느 하나의 방법을 수행하는 수단을 포함하는 컴퓨팅 디바이스.
제 22 장. 적어도 하나의 프로세서와 명령들을 포함하는 적어도 하나의 메모리를 포함하는 컴퓨팅 디바이스로서, 상기 명령들은 실행되는 때에, 상기 적어도 하나의 프로세서로 하여금 제1-11장 중 어느 하나의 방법을 수행하게 하는 컴퓨팅 디바이스.
제 23 장. 명령들을 포함하는 컴퓨터 판독가능한 저장 매체로서, 상기 명령들은 실행되는 때에, 컴퓨팅 디바이스의 적어도 하나의 프로세서로 하여금 제1-11장 중 어느 하나의 방법을 수행하게 하는 컴퓨터 판독가능한 저장 매체.
제 24 장. 제1-11장 중 어느 하나의 방법을 수행하는 수단을 포함하는 컴퓨팅 디바이스.
제 25 장. 적어도 하나의 프로세서와 명령들을 포함하는 적어도 하나의 메모리를 포함하는 컴퓨팅 시스템으로서, 상기 명령들은 실행되는 때에, 상기 적어도 하나의 프로세서로 하여금 제1-11장 중 어느 하나의 방법을 수행하게 하는 컴퓨팅 시스템.
제 26 장. 명령들을 포함하는 컴퓨터 판독가능한 저장 매체로서, 상기 명령들은 실행되는 때에, 컴퓨팅 시스템의 적어도 하나의 프로세서로 하여금 제1-11장 중 어느 하나의 방법을 수행하게 하는 컴퓨터 판독가능한 저장 매체.
하나 이상의 실시예에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 이러한 기능들은 하나 이상의 명령들 또는 코드, 컴퓨터 판독가능 매체 상에 저장되거나 전송될 수 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장매체 또는 매체들을 포함할 수 있으며, 이는 데이터 저장 매체와 같은 유형 매체 또는 예컨대, 통신 프로토콜에 따라 컴퓨터 프로그램의 한 장소에서 다른 장소로의 이동을 용이하게 하는 임의의 매체를 포함하는 통신 매체에 대응할 수 있다. 이러한 방식으로, 컴퓨터-판독 가능 매체는 일반적으로(1) 비-일시적인 유형의 컴퓨터-판독 가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 명세서에서 설명된 기술의 구현을 위해 명령, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 그러한 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장소, 자기 디스크 저장소, 또는 다른 자기 저장 디바이스, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 저장 매체를 포함할 수 있다. 또한, 임의의 접속은 적절하게 컴퓨터 판독 가능 매체로 지칭된다. 예를 들어, 동축 케이블, 광섬유 케이블, 트위스트 페어, 디지털 가입자 회선(DSL)을 이용하거나, 또는 적외선, 라디오, 및 마이크로웨이브 등의 무선 기술을 사용하여 웹 사이트, 서버 또는 기타 원격 소스로부터 명령들이 전송되는 경우, 상기 동축 케이블, 광섬유 케이블, 트위스트 페어, 또는 적외선, 라디오, 및 마이크로웨이브 등의 무선 기술은 매체의 정의에 포함된다. 하지만, 다음을 유의해야 하는바, 컴퓨터-판독가능 저장 매체 및 매체 및 데이터 저장 매체는 연결들, 반송파, 신호 또는 다른 일시적인 매체를 포함하지 않고 비-일시적인, 유형의 저장매체에 관한 것임을 이해해야 한다. 본 명세서에 사용된 디스크(disk) 및 디스크(disc)는, 콤팩 디스크(Compact Disc: CD), 레이저 디스크, 광 디스크, DVD(Digital Versatile Disc), 플로피 디스크 및, 블루-레이 디스크를 포함하며, 여기서 디스크(disk)는 통상적으로 데이터를 자기적으로 재생하는 반면에, 디스크(disc)는 레이저를 이용하여 데이터를 광학적으로 재생한다. 전술한 것의 조합도 또한, 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들(DSPs), 범용 마이크로 프로세서들, 주문형 집적 회로들(ASICs), 필드 프로그래머블 로직 어레이들(FPGAs) 또는 다른 동등한 집적회로 또는 개별 논리 회로들과 같은 하나 이상의 프로세서들에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 "프로세서"라는 용어는 전술 한 구조 또는 본 원에 서술된 기술의 구현에 적합한 임의의 다른 구조를 지칭할 수 있다. 또한, 일부 양상들에서, 여기서 설명된 기능들은 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수 있다. 또한, 상기 기술들은 하나 이상의 회로 또는 로직 요소에서 완전히 구현될 수 있다.
본 발명의 기술들은 무선 핸드셋, 집적 회로(IC) 또는 IC 세트(예를 들어, 칩 세트)를 포함하는 다양한 디바이스들 또는 장치들에서 구현될 수 있다. 본 발명의 기술을 수행하도록 구성된 디바이스의 기능적 측면을 강조하기 위하여 다양한 컴포넌트들, 모듈들 또는 유닛들이 본 명세서에 서술되어 있지만, 반드시 상이한 하드웨어 유닛에 의한 구현을 요구하지는 않는다. 오히려, 상술한 바와 같이, 다양한 유닛들은 적절한 소프트웨어 및/또는 펌웨어와 관련하여 상술한 바와 같은 하나 이상의 프로세서를 포함하는 하드웨어 유닛에서 결합되거나 상호작용 하드웨어 유닛 들의 집합에 의해 제공될 수 있다.
다양한 실시예들이 설명되었다. 이들 및 다른 실시예들 다음의 청구 범위의 범주 내에 속한다.

Claims (15)

  1. 방법으로서,
    하나 이상의 프로세서들 상에서 실행되는 어시스턴트에 의해서, 컴퓨팅 디바이스의 사용자와 상기 어시스턴트 사이의 초기 대화를 나타내는 초기 사용자 입력에 대한 표시를 수신하는 단계;
    상기 어시스턴트에 의해서, 초기 커맨드(initial command)를 식별하도록 상기 초기 사용자 입력을 파싱하는 단계;
    상기 어시스턴트에 의해서, 상기 초기 사용자 입력의 파싱에 기초하여, 상기 초기 사용자 입력이 공개적인 요청(public request)인지 또는 개인적인 요청(personal request)인지를 결정하는 단계;
    상기 초기 사용자 입력의 파싱에 기초하여 상기 초기 사용자 입력이 공개적인 요청이라고 결정함에 응답하여:
    초기 커맨드를 실행하기 위한 정보가 검색되도록 검색 서버 시스템으로 상기 초기 사용자 입력의 적어도 일부를 전송하는 단계;
    상기 초기 사용자 입력의 파싱에 기초하여 상기 초기 사용자 입력이 개인적인 요청이라고 결정함에 응답하여:
    상기 어시스턴트에 의해서, 상기 초기 사용자 입력에 기초하여, 개인 정보(personal information)에 대한 초기 참조(initial reference)를 식별하는 단계, 상기 개인 정보에 대한 초기 참조는 추가적인 사용자에 대한 범용 서술자(generic descriptor)를 포함하고, 상기 추가적인 사용자는 상기 사용자와 다르며;
    상기 어시스턴트에 의해서, 상기 개인 정보에 대한 초기 참조가 상기 사용자에게 특정한 임의의 값과 이전에 관련되지 않았음을 결정하는 단계; 및
    상기 개인 정보에 대한 초기 참조가 상기 사용자에게 특정한 임의의 값과 이전에 관련되지 않았다고 결정함에 응답하여:
    상기 어시스턴트에 의해서, 상기 개인 정보에 대한 초기 참조를 위해 사용자에게 특정한 값으로서 상기 개인 정보를 식별하도록 상기 컴퓨팅 디바이스의 사용자의 채팅 히스토리에 대한 로컬 검색을 실행하는 단계;
    상기 개인 정보에 대한 초기 참조를 식별함에 응답하여 그리고 채팅 히스토리에 대한 로컬 검색이 사용자에게 특정한 값으로서 상기 개인 정보를 회수하지 못했다고 결정함에 응답하여:
    상기 어시스턴트에 의해서, 추가 사용자 입력에 대한 요청을 생성하는 단계;
    상기 어시스턴트에 의해서, 추가 사용자 입력에 대한 표시를 수신하는 단계, 상기 추가 사용자 입력은 상기 추가적인 사용자에 대한 범용 서술자와 관련될 사용자의 콘택 엔트리(contact entry)를 식별하며;
    상기 어시스턴트에 의해서 그리고 상기 추가 사용자 입력에 기초하여, 상기 개인 정보를 사용자에게 특정한 값으로 저장하는, 상기 사용자에 관련된 개인 레코드를 생성하는 단계, 상기 사용자에게 특정한 값으로서 상기 개인 정보를 저장하는 개인 레코드를 생성하는 단계는 상기 사용자의 식별된 콘택 엔트리에 대한 상기 범용 서술자의 관련성을 저장하는 단계를 포함하고; 그리고
    상기 사용자에게 특정한 값을 식별함에 응답하여, 상기 어시스턴트에 의해서, 상기 특정한 값에 기초하여 초기 커맨드를 실행하는 단계, 상기 초기 커맨드를 실행하는 단계는:
    상기 사용자의 컴퓨팅 디바이스에 설치된 복수의 어플리케이션들 중 소정 어플리케이션으로 하여금 상기 사용자에게 특정한 값을 이용하여 상기 초기 커맨드와 관련된 적어도 하나의 액션을 실행하게 하는 단계를 포함하고;
    상기 초기 커맨드를 실행하는 것에 후속하여:
    상기 어시스턴트에 의해서, (a) 상기 초기 커맨드와 동일한 후속 커맨드 및 (b) 상기 범용 서술자에 대한 후속 참조를 포함하는 후속 사용자 입력의 표시를 수신하는 단계; 및
    상기 개인 레코드가 상기 사용자의 식별된 콘택 엔트리에 대한 상기 범용 서술자의 저장된 관련성을 포함한다라고 결정함에 응답하여:
    상기 소정의 어플리케이션으로 하여금 상기 사용자에게 특정한 값을 이용하여 상기 후속 커맨드와 관련된 적어도 하나의 액션을 실행하게 하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 어시스턴트에 의해서, 상기 컴퓨팅 디바이스로 하여금 상기 사용자에게 특정한 값에 대한 확인 요청을 출력하게 하는 단계; 및
    상기 어시스턴트에 의해서, 상기 사용자에게 특정한 값에 대한 사용자 확인을 수신하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 개인 레코드를 생성하는 단계는,
    상기 어시스턴트에 의해서, 복수의 필드들을 특정하는 기정의된 스키마에 따라 상기 개인 레코드를 산출하는 단계;
    상기 어시스턴트에 의해서, 상기 사용자에게 특정한 값을 저장하기 위해 상기 복수의 필드들 중 특정 필드를 결정하는 단계; 및
    상기 특정 필드가 상기 사용자에게 특정한 임의의 값과 관련이 없다라고 결정함에 응답하여, 상기 어시스턴트에 의해서, 상기 특정 필드를 상기 사용자에게 특정한 값으로 채우는 단계
    를 포함하는 것을 특징으로 하는 방법.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 제1항에 있어서,
    상기 어시스턴트에 의해서, 상기 초기 사용자 입력으로부터 하나 이상의 공개적인 엔티티들 또는 공개적인 콘텐츠를 식별함에 응답하여 상기 초기 사용자 입력이 공개적인 요청이라고 결정하는 단계; 및
    상기 어시스턴트에 의해서, 상기 초기 사용자 입력으로부터 하나 이상의 사적인(private) 엔티티들 또는 사적인 콘텐츠를 식별함에 응답하여 상기 초기 사용자 입력이 개인적인 요청이라고 결정하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 하나 이상의 사적인 엔티티들 또는 사적인 콘텐츠는 하나 이상의 가족 용어들(familial terms), 개인 대명사들(personal pronouns), 개인 레코드의 필드들을 포함하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 어시스턴트에 의해서, 상기 사용자와 상기 어시스턴트 사이의 후속 대화를 나타내는 후속 사용자 입력에 대한 표시를 수신하는 단계;
    상기 어시스턴트에 의해서, 후속 커맨드를 식별하도록 상기 후속 사용자 입력을 파싱하는 단계;
    상기 어시스턴트에 의해서, 상기 후속 사용자 입력에 기초하여 상기 개인 정보를 수정하기 위한 커맨드를 식별하는 단계; 및
    상기 어시스턴트에 의해서, 상기 후속 사용자 입력에 기초하여, 상기 사용자에게 특정한 값을 수정하는 단계
    를 더 포함하는 것을 특징으로 하는 방법.
  11. 제1항에 있어서,
    상기 컴퓨팅 디바이스는 상기 하나 이상의 프로세서를 포함하거나 또는 상기 하나 이상의 프로세서를 포함하는 컴퓨팅 시스템을 포함하는 것을 특징으로 하는 방법.
  12. 컴퓨팅 디바이스로서,
    사용자 인터페이스 디바이스;
    적어도 하나의 프로세서; 및
    명령들을 포함하는 적어도 하나의 메모리를 포함하며,
    상기 명령들은 실행되는 때에 상기 적어도 하나의 프로세서로 하여금 어시스턴트를 제공하게 하며, 상기 어시스턴트는,
    상기 사용자 인터페이스로부터, 상기 컴퓨팅 디바이스의 사용자와 상기 어시스턴트 사이의 초기 대화를 나타내는 초기 사용자 입력에 대한 표시를 수신하고;
    초기 커맨드를 식별하도록 상기 초기 사용자 입력을 파싱하고;
    상기 초기 사용자 입력의 파싱에 기초하여, 상기 초기 사용자 입력이 공개적인 요청(public request)인지 또는 개인적인 요청(personal request)인지를 결정하고;
    상기 초기 사용자 입력의 파싱에 기초하여 상기 초기 사용자 입력이 공개적인 요청이라고 결정함에 응답하여:
    초기 커맨드를 실행하기 위한 정보가 검색되도록 검색 서버 시스템으로 상기 초기 사용자 입력의 적어도 일부를 전송하고;
    상기 초기 사용자 입력의 파싱에 기초하여 상기 초기 사용자 입력이 개인적인 요청이라고 결정함에 응답하여:
    상기 초기 사용자 입력에 기초하여, 개인 정보(personal information)에 대한 초기 참조(initial reference)를 식별하고, 상기 개인 정보에 대한 초기 참조는 추가적인 사용자에 대한 범용 서술자(generic descriptor)를 포함하고, 상기 추가적인 사용자는 상기 사용자와 다르며;
    상기 개인 정보에 대한 초기 참조가 상기 사용자에게 특정한 임의의 값과 이전에 관련되지 않았음을 결정하고; 및
    상기 개인 정보에 대한 초기 참조가 상기 사용자에게 특정한 임의의 값과 이전에 관련되지 않았다고 결정함에 응답하여:
    상기 개인 정보에 대한 초기 참조를 위해 사용자에게 특정한 값으로서 상기 개인 정보를 식별하도록 상기 컴퓨팅 디바이스의 사용자의 채팅 히스토리에 대한 로컬 검색을 실행하며;
    상기 개인 정보에 대한 초기 참조를 식별함에 응답하여 그리고 채팅 히스토리에 대한 로컬 검색이 사용자에게 특정한 값으로서 상기 개인 정보를 회수하지 못했다고 결정함에 응답하여:
    추가 사용자 입력에 대한 요청을 생성하고;
    추가 사용자 입력에 대한 표시를 수신하고, 상기 추가 사용자 입력은 상기 추가적인 사용자에 대한 범용 서술자와 관련될 사용자의 콘택 엔트리(contact entry)를 식별하며;
    적어도 하나의 메모리에서 그리고 상기 추가 사용자 입력에 기초하여, 상기 개인 정보를 사용자에게 특정한 값으로 저장하는, 상기 사용자에 관련된 개인 레코드를 생성하고, 상기 사용자에게 특정한 값으로서 상기 개인 정보를 저장하는 개인 레코드를 생성함에 있어서 상기 어시스턴트는 상기 사용자의 식별된 콘택 엔트리에 대한 상기 범용 서술자의 관련성을 저장하도록 구성되고; 그리고
    상기 사용자에게 특정한 값을 식별함에 응답하여, 상기 특정한 값에 기초하여 초기 커맨드를 실행하고, 상기 초기 커맨드를 실행함에 있어서 상기 어시스턴트는:
    상기 사용자의 컴퓨팅 디바이스에 설치된 복수의 어플리케이션들 중 소정 어플리케이션으로 하여금 상기 사용자에게 특정한 값을 이용하여 상기 초기 커맨드와 관련된 적어도 하나의 액션을 실행하게 하도록 구성되고;
    상기 초기 커맨드를 실행하는 것에 후속하여:
    상기 사용자와 어시스턴트 사이의 후속 대화를 나타내는 후속 사용자 입력의 표시를 수신하고;
    상기 후속 사용자 입력을 파싱함에 기초하여 상기 어시스턴트는:
    상기 초기 커맨드와 동일한 후속 커맨드를 식별하고,
    상기 사용자의 식별된 콘택 엔트리와 이전에 관련되었던 상기 범용 서술자에 대한 후속 참조를 식별하고;
    상기 후속 사용자 입력의 표시를 수신함에 응답하여, 상기 어시스턴트는 상기 사용자에게 특정한 값에 기초하여 후속 커맨드를 실행하고, 상기 후속 커맨드를 실행함에 있어서 상기 어시스턴트는:
    상기 사용자의 컴퓨팅 디바이스에 설치된 복수의 어플리케이션들 중 소정 어플리케이션으로 하여금 상기 사용자에게 특정한 값을 이용하여 상기 후속 커맨드와 관련된 적어도 하나의 액션을 실행하게 하도록 구성되는 것을 특징으로 하는 컴퓨팅 디바이스.
  13. 삭제
  14. 명령들을 포함하는 컴퓨터 판독가능한 저장매체로서, 상기 명령들은 실행될 때, 컴퓨팅 디바이스의 하나 이상의 프로세서로 하여금 제1항의 방법을 수행하게 하는 것을 특징으로 하는 컴퓨터 판독가능한 저장매체.
  15. 제1항의 방법을 수행하기 위한 수단을 포함하는 시스템.
KR1020197012954A 2016-10-03 2017-09-19 가상 어시스턴트의 개인화 KR102293281B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662403602P 2016-10-03 2016-10-03
US62/403,602 2016-10-03
US15/365,135 US20180096072A1 (en) 2016-10-03 2016-11-30 Personalization of a virtual assistant
US15/365,135 2016-11-30
PCT/US2017/052285 WO2018067301A1 (en) 2016-10-03 2017-09-19 Personalization of a virtual assistant

Publications (2)

Publication Number Publication Date
KR20190062521A KR20190062521A (ko) 2019-06-05
KR102293281B1 true KR102293281B1 (ko) 2021-08-24

Family

ID=60002035

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197012954A KR102293281B1 (ko) 2016-10-03 2017-09-19 가상 어시스턴트의 개인화

Country Status (7)

Country Link
US (1) US20180096072A1 (ko)
EP (1) EP3504642A1 (ko)
JP (1) JP7118056B2 (ko)
KR (1) KR102293281B1 (ko)
CN (1) CN109804366A (ko)
DE (1) DE202017105366U1 (ko)
WO (1) WO2018067301A1 (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086593B2 (en) 2016-08-26 2021-08-10 Bragi GmbH Voice assistant for wireless earpieces
US10552742B2 (en) 2016-10-14 2020-02-04 Google Llc Proactive virtual assistant
KR102668438B1 (ko) * 2016-12-26 2024-05-24 현대자동차주식회사 음성 처리 장치, 이를 포함하는 차량 및 음성 처리 방법
US20180197104A1 (en) * 2017-01-06 2018-07-12 Microsoft Technology Licensing, Llc Using an action-augmented dynamic knowledge graph for dialog management
US10860587B2 (en) * 2017-06-14 2020-12-08 Microsoft Technology Licensing, Llc Conversationally-relevant content requests
US10607606B2 (en) * 2017-06-19 2020-03-31 Lenovo (Singapore) Pte. Ltd. Systems and methods for execution of digital assistant
US10726843B2 (en) * 2017-12-20 2020-07-28 Facebook, Inc. Methods and systems for responding to inquiries based on social graph information
US11010436B1 (en) 2018-04-20 2021-05-18 Facebook, Inc. Engaging users by personalized composing-content recommendation
US10978056B1 (en) 2018-04-20 2021-04-13 Facebook, Inc. Grammaticality classification for natural language generation in assistant systems
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US11115410B1 (en) 2018-04-20 2021-09-07 Facebook, Inc. Secure authentication for assistant systems
US11868331B1 (en) * 2018-05-21 2024-01-09 Pattern Computer, Inc. Systems and methods for aligning big data tables in linear time
US10832010B2 (en) * 2018-06-05 2020-11-10 International Business Machines Corporation Training of conversational agent using natural language
US10848443B2 (en) * 2018-07-23 2020-11-24 Avaya Inc. Chatbot socialization
US10949616B1 (en) 2018-08-21 2021-03-16 Facebook, Inc. Automatically detecting and storing entity information for assistant systems
US10896295B1 (en) 2018-08-21 2021-01-19 Facebook, Inc. Providing additional information for identified named-entities for assistant systems
US10733545B2 (en) * 2018-10-04 2020-08-04 Microsoft Technology Licensing, Llc User-centric contextual information for browser
US10740704B2 (en) * 2018-10-04 2020-08-11 Microsoft Technology Licensing, Llc User-centric browser location
US11442992B1 (en) 2019-06-28 2022-09-13 Meta Platforms Technologies, Llc Conversational reasoning with knowledge graph paths for assistant systems
US11657094B2 (en) 2019-06-28 2023-05-23 Meta Platforms Technologies, Llc Memory grounded conversational reasoning and question answering for assistant systems
WO2021048572A1 (en) * 2019-09-09 2021-03-18 Citrix Systems, Inc Conversational ai platform using declarative graph model
US11861674B1 (en) 2019-10-18 2024-01-02 Meta Platforms Technologies, Llc Method, one or more computer-readable non-transitory storage media, and a system for generating comprehensive information for products of interest by assistant systems
US11567788B1 (en) 2019-10-18 2023-01-31 Meta Platforms, Inc. Generating proactive reminders for assistant systems
FR3106009A1 (fr) 2020-01-06 2021-07-09 Psa Automobiles Sa Procédé et dispositif de sélection de divertissements par un assistant personnel virtuel embarqué dans un véhicule automobile, et véhicule automobile l’incorporant
US20230037085A1 (en) * 2020-01-07 2023-02-02 Google Llc Preventing non-transient storage of assistant interaction data and/or wiping of stored assistant interaction data
US11562744B1 (en) 2020-02-13 2023-01-24 Meta Platforms Technologies, Llc Stylizing text-to-speech (TTS) voice response for assistant systems
US11159767B1 (en) 2020-04-07 2021-10-26 Facebook Technologies, Llc Proactive in-call content recommendations for assistant systems
US11658835B2 (en) 2020-06-29 2023-05-23 Meta Platforms, Inc. Using a single request for multi-person calling in assistant systems
US11563706B2 (en) 2020-12-29 2023-01-24 Meta Platforms, Inc. Generating context-aware rendering of media contents for assistant systems
US11809480B1 (en) 2020-12-31 2023-11-07 Meta Platforms, Inc. Generating dynamic knowledge graph of media contents for assistant systems
KR20220099831A (ko) 2021-01-07 2022-07-14 삼성전자주식회사 전자 장치 및 전자 장치에서 사용자 발화 처리 방법
US20240303030A1 (en) * 2021-03-09 2024-09-12 Webtalk Ltd Dynamic audio content generation
US12118790B2 (en) 2021-04-21 2024-10-15 Meta Platforms, Inc. Auto-capture of interesting moments by assistant systems
US11861315B2 (en) 2021-04-21 2024-01-02 Meta Platforms, Inc. Continuous learning for natural-language understanding models for assistant systems
US11451496B1 (en) 2021-04-30 2022-09-20 Microsoft Technology Licensing, Llc Intelligent, personalized, and dynamic chatbot conversation
US20230105885A1 (en) * 2021-10-05 2023-04-06 Acxiom Llc System and Method for Learning User Preferences
US12045568B1 (en) 2021-11-12 2024-07-23 Meta Platforms, Inc. Span pointer networks for non-autoregressive task-oriented semantic parsing for assistant systems
US11983329B1 (en) 2022-12-05 2024-05-14 Meta Platforms, Inc. Detecting head gestures using inertial measurement unit signals
US20240212223A1 (en) * 2022-12-23 2024-06-27 At&T Intellectual Property I, L.P. Adaptive simulation of celebrity and legacy avatars
US12112001B1 (en) 2023-03-14 2024-10-08 Meta Platforms, Inc. Preventing false activations based on don/doff detection for assistant systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008012537A1 (en) 2006-07-28 2008-01-31 Social Fabric Corporation Searching methods
US20120265528A1 (en) * 2009-06-05 2012-10-18 Apple Inc. Using Context Information To Facilitate Processing Of Commands In A Virtual Assistant

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030167167A1 (en) * 2002-02-26 2003-09-04 Li Gong Intelligent personal assistants
US9318108B2 (en) * 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US10276170B2 (en) * 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8971924B2 (en) * 2011-05-23 2015-03-03 Apple Inc. Identifying and locating users on a mobile network
EP3392876A1 (en) * 2011-09-30 2018-10-24 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US20160205253A1 (en) * 2012-04-13 2016-07-14 Virtual Hold Technology, Llc System and method for client interaction application integration
WO2014088588A1 (en) * 2012-12-07 2014-06-12 Empire Technology Development Llc Personal assistant context building
AU2014233517B2 (en) * 2013-03-15 2017-05-25 Apple Inc. Training an at least partial voice command system
KR102369784B1 (ko) * 2013-06-07 2022-03-03 애플 인크. 지능형 자동 어시스턴트
US10509829B2 (en) * 2015-01-21 2019-12-17 Microsoft Technology Licensing, Llc Contextual search using natural language
US20170091612A1 (en) * 2015-09-30 2017-03-30 Apple Inc. Proactive assistant with memory assistance
US10884503B2 (en) * 2015-12-07 2021-01-05 Sri International VPA with integrated object recognition and facial expression recognition
US9866927B2 (en) * 2016-04-22 2018-01-09 Microsoft Technology Licensing, Llc Identifying entities based on sensor data
US11416212B2 (en) * 2016-05-17 2022-08-16 Microsoft Technology Licensing, Llc Context-based user agent

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008012537A1 (en) 2006-07-28 2008-01-31 Social Fabric Corporation Searching methods
US20120265528A1 (en) * 2009-06-05 2012-10-18 Apple Inc. Using Context Information To Facilitate Processing Of Commands In A Virtual Assistant

Also Published As

Publication number Publication date
CN109804366A (zh) 2019-05-24
WO2018067301A1 (en) 2018-04-12
DE202017105366U1 (de) 2017-11-20
US20180096072A1 (en) 2018-04-05
JP7118056B2 (ja) 2022-08-15
EP3504642A1 (en) 2019-07-03
JP2019533248A (ja) 2019-11-14
KR20190062521A (ko) 2019-06-05

Similar Documents

Publication Publication Date Title
KR102293281B1 (ko) 가상 어시스턴트의 개인화
US11790207B2 (en) Delayed responses by computational assistant
JP7108122B2 (ja) コンピュータによるエージェントのための合成音声の選択
US11166087B2 (en) Cross-device handoffs
US11380331B1 (en) Virtual assistant identification of nearby computing devices
TWI720255B (zh) 用於產生群組推薦之方法與運算裝置,及非暫時性電腦可讀儲存媒體
KR102436293B1 (ko) 이미지 데이터에 적어도 부분적으로 기초하여 액션을 수행하기 위한 에이전트 결정

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant