KR102545095B1 - 지능형 자동 어시스턴트 - Google Patents
지능형 자동 어시스턴트 Download PDFInfo
- Publication number
- KR102545095B1 KR102545095B1 KR1020227026740A KR20227026740A KR102545095B1 KR 102545095 B1 KR102545095 B1 KR 102545095B1 KR 1020227026740 A KR1020227026740 A KR 1020227026740A KR 20227026740 A KR20227026740 A KR 20227026740A KR 102545095 B1 KR102545095 B1 KR 102545095B1
- Authority
- KR
- South Korea
- Prior art keywords
- user
- input
- assistant
- search
- services
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 250
- 230000015654 memory Effects 0.000 claims description 85
- 230000004044 response Effects 0.000 claims description 76
- 230000009471 action Effects 0.000 claims description 71
- 238000012552 review Methods 0.000 claims description 55
- 230000003993 interaction Effects 0.000 claims description 38
- 230000001502 supplementing effect Effects 0.000 claims description 4
- 230000002452 interceptive effect Effects 0.000 abstract description 12
- 230000006870 function Effects 0.000 description 96
- 230000008569 process Effects 0.000 description 61
- 238000010586 diagram Methods 0.000 description 48
- 238000004891 communication Methods 0.000 description 42
- 239000008186 active pharmaceutical agent Substances 0.000 description 35
- 238000012545 processing Methods 0.000 description 35
- 235000013305 food Nutrition 0.000 description 34
- 230000007774 longterm Effects 0.000 description 34
- 238000004458 analytical method Methods 0.000 description 31
- 230000000977 initiatory effect Effects 0.000 description 23
- 230000000875 corresponding effect Effects 0.000 description 21
- 239000000047 product Substances 0.000 description 18
- 230000007246 mechanism Effects 0.000 description 16
- 230000008901 benefit Effects 0.000 description 15
- 238000013499 data model Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 12
- 238000009795 derivation Methods 0.000 description 12
- 230000006403 short-term memory Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000007726 management method Methods 0.000 description 11
- 235000012054 meals Nutrition 0.000 description 11
- 238000003058 natural language processing Methods 0.000 description 11
- 230000036961 partial effect Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000001914 filtration Methods 0.000 description 5
- 241000086550 Dinosauria Species 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 230000007787 long-term memory Effects 0.000 description 4
- 235000013550 pizza Nutrition 0.000 description 4
- 230000002040 relaxant effect Effects 0.000 description 4
- 239000013589 supplement Substances 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 3
- 235000013410 fast food Nutrition 0.000 description 3
- 230000010006 flight Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000003825 pressing Methods 0.000 description 3
- 238000007670 refining Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 241000282412 Homo Species 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000009118 appropriate response Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007635 classification algorithm Methods 0.000 description 2
- 238000010411 cooking Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 235000015219 food category Nutrition 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000001976 improved effect Effects 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 239000008267 milk Substances 0.000 description 2
- 210000004080 milk Anatomy 0.000 description 2
- 235000013336 milk Nutrition 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000036651 mood Effects 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000000704 physical effect Effects 0.000 description 2
- 230000003997 social interaction Effects 0.000 description 2
- 230000008093 supporting effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001755 vocal effect Effects 0.000 description 2
- 241000538571 Brachydeuterus Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 235000021450 burrito Nutrition 0.000 description 1
- 210000005056 cell body Anatomy 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000005911 diet Nutrition 0.000 description 1
- 230000000378 dietary effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 235000015220 hamburgers Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 235000013372 meat Nutrition 0.000 description 1
- 235000015927 pasta Nutrition 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 230000004036 social memory Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/43—Querying
- G06F16/432—Query formulation
- G06F16/433—Query formulation using audio data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/167—Audio in a user interface, e.g. using voice commands for navigating, audio feedback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/02—Reservations, e.g. for tickets, services or events
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/109—Time management, e.g. calendars, reminders, meetings or time accounting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0201—Market modelling; Market analysis; Collecting market data
- G06Q30/0203—Market surveys; Market polls
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0251—Targeted advertisements
- G06Q30/0259—Targeted advertisements based on store location
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0251—Targeted advertisements
- G06Q30/0269—Targeted advertisements based on user profile or attribute
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S715/00—Data processing: presentation processing of document, operator interface processing, and screen saver display processing
- Y10S715/978—Audio interaction as part of an operator interface
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Development Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Tourism & Hospitality (AREA)
- Multimedia (AREA)
- Game Theory and Decision Science (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Acoustics & Sound (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Traffic Control Systems (AREA)
- Threshing Machine Elements (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
Abstract
지능형 자동화 어시스턴트 시스템은, 자연어 다이얼로그를 이용하여 통합된 대화형 방식으로 사용자와 관계를 맺고, 정보를 얻거나 다양한 작업들을 수행하기 위해 적절한 때에 외부 서비스들을 호출한다. 본 시스템은 웹, 이메일, 스마트폰 등, 또는 이들의 임의의 조합과 같은 다수의 상이한 플랫폼들 중 임의의 것을 이용하여 구현될 수 있다. 일 실시예에서, 시스템은 밀접하게 관련된 도메인들 및 태스크들의 세트들에 기초하며, 시스템이 상호작용할 수 있는 외부 서비스들에 의해 구동되는 추가 기능을 채용한다.
Description
관련 출원에 대한 상호 참조
본 출원은 2013년 6월 7일자로 출원되었고 발명의 명칭이 "지능형 자동 어시스턴트(Intelligent Automated Assistant)"인 미국 특허 출원 제13/913,336호에 대한 우선권을 주장하며, 이 출원은 2012년 6월 8일자로 출원된 미국 가출원 제61/657,736호의 이득을 주장한다. 본 출원은 2011년 1월 10일자로 출원되었고 발명의 명칭이 "지능형 자동 어시스턴트"인 미국 가출원 제12/987,982호의 이득을 추가로 주장하며, 이 출원은 2010년 1월 18일자로 출원된 미국 가출원 제61/294,774호의 이득을 주장한다. 상기 언급된 출원들 모두는 전체적으로 본 명세서에 참조로 포함된다.
본 출원은 추가로 (1) 2006년 9월 8일자로 출원되었고, 발명의 명칭이 "지능형 자동 어시스턴트를 구축하기 위한 방법 및 장치(Method and Apparatus for Building an Intelligent Automated Assistant)"인 미국 출원 제11/518,292호; (2) 2009년 6월 12일자로 출원되었고, 발명의 명칭이 "의미론적 자동 완성을 위한 시스템 및 방법(System and Method for Semantic Auto-Completion)"인 미국 가출원 제61/186,414호; (3) 2012년 12월 21일자로 출원되었고, 발명의 명칭이 "지능형 자동 어시스턴트에 의한 능동적 입력 도출(Active Input Elicitation by Intelligent Automated Assistant)"인 미국 출원 제13/725,512호(대리인 정리 번호: P10575USC3/63266-5697-US); (4) 2012년 12월 21일자로 출원되었고, 발명의 명칭이 "도메인의 온톨로지에 기초한 사용자 의도의 판단(Determining User Intent Based on Ontologies of Domains)"인 미국 출원 제13/725,550호(대리인 정리 번호: P10575USC4/63266-5698-US); (5) 2012년 12월 21일자로 출원되었고, 발명의 명칭이 "지능형 자동 어시스턴트에 대한 서비스 조정(Service Orchestration for Intelligent Automated Assistant)"인 미국 출원 제13/725,616호(대리인 정리 번호: P10575USC5/63266-5699-US); (6) 2012년 12월 21일자로 출원되었고, 발명의 명칭이 "자동 어시스턴트에 의한 선택 기준의 우선순위화(Prioritizing Selection Criteria by Automated Assistant)"인 미국 출원 제13/725,656호(대리인 정리 번호: P10575USC6/63266-5700-US); (7) 2012년 12월 21일자로 출원되었고, 발명의 명칭이 "지능형 자동 어시스턴트에 의한 능동적 입력 도출에 기초한 중의성 해소(Disambiguation Based on Active Input Elicitation by Intelligent Automated Assistant) "인 미국 출원 제13/725,713호(대리인 정리 번호: P10575USC7/63266-5701-US); (8) 2013년 3월 4일자로 출원되었고, 발명의 명칭이 "자동 디지털 어시스턴트에 의한 사용자 요청의 패러프레이징(Paraphrasing of User Request by Automated Digital Assistant)"인 미국 출원 제13/784,694호(대리인 정리 번호: P10575USC8/63266-5702-US); (9) 2013년 3월 4일자로 출원되었고, 발명의 명칭이 "음성 어시스턴트와의 사용자 상호작용들 사이의 콘텍스트 정보 유지(Maintaining Context Information Between User Interactions with a Voice Assistant)"인 미국 출원 제13/784,707호(대리인 정리 번호: P10575USC9/63266-5703-US); (10) 2012년 12월 21일자로 출원되었고, 발명의 명칭이 "음성 어시스턴트와의 이전 사용자 상호작용에 기초한 의도 추론(Intent Deduction Based on Previous User Interactions with a Voice Assistant)"인 미국 출원 제13/725,742호(대리인 정리 번호: P10575USC10/63266-5704-US); 및 (11) 2012년 12월 21일자로 출원되었고, 발명의 명칭이 "자동 어시스턴트에 대한 입력으로서의 이벤트 경보 텍스트의 사용(Using Event Alert Text as Input to an Automated Assistant)"인 미국 출원 제13/725,761호(대리인 정리 번호: P10575USC11/63266- 5705-US)와 관련되며, 이들 출원 모두는 전체적으로 본 명세서에 참고로 포함된다.
본 출원은 2009년 6월 12일자로 출원된 "의미론적 자동 완성을 위한 시스템 및 방법"에 대한 미국 가특허 출원 제61/186,414호와 관련되며, 이 출원은 본 명세서에 참고로 포함된다.
본 발명은 지능형 시스템들에 관한 것이고, 더 구체적으로는, 지능형 자동 어시스턴트들에 대한 애플리케이션들의 분류를 위한 것에 관한 것이다.
현재의 전자 디바이스들은 인터넷을 통해 그리고 다른 소스들로부터 대량의 증가 중인 다양한 양의 기능들, 서비스들, 및 정보에 액세스할 수 있다. 많은 소비자 디바이스들, 스마트폰들, 태블릿 컴퓨터들 등이 소프트웨어 애플리케이션들을 구동하여 다양한 태스크들을 수행하도록 그리고 상이한 유형의 정보를 제공하도록 할 수 있음에 따라 그러한 디바이스들에 대한 기능은 빠르게 증가하고 있다. 종종, 각각의 애플리케이션, 기능, 웹사이트, 또는 특징은 자체의 사용자 인터페이스 및 자체의 연산 패러다임들을 갖는데, 이들 중 다수는 사용자들이 학습하기에 부담스러울 수 있거나 당황스러운 것일 수 있다. 추가로, 많은 사용자들은 어떤 기능 및/또는 정보가 그들의 전자 디바이스들 상에서 또는 다양한 웹사이트들 상에서 입수가능한 것인지를 발견하는 것조차 어려워할 수 있고; 이에 따라 그러한 사용자들은 좌절하게 되거나 당황하게 될 수 있거나, 또는 단순히 그들에게 이용가능한 리소스들을 효과적인 방식으로 사용하지 못할 수 있다.
구체적으로, 초보 사용자들, 또는 소정의 방식으로 부상당하거나 장애가 있는 자들, 및/또는 노령인 자들, 바쁜 자들, 주의가 산만한 자들, 및/또는 차량을 운전 중인 자들은 그들의 전자 디바이스들과 효과적으로 인터페이싱하는 것 및/또는 온라인 서비스들에 효과적으로 관여하는 것에 어려움을 겪을 수 있다. 그러한 사용자들은 그들의 사용을 위해 이용가능할 수 있는 다수의 다양하고 비일관적인 기능들, 애플리케이션들, 및 웹사이트들에 특히 어려움을 겪을 가능성이 있다.
따라서, 기존의 시스템들은 종종 사용하고 탐색하기에 어려울 수 있으며, 종종 사용자들이 기술을 효과적으로 이용하는 것을 방해하는 비일관적이고 당황스러운 인터페이스들을 사용자들에게 종종 제공한다.
본 발명의 다양한 실시예들에 따르면, 지능형 자동 어시스턴트가 전자 디바이스 상에 구현되어, 디바이스와의 사용자 상호작용을 가능하게 하고 사용자가 로컬 및/또는 원격 서비스들에 더 효과적으로 관계를 맺는 것을 돕는다. 다양한 실시예들에서, 지능형 자동 어시스턴트는 자연어 다이얼로그(natural language dialog)를 이용하여 통합된 대화 방식으로 사용자와 관계를 맺고, 정보를 얻거나 다양한 작용들을 수행하기에 적절한 때에 외부 서비스들을 호출한다.
본 발명의 다양한 실시예들에 따르면, 지능형 자동 어시스턴트는 (예컨대, 자연어 인식 및 다이얼로그, 다중모드 입력, 개인 정보 관리, 태스크 흐름 관리, 분산 서비스 조정 등을 지원하기 위한) 상이한 소프트웨어 컴포넌트들에 의해 제공되는 다양한 능력들을 통합한다. 더욱이, 지능형 인터페이스들 및 유용한 기능을 사용자들에게 제공하기 위해, 본 발명의 지능형 자동 어시스턴트는 적어도 일부 실시예들에서 이들 컴포넌트들 및 서비스들을 조정할 수 있다. 대화형 인터페이스, 및 정보를 얻고 후속 태스크를 수행하는 능력은 적어도 일부 실시예들에서 언어 컴포넌트들, 다이얼로그 컴포넌트들, 태스크 관리 컴포넌트들, 정보 관리 컴포넌트들, 및/또는 복수의 외부 서비스들과 같은 다양한 컴포넌트들을 조정함으로써 구현된다.
본 발명의 다양한 실시예들에 따르면, 지능형 자동 어시스턴트 시스템들은 여러 가지 상이한 유형의 동작들, 기능들, 및/또는 특징들을 제공하도록 그리고/또는 그것이 설치되는 전자 디바이스의 복수의 특징들, 동작들, 및 애플리케이션들을 조합하도록 구성될 수 있고, 설계될 수 있고, 그리고/또는 동작가능할 수 있다. 일부 실시예들에서, 본 발명의 지능형 자동 어시스턴트 시스템들은: 사용자로부터의 입력을 능동적으로 도출하는 것, 사용자 의도를 해석하는 것, 경합하는 해석들 사이에서의 중의성을 해소하는 것, 필요에 따라 정보의 명확화를 요청하고 수신하는 것, 및 파악된 의도에 기초하여 작용들을 수행(또는 개시)하는 것 중 임의의 것 또는 전부를 수행할 수 있다. 작용들은 예를 들어 전자 디바이스 상에서 이용가능할 수 있는 임의의 애플리케이션들 또는 서비스들뿐만 아니라 인터넷과 같은 전자 네트워크를 통해 이용가능한 서비스들을 활성화시킴으로써 그리고/또는 이들과 인터페이싱함으로써 수행될 수 있다. 다양한 실시예들에서, 외부 서비스들의 그러한 활성화는 API들을 통해 또는 임의의 기타 적합한 메커니즘에 의해 수행될 수 있다. 이러한 방식으로, 본 발명의 다양한 실시예들의 지능형 자동 어시스턴트 시스템들은 전자 디바이스의 많은 상이한 애플리케이션들 및 기능들에 대해 그리고 인터넷을 통해 이용가능할 수 있는 서비스들에 대해 사용자의 경험을 통합할 수 있고, 단순화시킬 수 있고, 개선할 수 있다. 사용자는 이에 의해 어떤 기능이 디바이스 상에서 그리고 웹 접속 서비스들 상에서 이용가능할 수 있는지, 그 또는 그녀가 원하는 것을 얻기 위해 그러한 서비스들과 어떻게 인터페이싱할 것인지, 그리고 그러한 서비스들로부터 수신된 출력을 어떻게 해석할 것인지를 학습하는 부담을 경감시킬 수 있으며; 오히려, 본 발명의 어시스턴트는 사용자와 그러한 다양한 서비스들 사이의 중개자(go-between)로서 작용할 수 있다.
추가로, 다양한 실시예들에서, 본 발명의 어시스턴트는 사용자가 종래의 그래픽 사용자 인터페이스들보다 더 직관적이고 덜 부담스럽게 찾을 수 있는 대화형 인터페이스를 제공한다. 사용자는 예를 들어 스피치, 그래픽 사용자 인터페이스들(버튼들 및 링크들), 텍스트 입력 등과 같은 다수의 이용가능한 입력 및 출력 메커니즘들 중 임의의 것을 이용하여 어시스턴트와의 대화형 다이얼로그의 형태로 관여할 수 있다. 이 시스템은 디바이스 API들, 웹, 이메일 등, 또는 이들의 임의의 조합과 같은, 다수의 상이한 플랫폼들 중 임의의 것을 사용하여 구현될 수 있다. 추가 입력에 대한 요청들이 그러한 대화의 콘텍스트로 사용자에게 제공될 수 있다. 주어진 세션 내에서의 이전 이벤트들 및 통신들뿐만 아니라 사용자에 관한 이력 및 프로파일 정보가 주어지면 사용자 입력이 적절한 콘텍스트로 해석될 수 있도록 단기 및 장기 메모리가 관여될 수 있다.
추가로, 다양한 실시예들에서, 디바이스 상의 특징, 동작, 또는 애플리케이션과의 사용자 상호작용으로부터 도출된 콘텍스트 정보가 해당 디바이스 상의 또는 다른 디바이스들 상의 다른 특징들, 동작들, 또는 애플리케이션들의 동작을 간소화시키는 데 이용될 수 있다. 예를 들어, 지능형 자동 어시스턴트는 텍스트 메시지의 개시를 간소화시키기 위해(예를 들어, 사용자가 텍스트 메시지의 수신자를 명시적으로 지정할 필요 없이,텍스트 메시지가 동일한 사람에게 전송되어야 함을 판정하기 위해) 전화 통화(예컨대, 수신자)의 콘텍스트를 이용할 수 있다. 본 발명의 지능형 자동 어시스턴트는 그에 의해 "그에게 텍스트 메시지를 전송하라"와 같은 명령어들을 해석할 수 있는데, 여기서 "그"는 현재 전화 통화로부터 그리고/또는 디바이스 상의 임의의 특징, 동작, 또는 애플리케이션으로부터 도출된 콘텍스트 정보에 따라 해석된다. 다양한 실시예들에서, 지능형 자동 어시스턴트는 사용자가 그러한 정보를 수동으로 재지정할 필요가 없도록 하기 위해, 다양한 유형의 이용가능한 콘텍스트 데이터를 고려하여, 어느 주소록 연락처를 사용할 것인지, 어느 연락처 데이터를 사용할지, 어느 전화 번호를 연락처로 사용할지 등을 판정한다.
다양한 실시예들에서, 어시스턴트는 또한 외부 이벤트들을 고려할 수 있고, 이에 따라 예를 들어 외부 이벤트들을 고려하여 작용을 개시하는 것, 사용자와의 통신을 개시하는 것, 경보를 제공하는 것, 및/또는 이전에 개시된 작용을 수정하는 것에 응답할 수 있다. 사용자로부터 입력이 요구되는 경우, 대화형 인터페이스가 다시 사용될 수 있다.
일 실시예에서, 시스템은 밀접하게 관련된 도메인들 및 태스크들의 세트들에 기초하며, 시스템이 상호작용할 수 있는 외부 서비스들에 의해 구동되는 추가 기능을 채용한다. 다양한 실시예들에서, 이들 외부 서비스들은 웹-인에이블형 서비스들뿐만 아니라 하드웨어 디바이스 자체와 관련된 기능도 포함한다. 예를 들어, 지능형 자동 어시스턴트가 스마트폰, 개인용 디지털 어시스턴트, 스마트폰, 개인용 디지털 어시스턴트, 태블릿 컴퓨터, 또는 기타 디바이스 상에서 구현되는 실시예에서, 어시스턴트는 디바이스의 많은 동작들 및 기능들을 제어하여, 예컨대 전화 번호로 다이얼링할 수 있고, 텍스트 메시지를 전송할 수 있고, 리마인더를 설정할 수 있고, 캘린더에 이벤트들을 추가할 수 있고, 등등을 할 수 있다.
다양한 실시예들에서, 본 발명의 시스템은 다수의 상이한 도메인들 중 임의의 것에서의 어시스턴스를 제공하도록 구현될 수 있다. 예들은 하기를 포함한다:
당업자는 도메인들의 상기 목록이 단지 예시적임을 인식할 것이다. 추가로, 본 발명의 시스템은 도메인들의 임의의 조합으로 구현될 수 있다.
다양한 실시예들에서, 본 명세서에 개시되는 지능형 자동 어시스턴트 시스템들은 인터넷을 통해 입수가능한 데이터 및 서비스들의 애플리케이션을 자동화하여 제품들 및 서비스들을 발견하거나, 찾거나, 선택하거나, 구매하거나, 예약하거나, 또는 주문하기 위한 기능을 포함하도록 구성될 수 있거나 또는 설계될 수 있다. 이들 데이터 및 서비스들을 이용하는 프로세스를 자동화하는 것 외에도, 본 명세서에 개시되는 적어도 하나의 지능형 자동 어시스턴트 시스템 실시예는 또한 데이터 및 서비스들의 수 개의 소스들의 조합 사용을 한번에 가능하게 할 수 있다. 예를 들어, 지능형 자동 어시스턴트 시스템은 수 개의 리뷰 사이트(review site)들로부터 제품들에 관한 정보를 조합할 수 있고, 다수의 분배기들로부터 가격들 및 이용가능성을 조회할 수 있으며, 그들의 위치들 및 시간 제약들을 조회할 수 있고, 사용자가 그들의 문제점에 대한 개인화된 해결책을 찾는 것을 도울 수 있다. 추가로, 본 명세서에 개시되는 적어도 하나의 지능형 자동 어시스턴트 시스템 실시예는 인터넷을 통해 이용가능한 데이터 및 서비스들의 이용을 자동화하여, 할 일들(things to do)(영화, 이벤트, 공연, 전람회, 쇼 및 명소를 포함하지만 이들로 한정되지는 않음); 갈 장소들(여행 목적지, 호텔 및 기타 숙박 장소, 랜드마크 및 기타 관심 있는 현장 등을 포함하지만 이들로 한정되지는 않음); 먹거나 마실 장소들(예컨대, 레스토랑 및 바), 다른 이들을 만날 시간 및 장소들, 및 인터넷 상에서 찾을 수 있는 엔터테인먼트 또는 사회적 상호작용의 임의의 기타 소스에 관해 발견하고, 조사하고, 선택하고, 예약하고, 그리고 달리 학습하기 위한 기능을 포함하도록 구성되거나 설계될 수 있다. 추가로, 본 명세서에 개시되는 적어도 하나의 지능형 자동 어시스턴트 시스템 실시예는 그래픽 사용자 인터페이스들로 전용 애플리케이션들에 의해 달리 제공될 수 있는 자연어 다이얼로그를 통해, 검색(위치 기반 검색을 포함함); 내비게이션(지도 및 방향); 데이터베이스 검색(예컨대, 이름 또는 기타 속성에 의해 업체 또는 사람을 찾는 것); 기상 조건 및 예보의 입수, 시장 아이템 가격 또는 금융 거래 상태의 조회; 교통 또는 항공편 상태의 모니터링; 캘린더 및 스케줄의 액세스 및 업데이트; 리마인더, 경보, 태스크, 및 프로젝트의 관리; 이메일 또는 기타 메시징 플랫폼을 통한 통신; 및 디바이스의 국부 또는 원격 조작(예컨대, 전화의 다이얼링, 빛 및 온도의 제어, 가정 보안 디바이스의 제어, 음악 또는 비디오의 재생 등)을 비롯한 애플리케이션들 및 서비스들의 동작을 가능하게 하기 위한 기능을 포함하도록 구성되거나 설계될 수 있다. 또한, 본 명세서에 개시되는 적어도 하나의 지능형 자동 어시스턴트 시스템 실시예는 자연어로 된 상호작용 다이얼로그, 및 데이터 및 서비스들에 대한 자동 액세스로부터 이득을 얻는 활동성, 제품, 서비스, 엔터테인먼트의 소스, 시간 관리, 또는 임의의 기타 종류의 추천 서비스에 대한 개인화된 추천을 식별하기 위한, 생성하기 위한, 그리고/또는 제공하기 위한 기능을 포함하도록 구성되거나 설계될 수 있다.
다양한 실시예들에서, 본 발명의 지능형 자동 어시스턴트는 전자 디바이스의 많은 특징들 및 동작들을 제어할 수 있다. 예를 들어, 지능형 자동 어시스턴트는 API들을 통해 또는 기타 수단에 의해 디바이스 상의 기능 및 애플리케이션들과 인터페이싱하는 서비스들을 호출하여, 디바이스 상의 종래의 사용자 인터페이스를 사용하여 달리 개시될 수 있는 기능들 및 동작들을 수행할 수 있다. 그러한 기능들 및 동작들은, 예를 들어 알람을 설정하는 것, 전화를 거는 것, 텍스트 메시지 또는 이메일 메시지를 전송하는 것, 캘린더 이벤트를 추가하는 것 등을 포함할 수 있다. 그러한 기능들 및 동작들은 사용자와 어시스턴트 사이에서의 대화 다이얼로그의 콘텍스트에서 애드-온 기능들로서 수행될 수 있다. 그러한 기능들 및 동작들은 그러한 다이얼로그의 콘텍스트에서 사용자에 의해 특정될 수 있거나, 또는 그들은 다이얼로그의 콘텍스트에 기초하여 자동으로 수행될 수 있다. 당업자는 어시스턴트가 이에 의해 전자 디바이스 상에서의 다양한 동작들을 개시 및 제어하기 위한 제어 메커니즘으로서 사용될 수 있으며, 이는 버튼들 또는 그래픽 사용자 인터페이스들과 같은 종래의 메커니즘들에 대한 대안물로서 사용될 수 있다는 것을 인식할 것이다.
첨부 도면들은 본 발명의 몇몇 실시예들을 예시하며, 설명과 함께, 실시예들에 따라 본 발명의 원리들을 설명하는 역할을 한다. 당업자는 도면들에 예시된 특정 실시예들이 단지 예시적이며, 본 발명의 범주를 제한하도록 의도되지 않음을 인식할 것이다.
도 1은 지능형 자동 어시스턴트 시스템의 일 실시예의 예를 묘사한 블록 다이어그램이다.
도 2는 적어도 하나의 실시예에 따른, 사용자와 지능형 자동 어시스턴트 사이의 상호작용의 예를 도시한다.
도 3은 적어도 하나의 실시예에 따른, 지능형 자동 어시스턴트의 적어도 일부분을 구현하는 데 적합한 컴퓨팅 디바이스를 묘사한 블록 다이어그램이다.
도 4는 적어도 하나의 실시예에 따른, 독립형 컴퓨팅 시스템 상의 지능형 자동 어시스턴트의 적어도 일부분을 구현하기 위한 아키텍처를 묘사한 블록 다이어그램이다.
도 5는 적어도 하나의 실시예에 따른, 분산형 컴퓨팅 네트워크 상의 지능형 자동 어시스턴트의 적어도 일부분을 구현하기 위한 아키텍처를 묘사한 블록 다이어그램이다.
도 6은 여러 개의 상이한 유형들의 클라이언트들 및 동작 모드들을 예시하는 시스템 아키텍처를 묘사한 블록 다이어그램이다.
도 7은 일 실시예에 따라 본 발명을 구현하기 위해 서로 통신하는 클라이언트 및 서버를 묘사한 블록 다이어그램이다.
도 8은 일 실시예에 따른, 능동적 온톨로지의 단편을 묘사한 블록 다이어그램이다.
도 9는 지능형 자동 어시스턴트 시스템의 대안적인 실시예의 예를 묘사한 블록 다이어그램이다.
도 10은 일 실시예에 따른, 능동적 입력 도출 컴포넌트(들)에 대한 동작의 방법을 도시한 흐름도이다.
도 11은 일 실시예에 따른, 능동적 타이핑 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 12 내지 도 21은 일 실시예에 따른, 능동적 타이핑 입력 도출을 위한 일부 절차들 중 적어도 일부분을 묘사한 스크린샷들이다.
도 22는 일 실시예에 따른, 음성 또는 스피치 입력을 위한 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 23은 일 실시예에 따른, GUI 기반 입력을 위한 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 24는 일 실시예에 따른, 다이얼로그 흐름의 레벨에서의 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 25는 일 실시예에 따른, 관련 이벤트들에 대한 능동적 모니터링에 대한 방법을 묘사한 흐름도이다.
도 26은 일 실시예에 따른, 다중모드 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 27은 일 실시예에 따른, 도메인 모델 컴포넌트(들) 및 서비스 조정에 의해 제공될 수 있는 다양한 유형의 기능들, 동작들, 작용들, 및/또는 기타 특징들의 예를 예시한 소정 세트의 스크린샷들이다.
도 28은 일 실시예에 따른, 자연어 프로세싱에 대한 방법의 예를 묘사한 흐름도이다.
도 29는 일 실시예에 따른, 자연어 프로세싱을 예시한 스크린샷이다.
도 30 및 도 31은 일 실시예에 따른, 다이얼로그 흐름 프로세서 컴포넌트(들)에 의해 제공될 수 있는 다양한 유형의 기능들, 동작들, 작용들, 및/또는 기타 특징들의 예를 예시한 스크린샷들이다.
도 32는 일 실시예에 따른, 다이얼로그 흐름 프로세서 컴포넌트(들)에 대한 동작의 방법을 묘사한 스크린샷들이다.
도 33은 일 실시예에 따른, 자동 호출 및 응답 절차를 묘사한 흐름도이다.
도 34는 일 실시예에 따른, 제한적 선택 태스크에 대한 태스크 흐름의 예를 묘사한 흐름도이다.
도 35 및 도 36은 일 실시예에 따른, 제한적 선택 태스크의 동작의 예를 예시한 스크린샷들이다.
도 37은 일 실시예에 따른, 서비스 조정 절차를 실행하기 위한 절차의 예를 묘사한 흐름도이다.
도 38은 일 실시예에 따른, 서비스 호출 절차의 예를 묘사한 흐름도이다.
도 39는 일 실시예에 따른, 다단 출력 절차의 예를 묘사한 흐름도이다.
도 40 및 도 41은 일 실시예에 따른, 출력 프로세싱의 예들을 묘사한 스크린샷들이다.
도 42는 일 실시예에 따른, 다중모드 출력 프로세싱의 예를 묘사한 흐름도이다.
도 43a 및 도 43b는 일 실시예에 따른, 위치를 변경하는 동안에 다이얼로그 콘텍스트를 보전하기 위한 단기 개인 메모리 컴포넌트(들)의 사용의 예를 묘사한 스크린샷들이다.
도 44a 내지 도 44c는 일 실시예에 따른, 장기 개인 메모리 컴포넌트(들)의 사용의 예를 묘사한 스크린샷들이다.
도 45는 제한적 선택 태스크에 대한 추상적 모델의 예를 도시한다.
도 46은 검색 프로세스를 통해 사용자를 안내하는 것을 돕기 위한 다이얼로그 흐름 모델의 예를 도시한다.
도 47은 일 실시예에 따른 제한적 선택의 방법을 묘사한 흐름도이다.
도 48은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 검색 및 예약 요청들을 어시스턴스에 제공하기 위한 방법을 묘사한 흐름도이다.
도 49는 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 레스토랑 검색을 수행하기 위한 방법을 묘사한 흐름도이다.
도 50은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 엔터테인먼트 관련 요청들을 어시스턴스에 제공하기 위한 방법을 묘사한 흐름도이다.
도 51은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 정보의 특정 도메인들에 관련된 정보를 제공하기 위한 방법을 묘사한 흐름도이다.
도 52는 다양한 실시예들에 따른, 어시스턴트(1002)에 의해 다루어질 수 있는 제한적 선택 도메인들의 예이다.
도 1은 지능형 자동 어시스턴트 시스템의 일 실시예의 예를 묘사한 블록 다이어그램이다.
도 2는 적어도 하나의 실시예에 따른, 사용자와 지능형 자동 어시스턴트 사이의 상호작용의 예를 도시한다.
도 3은 적어도 하나의 실시예에 따른, 지능형 자동 어시스턴트의 적어도 일부분을 구현하는 데 적합한 컴퓨팅 디바이스를 묘사한 블록 다이어그램이다.
도 4는 적어도 하나의 실시예에 따른, 독립형 컴퓨팅 시스템 상의 지능형 자동 어시스턴트의 적어도 일부분을 구현하기 위한 아키텍처를 묘사한 블록 다이어그램이다.
도 5는 적어도 하나의 실시예에 따른, 분산형 컴퓨팅 네트워크 상의 지능형 자동 어시스턴트의 적어도 일부분을 구현하기 위한 아키텍처를 묘사한 블록 다이어그램이다.
도 6은 여러 개의 상이한 유형들의 클라이언트들 및 동작 모드들을 예시하는 시스템 아키텍처를 묘사한 블록 다이어그램이다.
도 7은 일 실시예에 따라 본 발명을 구현하기 위해 서로 통신하는 클라이언트 및 서버를 묘사한 블록 다이어그램이다.
도 8은 일 실시예에 따른, 능동적 온톨로지의 단편을 묘사한 블록 다이어그램이다.
도 9는 지능형 자동 어시스턴트 시스템의 대안적인 실시예의 예를 묘사한 블록 다이어그램이다.
도 10은 일 실시예에 따른, 능동적 입력 도출 컴포넌트(들)에 대한 동작의 방법을 도시한 흐름도이다.
도 11은 일 실시예에 따른, 능동적 타이핑 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 12 내지 도 21은 일 실시예에 따른, 능동적 타이핑 입력 도출을 위한 일부 절차들 중 적어도 일부분을 묘사한 스크린샷들이다.
도 22는 일 실시예에 따른, 음성 또는 스피치 입력을 위한 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 23은 일 실시예에 따른, GUI 기반 입력을 위한 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 24는 일 실시예에 따른, 다이얼로그 흐름의 레벨에서의 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 25는 일 실시예에 따른, 관련 이벤트들에 대한 능동적 모니터링에 대한 방법을 묘사한 흐름도이다.
도 26은 일 실시예에 따른, 다중모드 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다.
도 27은 일 실시예에 따른, 도메인 모델 컴포넌트(들) 및 서비스 조정에 의해 제공될 수 있는 다양한 유형의 기능들, 동작들, 작용들, 및/또는 기타 특징들의 예를 예시한 소정 세트의 스크린샷들이다.
도 28은 일 실시예에 따른, 자연어 프로세싱에 대한 방법의 예를 묘사한 흐름도이다.
도 29는 일 실시예에 따른, 자연어 프로세싱을 예시한 스크린샷이다.
도 30 및 도 31은 일 실시예에 따른, 다이얼로그 흐름 프로세서 컴포넌트(들)에 의해 제공될 수 있는 다양한 유형의 기능들, 동작들, 작용들, 및/또는 기타 특징들의 예를 예시한 스크린샷들이다.
도 32는 일 실시예에 따른, 다이얼로그 흐름 프로세서 컴포넌트(들)에 대한 동작의 방법을 묘사한 스크린샷들이다.
도 33은 일 실시예에 따른, 자동 호출 및 응답 절차를 묘사한 흐름도이다.
도 34는 일 실시예에 따른, 제한적 선택 태스크에 대한 태스크 흐름의 예를 묘사한 흐름도이다.
도 35 및 도 36은 일 실시예에 따른, 제한적 선택 태스크의 동작의 예를 예시한 스크린샷들이다.
도 37은 일 실시예에 따른, 서비스 조정 절차를 실행하기 위한 절차의 예를 묘사한 흐름도이다.
도 38은 일 실시예에 따른, 서비스 호출 절차의 예를 묘사한 흐름도이다.
도 39는 일 실시예에 따른, 다단 출력 절차의 예를 묘사한 흐름도이다.
도 40 및 도 41은 일 실시예에 따른, 출력 프로세싱의 예들을 묘사한 스크린샷들이다.
도 42는 일 실시예에 따른, 다중모드 출력 프로세싱의 예를 묘사한 흐름도이다.
도 43a 및 도 43b는 일 실시예에 따른, 위치를 변경하는 동안에 다이얼로그 콘텍스트를 보전하기 위한 단기 개인 메모리 컴포넌트(들)의 사용의 예를 묘사한 스크린샷들이다.
도 44a 내지 도 44c는 일 실시예에 따른, 장기 개인 메모리 컴포넌트(들)의 사용의 예를 묘사한 스크린샷들이다.
도 45는 제한적 선택 태스크에 대한 추상적 모델의 예를 도시한다.
도 46은 검색 프로세스를 통해 사용자를 안내하는 것을 돕기 위한 다이얼로그 흐름 모델의 예를 도시한다.
도 47은 일 실시예에 따른 제한적 선택의 방법을 묘사한 흐름도이다.
도 48은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 검색 및 예약 요청들을 어시스턴스에 제공하기 위한 방법을 묘사한 흐름도이다.
도 49는 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 레스토랑 검색을 수행하기 위한 방법을 묘사한 흐름도이다.
도 50은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 엔터테인먼트 관련 요청들을 어시스턴스에 제공하기 위한 방법을 묘사한 흐름도이다.
도 51은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 정보의 특정 도메인들에 관련된 정보를 제공하기 위한 방법을 묘사한 흐름도이다.
도 52는 다양한 실시예들에 따른, 어시스턴트(1002)에 의해 다루어질 수 있는 제한적 선택 도메인들의 예이다.
이제, 다양한 기술들이 첨부한 도면에 예시된 바와 같이 그들의 몇 개의 예시적인 실시예들을 참조하여 상세히 기술될 것이다. 하기의 설명에서, 본 명세서에 설명되거나 참조된 하나 이상의 태양들 및/또는 특징들의 철저한 이해를 제공하기 위해 다수의 특정 세부 사항들이 기재된다. 그러나, 본 명세서에 설명되거나 참조된 하나 이상의 태양들 및/또는 특징들이 이들 특정 세부 사항들의 일부 또는 전부 없이 실시될 수 있다는 것이 당업자에게 명백할 것이다. 다른 경우들에서, 잘 알려진 프로세스 단계들 및/또는 구조들은 본 명세서에 설명되거나 참조된 태양들 및/또는 특징들의 일부를 모호하게 하지 않도록 상세히 설명되지 않는다.
하나 이상의 상이한 발명들이 본 출원에서 설명될 수 있다. 또한, 본 명세서에 설명된 본 발명(들) 중 하나 이상을 위해, 다수의 실시예들이 본 특허 출원에서 설명될 수 있으며, 단지 예시 목적들만을 위해 제공된다. 설명된 실시예들은 어떠한 의미로도 제한하려고 의도되지 않는다. 본 발명(들) 중 하나 이상은, 개시 내용으로부터 쉽게 명백한 바와 같이, 다수의 실시예들에 넓게 적용 가능할 수 있다. 이들 실시예들은 당업자들이 본 발명(들) 중 하나 이상을 실시할 수 있게 하기 위해 충분히 상세히 설명되며, 다른 실시예들이 이용될 수 있고 본 발명(들) 중 하나 이상의 범주로부터 벗어나지 않고 구조적, 논리적, 소프트웨어, 전기적 및 다른 변화들이 이루어질 수 있음이 이해될 것이다. 따라서, 당업자들은 본 발명(들) 중 하나 이상이 다양한 수정들 및 변경들을 갖고 실시될 수 있음을 인식할 것이다. 본 발명(들) 중 하나 이상의 특정한 특징들이, 예시로서 본 발명(들) 중 하나 이상의 특정 실시예들이 도시되고 본 개시 내용의 일부를 형성하는 하나 이상의 특정한 도면들 또는 실시예들을 참조하여 설명될 수 있다. 그러나, 그러한 특징들은 이들이 설명되기 위해 참조되는 하나 이상의 특정 실시예들 또는 도면들에서의 사용으로 한정되지 않는다는 것이 이해되어야 한다. 본 개시 내용은 본 발명(들) 중 하나 이상의 모든 실시예들의 문자 그대로의 설명도 그리고 모든 실시예들에 존재해야 하는 본 발명(들) 중 하나 이상의 특징들의 나열도 아니다.
이러한 특허 출원에 제공된 섹션들의 제목들 및 본 특허 출원의 발명의 명칭은 단지 편리함을 위한 것이며, 본 개시 내용을 어떠한 방식으로도 제한하는 것으로서 취해져서는 안 된다.
서로 통신하는 디바이스들은, 달리 명확하게 특정되지 않는다면, 서로 연속적인 통신 상태에 있을 필요는 없다. 게다가, 서로 통신하는 디바이스들은 하나 이상의 중개자들을 통해 직접 또는 간접적으로 통신할 수 있다.
서로 통신하는 몇몇 컴포넌트들을 갖는 실시예의 설명은 모든 그러한 컴포넌트들이 요구된다는 것을 의미하지는 않는다. 반대로, 다양한 선택적 컴포넌트들이 본 발명(들) 중 하나 이상의 매우 다양한 가능한 실시예들을 예시하기 위해 설명된다.
또한, 프로세스 단계들, 방법 단계들, 알고리즘들, 또는 기타 등등이 순차적인 순서로 기술될 수 있지만, 그러한 프로세스들, 방법들, 및 알고리즘들은 다른 순서들로 작업하도록 구성될 수 있다. 다시 말하면, 본 특허 출원에서 설명될 수 있는 단계들의 임의의 시퀀스 또는 순서는, 그 자체로 그리고 자연히, 단계들이 그 순서로 수행될 요건을 표시하지는 않는다. 기술되는 프로세스들의 단계들은 임의의 순서의 실행으로 수행될 수 있다. 또한, 일부 단계들은 비-동시적으로 발생하는 것으로서 설명되거나 의미됨에도 불구하고, 동시에 수행될 수 있다(예컨대, 하나의 단계가 다른 단계 후에 설명되기 때문이다). 또한, 도면에서의 묘사에 의한 프로세스의 예시는 예시된 프로세스가 그에 대한 다른 변화들 및 수정들을 제외한다는 것을 의미하지 않으며, 예시된 프로세스 또는 그의 단계들 중 임의의 것이 본 발명(들) 중 하나 이상에 필수적임을 의미하지 않으며, 예시된 프로세스가 바람직하다는 것을 의미하지 않는다.
단일의 디바이스 또는 물품이 설명될 때, 하나 초과의 디바이스/물품(이들이 상호작용하든 아니든)이 단일 디바이스/물품 대신에 사용될 수 있다는 것이 쉽게 명백할 것이다. 유사하게, 하나 초과의 디바이스 또는 물품이(이들이 상호작용하든 아니든) 설명되는 경우, 단일 디바이스/물품이 하나 초과의 디바이스 또는 물품을 대신하여 사용될 수 있다는 것이 쉽게 명백할 것이다.
디바이스의 기능 및/또는 특징들은 대안적으로 이러한 기능/특징들을 갖는 것으로 명확하게 설명되지 않는 하나 이상의 다른 디바이스들에 의해 구체화될 수 있다. 따라서, 본 발명(들) 중 하나 이상의 다른 실시예들은 디바이스 자체를 포함할 필요는 없다.
본 명세서에서 설명되거나 또는 참조된 기술들 및 메커니즘들은 때때로 명료함을 위해 단수 형태로 설명될 것이다. 그러나, 특정한 실시예들이 달리 언급되지 않는다면 기술의 다수의 반복들 또는 메커니즘의 다수의 인스턴스화(instantiation)들을 포함한다는 것에 주목하여야 한다.
지능형 자동 어시스턴트 기술의 맥락 내에서 기술되지만, 본 명세서에 기술되는 (예를 들어, 능동적 온톨로지들과 연관된 것들과 같은) 다양한 태양들 및 기술들이 또한 인간 및/또는 소프트웨어와의 컴퓨터화된 상호작용을 수반하는 다른 기술 분야들에서 효율적으로 이용될 수 있고 그리고/또는 그들에 적용될 수 있음이 이해될 수 있다.
지능형 자동 어시스턴트 기술(예컨대, 본 명세서에 기술되는 하나 이상의 지능형 자동 어시스턴트 시스템 실시예들에 의해 활용될 수 있고, 그들에 의해 제공될 수 있고, 그리고/또는 그들에게서 구현될 수 있음)에 관한 다른 태양들이 하기의 참조문헌들 중 하나 이상에 개시되어 있다:
2006년 9월 8일자로 출원되었고 그 개시 내용이 본 명세서에 참조로 포함된 "지능형 자동 어시스턴트를 구축하기 위한 방법 및 장치"에 대한 미국 특허 출원 제11/518,292호; 및
하드웨어 아키텍처
대체로, 본 명세서에 개시된 지능형 자동 어시스턴트 기술들은 하드웨어 또는 소프트웨어와 하드웨어의 조합으로 구현될 수 있다. 예를 들어, 그들은 운영 체제 커널(operating system kernel)로, 별도의 사용자 프로세스로, 네트워크 애플리케이션들 내로 한정된 라이브러리 패키지로, 특수하게 구성된 기계 상에서, 또는 네트워크 인터페이스 카드 상에서 구현될 수 있다. 특정 실시예에서, 본 명세서에 개시된 기술들은 운영 체제와 같은 소프트웨어로 또는 운영 체제 상에서 구동하는 애플리케이션으로 구현될 수 있다.
본 명세서에 개시된 지능형 자동 어시스턴트 실시예(들) 중 적어도 일부 실시예(들)의 소프트웨어/하드웨어 하이브리드 구현예(들)가 메모리에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 프로그래밍가능 기계 상에서 구현될 수 있다. 그러한 네트워크 디바이스들은 상이한 유형들의 네트워크 통신 프로토콜들을 활용하도록 구성될 수 있거나 설계될 수 있는 다수의 네트워크 인터페이스들을 가질 수 있다. 이들 기계들 중 일부를 위한 일반적인 아키텍처는 본 명세서에 개시된 설명들로부터 나타날 수 있다. 구체적인 실시예들에 따르면, 본 명세서에 개시된 다양한 지능형 자동 어시스턴트 실시예들의 특징들 및/또는 기능들 중 적어도 일부는 최종 사용자 컴퓨터 시스템, 컴퓨터, 네트워크 서버 또는 서버 시스템, 모바일 컴퓨팅 디바이스(예컨대, 개인용 디지털 어시스턴트, 모바일 전화기, 스마트폰, 랩톱, 태블릿 컴퓨터, 또는 기타 등등), 소비자 전자 디바이스, 음악 플레이어, 또는 임의의 기타 적합한 전자 디바이스, 라우터, 스위치, 또는 기타 등등, 또는 이들의 임의의 조합과 같은 하나 이상의 범용 네트워크 호스트 기계들 상에서 구현될 수 있다. 적어도 일부 실시예들에서, 본 명세서에 개시된 다양한 지능형 자동 어시스턴트 실시예들의 특징들 및/또는 기능들 중 적어도 일부는 하나 이상의 가상화된 컴퓨팅 환경들(예컨대, 네트워크 컴퓨팅 클라우드들, 또는 기타 등등)에서 구현될 수 있다.
이제, 도 3을 참조하면, 본 명세서에 개시된 지능형 자동 어시스턴트 특징들 및/또는 기능들 중 적어도 일부를 구현하는 데 적합한 컴퓨팅 디바이스(60)를 묘사한 블록 다이어그램이 도시되어 있다. 컴퓨팅 디바이스(60)는 예를 들어 최종 사용자 컴퓨터 시스템, 네트워크 서버 또는 서버 시스템, 모바일 컴퓨팅 디바이스(예컨대, 개인용 디지털 어시스턴트, 모바일 전화기, 스마트폰, 랩톱, 태블릿 컴퓨터, 또는 기타 등등), 소비자 전자 디바이스, 음악 플레이어, 또는 임의의 기타 적합한 전자 디바이스, 또는 이들의 임의의 조합 또는 일부일 수 있다. 컴퓨팅 디바이스(60)는, 무선이든 유선이든, 그러한 통신을 위한 공지 프로토콜들을 이용하여, 인터넷과 같은 통신 네트워크를 통해, 클라이언트들 및/또는 서버들과 같은 다른 컴퓨팅 디바이스들과 통신하도록 구성될 수 있다.
일 실시예에서, 컴퓨팅 디바이스(60)는 중앙 프로세싱 유닛(CPU)(62), 인터페이스들(68), 및 버스(67)(예컨대, PCI(peripheral component interconnect) 버스)를 포함한다. 적절한 소프트웨어 또는 펌웨어의 제어 하에서 작용할 때, CPU(62)는 특수하게 구성된 컴퓨팅 디바이스 또는 기계의 기능들과 연관된 특정 기능들을 구현할 책임이 있을 수 있다. 예를 들어, 적어도 하나의 실시예에서, 사용자의 개인용 디지털 어시스턴트(PDA)는 CPU(62), 메모리(61, 65), 및 인터페이스(들)(68)을 활용하는 지능형 자동 어시스턴트 시스템으로서 기능하도록 구성되거나 설계될 수 있다. 적어도 하나의 실시예에서, CPU(62)는 예를 들어 운영 체제 및 임의의 적절한 애플리케이션 소프트웨어, 드라이버들 등을 포함할 수 있는, 소프트웨어 모듈들/컴포넌트들의 제어 하에서 상이한 유형들의 지능형 자동 어시스턴트 기능들 및/또는 동작들 중 하나 이상을 수행하게 할 수 있다.
CPU(62)는 예를 들어 모토롤라(Motorola) 또는 인텔(Intel) 계열의 마이크로프로세서들 또는 MIPS 계열의 마이크로프로세서들로부터의 프로세서와 같은, 하나 이상의 프로세서(들)(63)를 포함할 수 있다. 일부 실시예들에서, 프로세서(들)(63)는 컴퓨팅 디바이스(60)의 동작들을 제어하기 위해 특수하게 설계된 하드웨어(예컨대, ASIC(application-specific integrated circuit), EEPROM(electrically erasable programmable read-only memory), FPGA(field-programmable gate array) 등)를 포함할 수 있다. 특정 실시예에서, 메모리(61)(예컨대, 비휘발성 RAM 및/또는 ROM)는 또한 CPU(62)의 일부분을 형성한다. 그러나, 메모리가 시스템에 커플링될 수 있는 많은 상이한 방식들이 있다. 메모리 블록(61)은 예를 들어 데이터의 캐싱 및/또는 저장, 명령어들의 프로그래밍 등과 같은 다양한 목적들을 위해 사용될 수 있다.
본 명세서에 사용되는 바와 같이, 용어 "프로세서"는 단지 당업계에서 프로세서로 지칭되는 이들 집적 회로들로 한정되는 것이 아니라, 광범위하게 마이크로컨트롤러, 마이크로컴퓨터, 프로그래밍 가능한 로직 제어기, ASIC, 및 임의의 기타 프로그래밍가능 회로를 지칭한다.
일 실시예에서, 인터페이스들(68)은 인터페이스 카드들(때때로, "라인 카드들"로 지칭됨)로서 제공된다. 대체로, 이들은 컴퓨팅 네트워크를 통해 데이터 패킷들의 전송 및 수신을 제어하며, 때때로 컴퓨팅 디바이스(60)와 함께 사용되는 다른 주변기기들을 지원한다. 제공될 수 있는 인터페이스들 중에는 이더넷 인터페이스들, 프레임 릴레이(frame relay) 인터페이스들, 케이블 인터페이스들, DSL 인터페이스들, 토큰 링 인터페이스들 등이 있다. 추가로, 예를 들어 USB(universal serial bus), 시리얼(Serial), 이더넷, 파이어와이어, PCI, 패러렐, 무선 주파수(RF), 블루투스TM, 근거리장 통신(예컨대, 근거리 자기장을 이용함), 802.11(WiFi), 프레임 릴레이, TCP/IP, ISDN, 고속 이더넷 인터페이스, 기가비트 이더넷 인터페이스, ATM(asynchronous transfer mode) 인터페이스, HSSI(high-speed serial interface) 인터페이스, POS(Point of Sale) 인터페이스, FDDI(fiber data distributed interface) 등과 같은 다양한 유형의 인터페이스들이 제공될 수 있다. 일반적으로, 그러한 인터페이스들(68)은 적절한 매체와의 통신에 적절한 포트들을 포함할 수 있다. 일부 경우들에 있어서, 그들은 또한 독립 프로세서를 포함할 수 있고, 일부 경우들에 있어서 휘발성 및/또는 비휘발성 메모리(예컨대, RAM)를 포함할 수 있다.
도 3에 도시된 시스템은 본 명세서에 기술된 본 발명의 기술들을 구현하기 위해 컴퓨팅 디바이스(60)에 대한 하나의 특정 아키텍처를 예시하지만, 그것이 결코 본 명세서에 기술된 특징들 및 기술들 중 적어도 일부가 구현될 수 있게 되는 유일한 디바이스 아키텍처인 것은 아니다. 예를 들어, 하나 또는 임의의 다수의 프로세서들(63)을 갖는 아키텍처들이 사용될 수 있으며, 그러한 프로세서들(63)은 단일 디바이스에 존재할 수 있거나 또는 임의의 다수의 디바이스들 중에 분산될 수 있다. 일 실시예에서, 단일 프로세서(63)는 라우팅 연산들뿐만 아니라 통신들을 다룬다. 다양한 실시예들에서, 상이한 유형들의 지능형 자동 어시스턴트 특징들 및/또는 기능들이 클라이언트 디바이스(예컨대, 클라이언트 소프트웨어를 구동시키는 개인용 디지털 어시스턴트 또는 스마트폰) 및 서버 시스템(들)(예컨대, 하기에 더 상세히 기술되는 서버 시스템)을 포함하는 지능형 자동 어시스턴트 시스템에서 구현될 수 있다.
네트워크 디바이스 구성과는 무관하게, 본 발명의 시스템은 데이터, 범용 네트워크 동작들을 위한 프로그램 명령어들, 및/또는 본 명세서에 기술된 지능형 자동 어시스턴트 기술들의 기능에 관한 기타 정보를 저장하도록 구성된 (예를 들어, 메모리 블록(65)과 같은) 하나 이상의 메모리들 또는 메모리 모듈들을 채용할 수 있다. 프로그램 명령어들은 예를 들어 운영 체제 및/또는 하나 이상의 애플리케이션들의 동작을 제어할 수 있다. 메모리 또는 메모리들은 또한 데이터 구조들, 키워드 분류 정보, 광고 정보, 사용자 클릭 및 인가(impression) 정보, 및/또는 본 명세서에 기술된 기타 특정 비-프로그램 정보를 저장하도록 구성될 수 있다.
그러한 정보 및 프로그램 명령어들이 본 명세서에 설명된 시스템들/방법들을 구현하기 위해 채용될 수 있기 때문에, 적어도 일부 네트워크 디바이스 실시예들은, 예를 들어 본 명세서에 기술된 다양한 동작들을 수행하기 위해 프로그램 명령어들, 상태 정보 등을 저장하도록 구성될 수 있거나 설계될 수 있는 비일시적 기계 판독가능 저장 매체를 포함할 수 있다. 그러한 비일시적 기계 판독가능 저장 매체들의 예들은 하드 디스크, 플로피 디스크, 및 자기 테이프와 같은 자기 매체; CD-ROM 디스크와 같은 광학 매체; 플롭티컬 디스크(floptical disk)와 같은 자기-광학 매체, 및 ROM, 플래시 메모리, 멤리스터 메모리(memristor memory), RAM 등과 같이 프로그램 명령어들을 저장하도록 그리고 수행하도록 특정적으로 구성된 하드웨어 디바이스들을 포함하지만, 이들로 제한되지 않는다. 프로그램 명령어들의 예들은, 예컨대 컴파일러에 의해 생성된 기계 코드, 및 해석기를 사용하여 컴퓨터에 의해 실행될 수 있는 상위 레벨 코드를 포함한 파일들 양측 모두를 포함한다.
일 실시예에서, 본 발명의 시스템은 독립형 컴퓨팅 시스템 상에 구현된다. 이제, 도 4를 참조하면, 적어도 하나의 실시예에 따른, 독립형 컴퓨팅 시스템 상에 지능형 자동 어시스턴트의 적어도 일부분을 구현하기 위한 아키텍처를 묘사한 블록 다이어그램이 도시되어 있다. 컴퓨팅 디바이스(60)는 지능형 자동 어시스턴트(1002)를 구현하기 위한 소프트웨어를 구동하는 프로세서(들)(63)를 포함한다. 입력 디바이스(1206)는 예를 들어 키보드, 터치스크린, 마이크로폰(예를 들어, 음성 입력용), 마우스, 터치패드, 트랙볼, 5-로 스위치(five-way switch), 조이스틱, 및/또는 이들의 임의의 조합을 비롯하여, 사용자 입력을 수신하는 데 적합한 임의의 유형의 것일 수 있다. 출력 디바이스(1207)는 스크린, 스피커, 프린터, 및/또는 이들의 임의의 조합일 수 있다. 메모리(1210)는 소프트웨어를 구동하는 동안 프로세서(들)(63)에 의한 사용을 위한, 당업계에 공지되어 있는 바와 같은 구조 및 아키텍처를 갖는 RAM일 수 있다. 저장 디바이스(1208)는 디지털 형태의 데이터의 저장을 위한 임의의 자기, 광학, 및/또는 전기 저장 디바이스일 수 있고; 예들은 플래시 메모리, 자기 하드 드라이브, CD-ROM, 및/또는 기타 등등을 포함한다.
다른 실시예에서, 본 발명의 시스템은 임의의 다수의 클라이언트들 및/또는 서버들을 갖는 것과 같은 분산형 컴퓨팅 네트워크 상에 구현된다. 이제, 도 5를 참조하면, 적어도 하나의 실시예에 따른, 분산형 컴퓨팅 네트워크 상에 지능형 자동 어시스턴트의 적어도 일부분을 구현하기 위한 아키텍처를 묘사한 블록 다이어그램이 도시되어 있다.
도 5 도시된 배열에서, 임의의 다수의 클라이언트들(1304)이 제공되고; 각각의 클라이언트(1304)는 본 발명의 클라이언트측 부분들을 구현하기 위한 소프트웨어를 구동할 수 있다. 추가로, 클라이언트들(1304)로부터 수신된 요청들을 다루기 위해 임의의 다수의 서버들(1340)이 제공될 수 있다. 클라이언트들(1304) 및 서버들(1340)은 인터넷과 같은 전자 네트워크(1361)를 통해 서로 통신할 수 있다. 네트워크(1361)는 예를 들어 유선 및/또는 무선 프로토콜들을 비롯한 임의의 공지된 네트워크 프로토콜들을 이용하여 구현될 수 있다.
추가로, 일 실시예에서, 서버들(1340)은 추가적인 정보를 획득하는 데 또는 특정 사용자들과의 이전의 상호작용들에 관한 저장 데이터를 참조하는 데 필요한 경우에 외부 서비스들(1360)을 호출할 수 있다. 외부 서비스들(1360)과의 통신은 예를 들어 네트워크(1361)를 통해 발생할 수 있다. 다양한 실시예들에서, 외부 서비스들(1360)은 하드웨어 디바이스 자체와 관련되거나 그 상에 설치된 웹-인에이블형 서비스들 및/또는 기능을 포함한다. 예를 들어, 어시스턴트(1002)가 스마트폰 또는 기타 전자 디바이스 상에 구현되는 실시예에서, 어시스턴트(1002)는 캘린더 애플리케이션("앱(app)"), 연락처, 및/또는 기타 소스들에 저장된 정보를 획득할 수 있다.
다양한 실시예들에서, 어시스턴트(1002)는 어시스턴트가 설치된 전자 디바이스의 많은 특징들 및 동작들을 제어할 수 있다. 예를 들어, 어시스턴트(1002)는 디바이스들 상에서 종래의 사용자 인터페이스를 사용하여 달리 개시될 수 있는 기능들 및 동작들을 수행하기 위해, API들을 통해 또는 다른 수단에 의해 디바이스 상에서의 기능 및 애플리케이션들과 인터페이싱하는 외부 서비스들(1360)을 호출할 수 있다. 그러한 기능들 및 동작들은 예를 들어 알람을 설정하는 것, 전화를 거는 것, 텍스트 메시지 또는 이메일 메시지를 전송하는 것, 캘린더 이벤트를 추가하는 것 등을 포함할 수 있다. 그러한 특징들 및 동작들은 사용자와 어시스턴트(1002) 사이에서의 대화 다이얼로그의 콘텍스트에서 애드온 기능들로서 수행될 수 있다. 그러한 기능들 및 동작들은 그러한 다이얼로그의 콘텍스트에서 사용자에 의해 특정될 수 있거나, 또는 이들은 다이얼로그의 콘텍스트에 기초하여 자동으로 수행될 수 있다. 당업자는 어시스턴트(1002)가 이에 의해 전자 디바이스 상에서의 다양한 동작들을 개시하고 제어하기 위한 제어 메커니즘으로서 사용될 수 있으며, 이는 버튼들 또는 그래픽 사용자 인터페이스들과 같은 종래의 메커니즘들에 대한 대안물로서 사용될 수 있다는 것을 인식할 것이다.
예를 들어, 사용자는 "나는 내일 오전 8시에 일어나야 한다."와 같은 입력을 어시스턴트(1002)에 제공할 수 있다. 일단 어시스턴트(1002)가 본 명세서에 설명된 기술들을 이용하여 사용자의 의도를 판정했다면, 어시스턴트(1002)는 디바이스 상에서의 알람 시계 기능 또는 애플리케이션과 인터페이싱하기 위해 외부 서비스들(1360)을 호출할 수 있다. 어시스턴트(1002)는 사용자 대신에 알람을 설정한다. 이러한 방식으로, 사용자는 알람을 설정하거나 디바이스 상에서 다른 기능들을 수행하기 위한 종래의 메커니즘들에 대한 대체물로서 어시스턴트(1002)를 사용할 수 있다. 사용자의 요청들이 불명료하거나 추가적인 명확화를 필요로 하는 경우, 어시스턴트(1002)는 능동적 도출(active elicitation), 패러프레이징(paraphrasing), 제안(suggestion) 등을 비롯한 본 명세서에 기술된 다양한 기술들을 이용하여, 올바른 서비스들(1360)이 호출되고 의도된 작용이 취해지도록 필요한 정보를 획득할 수 있다. 일 실시예에서, 어시스턴트(1002)는 기능을 수행하기 위해 서비스(1360)를 호출하기 전의 확인을 위해 사용자를 프롬프트(prompt)할 수 있다. 일 실시예에서, 사용자는 특정 서비스들(1360)을 호출할 어시스턴트(1002)의 능력을 선택적으로 디스에이블시킬 수 있거나, 또는 원하는 경우, 그러한 서비스 호출 모두를 디스에이블시킬 수 있다.
본 발명의 시스템은 많은 상이한 유형들의 클라이언트들(1304) 및 동작 모드들로 구현될 수 있다. 이제, 도 6을 참조하면, 여러 개의 상이한 유형들의 클라이언트들(1304) 및 동작 모드들을 예시한 시스템 아키텍처를 묘사한 블록 다이어그램이 도시되어 있다. 당업자는 도 6에 도시된 다양한 유형들의 클라이언트들(1304) 및 동작 모드들이 단지 예시적인 것이며, 본 발명의 시스템이 묘사된 것들을 제외한 클라이언트들(1304) 및/또는 동작 모드들을 이용하여 구현될 수 있다는 것을 인식할 것이다. 추가로, 시스템은 그러한 클라이언트들(1304) 및/또는 동작 모드들 중 임의의 것 또는 모두를 단독으로 또는 임의의 조합으로 포함할 수 있다. 묘사된 예들은 하기를 포함한다:
입력/출력 디바이스들 및/또는 센서들(1402)을 갖는 컴퓨터 디바이스들 클라이언트 컴포넌트는 임의의 그러한 컴퓨터 디바이스(1402) 상에서 효과적으로 이용될 수 있다. 적어도 하나의 실시예는 네트워크(1361)를 통해 서버들(1340)과의 통신을 가능하게 하기 위해 웹 브라우저(1304A) 또는 기타 소프트웨어 애플리케이션을 이용하여 구현될 수 있다. 입력 및 출력 채널들은 예를 들어 시각적 및/또는 청각적 채널들을 포함한 임의의 유형의 것일 수 있다. 예를 들어, 일 실시예에서, 본 발명의 시스템은 음성 기반 통신 방법들을 이용하여 구현되어, 웹 브라우저의 등가물이 스피치에 의해 구동되고 출력을 위해 스피치를 이용하는 시각 장애인을 위한 어시스턴트의 실시예를 허용할 수 있다.
클라이언트가 모바일 디바이스(1304B) 상에서 애플리케이션으로서 구현될 수 있게 되는, I/O 및 센서들(1406)을 갖는 모바일 디바이스들. 이는 모바일 전화기들, 스마트폰들, 개인용 디지털 어시스턴트들, 태블릿 디바이스들, 네트워킹된 게임 콘솔들 등을 포함하지만 이들로 한정되지 않는다.
클라이언트가 내장형 시스템 애플리케이션(1304D)으로서 구현될 수 있게 되는, 대시보드 인터페이스들 및 센서들(1414)을 갖는 자동차들 및 다른 차량들. 이는 자동차 내비게이션 시스템들, 음성 제어 시스템들, 자동차-내 엔터테인먼트 시스템들 등을 포함하지만 이들로 한정되지 않는다.
클라이언트가 디바이스-상주 애플리케이션(1304E)으로서 구현될 수 있게 되는, 네트워크 상에 존재하거나 그와 인터페이싱하는 라우터들(1418) 또는 임의의 다른 디바이스와 같은 네트워킹된 컴퓨팅 디바이스들.
어시스턴트의 실시예가 이메일 양식 서버(1426)를 통해 접속되게 되는 이메일 클라이언트들(1424). 이메일 양식 서버(1426)는 통신 브리지로서 작용하여, 예를 들어, 사용자로부터의 입력을 어시스턴트로 전송된 이메일 메시지들로서 취하고 어시스턴트로부터의 출력을 응답들로서 사용자에게 전송한다.
어시스턴트의 실시예가 메시징 양식 서버(1430)를 통해 접속되게 되는 인스턴트 메시징 클라이언트들(1428). 메시징 양식 서버(1430)는 통신 브리지로서 작용하여, 사용자로부터의 입력을 어시스턴트로 전송된 메시지들로서 취하고 응답 시에 메시지들로서 어시스턴트로부터의 출력을 사용자에게 전송한다.
어시스턴트의 실시예가 VoIP(Voice over Internet Protocol) 양식 서버(1430)를 통해 접속되게 되는 음성 전화기들(1432). VoIP 양식 서버(1430)는 통신 브리지로서 작용하여, 사용자로부터의 입력을 어시스턴트에게 구사된 음성으로서 취하고 응답 시에 어시스턴트로부터의 출력을 예를 들어 합성 스피치로서 사용자에게 전송한다.
이메일, 인스턴트 메시징, 논의 포럼들, 그룹 채팅 세션들, 라이브 도움 또는 고객 지원 세션들 등을 포함하지만 이들로 한정되지 않는 메시징 플랫폼들의 경우, 어시스턴트(1002)는 대화에서의 참여자로서 작용할 수 있다. 어시스턴트(1002)는 일-대-일 상호작용들을 위해 본 명세서에 기술된 하나 이상의 기술들 및 방법들을 이용하여 대화를 모니터링하고 개인들 또는 그룹에 응답할 수 있다.
다양한 실시예들에서, 본 발명의 기술들을 구현하기 위한 기능이 임의의 다수의 클라이언트 및/또는 서버 컴포넌트들 중에 분산될 수 있다. 예를 들어, 다양한 소프트웨어 모듈들이 본 발명과 관련되어 다양한 기능들을 수행하기 위해 구현될 수 있으며, 그러한 모듈들은 서버 및/또는 클라이언트 컴포넌트들 상에서 구동하기 위해 다양하게 구현될 수 있다. 이제, 도 7을 참조하면, 일 실시예에 따라 본 발명을 구현하기 위해 서로 통신하는 클라이언트(1304) 및 서버(1340)의 예가 도시되어 있다. 도 7은 소프트웨어 모듈들이 클라이언트(1304)와 서버(1340) 사이에 분산되게 되는 하나의 가능한 배열을 묘사한다. 당업자는 묘사된 배열이 단지 예시적인 것이며 그러한 모듈들이 많은 상이한 방식들로 분산될 수 있음을 인식할 것이다. 추가로, 임의의 다수의 클라이언트들(1304) 및/또는 서버들(1340)이 제공될 수 있고, 모듈들은 이들 클라이언트들(1304) 및/또는 서버들(1340) 사이에 다수의 상이한 방식들 중 임의의 것으로 분산될 수 있다.
도 7의 예에서, 입력 도출 기능 및 출력 프로세싱 기능이 클라이언트(1304)와 서버(1340) 사이에 분산되는데, 이때 입력 도출의 클라이언트 부분(1094a) 및 출력 프로세싱의 클라이언트 부분(1092a)은 클라이언트(1304)에 위치되고, 입력 도출의 서버 부분(1094b) 및 출력 프로세싱의 서버 부분(1092b)은 서버(1340)에 위치된다. 하기의 컴포넌트들은 서버(1340)에 위치된다:
일 실시예에서, 클라이언트(1304)는 응답성을 개선하고 네트워크 통신들에 대한 의존을 감소시키기 위해 이들 컴포넌트들의 서브세트들 및/또는 부분들을 국소적으로 보전한다. 이러한 서브세트들 및/또는 부분들은 주지되어 있는 캐시 관리 기술들에 따라 보전될 수 있고 업데이트될 수 있다. 그러한 서브세트들 및/또는 부분들은, 예를 들어 하기를 포함한다:
추가적인 컴포넌트들은, 예를 들어 하기를 포함한 서버(1340)의 부분으로서 구현될 수 있다:
이들 컴포넌트들 각각은 하기에 더 상세히 기술될 것이다. 서버(1340)는 필요한 경우에 외부 서비스들(1360)과 인터페이싱함으로써 추가적인 정보를 획득한다.
개념적 아키텍처
이제, 도 1을 참조하면, 지능형 자동 어시스턴트(1002)의 예시적인 특정 실시예의 단순화된 블록 다이어그램이 도시되어 있다. 본 명세서에서 보다 더 상세히 기술되는 바와 같이, 지능형 자동 어시스턴트 시스템들의 상이한 실시예들은, 대체로 지능형 자동 어시스턴트 기술에 관한 여러 가지 상이한 유형들의 동작들, 기능들, 및/또는 특징들을 제공하도록 구성될 수 있고, 설계될 수 있고, 그리고/또는 동작가능할 수 있다. 또한, 본 명세서에서 보다 더 상세히 기술되는 바와 같이, 본 명세서에 개시된 지능형 자동 어시스턴트 시스템(들)의 다양한 동작들, 기능들, 및/또는 특징들 중 다수가 상이한 유형들의 이점들 및/또는 이득들을 가능하게 할 수 있거나, 이들을 지능형 자동 어시스턴트 시스템(들)과 상호작용하는 상이한 엔티티들에 제공할 수 있다. 도 1에 도시된 실시예는 전술한 하드웨어 아키텍처들 중 임의의 것을 사용하여 또는 상이한 유형의 하드웨어 아키텍처를 사용하여 구현될 수 있다.
예를 들어, 상이한 실시예들에 따르면, 적어도 일부의 지능형 자동 어시스턴트 시스템(들)은 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 여러 가지 상이한 유형들의 동작들, 기능들, 및/또는 특징들을 제공하도록 구성될 수 있고, 설계될 수 있고, 그리고/또는 동작가능할 수 있다:
인터넷을 통해 이용 가능한 데이터 및 서비스들의 애플리케이션들을 자동화하여, 제품들 및 서비스들을 발견하거나, 찾거나, 그 중에서 선택하거나, 구매하거나, 예약하거나, 또는 주문한다. 이들 데이터 및 서비스들을 이용하는 프로세스를 자동화하는 것 외에도, 지능형 자동 어시스턴트(1002)는 또한 데이터 및 서비스들의 수 개의 소스들의 조합 사용을 한번에 가능하게 할 수 있다. 예를 들어, 지능형 자동 어시스턴트 시스템은 수 개의 리뷰 사이트들로부터 제품들에 관한 정보를 조합할 수 있고, 다수의 분배기들로부터 가격들 및 이용가능성을 조회할 수 있으며, 그들의 위치들 및 시간 제약들을 조회할 수 있고, 사용자가 그들의 문제점에 대한 개인화된 해결책을 찾는 것을 도울 수 있다.
인터넷을 통해 이용가능한 데이터 및 서비스들의 이용을 자동화하여, 할 일들(영화, 이벤트, 공연, 전람회, 쇼 및 명소를 포함하지만 이들로 한정되지는 않음); 갈 장소들(여행 목적지, 호텔 및 기타 숙박 장소, 랜드마크 및 기타 관심 있는 현장 등을 포함하지만 이들로 한정되지는 않음); 먹거나 마실 장소들(예컨대, 레스토랑 및 바), 다른 이들을 만날 시간 및 장소들, 및 인터넷 상에서 찾을 수 있는 엔터테인먼트 또는 사회적 상호작용의 임의의 기타 소스에 관해 발견하고, 조사하고, 그 중에서 선택하고, 예약하고, 달리 학습한다.
그래픽 사용자 인터페이스들로 전용 애플리케이션들에 의해 달리 제공되는 자연어 다이얼로그를 통해, 검색(위치 기반 검색을 포함함); 내비게이션(지도 및 방향); 데이터베이스 검색(예컨대, 이름 또는 기타 속성에 의해 업체 또는 사람을 찾는 것); 기상 조건 및 예보의 입수, 시장 아이템 가격 또는 금융 거래 상태의 조회; 교통 또는 항공편 상태의 모니터링; 캘린더 및 스케줄의 액세스 및 업데이트; 리마인더, 경보, 태스크, 및 프로젝트의 관리; 이메일 또는 기타 메시징 플랫폼을 통한 통신; 및 디바이스의 국부 또는 원격 조작(예컨대, 전화의 다이얼링, 빛 및 온도의 제어, 가정 보안 디바이스의 제어, 음악 또는 비디오의 재생 등)을 비롯한 애플리케이션들 및 서비스들의 동작을 가능하게 한다. 일 실시예에서, 어시스턴트(1002)는 디바이스 상에서 이용가능한 많은 기능들 및 앱들을 개시하는 데, 동작시키는 데, 그리고 제어하는 데 사용될 수 있다.
활동들, 제품들, 서비스들, 엔터테인먼트의 소스, 시간 관리에 대한 개인 추천들, 또는 자연 언어로의 대화식 다이얼로그로부터 그리고 데이터와 서비스들에 대한 자동화된 액세스로부터 이득을 얻는 임의의 다른 종류의 추천 서비스를 제공한다.
상이한 실시예들에 따르면, 지능형 자동 어시스턴트(1002)에 의해 제공된 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 다른 특징들의 적어도 일부가 하나 이상의 클라이언트 시스템(들)에서, 하나 이상의 서버 시스템들에서, 그리고/또는 이들의 조합들에서 구현될 수 있다.
상이한 실시예들에 따르면, 어시스턴트(1002)에 의해 제공되는 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들의 적어도 일부가, 예를 들어 도 33과 관련하여 예시되고 기술되는 바와 같은 자동 호출 및 응답 절차의 적어도 하나의 실시예에 의해 구현될 수 있다.
추가로, 본 명세서에 기술된 어시스턴트(1002)의 다양한 실시예들은, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 현재 존재하는 지능형 자동 어시스턴트 기술을 통해 다수의 상이한 이점들 및/또는 이득들을 포함할 수 있거나 또는 제공할 수 있다.
도메인들, 태스크들, 서비스들, 및 다이얼로그들의 소정 세트의 명시적 모델들에 의해 제한되는 스피치-텍스트 및 자연어 이해 기술의 통합. 범용 인공 지능 시스템을 구현하고자 시도하는 어시스턴트 기술과는 달리, 본 명세서에 기술된 실시예들은 다수의 소스들의 제약들을 적용하여 해결책들의 수를 더 다루기 쉬운 크기로 감소시킬 수 있다. 이는 언어의 더 적은 불명료한 해석들, 더 적은 관련 도메인들 또는 태스크들, 및 서비스들에서의 의도를 조작할 수 있게 하는 더 적은 방식들을 초래한다. 특정 도메인들, 태스크들, 및 다이얼로그들에 대한 초점은 또한 인간-관리 어휘를 갖는 도메인들 및 태스크들에 대한 포괄, 및 의도로부터 서비스 파라미터들로의 맵핑을 달성하는 것을 실현가능하게 만든다.
API들을 사용하여 인터넷을 통해 그들을 대신하여 서비스들을 호출함으로써 사용자 문제들을 해결하는 능력. 단지 링크들 및 콘텐츠를 되전송하는 검색 엔진들과는 달리, 본 명세서에 기술된 자동 어시스턴트들(1002)의 일부 실시예들은 검색 및 문제 해결 활동들을 자동화할 수 있다. 주어진 요청에 대한 다수의 서비스들을 호출하는 능력은 또한, 예를 들어 제품 또는 서비스를 생성하거나 할 일을 찾기 위해, 단일 사이트를 방문함으로써 달성되는 것보다 더 넓은 기능을 사용자에게 제공한다.
사용자 요청들의 해석 및 실행 시의 개인 정보 및 개인 상호작용 이력의 애플리케이션. 종래의 검색 엔진들 또는 질문 응답 서비스들과는 달리, 본 명세서에 개시된 실시예들은 개인 상호작용 이력(예컨대, 다이얼로그 이력, 결과로부터의 이전의 선택 등)으로부터의 정보, 개인 물리적 콘텍스트(예컨대, 사용자의 위치 및 시간), 및 상호작용의 콘텍스트에서 수집된 개인 정보(예컨대, 이름, 이메일 주소, 물리적 주소, 전화 번호, 계좌 번호, 우선권 등)를 이용한다. 정보의 이들 소스들을 이용하는 것은, 예를 들어 하기를 가능하게 한다.
사용자 입력들의 자연어를 해석함에 있어서 다이얼로그 이력의 이용. 실시예들이 개인 이력을 보관(keep)할 수 있고 사용자 입력들에 대해 이해하는 자연어를 적용하기 때문에, 그들은 또한 현재 위치, 시간, 도메인, 태스크 단계, 및 태스크 파라미터들과 같은 다이얼로그 콘텍스트를 이용하여 새로운 입력들을 해석할 수 있다. 종래의 검색 엔진들 및 커맨드 프로세서들은 다이얼로그 이력과는 독립적인 적어도 하나의 쿼리(query)를 해석한다. 다이얼로그 이력을 이용하는 능력은 평범한 인간 대화를 닮은 더 자연스러운 상호작용을 가능하게 할 수 있다.
사용자의 입력을 해석하는 데 이용되는 동일한 모델들 및 정보에 기초하여, 어시스턴트(1002)가 사용자로부터의 입력을 능동적으로 안내하고 제한하게 되는 능동적 입력 도출. 예를 들어, 어시스턴트(1002)는 그들이 요청을 구체화하고 있는 사용자와의 다이얼로그에서 다음 단계들을 제안하기 위해; 도메인 및 콘텍스트 특정 가능성들에 기초하여 부분적으로 타이핑된 입력에 완성문들을 제공하기 위해; 또는 의미론적 해석을 이용하여 스피치를 텍스트로서의 또는 텍스트를 의도로서의 불명료한 해석들로부터 선택하기 위해 다이얼로그 모델들을 적용할 수 있다.
동적이고 강건한 서비스 조정에 의한 서비스들의 명시적 모델링 및 동적 관리. 기술된 실시예들의 아키텍처는 어시스턴트(1002)가 많은 외부 서비스들과 인터페이싱하는 것, 어떤 서비스들이 특정 사용자 요청에 대한 정보를 제공할 수 있는지 동적으로 판정하는 것, 사용자 요청의 파라미터들을 상이한 서비스 API들에 대해 맵핑하는 것, 다수의 서비스들을 한번에 호출하는 것, 다수의 서비스들로부터의 결과들을 통합하는 것, 실패된 서비스들에 대해 적합하게 대체 작동하는 것, 및/또는 그들의 API들 및 능력들이 진화함에 따라 서비스들의 구현을 효율적으로 보전하는 것을 가능하게 한다.
자동 어시스턴트 시스템들의 소프트웨어 엔지니어링 및 데이터 유지를 간소화하는, 어시스턴트들(1002)을 구축하기 위한 방법 및 장치로서의 능동적 온톨로지들의 사용. 능동적 온톨로지들은 어시스턴트들을 위한 데이터 모델링 및 실행 환경들의 통합이다. 그들은 모델들 및 데이터(도메인 개념들, 태스크 흐름들, 어휘, 언어 패턴 인식기들, 다이얼로그 콘텍스트, 사용자 개인 정보, 및 도메인 및 태스크 요청들로부터 외부 서비스들로의 맵핑들)의 다양한 소스들을 함께 종속시키는 프레임워크를 제공한다. 본 명세서에 기술된 능동적 온톨로지들 및 기타 아키텍처 혁신은, 도에인들 내에 심층 기능을 구축하여 정보 및 서비스들의 다수의 소스들을 단일화하는 것, 및 이를 소정 세트의 도메인들에 걸쳐서 행하는 것을 실현하게 한다.
적어도 하나의 실시예에서, 지능형 자동 어시스턴트(1002)는 특정 태스크들 및/또는 동작들을 수행할 때 여러 가지 상이한 유형들의 데이터 및/또는 기타 유형들의 정보를 활용하도록 그리고/또는 생성하도록 동작가능할 수 있다. 이는 예를 들어 입력 데이터/정보 및/또는 출력 데이터/정보를 포함할 수 있다. 예를 들어, 적어도 하나의 실시예에서, 지능형 자동 어시스턴트(1002)는, 예를 들어 하나 이상의 로컬 및/또는 원격 메모리들, 디바이스들, 및/또는 시스템들과 같은 하나 이상의 상이한 유형들의 소스들로부터의 정보에 액세스하도록, 그를 프로세싱하도록, 그리고/또는 달리 그를 활용하도록 동작가능할 수 있다. 추가로, 적어도 하나의 실시예에서, 지능형 자동 어시스턴트(1002)는, 예를 들어 하나 이상의 로컬 및/또는 원격 디바이스들 및/또는 시스템들의 메모리에 저장될 수 있는 하나 이상의 상이한 유형들의 출력 데이터/정보를 생성하도록 동작가능할 수 있다.
지능형 자동 어시스턴트(1002)에 의해 액세스될 수 있고 그리고/또는 그에 의해 활용될 수 있는 상이한 유형들의 입력 데이터/정보의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
음성 입력: 모바일 전화기들 및 태블릿들과 같은 모바일 디바이스들, 마이크로폰들을 갖는 컴퓨터들, 블루투스 헤드셋들, 자동차 음성 제어 시스템들로부터, 전화 시스템, 응답 서비스들 상에서의 녹음들, 통합 메시징 서비스들 상에서의 오디오 음성 메일, 클록 라디오들과 같은 음성 입력을 갖는 소비자 애플리케이션들, 전화국, 가정 엔터테인먼트 제어 시스템들, 및 게임 콘솔들을 통함.
컴퓨터들 또는 모바일 디바이스들 상에서의 키보드들, 원격 제어부들 또는 다른 소비자 전자 디바이스들 상에서의 키패드들, 어시스턴트로 전송된 이메일 메시지들, 어시스턴트로 전송된 인스턴트 메시지들 또는 유사한 단문 메시지들, 다중사용자 게임 환경들에서의 플레이어들로부터 수신된 텍스트, 및 메시지 피드들에서 스트리밍된 텍스트로부터의 텍스트 입력.
센서들 또는 위치 기반 시스템들로부터 오는 위치 정보. 예들은 GPS(Global Positioning System) 및 모바일 전화기들 상에서의 A-GPS(Assisted GPS)를 포함한다. 일 실시예에서, 위치 정보는 명시적 사용자 입력과 조합된다. 일 실시예에서, 본 발명의 시스템은 알려진 주소 정보 및 현재 위치 판정에 기초하여, 사용자가 집에 있을 때를 검출할 수 있다. 이러한 방식으로, 집 밖에 있는 것과는 대조적으로 집에 있을 때 사용자가 관심 있어 할 수 있는 정보의 유형뿐만 아니라 사용자가 집에 있는지 여부에 의존하여 사용자 대신에 호출되어야 하는 서비스들 및 동작들의 유형에 관해 소정 추론들이 이루어질 수 있다.
클라이언트 디바이스들 상에서의 클록들로부터의 시간 정보. 이는 예를 들어 현지 시간 및 시간대를 표시하는 전화기들 또는 다른 클라이언트 디바이스들로부터의 시간을 포함할 수 있다. 추가로, 시간은 사용자 요청들의 콘텍스트에서 예를 들어 "한 시간 내" 및 "오늘 밤"과 같은 구절들을 해석하기 위해 사용될 수 있다.
나침반, 가속도계, 자이로스코프, 및/또는 이동 속도 데이터뿐만 아니라 모바일 또는 핸드헬드 디바이스들, 또는 자동차 제어 시스템들과 같은 내장형 시스템들로부터의 기타 센서 데이터. 이는 또한 원격 제어부들로부터 어플라이언스들 및 게임 콘솔들로의 디바이스 위치설정 데이터를 포함할 수 있다.
클릭하는 것, 및 그래픽 사용자 인터페이스(GUI)를 갖는 임의의 디바이스 상에서의 GUI로부터의 메뉴 선택 및 다른 이벤트들. 추가 예들은 터치 스크린에 대한 터치들을 포함한다.
본 명세서에 기술된 실시예들에 대한 입력은 또한 다이얼로그 및 요청 이력을 비롯한 사용자 상호작용 이력의 콘텍스트를 포함한다.
지능형 자동 어시스턴트(1002)에 의해 생성될 수 있는 상이한 유형들의 출력 데이터/정보의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
디바이스가 턴온되거나 턴오프되게 하는 것, 사운드를 만들게 하는 것, 색상을 변경하게 하는 것, 진동하게 하는 것, 광을 제어하게 하는 것 등과 같은, 디바이스 상에서의 물리적 작용들을 제어하기 위한 액추에이터 출력.
매핑 애플리케이션을 호출하는 것, 전화를 음성 다이얼링하는 것, 이메일 또는 인스턴트 메시지를 전송하는 것, 매체들을 재생하는 것, 캘린더들에 엔트리들을 만드는 것, 태스크 관리기들, 노트 애플리케이션들, 및 기타 애플리케이션들과 같은 다른 애플리케이션들을 디바이스 상에서 호출하는 것.
원격 카메라를 동작시키는 것, 휠체어를 제어하는 것, 원격 스피커들 상에서 음악을 재생하는 것, 원격 디스플레이들 상에서 비디오들을 재생하는 것 등과 같은, 소정의 디바이스에 의해 부착되거나 제어되는 디바이스들에 대한 물리적 작용들을 제어하기 위한 액추에이터 출력.
도 1의 지능형 자동 어시스턴트(1002)는 단지 구현될 수 있는 광범위한 지능형 자동 어시스턴트 시스템 실시예들로부터의 일례일 뿐임이 이해될 수 있다. 지능형 자동 어시스턴트 시스템의 다른 실시예들(도시되지 않음)은, 예를 들어 도 1의 예시적인 지능형 자동 어시스턴트 시스템 실시예에 예시된 것들보다 추가적인, 보다 적은, 그리고/또는 상이한 컴포넌트들/특징들을 포함할 수 있다.
사용자 상호작용
이제, 도 2를 참조하면, 사용자와 지능형 자동 어시스턴트(1002)의 적어도 하나의 실시예 사이의 상호작용의 예가 도시되어 있다. 도 2의 예는 사용자가 스피치 입력 메커니즘일 수 있는 입력 디바이스(1206)(도 4)를 사용하여 지능형 자동 어시스턴트(1002)에 말하는 중이고, 출력이 스크롤가능 스크린일 수 있는 출력 디바이스(1207)(도 4)에 대한 그래픽 레이아웃임을 상정한다. 대화형 스크린(101A)은 사용자가 말한 것(101B)("I'd like a romantic place for Italian food near my office.(나는 내 사무실 근처의 이탈리아식 음식을 먹을 낭만적인 장소를 알고 싶다.)"), 및 그의 결과(finding)들의 개요(101C)("OK, I found these Italian restaurants which reviews say are romantic close to your work:(OK, 당신의 직장에 가깝고 낭만적이라는 리뷰가 있는 이탈리아 레스토랑을 찾았습니다:)"), 및 결과들의 세트(101D)(레스토랑들의 목록의 처음 세 개를 제시함)인 어시스턴트(1002)의 응답을 제시하는 대화형 사용자 인터페이스를 특징으로 한다. 이러한 예에서, 사용자는 목록 중 제1 결과를 클릭하고, 결과는 자동으로 열려서 정보 스크린(101E)으로 나타낸, 레스토랑에 관한 더 많은 정보를 드러내 보인다. 정보 스크린(101E)과 대화형 스크린(101A)은 터치스크린 또는 다른 디스플레이 디바이스와 같은 동일한 출력 디바이스 상에 나타날 수 있는데; 도 2에 묘사된 예들은 동일한 출력 디바이스에 대한 두 개의 상이한 출력 상태들이다.
일 실시예에서, 정보 스크린(101E)은 예를 들어 하기 중 임의의 것 또는 모두를 포함한, 다양한 서비스들로부터 수집되고 조합된 정보를 보여준다:
일 실시예에서, 정보 스크린(101E)은 또한 어시스턴트(1002)가 사용자 대신에 제공할 수 있는, 하기를 포함한 서비스들의 일부 예들을 포함한다:
도 2의 예에 도시된 바와 같이, 일 실시예에서, 어시스턴트(1002)는 간단한 데이터베이스 애플리케이션들 이상의 지능을 포함하며, 이러한 지능은 예를 들어 하기와 같다.
"이탈리아식 음식을 위한 장소(place for Italian food)"를 "이탈리아식 레스토랑(Italian restaurant)"으로 해석하는 것과 같이 그 언어 입력으로부터 의미론적 의도를 추론함;
의미론적 의도를 온라인 서비스들을 이용하기 위한 전략으로 조작할 수 있게 하고 사용자를 대신하여 그 전략을 실행함(예컨대, 낭만적 장소에 대한 요구를, 소정 장소를 "낭만적(romantic)"으로 기술한 리뷰를 위한 온라인 리뷰 사이트들을 조회하는 전략으로 조작할 수 있게 함).
지능형 자동 어시스턴트 컴포넌트들
다양한 실시예들에 따르면, 지능형 자동 어시스턴트(1002)는 복수의 상이한 유형들의 컴포넌트들, 디바이스들, 모듈들, 프로세스들, 시스템들 등을 포함할 수 있으며, 이들은 예를 들어 하드웨어 및/또는 하드웨어와 소프트웨어의 조합들의 사용을 통해 구현될 수 있고 그리고/또는 실체화될 수 있다. 예를 들어, 도 1의 예시적인 실시예에 예시된 바와 같이, 어시스턴트(1002)는 하기의 유형들의 시스템들, 컴포넌트들, 디바이스들, 프로세서들 등 중 하나 이상(또는 이들의 조합들)을 포함할 수 있다:
도 7과 관련하여 기술된 바와 같이, 특정 클라이언트/서버 기반 실시예들에서, 이들 컴포넌트들 중 일부 또는 모두는 클라이언트(1304)와 서버(1340) 사이에 분산될 수 있다.
이제, 예시의 목적들을 위해, 지능형 자동 어시스턴트(1002)의 예시적인 특정 실시예의 상이한 유형들의 컴포넌트들 중 적어도 일부가 도 1의 예시적인 지능형 자동 어시스턴트(1002) 실시예를 참조하여 더 상세히 기술될 것이다.
능동적 온톨로지들(1050)
능동적 온톨로지들(1050)은 지능형 자동 어시스턴트들(1002)의 실시예들의 다른 부분들로부터의 모델들, 컴포넌트들, 및/또는 데이터를 통합한 통합형 인프라구조로서 기능한다. 컴퓨터 및 정보 과학의 분야에서, 온톨로지들은 인스턴스들에서 분류들/유형들, 관계들, 특질들/속성들, 및 그들의 인스턴스화와 같은 데이터 및 지식 표현을 위한 구조들을 제공한다. 온톨로지들은 예를 들어 데이터 및 지식의 모델들을 구축하는 데 이용된다. 지능형 자동 시스템(1002)의 일부 실시예들에서, 온톨로지들은 도메인 모델들과 같은 모델들을 구축할 모델링 프레임워크의 일부이다.
본 발명의 맥락 내에서, "능동적 온톨로지"(150)는 또한 실행 환경으로서 기능할 수 있는데, 여기에서는 각개의 프로세싱 요소들이 온톨로지형 방식(예컨대, 각개의 특질들, 및 다른 프로세싱 요소들과의 관계들을 가짐)으로 배열된다. 이들 프로세싱 요소들은 지능형 자동 어시스턴트(1002)의 태스크들 중 적어도 일부를 실행한다. 임의의 다수의 능동적 온톨로지들(1050)이 제공될 수 있다.
적어도 하나의 실시예에서, 능동적 온톨로지들(1050)은, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
을 포함하지만 이들로 제한되지는 않는 다양한 모델 및 데이터 컴포넌트들로부터의 모델들 및 데이터를 통합한다.
온톨로지 기반 편집 툴이 새로운 모델들, 데이터 구조들, 데이터베이스 개요(database schemata), 및 표현들을 개발하도록 동작할 수 있는 데이터 모델링 환경으로서 작용한다.
라이브 실행 환경으로서 작용하여, 도메인(1056), 태스크(1086), 및/또는 다이얼로그 모델들(1087), 언어 패턴 인식기들, 및/또는 어휘(1058), 및 단기 개인 메모리(1052), 장기 개인 메모리(1054), 및/또는 서비스 조정(1082)의 결과들에서 찾은 것과 같은 사용자 특정 정보의 요소들에 대한 값들을 인스턴스화한다. 예를 들어, 능동적 온톨로지의 일부 노드들은 레스토랑 및 그의 속성인 레스토랑 이름과 같은 도메인 개념들에 대응할 수 있다. 라이브 실행 동안, 이들 능동적 온톨로지 노드들은 특정 레스토랑 엔티티의 아이덴티티 및 그것의 이름으로, 그리고 그것의 이름이 자연어 입력 발언에서의 단어들에 어떻게 대응하는지에 의해 인스턴스화될 수 있다. 따라서, 이러한 실시예에서, 능동적 온톨로지는 레스토랑들이 이름들을 갖는 아이덴티티들을 갖는 엔티티들이라는 개념을 특정하는 모델링 환경으로서, 그리고 그들 모델링 노드들과 엔티티 데이터베이스들 및 자연어의 분석들로부터의 데이터의 동적 결합들을 저장하기 위해 기능하고 있다.
일 실시예에서, 본 명세서에 기술된 능동적 온톨로지들(1050)의 기능들, 동작들, 작용들, 및/또는 기타 특징들 중 적어도 일부가 적어도 부분적으로 2006년 9월 8일자로 출원된 "지능형 자동 어시스턴트를 구축하기 위한 방법 및 장치"에 대한 미국 특허 출원 제11/518,292호에 기재된 다양한 방법들 및 장치들을 이용하여 구현될 수 있다.
적어도 하나의 실시예에서, 능동적 온톨로지(1050)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 능동적 온톨로지들(1050)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
예를 들어 지능형 자동 어시스턴트(1002)의 컴포넌트들 사이에서 교환되는 사용자 특정 입력들 및 출력들의 상태를 보전하는 것, 단기 개인 메모리의 콘텐츠, 사용자 세션의 이전의 상태들로부터 행해진 추론 등을 포함하지만 이들로 한정되지 않는, 사용자 세션마다 동적으로 인스턴스화되는 데이터.
이러한 방식으로, 능동적 온톨로지들(1050)은 지능형 자동 어시스턴트(1002) 내의 다양한 컴포넌트들의 요소들을 통합하는 데 이용된다. 능동적 온톨로지(1050)는 저자, 설계자, 또는 시스템 구축자가 컴포넌트들을 통합하여 하나의 컴포넌트의 요소들이 다른 컴포넌트들의 요소들과 식별되게 한다. 저자, 설계자, 또는 시스템 구축자는 이에 따라 컴포넌트들을 더 쉽게 조합할 수 있고 통합할 수 있다.
이제, 도 8을 참조하면, 일 실시예에 따른, 능동적 온톨로지(1050)의 단편의 예가 도시되어 있다. 이러한 예는 능동적 온톨로지들(1050)에 의해 제공될 수 있는 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들 중 일부를 예시하는 것을 돕도록 의도된다.
도 8에서의 능동적 온톨로지(1050)는 레스토랑 및 식사 이벤트의 표현들을 포함한다. 이러한 예에서, 레스토랑은 그것의 이름(1612), 서빙된 요리(1615), 및 그것의 위치(1613)와 같은 속성들을 갖는 개념(1610)인데, 이는 이어서 거리 주소(1614)에 대한 속성들을 갖는 구조화된 노드로서 모델링될 수 있다. 식사 이벤트의 개념은 정찬 인원(1617)(인원수(1619)를 가짐) 및 기간(1618)을 포함하는 노드(1616)로서 모델링될 수 있다.
능동적 온톨로지들은 도메인 모델들(1056)을 포함할 수 있고 그리고/또는 이들을 참조할 수 있다. 예를 들어, 도 8은 레스토랑 개념(1610) 및 식사 이벤트 개념(1616)에 링크된 외식 도메인 모델(1622)을 묘사한다. 이러한 예에서, 능동적 온톨로지(1050)는 외식 도메인 모델(1622)을 포함하며; 구체적으로, 능동적 온톨로지(1050)의 적어도 두 개의 노드들, 즉 레스토랑(1610) 및 식사 이벤트(1616)가 또한 외식 도메인 모델(1622)에 포함되고 그리고/또는 그에 의해 참조된다. 이러한 도메인 모델은, 특히, 외식이 레스토랑들에서 발생하는 식사 이벤트를 수반한다는 아이디어를 표현한다. 레스토랑(1610) 및 식사 이벤트(1616)라는 능동적 온톨로지 노드들이 또한 도 8에서 파선으로 도시된 바와 같이 지능형 자동 어시스턴트의 다른 컴포넌트들에 포함되고 그리고/또는 그에 의해 참조된다.
능동적 온톨로지들은 태스크 흐름 모델들(1086)을 포함할 수 있고 그리고/또는 이들을 참조할 수 있다. 예를 들어, 도 8은 도메인 특정 종류의 이벤트인 식사 이벤트(1616)에 적용되는 도메인들과는 독립적인 이벤트들의 계획을 모델링하는 이벤트 계획 태스크 흐름 모델(1630)을 묘사하고 있다. 여기서, 능동적 온톨로지(1050)는 이벤트들 및 이들을 계획함에 있어서 수반되는 다른 개념들을 표현하는 노드들을 포함하는 일반적인 이벤트 계획 태스크 흐름 모델(1630)을 포함한다. 능동적 온톨로지(1050)는 또한 특정 종류의 이벤트인 식사 이벤트(1616)라는 노드를 포함한다. 이러한 예에서, 식사 이벤트(1616)는 도메인 모델(1622) 및 태스크 흐름 모델(1630) 양측 모두에 포함되거나 이들에 의해 참조되며, 이들 모델들 양측 모두는 능동적 온톨로지(1050)에 포함되고 그리고/또는 이에 의해 참조된다. 또한, 식사 이벤트(1616)는 도 8에서 파선에 의해 도시된 바와 같이 능동적 온톨로지들이 지능형 자동 어시스턴트의 다른 컴포넌트들에 의해 포함되고 그리고/또는 그들에 의해 참조되는 다양한 컴포넌트들의 요소들을 어떻게 통합할 수 있는지의 일례이다.
능동적 온톨로지들은 다이얼로그 흐름 모델들(1087)을 포함할 수 있고 그리고/또는 이들을 참조할 수 있다. 예를 들어, 도 8은 개념(1619)에서 표현되는 바와 같은 인원수라는 제약부분 크기에 대해 인스턴스화된 트랜잭션에 요구되는 제약들의 값들을 얻기 위한 다이얼로그 흐름 모델(1642)을 묘사한다. 또한, 능동적 온톨로지(1050)는 다이얼로그 흐름 모델들(1087)과 같은 다양한 컴포넌트들을 관련시키고 통합하기 위한 프레임워크를 제공한다. 이러한 경우에 있어서, 다이얼로그 흐름 모델(1642)은 이러한 특정 예에서 능동적 온톨로지 노드 인원수(1619)에 대해 인스턴트화되는 제약의 일반적인 개념을 갖는다. 이러한 특정 다이얼로그 흐름 모델(1642)은 도메인과는 독립적으로 제약들의 추상화를 실시한다. 능동적 온톨로지(1050)는 식사 이벤트 노드(1616)에 관련된 인원 노드(1617)의 인원수 속성(1619)을 표현한다. 그러한 실시예에서, 지능형 자동 어시스턴트(1002)는 능동적 온톨로지(1050)를 이용하여, 외식에 대한 도메인 모델(1622)의 일부인 식사 이벤트 개념(1616)을 표현하는 노드들의 클러스터의 일부로서 인원수(1619)의 속성으로 다이얼로그 흐름 모델(1642)에서의 제약의 개념을 통합한다.
능동적 온톨로지들은 서비스 모델들(1088)을 포함할 수 있고 그리고/또는 이들을 참조할 수 있다. 예를 들어, 도 8은 레스토랑 예약 서비스(1672)의 모델을 묘사하는데, 이는 트랜잭션을 수행하기 위해 그 서비스에 요구되는 값들을 얻기 위한 다이얼로그 흐름 단계와 연관된다. 이러한 예에서, 레스토랑 예약 서비스에 대한 서비스 모델(1672)은 예약이 인원수(1619)에 대한 값(예약할 테이블에 앉는 사람들의 수)을 요구한다는 것을 명시한다. 능동적 온톨로지(1050)의 인원수(1619)라는 개념은 또한 트랜잭션에 대한 제약에 관하여 사용자에게 문의하기 위한 일반적인 다이얼로그 흐름 모델(1642)에 링크되거나 그에 관련되며; 이러한 예에 있어서, 인원수는 다이얼로그 흐름 모델(1642)에 대한 요구되는 제약이다.
능동적 온톨로지들은 도메인 엔티티 데이터베이스들(1072)을 포함할 수 있고 그리고/또는 이들을 참조할 수 있다. 예를 들어, 도 8은 능동적 온톨로지(1050)에서 레스토랑 노드(1610)와 연관된 레스토랑들의 도메인 엔티티 데이터베이스(1652)를 묘사한다. 능동적 온톨로지(1050)는 지능형 자동 어시스턴트(1002)의 다양한 컴포넌트들에 의해 이용될 수 있는 바와 같이 레스토랑(1610)의 일반적인 개념을 표현하며, 그것은 레스토랑 데이터베이스(1652)에서 특정 레스토랑들에 관한 데이터에 의해 인스턴스화된다.
능동적 온톨로지들은 어휘 데이터베이스들(1058)을 포함할 수 있고 그리고/또는 이들을 참조할 수 있다. 예를 들어, 도 8은 이탈리아식, 프랑스식 등과 같은 요리의 어휘 데이터베이스(1662), 및 "프랑스식", "대륙식", "지방식(provincial)" 등과 같은 각각의 요리와 연관된 단어들을 묘사한다. 능동적 온톨로지(1050)는 레스토랑 노드(1610)를 포함하고, 이러한 노드는 요리 데이터베이스(1662) 내의 요리의 표현과 연관된 요리 서빙 노드(1615)와 관련된다. 따라서, 요리에 대한 데이터베이스(1662) 내의 특정 엔트리, 예컨대 "프랑스식"은 능동적 온톨로지(1050)를 통해 서빙된 요리(1615)의 개념의 인스턴스로서 관련된다.
능동적 온톨로지들은 온톨로지(1050)에서의 개념들 또는 다른 표현들에 맵핑될 수 있는 임의의 데이터베이스를 포함할 수 있고 그리고/또는 이를 참조할 수 있다. 도메인 엔티티 데이터베이스들(1072) 및 어휘 데이터베이스들(1058)은 단지 능동적 온톨로지(1050)가 데이터베이스들을 서로 그리고 자동 어시스턴트(1002)의 다른 컴포넌트들과 어떻게 통합할 수 있는지의 두 개의 예들일 뿐이다. 능동적 온톨로지들은 저자, 설계자, 또는 시스템 구축자가 데이터베이스 내의 표현들과 온톨로지(1050)에서의 표현들 사이의 중대한 맵핑을 특정하게 한다. 예를 들어, 레스토랑 데이터베이스(1652)에 대한 데이터베이스 개요는 문자열들 및 수들의 테이블로서, 또는 업체의 더 큰 데이터베이스로부터의 투사로서, 또는 데이터베이스(1652)에 적합한 임의의 기타 표현으로서 레스토랑을 표현할 수 있다. 이러한 예시적인 능동적 온톨로지(1050)에서, 레스토랑(1610)은 데이터베이스 테이블들과는 상이하게 구성된, 속성들 및 관계들을 갖는 개념 노드이다. 이러한 예에서, 온톨로지(1050)의 노드들은 데이터베이스 개요의 요소들과 연관된다. 데이터베이스 및 온톨로지(1050)의 통합은 능동적 온톨로지(1050) 내의 더 큰 세트들의 모델들 및 데이터와 관련하여 데이터베이스들 내의 특정 데이터 엔트리들을 해석하기 위한 그리고 그들에 대해 작용하기 위한 통합 표현을 제공한다. 예를 들어, 단어 "프랑스식"은 요리 데이터베이스(1662) 내의 엔트리일 수 있다. 이러한 예에서, 데이터베이스(1662)가 능동적 온톨로지(1050)에 통합되기 때문에, 그 동일한 단어 "프랑스식"은 또한 식사 이벤트를 계획함에 있어서 수반되는, 레스토랑에서 서빙되는 가능한 요리로서의 해석을 가지며, 이러한 요리는 레스토랑 예약 서비스들 등을이용할 때 이용할 제약으로서 기능한다. 따라서, 능동적 온톨로지들은 데이터베이스들을 모델링 및 실행 환경으로 통합하여 자동 어시스턴트(1002)의 다른 컴포넌트들과 상호 동작할 수 있다.
전술한 바와 같이, 능동적 온톨로지(1050)는 저자, 설계자, 또는 시스템 구축자가 컴포넌트들을 통합하게 하며; 따라서, 도 8의 예에서, 다이얼로그 흐름 모델(1642)에서의 제약과 같은 컴포넌트의 요소들은 레스토랑 예약 서비스(1672)의 요구되는 파라미터와 같은 다른 컴포넌트들의 요소들과 식별될 수 있다.
능동적 온톨로지들(1050)은, 예를 들어 모델들, 데이터베이스들, 및 컴포넌트들 사이의 관계가 하기 중 임의의 것이 되는 모델들, 데이터베이스들, 및 컴포넌트들의 구성들로서 구체화될 수 있다:
예를 들어, 이제, 도 9을 참조하면, 지능형 자동 어시스턴트 시스템(1002)의 대안적인 실시예의 예가 도시되어 있으며, 여기서 도메인 모델들(1056), 어휘(1058), 언어 패턴 인식기들(1060), 단기 개인 메모리(1052), 및 장기 개인 메모리(1054) 컴포넌트들은 능동적 온톨로지(1050)와 연관된 공통 컨테이너 하에 구성되고, 능동적 입력 도출 컴포넌트(들)(1094), 언어 해석기(1070) 및 다이얼로그 흐름 프로세서(1080)와 같은 다른 컴포넌트들은 API 관계를 통해 능동적 온톨로지(1050)와 연관된다.
능동적 입력 도출 컴포넌트(들)(1094)
적어도 하나의 실시예에서, 능동적 입력 도출 컴포넌트(들)(1094)(전술한 바와 같이 독립형으로 또는 서버 및 클라이언트 컴포넌트들 양측 모두를 포함하는 구성으로 구현될 수 있음)는 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
사용자 또는 사용자의 환경으로부터 그리고/또는 그들의 필요성(들) 또는 요청(들)에 관한 정보로부터 입력을 도출하고, 가능하게 하고, 그리고/또는 프로세싱함. 예를 들어, 사용자가 레스토랑을 찾고 있는 경우, 입력 도출 모듈이 위치, 시간, 요리, 가격 등에 대한 사용자의 제약들 또는 선호도에 관한 정보를 얻을 수 있다.
능동적 입력 도출을 수행함으로써, 어시스턴트(1002)는 입력 프로세싱의 초기 단계에서 의도를 중의성 해소할 수 있다. 예를 들어, 입력이 스피치에 의해 제공되는 실시예에서, 파형이 서버(1340)로 전송될 수 있는데, 여기서 단어들이 추출되고 의미론적 해석이 수행된다. 이어서, 그러한 의미론적 해석의 결과들은 능동적 입력 도출을 구동하는 데 이용될 수 있으며, 이는 대안적 후보 단어들의 의미론적 일치도뿐만 아니라 발음 매칭에 기초하여 그들 중에서 선택하도록 사용자에게 제공할 수 있다.
적어도 하나의 실시예에서, 능동적 입력 도출 컴포넌트(들)(1094)은 어시스턴트(1002)의 실시예들에 의해 제공되는 서비스들 중 하나 이상에 의해 작용될 수 있는 입력들을 향해 사용자를 능동적으로, 자동으로, 그리고 동적으로 안내한다. 이제, 도 10을 참조하면, 일 실시예에 따른, 능동적 입력 도출 컴포넌트(들)(1094)에 대한 동작의 방법을 묘사한 흐름도가 도시되어 있다.
절차가 시작된다(20). 단계 21에서, 어시스턴트(1002)는 하나 이상의 입력 채널들 상에 인터페이스들을 제공할 수 있다. 예를 들어, 사용자 인터페이스는 대화형 상호작용의 임의의 단계에서 말하거나 타이핑하거나 탭핑하는 사용자 옵션들을 제공할 수 있다. 단계 22에서, 사용자는 스피치를 녹음하기 시작하는 버튼을 누르는 것 또는 타이핑을 위한 인터페이스를 불러오는 것과 같은 하나의 양식에 대한 입력을 개시함으로써 입력 채널을 선택한다.
적어도 하나의 실시예에서, 어시스턴트(1002)는 선택된 양식에 대한 디폴트 제안들을 제공한다(단계 23). 즉, 사용자가 그 양식에 대한 임의의 입력을 입력하기 전에 현재 콘텍스트에서 관련된 옵션들(24)을 제공한다. 예를 들어, 텍스트 입력 양식에서, 어시스턴트(1002)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 텍스트형 요청들 또는 커맨드들을 시작할 공통 단어들의 목록을 제공할 수 있다: 명령형 동사(예컨대, 찾아라, 구매하라, 예약하라, 구하다, 호출하라, 조회하라, 스케줄링하라 등), 명사(예컨대, 레스토랑, 영화, 이벤트, 업체 등), 또는 담론의 도메인들을 명명하는 메뉴형 옵션들(예컨대, 기상, 스포츠, 뉴스 등).
사용자가 단계 25에서 디폴트 옵션들 중 하나를 선택하고 단계 30에서 자동제출하라는 우선권이 설정되는 경우, 절차는 즉시 복귀될 수 있다. 이는 종래의 메뉴 선택의 동작과 유사하다.
그러나, 초기 옵션이 부분 입력으로서 취해질 수 있거나, 또는 사용자가 부분 입력을 입력하기 시작할 수 있다(단계 26). 임의의 입력 지점에서, 적어도 하나의 실시예에서, 사용자는 부분 입력이 완성됨을 나타내도록 선택할 수 있는데, 이는 절차가 복귀되게 한다(단계 22).
단계 28에서, 선택되든 또는 입력되든, 최근의 입력이 누적 입력에 추가된다.
단계 29에서, 시스템은, 현재 입력, 및 관련된 그리고/또는 중요한 입력을 구성하는 것에 대한 제약들의 다른 소스들이 주어지면, 관련된 다음으로 가능성있는 입력들을 제안한다.
적어도 하나의 실시예에서, 사용자 입력에 대한 제약들의 소스들(예를 들어, 단계 23 및 단계 29에서 이용됨)은 어시스턴트(1002)에 포함될 수 있는 다양한 모델들 및 데이터 소스들 중 하나 이상이며, 이들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만 이들로 한정되지 않는다:
어휘(1058). 예를 들어, 현재 입력과 매칭되는 단어들 또는 구절들이 제안될 수 있다. 적어도 하나의 실시예에서, 어휘는 능동적 온톨로지들, 도메인 모델들, 태스크 모델들, 다이얼로그 모델들, 및/또는 서비스 모델들의 임의의 또는 하나 이상의 노드들과 연관될 수 있다.
도메일 모델을 인스턴스화할 수 있거나 또는 달리 그들과 일치할 수 있는 입력들을 제한할 수 있는 도메인 모델들(1056). 예를 들어, 적어도 하나의 실시예에서, 도메인 모델들(1056)은 현재 입력과 일치할 개념들, 관계들, 속성들, 및/또는 인스턴스들을 제안하는 데 이용될 수 있다.
임의의 사전 입력 또는 사전 입력의 일부, 및/또는 사용자와의 상호작용의 이력에 관한 임의의 기타 속성 또는 사실과 매칭되는 데 사용될 수 있는 단기 메모리(1052). 예를 들어, 부분 입력은, 가설에 근거하든(예컨대, 쿼리에서 언급됨) 그리고/또는 물리적으로든(예컨대, 위치 센서들로부터 판정된 바와 같음), 사용자가 세션에서 조우한 도시들에 대해 매칭될 수 있다.
적어도 하나의 실시예에서, 최근 입력들, 요청, 또는 결과들의 의미론적 패러프레이징들이 현재 입력에 대해 매칭될 수 있다. 예를 들어, 사용자가 이전에 "라이브 음악"을 요청했고 콘서트 목록을 획득하고, 이어서 능동적 입력 도출 환경에서 "음악"을 타이핑한 경우, 제안은 "라이브 음악" 및/또는 "콘서트"를 포함할 수 있다.
장기 메모리로부터의 매칭 아이템들을 제안하는 데 사용될 수 있는 장기 개인 메모리(1054). 그러한 매칭 아이템들은 예를 들어 하기 중 하나 이상 또는 임의의 조합을 포함할 수 있다: 저장되는 도메인 엔티티들(예컨대, "즐겨찾는" 레스토랑, 영화, 극장, 장소, 및 기타 등등), 할일 아이템들, 목록 아이템들, 캘린더 엔트리들, 연락처/주소록 내의 인물명, 연락처/주소록 내에 언급된 거리명 또는 도시명, 및 기타 등등.
모델에서의 이름, 카테고리, 능력, 또는 임의의 다른 속성에 의해 채용할 가능성있는 서비스들을 제안하는 데 이용될 수 있는 서비스 능력 모델들(1088). 예를 들어, 사용자는 선호되는 리뷰 사이트의 이름의 일부분을 타이핑할 수 있고, 어시스턴트(1002)는 리뷰를 위해 그 리뷰 사이트에 질의하기 위한 완전한 커맨드를 제안할 수 있다.
적어도 하나의 실시예에서, 능동적 입력 도출 컴포넌트(들)(1094)는 대화형 인터페이스, 예를 들어 사용자 및 어시스턴트가 대화 방식으로 주거니 받거니 발언함으로써 통신하는 인터페이스를 사용자에게 제시한다. 능동적 입력 도출 컴포넌트(들)(1094)는 다양한 유형들의 대화형 인터페이스들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다.
적어도 하나의 실시예에서, 능동적 입력 도출 컴포넌트(들)(1094)은 다양한 유형들의 대화형 인터페이스들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있는데, 여기서 어시스턴트(1002)는 다이얼로그 모델들에 따라 사용자로부터의 정보를 위해 프롬프트할 대화의 더미(pile)들을 이용한다. 다이얼로그 모델들은 예를 들어 서비스를 수행하는 데 필요한 정보를 도출하는 데 요구되는 일련의 단계들과 같은, 다이얼로그를 실행하기 위한 절차를 표현할 수 있다.
적어도 하나의 실시예에서, 능동적 입력 도출 컴포넌트(들)(1094)은 사용자가 입력을 타이핑하거나, 말하거나, 또는 달리 생성하는 중에 있는 동안 사용자에게 실시간으로 제약들 및 안내를 제공한다. 예를 들어, 능동적 도출은 어시스턴트(1002)의 일 실시예에 의해 인식가능한 텍스트 입력들 및/또는 어시스턴트(1002)의 실시예들에 의해 제공되는 하나 이상의 서비스들에 의해 서비스될 수 있는 텍스트 입력들을 타이핑하도록 사용자를 안내할 수 있다. 이는 사용자로부터의 제한되지 않은 입력을 수동적으로 기다리는 것 이상의 이점을 갖는데, 그 이유는 그것이 사용자의 노고가 유용할 수 있거나 유용할 수 있었던 입력들에 대해 초점을 두게 할 수 있고 그리고/또는 그것이 어시스턴트(1002)의 실시예들이 사용자가 그것을 입력하고 있음에 따라 실시간으로 입력에 대한 그것의 해석을 적용할 수 있게 하기 때문이다.
본 명세서에 기술된 능동적 입력 도출의 기능들, 동작들, 작용들, 및/또는 기타 특징들 중 적어도 일부가 적어도 부분적으로 2006년 9월 8일자로 출원된 "지능형 자동 어시스턴트를 구축하기 위한 방법 및 장치"에 대한 미국 특허 출원 제11/518,292호에 기재된 다양한 방법들 및 장치들을 이용하여 구현될 수 있다.
특정 실시예들에 따르면, 능동적 입력 도출 컴포넌트(들)(1094)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다.
상이한 실시예들에 따르면, 능동적 입력 도출 컴포넌트(들)(1094)의 하나 이상의 상이한 스레드들 또는 인스턴스들이 능동적 입력 도출 컴포넌트(들)(1094)의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 하나 이상의 상이한 유형들의 최소 임계치 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 능동적 입력 도출 컴포넌트(들)(1094)의 하나 이상의 상이한 스레드들 또는 인스턴스들의 개시 및/또는 구현을 트리거할 수 있는 조건들 또는 이벤트들의 다양한 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만 이들로 한정되지 않는다:
사용자 세션의 시작. 예를 들어, 사용자 세션이 어시스턴트(1002)의 일 실시예인 애플리케이션을 시작하는 경우, 인터페이스는, 예를 들어 버튼을 눌러서 스피치 입력 시스템을 개시시킴으로써 또는 텍스트 필드를 클릭하여 텍스트 입력 세션을 개시함으로써 사용자가 입력을 개시하게 하는 기회를 제공할 수 있다.
그것이 질문에 대한 응답을 요청하는 경우처럼, 또는 어느 것을 선택할 것인지로부터 다음 단계들의 메뉴를 제공하는 경우처럼, 어시스턴트(1002)가 입력을 위해 사용자를 명시적으로 프롬프트하는 경우.
적어도 하나의 실시예에서, 능동적 입력 도출 컴포넌트(들)(1094)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 능동적 입력 도출 컴포넌트(들)(1094)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
어시스턴트(1002)의 실시예들의 일부일 수 있는 다양한 모델들 및 데이터 소스들 중 임의의 것으로부터의 데이터 - 다양한 모델들 및 데이터 소스들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
상이한 실시예들에 따르면, 능동적 입력 도출 컴포넌트(들)(1094)는 능동적 도출 절차들을 예를 들어 하기 중 하나 이상(또는 이들의 조합들)에 적용할 수 있다:
능동적 타이핑 입력 도출
이제, 도 11을 참조하면, 일 실시예에 따른, 능동적 타이핑 입력 도출을 위한 방법을 묘사한 흐름도가 도시되어 있다.
방법이 시작된다(단계 110). 어시스턴트(1002)는, 예를 들어 입력 디바이스(1206)를 통해 부분 텍스트 입력을 수신한다(단계 111). 부분 텍스트 입력은, 예를 들어 텍스트 입력 필드에서 어느 정도까지만 타이핑된 글자들을 포함할 수 있다. 어느 때든, 사용자는, 예를 들어 엔터 키를 누르는 것에 의한 바와 같이, 타이핑된 입력이 완성됨을 나타낼 수 있다(단계 112). 완성되지 않은 경우, 제안 생성기가 후보 제안들(116)을 생성한다(단계 114). 이들 제안들은 본 명세서에 기술된 정보 또는 제약들의 소스들 중 임의의 것에 기초한 통사론적, 의미론적, 및/또는 기타 종류들의 제안일 수 있다. 제안이 선택되는 경우(단계 118), 입력은 선택된 제안을 포함하도록 변환된다(단계 117).
적어도 하나의 실시예에서, 제안들은 현재 입력에 대한 확장을 포함할 수 있다. 예를 들어, "rest"에 대한 제안은 "restaurants"일 수 있다.
적어도 하나의 실시예에서, 제안들은 현재 입력의 부분들의 대체를 포함할 수 있다. 예를 들어, "rest"에 대한 제안은 "먹을 장소"일 수 있다.
적어도 하나의 실시예에서, 제안들은 현재 입력의 부분들의 대체 및 리프레이징(rephrasing)을 포함할 수 있다. 예를 들어, 현재 입력이 "스타일의 레스토랑을 찾아라."인 경우, 제안은 "이탈리아식"일 수 있고, 제안이 선택된 경우, 전체 입력이 "이탈리아식 레스토랑을 찾아라."로 재기록될 수 있다.
적어도 하나의 실시예에서, 단계 118에서 선택이 이루어진 정보가 텍스트형 입력과 함께 보전되도록, 되전송되는 생성된 입력에는 주석이 첨부된다(단계 119). 이는 예를 들어 그것이 되전송될 때 문자열의 기초를 이루는 의미론적 개념들 또는 엔티티들이 문자열과 연관될 수 있게 하는데, 이는 후속 언어 해석의 정확도를 개선한다.
이제, 도 12 내지 도 21을 참조하면, 일 실시예에 따른, 능동적 타이핑 입력 도출을 위한 일부 절차들 중 일부분을 묘사한 스크린샷들이 도시되어 있다. 스크린샷들은 미국 캘리포니아주 쿠퍼티노 소재의 애플 인크.(Apple Inc.)로부터 입수가능한 아이폰(iPhone)과 같은 스마트폰 상에 구현된 바와 같은, 어시스턴트(1002)의 일 실시예의 예를 묘사한다. 입력은 터치스크린을 통해 온-스크린 키보드 기능을 포함한 그러한 디바이스에 제공된다. 당업자는, 스크린샷들이 단지 예시적인 일 실시예를 묘사하고, 본 발명의 기술들이 다른 디바이스들 상에서 다른 레이아웃들 및 배열들을 이용하여 구현될 수 있다는 것을 인식할 것이다.
도 12에서, 스크린(1201)은 필드(1203)에 어떠한 입력도 제공되지 않은 경우에 제시된 최고 레벨 세트의 제안들(1202)을 포함한다. 이는 입력이 없는 경우에 도 11의 단계 114에 적용되는 도 10의 입력 없음 단계 23에 대응한다.
도 13에서, 스크린(1301)은 온-스크린 키보드(1304)를 사용하여 필드(1203)에 입력된 부분 사용자 입력(1305)의 제안된 완성문들(1303)을 제공하기 위한 어휘 사용의 예를 묘사한다. 이들 제안된 완성문들(1303)은 능동적 입력 도출(1094)의 기능의 일부일 수 있다. 사용자는 문자열 "comm"을 포함하는 부분 사용자 입력(1305)을 입력했다. 어휘 컴포넌트(1058)는 이러한 문자열의 세 개의 상이한 종류들의 인스턴스들에 대한 맵핑을 제공했는데, 인스턴스들은 제안된 완성문들(1303)로서 나열된다: 구절 "community & local events"은 이벤트 도메인의 카테고리이고; "chambers of commerce"는 지역 업체 검색 도메인의 카테고리이며, "Jewish Community Center"는 지역 업체의 인스턴스명이다. 어휘 컴포넌트(1058)는 그들과 같은 명칭 공간들의 관리 및 데이터 검색을 제공할 수 있다. 사용자는 진행(Go) 버튼(1306)을 탭핑하여 그 또는 그녀가 입력을 입력하는 것을 완료했음을 나타낼 수 있고; 이는 어시스턴트(1002)가 사용자 입력의 단위로서 완성된 텍스트 문자열을 계속하게 한다.
도 14에서, 스크린(1401)은 부분 문자열 "wh"(1305)에 대한 제안된 의미론적 완성문들(1303)이 타이핑된 파라미터들을 갖는 전체 구절들을 포함하는 예를 묘사한다. 이들 종류들의 제안들은 본 명세서에 기술된 입력 제약들의 다양한 모델들 및 소스들 중 하나 이상의 것의 사용에 의해 가능해질 수 있다. 예를 들어, 도 14에 도시된 일 실시예에서, "what is happening in city(도시에서 무슨 일이 발생하고 있는가)"는 지역 이벤트 도메인의 위치 파라미터의 능동적 도출이고; "where is business name(업체명이 어디에 있는가)"는 지역 업체 검색 도메인의 업체명 제약의 능동적 도출이고; "what is showing at the venue name(장소명에서 무엇이 보이고 있는가)"는 지역 이벤트 도메인의 장소명 제약의 능동적 도출이고; 그리고 "what is playing at the movie theater(영화관에서 무엇을 상영하고 있는가)"는 지역 이벤트 도메인의 영화관명 제약의 능동적 도출이다. 이들 예들은 제안된 완성문들이 이전에 입력된 쿼리들의 데이터베이스로부터 단순히 인출된다기보다는 모델들에 의해 생성됨을 예시한다.
도 15에서, 스크린(1501)은, 사용자가 필드(1203)에 추가적인 텍스트(1305)를 입력한 후, 동일한 예의 계속을 묘사한다. 제안된 완성문들(1303)은 추가적인 텍스트(1305)와 매칭하도록 업데이트된다. 이러한 예에서, 도메인 엔티티 데이터베이스(1072)로부터의 데이터, 즉 "f"로 시작하는 이름을 갖는 장소들이 사용되었다. 이는 "f"로 시작하는 모든 단어들보다 상당히 더 작고 더 의미론적으로 관련있는 세트의 제안들임에 주목한다. 또한, 제안은 모델을 적용함으로써, 이러한 경우에는 이름을 갖는 업체들인 장소에서 벌어지는 것으로 지역 이벤트를 표현하는 도메인 모델을 적용함으로써 생성된다. 제안은 지역 이벤트 서비스를 이용하는 경우에 잠재적으로 중요한 엔트리들을 작성할 입력들을 능동적으로 도출한다.
도 16에서, 스크린(1601)은, 사용자가 제안된 완성문들(1303) 중 하나를 선택한 후, 동일한 예의 계속을 묘사한다. 능동적 도출은 희망하는 정보의 유형을 추가로 특정하도록 사용자를 프롬프트함으로써, 여기서는 사용자가 선택할 수 있게 되는 다수의 지정자들(1602)을 제시함으로써 계속된다. 이러한 예에서, 이들 지정자들은 도메인, 태스크 흐름, 및 다이얼로그 흐름 모델들에 의해 생성된다. 도메인은 지역 이벤트들이며, 이는 소정 위치에서의 날짜에 발생하고 이벤트명들 및 특징 수행자들을 갖는 이벤트들의 카테고리들을 포함한다. 이러한 실시예에서, 이들 5개의 옵션들이 사용자에게 제공된다는 사실은 사용자들이 아직 입력하지 않은 제약들에 대해 사용자들이 질문을 받아야 함을 나타내는 다이얼로그 흐름 모델로부터, 그리고 이들 5개의 제약들이 어시스턴트가 이용가능한 지역 이벤트 서비스들에 대한 파라미터들임을 나타내는 서비스 모델로부터 생성된다. 심지어 "by category" 및 "featured"과 같이 지정자들로서 사용할 바람직한 구절들의 선택조차도 도메인 어휘 데이터베이스들로부터 생성된다.
도 17에서, 스크린(1701)은 사용자가 지정자들(1602) 중 하나를 선택한 후, 동일한 예의 계속을 묘사한다.
도 18에서, 스크린(1801)은 동일한 예의 계속을 묘사하는데, 여기에서는 선택된 지정자(1602)가 필드(1203)에 추가되었고, 추가적인 지정자들(1602)이 제시된다. 사용자는 지정자들(1602) 중 하나를 선택할 수 있고, 그리고/또는 키보드(1304)를 통해 추가적인 텍스트 입력을 제공할 수 있다.
도 19에서, 스크린(1901)은 동일한 예의 계속을 묘사하는데, 여기에서는 선택된 지정자(1602)가 필드(1203)에 추가되었고, 더 많은 지정자들(1602)이 제시된다. 이러한 예에서, 이전에 입력된 제약들은 능동적으로 중복해서 도출되지 않는다.
도 20에서, 스크린(2001)은 동일한 예의 계속을 묘사하는데, 여기에서는 사용자가 Go 버튼(1306)을 탭핑하였다. 사용자의 입력이 박스(2002)에 보여지고, 메시지가 박스(2003)에 제시되어, 사용자의 입력에 응답하여 수행되고 있는 쿼리에 대해 사용자에게 피드백을 제공한다.
도 21에서, 스크린(2101)은 동일한 예의 계속을 묘사하는데, 여기에서는 결과들을 찾아냈다. 메시지가 박스(2102)에 제시된다. 결과들(2103)은 사용자가 추가 세부사항들을 보거나, 식별된 이벤트를 저장하거나, 티켓들을 구매하거나, 노트들을 추가하거나, 또는 기타 등등을 하게 하는 입력 요소들을 포함한다.
일 스크린(2101)에서, 다른 디스플레이되는 스크린들은 스크롤가능하여, 사용자가 스크린(2001) 또는 다른 이전에 제시된 스크린들을 보도록 그리고 원하는 경우에 쿼리를 변화시키도록 상향으로 스크롤하게 한다.
능동적 스피치 입력 도출
이제, 도 22를 참조하면, 일 실시예에 따른, 음성 또는 스피치 입력을 위한 능동적 입력 도출에 대한 방법을 묘사한 흐름도가 도시되어 있다.
방법이 시작된다(단계 221). 어시스턴트(1002)는 청각적 신호의 형태인 음성 또는 스피치 입력을 수신한다(단계 121). 스피치-텍스트 서비스(122) 또는 프로세서가 청각적 신호의 소정 세트의 후보 텍스트 해석들(124)을 생성한다. 일 실시예에서, 스피치-텍스트 서비스(122)는 예를 들어 미국 매사추세츠주 벌링턴 소재의 뉘앙스 커뮤니케이션스, 인크.(Nuance Communications, Inc.)로부터 입수가능한 뉘앙스 인식기를 사용하여 구현된다.
일 실시예에서, 어시스턴트(1002)는 통계적 언어 모델들을 채용하여, 스피치 입력(121)의 후보 텍스트 해석들(124)을 생성한다.
추가로, 일 실시예에서, 통계적 언어 모델들은 도 8에 도시된 어시스턴트(1002)의 다양한 모델들에서 발생하는 단어, 명칭, 및 구절을 찾도록 조정된다. 예를 들어, 적어도 하나의 실시예에서, 통계적 언어 모델들에는 하기 중 일부 또는 모두로부터의 단어들, 명칭들, 및 구절들이 주어진다: 도메인 모델들(1056)(예컨대, 레스토랑 및 식사 이벤트들과 관련된 단어들 및 구절들), 태스크 흐름 모델들(1086)(예컨대, 이벤트를 계획하는 것과 관련된 단어들 및 구절들), 다이얼로그 흐름 모델들(1087)(예컨대, 레스토랑 예약을 위한 입력들을 수집하는 데 필요한 제약들과 관련된 단어들 및 구절들), 도메인 엔티티 데이터베이스들(1072)(예컨대, 레스토랑 이름들), 어휘 데이터베이스들(1058)(예컨대, 요리 이름들), 서비스 모델들(1088)(예컨대, 오픈테이블(OpenTable)과 같은 서비스 제공자 이름들), 및/또는 능동적 온톨로지(1050)의 임의의 노드와 연관된 임의의 단어들, 명칭들, 또는 구절들.
일 실시예에서, 통계적 언어 모델들은 또한 장기 개인 메모리(1054)로부터의 단어들, 명칭들, 및 구절들을 찾도록 조정된다. 예를 들어, 통계적 언어 모델들에는 할일 아이템들, 목록 아이템들, 개인용 노트들, 캘린더 엔트리들, 연락처/주소록 내의 사람 이름들, 이메일 주소들, 연락처/주소록에 언급된 거리명들 또는 도시명들, 및 기타 등등으로부터의 텍스트가 주어질 수 있다.
순위 평가 컴포넌트가 후보 해석들(124)을 분석하고, 그들이 지능적 자동 어시스턴트(1002)의 통사론적 및/또는 의미론적 모델들에 얼마나 잘 맞는지에 따라 그들의 순위를 평가한다(단계 126). 사용자 입력에 대한 제약들의 임의의 소스들이 이용될 수 있다. 예를 들어, 일 실시예에서, 어시스턴트(1002)는 통사론적 및/또는 의미론적 관점에서 해석들이 얼마나 잘 분석되는지, 도메인 모델, 태스크 흐름 모델, 및/또는 다이얼로그 모델, 및/또는 기타 등등에 따라 스피치-텍스트 해석기의 출력의 순위를 평가할 수 있는데: 그것은 텍스트 해석들(124) 내의 단어들의 다양한 조합들이 능동적 온톨로지(1050) 및 그의 연관 모델들의 개념들, 관계들, 엔티티들, 및 속성들과 얼마나 잘 맞을 것인지 평가한다. 예를 들어, 스피치-텍스트 서비스(122)가 2개의 후보 해석들 "점심을 위한 이탈리아식 음식" 및 "점심을 위한 이탈리아제 신발"을 생성하는 경우, 의미론적 관련성에 의한 순위 평가(단계 126)는 그것이 어시스턴트(1002)의 능동적 온톨로지(1050)의 노드들과 더 잘 매칭되는 경우에 "점심을 위한 이탈리아식 음식"의 순위를 더 높게 평가할 수 있다(예컨대, 단어들 "이탈리아식", "음식", 및 "점심"은 모두가 온톨로지(1050)에서의 노드들과 매칭하고, 그들은 모두가 온톨로지(1050) 내의 관계들에 의해 연결되지만, 반면에 단어 "신발"은 온톨로지(1050)와 매칭하지 않거나 또는 외식 도메인 네트워크의 일부가 아닌 노드와 매칭된다).
다양한 실시예들에서, 도 28에 도시된 자연어 프로세싱 절차의 임의의 실시예를 비롯한, 텍스트 입력들의 해석을 위해 어시스턴트(1002)에 의해 이용되는 알고리즘들 또는 절차들은 스피치-텍스트 서비스(122)에 의해 생성되는 후보 텍스트 해석들(124)의 순위를 평가하고 그들의 점수를 채점하는 데 이용될 수 있다.
일 실시예에서, 순위 평가 컴포넌트(126)가 해석들(124)로부터의 최고 평가 순위 스피치 해석의 순위가 특정된 임계치를 초과하여 평가되는 것으로 판정하는 경우(단계 128), 최고 평가 순위 해석은 자동으로 선택될 수 있다(단계 130). 해석의 순위가 특정된 임계치를 초과하여 평가되지 않는 경우, 스피치의 가능성있는 후보 해석들(134)이 사용자에게 제시된다(단계 132). 이어서, 사용자는 디스플레이된 선택안들 사이에서 선택할 수 있다(단계 136).
다양한 실시예들에서, 디스플레이된 선택안들 사이에서의 사용자 선택(단계 136)은, 예를 들어 도 16과 관련하여 기술된 다중모드 입력의 모드들 중 임의의 것을 비롯한 임의의 입력 모드에 의해 달성될 수 있다. 그러한 입력 모드들은 능동적으로 도출되는 타이핑된 입력(2610), 능동적으로 도출되는 스피치 입력(2620), 입력을 위해 능동적으로 제시되는 GUI(2640), 및/또는 기타 등등을 제한없이 포함한다. 일 실시예에서, 사용자는, 예를 들어 탭핑 또는 스피킹에 의해 후보 해석들(134) 사이에서 선택할 수 있다. 스피킹의 경우에 있어서, 새로운 스피치 입력의 가능성있는 해석은 제공된 선택안들의 작은 세트(134)에 의해 고도로 제한된다. 예를 들어, "당신이 말한 것이 이탈리아식 음식을 의미합니까 아니면 이탈리아제 신발을 의미합니까?"로 제공되는 경우, 사용자는 단지 "음식"이라고만 말할 수 있고, 어시스턴트는 이를 구절 "이탈리아식 음식"과 매칭할 수 있으며, 그것이 입력의 다른 광역적 해석들과 혼동되지 않게 할 수 있다.
입력이 자동으로 선택되든(단계 130) 또는 사용자에 의해 선택되는 경우(단계 136), 생성된 입력(138)이 되전송된다. 적어도 하나의 실시예에서, 되전송된 입력(138)에는 주석이 첨부되어, 단계 136에서 행해진 선택들에 관한 정보가 텍스트형 입력과 함께 보존되게 한다. 이는, 예를 들어 문자열의 기초를 이루는 의미론적 개념들 또는 엔티티들이 되돌려지는 경우에 그들이 문자열과 연관되게 하는데, 이는 후속 언어 해석의 정확도를 개선한다. 예를 들어, "이탈리아식 음식"이 요리 = 이탈리아식 음식의 의미론적 해석에 기초하여 후보 해석들(134) 중 하나로서 제공된 경우, 기계 판독가능 의미론적 해석이 주석을 첨부한 텍스트 입력(138)으로서 문자열 "이탈리아식 음식"의 사용자 선택과 함께 전송될 수 있다.
적어도 하나의 실시예에서, 후보 텍스트 해석들(124)이 스피치-텍스트 서비스(122)의 출력으로서 수신된 스피치 해석들에 기초하여 생성된다.
적어도 하나의 실시예에서, 후보 텍스트 해석들(124)은 그들의 의미론적 의미에 관해서 스피치 해석들을 패러프레이징함으로써 생성된다. 일부 실시예들에서는, 동일한 스피치 해석의 다수의 패러프레이징들이 존재하여 상이한 어감 또는 동음 이의어 대안들을 제공할 수 있다. 예를 들어, 스피치-텍스트 서비스(122)가 "place for meet(만나기 위한 장소)"를 나타내는 경우, 사용자에게 제시되는 후보 해석들은 "place to meet(만날 장소(지역 업체들))" 및 "place for meat(식사를 위한 장소(레스토랑))"로 패러프레이징될 수 있다.
적어도 하나의 실시예에서, 후보 텍스트 해석들(124)은 올바른 하위문자열들에 대한 제안을 포함한다.
적어도 하나의 실시예에서, 후보 텍스트 해석들(124)은 본 명세서에 기술된 바와 같이 통사론적 및 의미론적 분석을 이용하여 후보 해석들의 올바른 하위문자열들에 대한 제안을 포함한다.
적어도 하나의 실시예에서, 사용자가 후보 해석을 선택하는 경우, 그것이 되전송된다.
적어도 하나의 실시예에서, 사용자는 해석이 되전송되기 전에 해석을 편집하도록 인터페이스를 제공받는다.
적어도 하나의 실시예에서, 사용자는 인터페이스를 제공받아서, 입력이 되전송되기 전에 더 많은 음성 입력을 계속한다. 이는 입력 발언을 증가적으로 구축하여, 1회 반복 시에, 통사론적 및 의미론적 정정, 제안, 및 안내를 얻을 수 있게 한다.
적어도 하나의 실시예에서, 사용자는 인터페이스를 제공받아서 능동적 타이핑 입력 도출(도 11과 관련하여 전술함)의 방법 중 단계 136으로부터 단계 111로 직접 진행한다. 이는 타이핑되고 스피킹된 입력을 인터리빙하여, 통사론적 및 의미론적 정정, 제안, 및 안내를 하나의 단계에서 얻을 수 있게 한다.
적어도 하나의 실시예에서, 사용자는 인터페이스를 제공받아서 능동적 타이핑 입력 도출의 일 실시예의 단계 111로부터 능동적 스피치 입력 도출의 일 실시예로 직접 진행한다. 이는 타이핑되고 스피킹된 입력을 인터리빙하여, 통사론적 및 의미론적 정정, 제안, 및 안내를 하나의 단계에서 얻을 수 있게 한다.
능동적 GUI 기반 입력 도출
이제, 도 23을 참조하면, 일 실시예에 따른, GUI 기반 입력에 대한 능동적 입력 도출을 위한 방법을 묘사한 흐름도가 도시되어 있다.
방법이 시작된다(단계 140). 어시스턴트(1002)는, 예를 들어 링크들 및 버튼들을 포함할 수 있는 그래픽 사용자 인터페이스(GUI)를 출력 디바이스(1207) 상에 제시한다(단계 141). 사용자는 적어도 하나의 GUI 요소와 상호작용한다(단계 142). 데이터(144)가 수신되고, 균일한 포맷으로 전환된다(단계 146). 이어서, 전환된 데이터가 되전송된다.
적어도 하나의 실시예에서, GUI의 요소들 중 일부가 컴퓨터 프로그램으로 기록된다기보다는 능동적 온톨로지의 모델들로부터 동적으로 생성된다. 예를 들어, 어시스턴트(1002)는 소정 세트의 제약들을 제공하여, 스크린 상에서 태핑하기 위한 영역들로서 레스토랑 예약 서비스를 안내하는데, 이때 각각의 영역은 제약의 명칭 및/또는 값을 표현한다. 예를 들어, 스크린은 제약들인 요리, 위치, 및 가격대에 대한 영역들을 갖는, 동적으로 생성된 GUI 레이아웃의 행(row)들을 가질 수 있다. 능동적 온톨로지의 모델들이 변화하는 경우, GUI 스크린은 재프로그래밍하지 않고서 자동으로 변화할 것이다.
능동적 다이얼로그 제안 입력 도출
도 24는 일 실시예에 따른, 다이얼로그 흐름의 레벨에서의 능동적 입력 도출에 대한 방법을 묘사한 흐름도이다. 방법이 시작된다(단계 150). 어시스턴트(1002)는 가능성있는 응답들(152)을 제안한다(단계 151). 사용자는 제안된 응답을 선택한다(단계 154). 수신된 입력은 균일한 포맷으로 전환된다(단계 156). 이어서, 전환된 데이터가 되전송된다.
적어도 하나의 실시예에서, 단계 151에서 제공된 제안들이 다이얼로그 및/또는 태스크 흐름에서의 후속 단계들로서 제공된다.
적어도 하나의 실시예에서, 제안들은, 예를 들어 도메인 및/또는 태스크 모델로부터의 파라미터들을 이용하여, 쿼리를 구체화할 옵션들을 제공한다. 예를 들어, 요청의 가정된 위치 또는 시간을 변화시키도록 제공될 수 있다.
적어도 하나의 실시예에서, 제안들은 언어 해석 절차 또는 컴포넌트에 의해 주어지는 불명료한 대안적인 해석들 사이에서 선택할 옵션들을 제공한다.
적어도 하나의 실시예에서, 제안들은 언어 해석 절차 또는 컴포넌트에 의해 주어지는 불명료한 대안적인 해석들 사이에서 선택할 옵션들을 제공한다.
적어도 하나의 실시예에서, 제안들은 작업 흐름 연관 다이얼로그 흐름 모델(1087) 내의 다음 단계들 사이에서 선택할 옵션들을 제공한다. 예를 들어, 다이얼로그 흐름 모델(1087)은, 하나의 도메인(예컨대, 레스토랑 정찬)에 대한 제약들을 수집한 후, 어시스턴트(1002)가 다른 관련된 도메인들(예컨대, 영화 가까운 곳)을 제안해야 한다는 것을 제안할 수 있다.
관련 이벤트들에 대한 능동적 모니터링
적어도 하나의 실시예에서, 비동기식 이벤트들은 다른 양식들의 능동적 도출 입력과 유사한 방식으로 입력들로서 다루어질 수 있다. 따라서, 그러한 이벤트들은 어시스턴트(1002)에 입력들로서 제공될 수 있다. 일단 해석되면, 그러한 이벤트들은 임의의 다른 입력과 유사한 방식으로 다루어질 수 있다.
예를 들어, 항공편 상태 변화는 사용자에게 전송될 경보 통지를 개시할 수 있다. 항공편이 지연되는 것으로 나타나는 경우, 어시스턴트(1002)는 검출된 이벤트에 기초하여 대안적인 항공편들을 제시는 것, 다른 제안들을 행하는 것, 및 기타 등등에 의해 다이얼로그를 계속할 수 있다.
그러한 이벤트들은 임의의 유형의 것일 수 있다. 예를 들어, 어시스턴트(1002)는 사용자가 방금 귀가했거나 행방불명임(특정 루트를 벗어났음), 또는 주식 가격이 임계 값에 이르름, 또는 사용자가 관심있어 하는 텔레비전 쇼가 시작되고 있음, 또는 관심있는 음악가가 그 지역을 순회하고 있음을 검출할 수 있다. 이들 상황들 중 임의의 상황에서, 어시스턴트(1002)는 사용자가 그 자신 또는 그녀 자신이 조회를 개시하게 하는 것처럼 사실상 동일한 방식으로 다이얼로그를 진행할 수 있다. 일 실시예에서, 이벤트들은 심지어 다른 디바이스들로부터 제공된 데이터에 기초하여, 예를 들어 동료가 점심식사 후에 언제 복귀했는지 사용자에게 알릴 수 있다(동료의 디바이스는 그러한 이벤트를 사용자의 디바이스에 시그널링할 수 있으며, 그 때에 사용자의 디바이스 상에 설치된 시간 어시스턴트(1002)가 그에 따라 응답한다).
일 실시예에서, 이벤트들은 캘린더, 시계, 리마인더, 또는 할일 애플리케이션으로부터의 통지 또는 경보일 수 있다. 예를 들어, 저녁 식사 날짜에 관한 캘린더 애플리케이션으로부터의 경보는 정찬 이벤트에 관하여 어시스턴트(1002)와의 다이얼로그를 개시할 수 있다. 다이얼로그는 사용자가 "샌프란시스코에서 저녁 식사 2인"과 같은 다가오는 저녁 식사 이벤트에 관한 정보를 방금 말했거나 타이핑한 것처럼 진행할 수 있다.
일 실시예에서, 가능성있는 이벤트 트리거(162)의 콘텍스트는 사람, 장소, 시간, 및 기타 데이터에 관한 정보를 포함할 수 있다. 이들 데이터는 프로세싱의 다양한 단계들에서 사용할 어시스턴트(1002)로의 입력의 일부로서 이용될 수 있다.
일 실시예에서, 이벤트 트리거(162)의 콘텍스트로부터의 이들 데이터는 사용자로부터의 스피치 또는 텍스트 입력들의 중의성을 해소하는 데 이용될 수 있다. 예를 들어, 캘린더 이벤트 경보가 이벤트에 초대된 사람의 이름을 포함하는 경우, 그 정보는 동일한 이름 또는 유사한 이름을 갖는 여러 명의 사람들과 매칭될 수 있는 입력의 중의성을 해소하는 것을 도울 수 있다.
이제, 도 25를 참조하면, 일 실시예에 따른, 관련 이벤트들에 대한 능동적 모니터링을 위한 방법을 묘사한 흐름도가 도시되어 있다. 이러한 예에서, 이벤트 트리거 이벤트들은 소정 세트들의 입력(162)이다. 방법이 시작된다(단계 160). 어시스턴트(1002)는 그러한 이벤트들을 모니터링한다(단계 161). 검출된 이벤트들은 지능형 자동 어시스턴트(1002)에서 다른 컴포넌트들로부터 입수가능한 모델들, 데이터, 및 정보를 이용하여 의미론적 관련성에 대해 필터링될 수 있고 분류될 수 있다(단계 164). 예를 들어, 항공편 상태의 변화를 보고하는 이벤트는 사용자를 위한 단기 또는 장기 메모리 기록들이 사용자가 그 항공편에 타고 있고 그리고/또는 그것에 관해 어시스턴트(1002)에 조회했음을 나타내는 경우에 더 높은 관련성을 부여받을 수 있다. 이어서, 이러한 분류 및 필터링은 사용자에 의한 리뷰를 위해 맨 위 이벤트들만을 제시할 수 있는데, 이 사용자는 이어서 하나 이상을 고르도록 선택할 수 있고 그들에 따라 조치를 취할 수 있다.
이벤트 데이터는 균일한 입력 포맷으로 전환되고(단계 166), 되전송된다.
적어도 하나의 실시예에서, 어시스턴트(1002)는 사용자 주목을 위해 제안되었던 이벤트들과 연관된 서비스들을 순향적으로 제공할 수 있다. 예를 들어, 항공편 상태 경보가 항공편을 놓칠 수 있음을 나타내는 경우, 어시스턴트(1002)는 사용자에게 여행 일정표를 재계획하거나 호텔을 예약하기 위한 태스크 흐름을 제안할 수 있다.
입력 도출 컴포넌트(들) 예:
하기 예는 능동적 입력 도출 컴포넌트(들)(1094)에 의해 제공될 수 있는 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들 중 일부를 설명하는 것을 돕도록 의도된다.
예: 커맨드 완성(사용자가 어시스턴트(1002)에게 말할 수 있는 것)
사용자는 "당신은 무엇을 하고 싶습니까?"를 입력하도록 하는 일반적인 명령어를 갖는 텍스트 입력 박스와 대면하고 있다. 콘텍스트 및 사용자 입력에 따라, 여러 개의 시스템 응답들 중 임의의 것이 제공된다. 예들이 이하에 나타나 있다.
사례: 널(null) 입력
사례: 첫 단어 입력
사례: 핵심 단어 입력
사례: 인수(argument)에 대한 프롬프트하기
사례: 기준들의 제안
사례: 기준들의 추가
사례: 위치 또는 기타 제약들의 추가
사례: 제약, 미지의 태스크 또는 도메인으로부터 시작
예: 이름 완성
여기서는, 사용자가 커맨드들 중 임의의 것을 수락하지 않은 채 일부 텍스트를 타이핑했거나, 그 또는 그녀가 엔티티 이름을 갖는 커맨드를 방금 연장하고 있는 중이다. 시스템은 콘텍스트에 따라 이름들을 완성하고자 시도할 수 있다. 그것은 또한 도메인의 중의성을 해소한다.
사례: 콘텍스트가 없는 단어들
사례: 콘텍스트를 갖는 이름
예: 소정 세트로부터의 값들을 선택
여기서, 사용자는 위치, 시간, 요리, 또는 장르와 같은 특정 파라미터에 대한 값을 입력하라는 시스템 요청에 응답하고 있다. 사용자는 목록으로부터 선택할 수 있거나 또는 값을 입력할 수 있다. 그녀가 타이핑함에 따라 목록으로부터의 매칭 아이템들이 옵션들로서 보여진다. 예들이 이하에 나타나 있다.
사례: 값 분류 선택
예: 이전 커맨드들을 재사용
이전 쿼리들은 또한 자동완성 인터페이스에서 완성할 옵션들이다. 그들은 (입력 필드가 비어 있고 알려진 제약들이 없는 경우에) 단지 문자열들로서 매칭될 수 있거나, 또는 그들은 소정 상황들에 있는 경우에 관련된 것으로서 제안될 수 있다.
사례: 이전 쿼리들에 대한 완성문
예: 개인 메모리 아이템들을 검색함
어시스턴트(1002)는 사용자와 연관된 개인 메모리 내의 소정 이벤트들 및/또는 엔티티들을 기억할 수 있다. 자동완성은 그러한 기억된 아이템들에 기초하여 수행될 수 있다. 예들이 하기에 나타난다.
사례: 개인 메모리 내의 이벤트들 및 엔티티들을 완성
다중모드 능동적 입력 도출
적어도 하나의 실시예에서, 능동적 입력 도출 컴포넌트(들)(1094)은 복수의 입력 양식들로부터의 입력을 프로세싱할 수 있다. 적어도 하나의 양식이 제안된 옵션들로부터 선택하기 위한 특정 종류들의 입력들 및 방법들을 이용하는 능동적 입력 도출 절차로 구현될 수 있다. 본 명세서에 기술된 바와 같이, 그들은 텍스트 입력, 스피치 입력, GUI 기반 입력, 다이얼로그의 콘텍스트 내의 입력, 및/또는 이벤트 트리거들로부터 비롯된 입력에 대한 능동적 입력 도출을 위한 절차들의 실시예들일 수 있다.
적어도 하나의 실시예에서, 지능형 자동 어시스턴트(1002)의 단일 인스턴스의 경우, 하나 이상의 타이핑된 입력, 스피치 입력, GUI 입력, 다이얼로그 입력, 및/또는 이벤트 입력(또는 이들의 임의의 조합)에 대한 지원이 있을 수 있다.
이제, 도 26을 참조하면, 일 실시예에 따른, 다중모드 능동적 입력 도출을 위한 방법을 묘사한 흐름도가 도시되어 있다. 방법이 시작된다(단계 100). 입력들은 입력 양식들 중 하나 이상 또는 이들의 임의의 조합으로부터 임의의 순차로 동시에 수신될 수 있다. 따라서, 방법은 타이핑된 입력(2610), 스피치 입력(2620), GUI 기반 입력(2640), 다이얼로그의 콘텍스트 내의 입력(2650), 및/또는 이벤트 트리거들로부터 비롯된 입력(2660)을 능동적으로 도출하는 단계를 포함한다. 이들 입력 소스들 중 임의의 것 또는 모두가 통합형 입력 포맷(2690)으로 통합되고 되전송된다. 통합형 입력 포맷(2690)은 지능형 자동 어시스턴트(1002)의 다른 컴포넌트들이 특정 양식의 입력과는 무관하게 설계되고 동작할 수 있게 한다.
다중 양식들 및 레벨들에 대한 능동적 안내를 제공하는 것은 별도의 양식들에 이용가능한 것들을 넘어서는 입력에 대한 제약 및 안내를 가능하게 한다. 예를 들어, 스피치, 텍스트, 및 다이얼로그 단계들 중에서 선택하도록 제공된 제안들의 종류들은 독립적이어서, 그들의 조합은 개별적인 양식들 또는 레벨들에 능동적 도출 기술들을 추가하는 것 이상의 현저한 개선이 된다.
본 명세서에 기술된 바와 같은 제약들의 다수의 소스들(통사론적/언어학적, 어휘, 엔티티 데이터베이스들, 도메인 모델들, 태스크 모델들, 서비스 모델들 등), 및 이들 제약들(스피치, 텍스트, GUI, 다이얼로그, 및 비동기식 이벤트들)이 능동적으로 적용될 수 있는 다수의 장소들을 조합하는 것은 인간-기계 상호작용을 위한 새로운 레벨의 기능을 제공한다.
도메인 모델 컴포넌트(들)(1056)
도메인 모델 컴포넌트(들)(1056)는 도메인의 개념들, 엔티티들, 관계들, 속성들, 및 인스턴스들의 표현들을 포함한다. 예를 들어, 외식 도메인 모델(1622)은 이름, 주소 및 전화 번호를 갖는 업체로서의 레스토랑의 개념, 레스토랑과 연관된 인원수, 날짜 및 시간을 갖는 식사 이벤트의 개념을 포함할 수 있다.
적어도 하나의 실시예에서, 어시스턴트(1002)의 도메인 모델 컴포넌트(들)(1056)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
도메인 모델 컴포넌트(들)(1056)는 입력의 도출(100), 자연어의 해석(200), 서비스들로의 디스패치(400), 및 출력의 생성(600)을 비롯한 여러 개의 프로세스들을 위해 자동 어시스턴트(1002)에 의해 이용될 수 있다.
도메인 모델 컴포넌트(들)(1056)는 레스토랑의 이름과 같이 입력의 능동적 도출(100) 및 자연어의 프로세싱(200)에 이용될 수 있는 도메인 개념 또는 엔티티와 매칭될 수 있는 단어들의 목록들을 제공할 수 있다.
도메인 모델 컴포넌트(들)(1056)는, 예를 들어 요리가 업체 엔티티들과 연관될 수 있도록, 자연어를 해석하기 위한 부분 정보 사이의 관계를 제시할 수 있다(예컨대, "멕시코 향토 음식"은 "스타일 = 멕시코식인 레스토랑을 찾아라."로서 해석될 수 있고, 이러한 추론은 도메인 모델(1056)에서의 정보 때문에 가능하다).
도메인 모델 컴포넌트(들)(1056)는, 예를 들어 특정 웹 서비스가 레스토랑들의 평가를 제공할 수 있도록, 서비스 조정(1082)에 이용되는 서비스들에 관한 정보를 구성할 수 있다.
도메인 모델 컴포넌트(들)(1056)는, 예를 들어 개념들, 관계들, 속성들, 및 인스턴스들을 기술하는 기본 방식들을 제공함으로써, 자연어 패러프레이징을 생성하기 위한 정보 및 기타 출력 포맷화를 위한 정보를 제공할 수 있다.
특정 실시예들에 따르면, 도메인 모델 컴포넌트(들)(1056)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 도메인 모델 컴포넌트(들)(1056)의 다양한 태양들, 특징들, 및/또는 기능들이 하기 유형들의 시스템들, 컴포넌트들, 시스템들, 디바이스들, 절차들, 프로세스들 등 중 하나 이상(또는 이들의 조합들)에 의해 수행될 수 있고, 구현될 수 있고, 그리고/또는 개시될 수 있다:
도메인 모델 컴포넌트(들)(1056)는 개념들, 관계들, 속성들, 및 인스턴스들을 표현하는 데이터 구조들로서 구현될 수 있다. 이들 데이터 구조들은 메모리, 파일들, 또는 데이터베이스들 내에 저장될 수 있다.
도메인 모델 컴포넌트(들)(1056)의 생성 및 유지는, 예를 들어 파일들의 직접 편집, 데이터베이스 트랜잭션을 거쳐, 그리고/또는 도메인 모델 편집 툴들의 사용을 통해 달성될 수 있다.
도메인 모델 컴포넌트(들)(1056)는 모델들을 서버들 및 사용자들을 위한 모델들의 인스턴스화와 조합하는 능동적 온톨로지들(1050)의 일부로서 또는 그들과 연관시켜 구현될 수 있다.
다양한 실시예들에 따르면, 도메인 모델 컴포넌트(들)(1056)의 하나 이상의 상이한 스레드들 또는 인스턴스들이 도메인 모델 컴포넌트(들)(1056)의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 하나 이상의 상이한 유형들의 최소 임계치 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 예를 들어, 도메인 모델 컴포넌트(들)(1056)의 하나 이상의 상이한 스레드들 또는 인스턴스들의 트리거 개시 및/또는 구현은 입력 도출, 입력 해석, 태스크 및 도메인 식별, 자연어 프로세싱, 서비스 조정, 및/또는 사용자들을 위한 출력의 포맷화 동안을 비롯한, 도메인 모델 정보가 요구되는 경우에 트리거될 수 있다.
적어도 하나의 실시예에서, 도메인 모델 컴포넌트(들)(1056)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 예를 들어, 도메인 모델 컴포넌트(들)(1056)로부터의 데이터는 어휘(1058), 언어 패턴 인식기들(1060), 다이얼로그 흐름 모델들(1087), 태스크 흐름 모델들(1086), 서비스 능력 모델들(1088), 도메인 엔티티 데이터베이스들(1072), 및 기타 등등을 포함한 컴포넌트들을 모델링하는 다른 모델과 연관될 수 있다. 예를 들어, 레스토랑으로서 분류되는 도메인 엔티티 데이터베이스들(1072)에서의 업체는 외식 도메인 모델 컴포넌트들에서 보전되는 유형 식별자들에 의해 알려질 수 있다.
도메인 모델 컴포넌트(들) 예:
이제, 도 27을 참조하면, 일 실시예에 따른, 도메인 모델 컴포넌트(들)(1056)에 의해 제공될 수 있는 다양한 유형의 기능들, 동작들, 작용들, 및/또는 기타 특징들의 예를 예시한 소정 세트의 스크린샷들이 도시되어 있다.
적어도 하나의 실시예에서, 도메인 모델 컴포넌트(들)(1056)는, 여러 개의 각개의 데이터 소스들 및 서비스들로부터의 데이터를 조합하고, 예를 들어 이름, 주소, 업체 카테고리, 전화 번호, 장기 개인 메모리에 저장하기 위한 식별자, 이메일을 통해 공유하기 위한 식별자, 다수의 소스들로부터의 리뷰, 지도 좌표, 개인 노트 등등을 포함하는 레스토랑에 관해 스크린(103A, 103B)에 보이는 정보의 제시를 가능하게 하는 통합 데이터 표현이다.
언어 해석기 컴포넌트(들)(1070)
적어도 하나의 실시예에서, 어시스턴트(1002)의 언어 해석기 컴포넌트(들)(1070)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
사용자 입력은 사용자의 의도를 이해하는 데 기여할 수 있는 사용자 및 그/그녀의 디바이스 콘텍스트로부터의 임의의 정보, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있는 정보를 포함할 수 있다: 단어들의 시퀀스, 입력을 도출하는 데 수반되는 제스처들 또는 GUI 요소들의 아이덴티티, 다이얼로그의 현재 콘텍스트, 현재 디바이스 애플리케이션 및 그의 현재 데이터 객체들, 및/또는 위치, 시간 등등과 같이 사용자에 관해 획득되는 임의의 기타 개인 동적 데이터. 예를 들어, 일 실시예에서, 사용자 입력은 능동적 입력 도출(1094)로부터 비롯된 균일한 주석 첨가 입력 포맷(2690)의 형태이다.
분석 결과들은 사용자 입력에서의 데이터와, 개념들, 관계들, 속성들, 인스턴스들, 및/또는 모델들에서의 기타 노드들 및/또는 데이터 구조들, 데이터베이스들, 및/또는 사용자 의도 및/또는 콘텍스트의 기타 표현들과의 연관이다. 분석 결과 연관은 사용자 입력의 소정 세트들 및 시퀀스들의 단어들, 신호들, 및 기타 요소들로부터, 본 명세서에 기술된 하나 이상의 연관된 개념들, 관계들, 속성들, 인스턴스들, 기타 노드들, 및/또는 데이터 구조들로의 복합적 맵핑일 수 있다.
사용자 입력을 분석하며, 사용자 입력에서의 데이터를, 스피치의 통사론적 부분들을 표현하는 구조들, 여러 단어로 된 이름을 비롯한 절구들 및 구절들, 문장 구조, 및/또는 기타 문법적 그래프 구조들을 표현하는 구조들과 연관시키는 분석 결과들인 소정 세트의 통사론적 분석 결과들을 식별한다. 통사론적 분석 결과들은 도 28과 관련하여 기술되는 자연어 프로세싱 절차의 요소(212)에서 기술된다.
사용자 입력을 분석하며, 사용자 입력에서의 데이터를, 개념들, 관계들, 속성들, 엔티티들, 양들, 명제들, 및/또는 의미 및 사용자 의도의 기타 표현들을 표현하는 구조들과 연관시키는 분석 결과들인 소정 세트의 의미론적 분석 결과들을 식별한다. 일 실시예에서, 의미 및 의도의 이들 표현들은, 도 28과 관련하여 기술되는 자연어 프로세싱 절차의 요소(220)에서 기술되는 바와 같이, 온톨로지들에서의 모델들 또는 데이터베이스들 및/또는 노드들의 소정 세트들 및/또는 그들의 요소들 및/또는 인스턴스들에 의해 표현된다.
특정 실시예들에 따르면, 언어 해석기 컴포넌트(들)(1070)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다.
상이한 실시예들에 따르면, 언어 해석기 컴포넌트(들)(1070)의 하나 이상의 상이한 스레드들 또는 인스턴스들이 언어 해석기 컴포넌트(들)(1070)의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 하나 이상의 상이한 유형들의 최소 임계치 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 언어 해석기 컴포넌트(들)(1070)의 하나 이상의 상이한 스레드들 또는 인스턴스들의 개시 및/또는 구현을 트리거할 수 있는 조건들 또는 이벤트들의 다양한 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만 이들로 한정되지 않는다:
적어도 하나의 실시예에서, 언어 해석기 컴포넌트(들)(1070)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 그러한 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 언어 해석기 컴포넌트(들)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
이제, 또한 도 29를 참조하면, 일 실시예에 따른, 자연어 프로세싱을 예시한 스크린샷이 도시되어 있다. 사용자는 구절 "who is playing this weekend at the fillmore(이번주 주말에 필모어에서 누가 경기를 하게 되지)"로 이루어진 언어 입력(2902)을 (음성 또는 텍스트를 통해) 입력했다. 이러한 구절은 스크린(2901) 상에서 사용자에게 다시 반향(echo)된다. 언어 해석기 컴포넌트(들)(1070)는 입력(2902)을 프로세싱하고 분석 결과를 생성한다. 분석 결과는 그 입력을, "fillmore"와 매칭되는 이름을 갖는 임의의 이벤트 장소에서 다가오는 주말들 중 임의의 날에 대해 스케줄링되는 지역 이벤트들을 보이라는 요청과 연관시킨다. 분석 결과의 패러프레이징이 스크린(2901) 상에 2903으로서 제시된다.
이제, 또한, 도 28을 참조하면, 일 실시예에 따른, 자연어 프로세싱에 대한 방법의 예를 묘사한 흐름도가 도시되어 있다.
방법이 시작된다(단계 200). 도 29의 예에서의 문자열 "who is playing this weekend at the fillmore"와 같은 언어 입력(202)이 수신된다. 일 실시예에서, 입력은 현재 사용자 위치 및 현지 시간과 같은 현재 콘텍스트 정보에 의해 증강된다. 단어/구절 매칭(210) 시, 언어 해석기 컴포넌트(들)(1070)는 사용자 입력과 개념들 사이에서 연관성을 찾는다. 이러한 예에서, 이벤트 장소에서 문자열 "playing"과 목록들의 개념 사이에서; 문자열 (사용자의 현재 현지 시간과 함께) "this weekend"과 다가오는 주말을 표현하는 대략적인 기간의 인스턴스 생성 사이에서; 그리고, 문자열 "fillmore"와 장소의 이름 사이에서 연관성이 발견된다. 단어/구절 매칭(210)은, 예를 들어 언어 패턴 인식기들(1060), 어휘 데이터베이스(1058), 능동적 온톨로지(1050), 단기 개인 메모리(1052), 및 장기 개인 메모리(1054)로부터의 데이터를 이용할 수 있다.
언어 해석기 컴포넌트(들)(1070)는 선택된 분석 결과를 포함하지만 다른 분석 결과들도 또한 포함할 수 있는 후보 통사론적 분석들(212)을 생성한다. 예를 들어, 다른 분석 결과들은 "playing"이 게임들과 같은 다른 도메인들과, 또는 스포츠 이벤트들과 같은 이벤트의 카테고리와 연관되게 되는 그러한 것들을 포함할 수 있다.
단기 및/또는 장기 메모리(1052, 1054)는 또한 후보 통사론적 분석들(212)을 생성하는 데 있어서 언어 해석기 컴포넌트(들)(1070)에 의해 사용될 수 있다. 따라서, 동일한 세션에서 이전에 제공된 입력, 및/또는 사용자에 관한 알려진 정보가 성능을 개선하기 위해, 중의성을 감소시키기 위해, 그리고 상호작용의 대화 특성을 보강하기 위해 이용될 수 있다. 능동적 온톨로지(1050), 도메인 모델들(1056), 및 태스크 흐름 모델들(1086)로부터의 데이터는 또한 유효한 후보 통사론적 분석들(212)을 판정함에 있어서 증거에 의한 추론(evidential reasoning)을 구현하기 위해 이용될 수 있다.
의미론적 매칭(220) 시, 언어 해석기 컴포넌트(들)(1070)는 가능성있는 분석 결과들이 도메인 모델들 및 데이터베이스들과 같은 의미론적 모델들과 얼마나 잘 맞는지에 따라 그들의 조합들을 고려한다. 이러한 경우에 있어서, 분석은 연관성들 (1) "Local Event At Venue(장소에서의 지역 이벤트)"(능동적 온톨로지(1050)에서의 노드들의 클러스터에 의해 표현된 도메인 모델(1056)의 일부)로서 "playing"(사용자 입력에서의 단어), 및 (2) 도메인 모델 요소 및 능동적 온톨로지 노드(장소명)에 의해 의해 표현되는, 지역 이벤트 장소들에 대한 도메인 엔티티 데이터베이스(1072) 내의 엔티티명과의 매칭으로서의 "fillmore"(입력에서의 다른 단어)를 포함한다.
의미론적 매칭(220)은, 예를 들어 능동적 온톨로지(1050), 단기 개인 메모리(1052), 및 장기 개인 메모리(1054)로부터의 데이터를 이용할 수 있다. 예를 들어, 의미론적 매칭(220)은 (단기 개인 메모리(1052)로부터의) 다이얼로그 내의 장소들 또는 지역 이벤트들 또는 (장기 개인 메모리(1054)로부터의) 개인의 선호 장소들에 대한 이전 참조들로부터의 데이터를 이용할 수 있다.
소정 세트의 후보 또는 잠재적 의미론적 분석 결과들(222)이 생성된다.
중의성 해소 단계 230에서, 언어 해석기 컴포넌트(들)(1070)는 후보 의미론적 분석 결과들(222)의 증거에 의한 강도를 가중화한다. 이러한 예에서, "Local Event At Venue"로서 "playing"의 분석과 "장소명"으로서의 "fillmore"의 매칭과의 조합은, 예를 들어 "playing"이 스포츠에 대한 도메인 모델과 연관되지만 "fillmore"에 대한 스포츠 도메인에서 연관성이 없는 대안적인 조합들보다 도메인 모델에 대한 더 강한 매칭이다.
중의성 해소 단계 230은, 예를 들어 능동적 온톨로지(1050)의 구조로부터의 데이터를 이용할 수 있다. 적어도 하나의 실시예에서, 능동적 온톨로지에서의 노드들 사이의 접속들은 후보 의미론적 분석 결과들(222) 사이에서의 중의성을 해소하기 위한 증거에 의한 지지를 제공한다. 예를 들어, 일 실시예에서, 3개의 능동적 온톨로지 노드들이 의미론적으로 매칭되고 모두가 능동적 온톨로지(1050)에 접속되는 경우, 이는 이들 매칭 노드들이 접속되지 않았거나 또는 능동적 온톨로지(1050)에서의 더 긴 접속 경로들에 의해 접속된 경우보다 의미론적 분석의 더 큰 증거에 의한 강도를 나타낸다. 예를 들어, 의미론적 매칭(220)의 일 실시예에서, 장소에서의 지역 이벤트 및 장소명 양측 모두를 매칭시키는 분석에는 증가된 증거에 의한 지원이 주어지는데, 이는 사용자 의도의 이들 태양들의 조합된 표현들이 능동적 온톨로지(1050)에서의 링크들 및/또는 관계들에 의해 접속되기 때문이며: 이러한 경우에, 지역 이벤트 노드는 장소명들의 데이터베이스 내의 엔티티명과 접속된 장소명 노드에 접속되는 장소 노드에 접속된다.
적어도 하나의 실시예에서, 후보 의미론적 분석 결과들(222) 사이에서 중의성을 해소하기 위한 증거에 의한 지지를 제공하는 능동적 온톨로지에서의 노드들 사이의 접속들은 지향형 아크(directed arc)들이어서, 추정 격자(inference lattice)를 형성하는데, 여기서 매칭 노드들은 그들이 지향형 아크들에 의해 접속되게 되는 노드들에 증거를 제공한다.
단계 232에서, 언어 해석기 컴포넌트(들)(1070)는 사용자 의도의 표현(290)으로서 최고 의미론적 분석들을 분류하고 선택한다(단계 232).
도메인 엔티티 데이터베이스(들)(1072)
적어도 하나의 실시예에서, 도메인 엔티티 데이터베이스(들)(1072)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
도메인 엔티티들에 관한 데이터의 저장. 도메인 엔티티들은 도메인 모델들로 모델링될 수 있는 실제 또는 컴퓨팅 환경 내의 것들이다. 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
특정 실시예들에 따르면, 도메인 엔티티 데이터베이스(들)(1072)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 도메인 엔티티 데이터베이스(들)(1072)의 다양한 태양들, 특징들, 및/또는 기능들이 클라이언트(들)(1304) 및/또는 서버(들)(1340) 상에 존재하는 데이터베이스 소프트웨어 및/또는 하드웨어에 의해 수행될 수 있고, 구현될 수 있고, 그리고/또는 개시될 수 있다.
일 실시예에 따른 본 발명과 관련하여 사용될 수 있는 도메인 엔티티 데이터베이스(1072)의 일례는 하나 이상의 업체들의, 예를 들어 이름들 및 위치들을 저장하는 데이터베이스이다. 데이터베이스는, 예를 들어 업체들을 매칭시키기 위한 입력 요청에 포함된 단어들을 찾기 위해 그리고/또는 이름을 알고 있는 업체의 위치를 찾기 위해 사용될 수 있다. 당업자는 많은 다른 배열들 및 구현들이 가능하다는 것을 인식할 것이다.
어휘 컴포넌트(들)(1058)
적어도 하나의 실시예에서, 어휘 컴포넌트(들)(1058)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
특정 실시예들에 따르면, 어휘 컴포넌트(들)(1058)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 어휘 컴포넌트(들)(1058)의 다양한 태양들, 특징들, 및/또는 기능들은 문자열들을 개념들, 관계들, 속성들, 및 인스턴스들의 이름들과 연관시키는 데이터 구조들로서 구현될 수 있다. 이들 데이터 구조들은 메모리, 파일들, 또는 데이터베이스들에 저장될 수 있다. 어휘 컴포넌트(들)(1058)로의 액세스는 직접 API, 네트워크 API, 및/또는 데이터베이스 쿼리 인터페이스를 통해 구현될 수 있다. 어휘 컴포넌트(들)(1058)의 생성 및 유지는, 파일들의 직접 편집, 데이터베이스 트랜잭션을 거쳐, 또는 도메인 모델 편집 툴의 사용을 통해 달성될 수 있다. 어휘 컴포넌트(들)(1058)는 능동적 온톨로지들(1050)의 일부로서 또는 그와 연관되어 구현될 수 있다. 당업자는 많은 다른 배열들 및 구현들이 가능하다는 것을 인식할 것이다.
상이한 실시예들에 따르면, 어휘 컴포넌트(들)(1058)의 하나 이상의 상이한 스레드들 또는 인스턴스들이 어휘 컴포넌트(들)(1058)의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 하나 이상의 상이한 유형들의 최소 임계치 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 일 실시예에서, 어휘 컴포넌트(들)(1058)는, 예를 들어 입력 도출, 입력 해석, 및 사용자들을 위한 출력 포맷화 동안을 비롯해서 어휘 정보가 요구되는 어느 때든 액세스된다. 당업자는 다른 조건들 또는 이벤트들이 어휘 컴포넌트(들)(1058)의 하나 이상의 상이한 스레드들 또는 인스턴스들의 개시 및/또는 구현을 트리거할 수 있다는 것을 인식할 것이다.
적어도 하나의 실시예에서, 어휘 컴포넌트(들)(1058)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 일 실시예에서, 어휘 컴포넌트(들)(1058)는 외부 데이터베이스들로부터의, 예를 들어 데이터 웨어하우스 또는 사전으로부터의 데이터에 액세스할 수 있다.
언어 패턴 인식기 컴포넌트(들)(1060)
적어도 하나의 실시예에서, 언어 패턴 인식기 컴포넌트(들)(1060)는, 예를 들어 입력 토큰들의 문법적, 관용적, 및/또는 기타 합성을 나타내는 언어 또는 스피치 입력에서의 패턴들을 찾는 것과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다: 이들 패턴들은, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)에 대응한다: 단어, 이름, 구절, 데이터, 파라미터, 커맨드, 및/또는 스피치 작용의 신호.
특정 실시예들에 따르면, 패턴 인식기 컴포넌트(들)(1060)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 언어 패턴 인식기 컴포넌트(들)(1060)의 다양한 태양들, 특징들, 및/또는 기능들이 패턴 매칭 언어의 표현들을 포함하는 하나 이상의 파일들, 데이터베이스들, 및/또는 프로그램들에 의해 수행될 수 있고, 구현될 수 있고, 그리고/또는 개시될 수 있다. 적어도 하나의 실시예에서, 언어 패턴 인식기 컴포넌트(들)(1060)는 프로그램 코드로서라기보다는 평문으로 표현되며; 이는 그들이 프로그래밍 툴들 외의 편집기들 및 기타 툴들에 의해 생성될 수 있고 보전될 수 있게 한다. 평문 표현들의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다: 규칙적 표현, 패턴 매칭 규칙, 자연어 문법, 상태 기계에 기초한 분석기, 및/또는 기타 분석 모델.
당업자는 다른 유형들의 시스템들, 컴포넌트들, 시스템들, 디바이스들, 절차들, 프로세스들 등(또는 이들의 조합들)이 언어 패턴 인식기 컴포넌트(들)(1060)를 구현하는 데 이용될 수 있다는 것을 인식할 것이다.
상이한 실시예들에 따르면, 언어 패턴 인식기 컴포넌트(들)(1060)의 하나 이상의 상이한 스레드들 또는 인스턴스들이 언어 패턴 인식기 컴포넌트(들)(1060)의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 하나 이상의 상이한 유형들의 최소 임계치 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 언어 패턴 인식기 컴포넌트(들)(1060)의 하나 이상의 상이한 스레드들 또는 인스턴스들의 개시 및/또는 구현을 트리거할 수 있는 조건들 또는 이벤트들의 다양한 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만 이들로 한정되지 않는다:
적어도 하나의 실시예에서, 언어 패턴 인식기 컴포넌트(들)(1060)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 언어 패턴 인식기 컴포넌트(들)(1060)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 어시스턴트(1002)의 실시예들의 일부일 수 있는 다양한 모델들 및 데이터 소스들 중 임의의 것으로부터의 데이터를 포함할 수 있지만 이들로 한정되지 않으며, 이들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
일 실시예에서, 어시스턴트(1002)의 실시예들의 다른 부분들로부터의 데이터의 액세스는 능동적 온톨로지들(1050)에 의해 조정될 수 있다.
도 14를 다시 참조하면, 언어 패턴 인식기 컴포넌트(들)(1060)에 의해 제공될 수 있는 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들 중 일부의 예가 도시되어 있다. 도 14는 언어 패턴 인식기 컴포넌트(들)(1060)이 인식할 수 있는 언어 패턴들을 도시한다. 예를 들어, "what is happening" (in a city)((도시에서) 어떤 일이 벌어지고 있는가)"라는 관용구는 이벤트 계획의 태스크 및 지역 이벤트들의 도메인과 연관될 수 있다.
다이얼로그 흐름 프로세서 컴포넌트(들)(1080)
적어도 하나의 실시예에서, 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
언어 해석(200)으로부터 사용자 의도의 표현(290)이 주어지면, 사용자가 수행되기를 원하는 태스크 및/또는 사용자가 해결되기를 원하는 문제를 식별한다. 예를 들어, 태스크는 레스토랑을 찾는 것일 수 있다.
주어진 문제 또는 태스크에 대해, 사용자 의도의 표현(290)이 주어지면, 태스크 또는 문제에 대한 파라미터들을 식별한다. 예를 들어, 사용자는 사용자의 집 근처에서 이탈리아식 음식을 서빙하는 추천된 레스토랑을 찾을 수 있다. 레스토랑이 추천되어야 하고, 이탈리아식 음식을 서빙해야 하고, 집 근처여야 한다는 제약들은 레스토랑을 찾는 태스크에 대한 파라미터들이다.
태스크 해석, 및 개인 단기 메모리(1052)에서 표현될 수 있는 것과 같은 사용자와의 현재 다이얼로그가 주어지면, 적절한 다이얼로그 흐름 모델을 선택하고 현재 상태에 대응하는 흐름 모델에서의 단계를 판정한다.
특정 실시예들에 따르면, 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다.
적어도 하나의 실시예에서, 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
이제, 도 30 및 도 31을 참조하면, 일 실시예에 따른, 다이얼로그 흐름 프로세서 컴포넌트(들)에 의해 제공될 수 있는 다양한 유형의 기능들, 동작들, 작용들, 및/또는 기타 특징들의 예를 예시한 스크린샷들이 도시되어 있다.
스크린(3001)에 도시된 바와 같이, 사용자는 스피치 또는 텍스트 입력(3002) "book me a table for dinner(저녁 식사를 위한 테이블을 예약하라)"를 제공함으로써 저녁 식사 예약을 요청한다. 어시스턴트(1002)는 사용자에게 시간 및 인원수를 특정할 것을 부탁하는 프롬프트(3003)를 생성한다.
일단 이들 파라미터들이 제공되었다면, 스크린(3101)이 보여진다. 어시스턴트(1002)는 결과들이 제시되고 있음을 나타내는 다이얼로그 박스(3102), 및 사용자에게 시간을 클릭할 것을 부탁하는 프롬프트(3103)를 출력한다. 목록(3104)이 또한 디스플레이된다.
일 실시예에서, 그러한 다이얼로그는 하기와 같이 구현된다. 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)는 언어 해석기 컴포넌트(1070)로부터 사용자 의도의 표현을 제공받으며, 적절한 응답이 사용자에게 태스크 흐름에서 다음 단계를 수행하는 데 요구되는 정보를 물어보는 것임을 판정한다. 이러한 경우에 있어서, 도메인은 레스토랑이며, 태스크는 예약을 하는 것이고, 다이얼로그 단계는 사용자에게 태스크 흐름에서 다음 단계를 달성하는 데 요구되는 정보를 물어보는 것이다. 이러한 다이얼로그 단계는 스크린(3001)의 프롬프트(3003)에 의해 예시화된다.
이제, 또한, 도 32를 참조하면, 일 실시예에 따른, 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)에 대한 동작의 방법을 묘사한 흐름도가 도시되어 있다. 도 32의 흐름도는 도 30 및 도 31에 도시된 예와 관련하여 기술된다.
방법이 시작된다(단계 300). 사용자 의도의 표현(290)이 수신된다. 도 28과 관련하여 기술된 바와 같이, 일 실시예에서, 사용자 의도의 표현(290)은 의미론적 분석들의 세트이다. 도 30 및 도 31에 도시된 예의 경우, 도메인은 레스토랑이고, 동사는 레스토랑 예약과 연관된 "book"이며, 시간 파라미터는 현재 날짜의 저녁이다.
단계 310에서, 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)는 사용자 의도의 이러한 해석이 진행하기에 충분히 강력하게 지원되는지 여부, 및/또는 그것이 대안적인 불명료한 분석들보다 더 잘 지원되는지 여부를 판정한다. 현재의 예에서, 해석은 경합하는 불명료한 분석들이 없이 강력하게 지원된다. 반면, 경합하는 중의성 또는 충분한 불확실성이 있는 경우, 단계 322가 수행되어, 실행 단계가 다이얼로그로 하여금 사용자로부터 더 많은 정보에 대한 프롬프트를 출력하게 하도록 다이얼로그 흐름 단계를 설정하게 된다.
단계 312에서, 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)는 다른 정보를 갖는 의미론적 분석의 바람직한 해석을 판정하여 수행할 태스크 및 그의 파라미터들을 판정한다. 정보는, 예를 들어 도메인 모델들(1056), 태스크 흐름 모델들(1086), 및/또는 다이얼로그 흐름 모델들(1087), 또는 이들의 임의의 조합으로부터 획득될 수 있다. 현재의 예에서, 태스크는 예약을 하는 것으로서 식별되는데, 이는 예약가능하고 이용가능한 곳을 찾는 것, 및 테이블을 예약하도록 트랜잭션을 실시하는 것 양측 모두를 수반한다. 태스크 파라미터들은 단계 312에서 추론되는 다른 것들과 함께 하는 시간 제약이다.
단계 320에서, 태스크 흐름 모델은 적절한 다음 단계를 판정하도록 참고된다. 정보는, 예를 들어 도메인 모델들(1056), 태스크 흐름 모델들(1086), 및/또는 다이얼로그 흐름 모델들(1087), 또는 이들의 임의의 조합으로부터 획득될 수 있다. 예에서, 이러한 태스크 흐름에서, 다음 단계는 레스토랑들에 대한 이용가능성 검색에 대해 누락된 파라미터들을 도출하여, 인원수 및 예약 시간을 요청하는 도 30에 예시된 프롬프트(3003)를 생성하는 것임이 판정된다.
전술한 바와 같이, 도 31은 사용자가 인원수 및 예약 시간에 대한 요청에 응답한 후에 제시되는 다이얼로그 요소(3102)를 포함하는 스크린(3101)을 묘사한다. 일 실시예에서, 스크린(3101)은, 도 33과 관련하여 기술되는 바와 같이, 자동 호출 및 응답 절차를 통해 다른 반복의 결과로서 제시되는데, 이는 도 32에 묘사된 다이얼로그 및 흐름 절차에 대한 다른 호출을 유도한다. 다이얼로그 및 흐름 절차의 이러한 인스턴스화 시에, 사용자 선호도를 수신한 후, 다이얼로그 흐름 프로세서 컴포넌트(들)(1080)는 단계 320에서 상이한 태스크 흐름 단계를 판정한다: 이용가능성 검색을 하기 위함. 요청(390)이 구성되는 경우, 그것은 다이얼로그 흐름 프로세서 컴포넌트(들)(1080) 및 서비스 조정 컴포넌트(들)(1082)가 레스토랑 예약 서비스로 디스패치하기에 충분한 태스크 파라미터들을 포함한다.
다이얼로그 흐름 모델 컴포넌트(들)(1087)
적어도 하나의 실시예에서, 다이얼로그 흐름 모델 컴포넌트(들)(1087)는 다이얼로그 흐름 모델들을 제공하도록 동작가능할 수 있는데, 이러한 모델들은 사용자와 지능형 자동 어시스턴트(1002) 사이에서의 특정 종류의 대화에서 취하는 단계들을 표현한다. 예를 들어, 트랜잭션을 수행하는 포괄적 태스크에 대한 다이얼로그 흐름은 그것을 행하기 전에 트랜잭션을 위한 필수적인 데이터를 얻기 위한 단계 및 트랜잭션 파라미터들을 확인하기 위한 단계를 포함한다.
태스크 흐름 모델 컴포넌트(들)(1086)
적어도 하나의 실시예에서, 태스크 흐름 모델 컴포넌트(들)(1086)는 태스크 흐름 모델들을 제공하도록 동작가능할 수 있는데, 이러한 모델들은 문제를 해결하거나 필요성을 다루기 위해 취하는 단계들을 표현한다. 예를 들어, 저녁 식사 예약을 하기 위한 태스크 흐름은 바람직한 레스토랑을 찾는 것, 이용가능성을 조회하는 것, 및 특정 시간에 레스토랑에서 예약을 하기 위한 트랜잭션을 하는 것을 수반한다.
특정 실시예들에 따르면, 태스크 흐름 모델 컴포넌트(들)(1086)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 태스크 흐름 모델 컴포넌트(들)(1086)의 다양한 태양들, 특징들, 및/또는 기능들은 프로그램들, 상태 기계들, 또는 흐름도 내의 적절한 단계를 식별하는 기타 방식들로서 구현될 수 있다.
적어도 하나의 실시예에서, 태스크 흐름 모델 컴포넌트(들)(1086)는 포괄적 태스크들로 지칭되는 태스크 모델링 프레임워크를 이용할 수 있다. 포괄적 태스크들은 태스크에서의 단계들과 그들의 요구되는 입력들 및 생성된 출력들을 도메인들에 대해 특정됨이 없이 모델링하는 추상화 작업들이다. 예를 들어, 트랜잭션들을 위한 포괄적 태스크는 트랜잭션에 요구되는 데이터를 수집하기 위한 단계, 트랜잭션을 실행하기 위한 단계, 및 트랜잭션의 결과들을 출력하기 위한 단계를 포함할 수 있으며, 모든 단계들은 태스크를 구현하기 위한 임의의 특정 트랜잭션 도메인 또는 서비스를 참고하지 않는다. 그것은 쇼핑과 같은 도메인에 대해 인스턴스화될 수 있지만, 쇼핑 도메인과는 독립적이며, 예약, 스케줄링 등의 도메인들에 마찬가지로 잘 적용될 수 있다.
태스크 흐름 모델 컴포넌트(들)(1086) 및/또는 본 명세서에 기술된 절차(들)와 연관된 기능들, 동작들, 작용들, 및/또는 기타 특징들 중 적어도 일부가 포괄적 태스크 모델링 프레임워크와 관련하여 본 명세서에 개시된 개념들, 특징들, 컴포넌트들, 프로세스들, 및/또는 기타 태양들을 적어도 부분적으로 이용하여 구현될 수 있다.
추가로, 태스크 흐름 모델 컴포넌트(들)(1086) 및/또는 본 명세서에 기술된 절차(들)와 연관된 기능들, 동작들, 작용들, 및/또는 기타 특징들 중 적어도 일부가, 본 명세서에 개시된 바와 같이, 제한적 선택 태스크들과 관련된 개념들, 특징들, 컴포넌트들, 프로세스들, 및/또는 기타 태양들을 적어도 부분적으로 이용하여 구현될 수 있다. 예를 들어, 포괄적 태스크들의 일 실시예가 제한적 선택 태스크 모델을 이용하여 구현될 수 있다.
적어도 하나의 실시예에서, 태스크 흐름 모델 컴포넌트(들)(1086)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 태스크 흐름 모델 컴포넌트(들)(1086)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
이제, 도 34를 참조하면, 일 실시예에 따른, 제한적 선택 태스크(351)에 대한 태스크 흐름의 예를 묘사한 흐름도가 도시되어 있다.
제한적 선택은 그 목적이 제약들의 세트에 기초하여 이 세상에서의 아이템들의 세트로부터 일부 아이템을 선택하는 것인 소정 종류의 포괄적 태스크이다. 예를 들어, 제한적 선택 태스크(351)는 레스토랑들의 도메인에 대해 인스턴스화될 수 있다. 제한적 선택 태스크(351)는 사용자(352)로부터의 기준들 및 제약들을 통합함으로써 시작된다. 예를 들어, 사용자는 아시아식 음식에 관심을 가질 수 있고, 그의 또는 그녀의 사무실 근처에서 먹을 장소를 원할 수 있다.
단계 353에서, 어시스턴트(1002)는 사용자가 브라우징하도록 하기 위해 진술된 기준들 및 제약들을 충족시키는 아이템들을 제시한다. 이러한 예에서, 그것은 레스토랑들의 목록 및 그들 중에서 선택하는 데 이용될 수 있는 그들의 속성들일 수 있다.
단계 354에서, 사용자에게는 기준들 및 제약들을 구체화할 기회가 주어진다. 예를 들어, 사용자는 "내 사무실 근처(near my office)"라고 말함으로써 요청을 구체화할 수 있다. 이어서, 시스템은 단계 353에서 결과들의 새로운 세트를 제시할 것이다.
이제, 또한, 도 35를 참조하면, 일 실시예에 따른 제한적 선택 태스크(351)에 의해 제시되는 아이템들의 목록(3502)을 포함하는 스크린(3501)의 예가 도시되어 있다.
단계 355에서, 사용자는 매칭되는 아이템들 중에서 선택할 수 있다. 이어서, 예를 들어 예약하기(356), 기억하기(357), 또는 공유하기(358)와 같은 다수의 후속 태스크들(359) 중 임의의 것이 이용가능하게 될 수 있다. 다양한 실시예들에서, (예컨대, 캘린더 약속일정(calendar appointment)을 설정하는 것, 전화하는 것, 이메일 또는 텍스트 메시지를 전송하는 것, 알람을 설정하는 것 등과 같은) 후속 태스크들(359)은 웹-인에이블형 서비스들과의 그리고/또는 디바이스에 대한 국소적인 기능과의 상호작용을 수반할 수 있다.
도 35의 예에서, 사용자는 더 많은 세부사항들을 보기 위해 그리고 추가 작용들을 수행하기 위해 목록(3502) 내의 아이템을 선택할 수 있다. 이제, 또한, 도 36을 참조하면, 사용자가 목록(3502)으로부터 아이템을 선택한 후의 스크린(3601)의 예가 도시되어 있다. 선택된 아이템에 관한 후속 태스크들(359)에 대응하는 추가 정보 및 옵션들이 디스플레이된다.
다양한 실시예들에서, 흐름 단계들은 명시적 다이얼로그 프롬프트들과 GUI 링크들의 임의의 조합을 포함하지만 이로 한정되지 않는 여러 개의 입력 양식들 중 임의의 양식으로 사용자에게 제공될 수 있다.
서비스 컴포넌트(들)(1084)
서비스 컴포넌트(들)(1084)는 지능형 자동 어시스턴트(1002)가 사용자 대신 호출할 수 있는 서비스들의 세트를 표현한다. 호출될 수 있는 임의의 서비스는 서비스 컴포넌트(1084)에서 제공될 수 있다.
적어도 하나의 실시예에서, 서비스 컴포넌트(들)(1084)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
보통, 웹 기반 사용자 인터페이스에 의해 서비스에 제공될 기능들을 API를 통해 제공한다. 예를 들어, 리뷰 웹사이트는, 프로그램에 의해 호출될 때 주어진 엔티티의 리뷰를 자동으로 되전송할 서비스 API를 제공할 수 있다. API는 웹사이트의 사용자 인터페이스를 동작시킴으로써 인간이 달리 획득할 서비스들을 지능형 자동 어시스턴트(1002)에 제공한다.
보통, 사용자 인터페이스에 의해 애플리케이션에 제공될 기능들을 API를 통해 제공한다. 예를 들어, 캘린더 애플리케이션은, 프로그램에 의해 호출될 때 캘린더 엔트리들을 자동으로 되전송할 서비스 API를 제공할 수 있다. API는 애플리케이션의 사용자 인터페이스를 동작시킴으로써 인간이 달리 획득할 서비스들을 지능형 자동 어시스턴트(1002)에 제공한다. 일 실시예에서, 어시스턴트(1002)는 디바이스 상에서 이용가능한 다수의 상이한 기능들 중 임의의 것을 개시할 수 있고 제어할 수 있다. 예를 들어, 어시스턴트(1002)가 스마트폰, 개인용 디지털 어시스턴트, 태블릿 컴퓨터, 또는 기타 디바이스 상에 설치되는 경우, 어시스턴트(1002)는 하기와 같은 기능들을 수행할 수 있다: 애플리케이션들을 개시하는 것, 전화를 하는 것, 이메일들 및/또는 텍스트 메시지들을 전송하는 것, 캘린더 이벤트들을 추가하는 것, 알람들을 설정하는 것 등. 일 실시예에서, 그러한 기능들은 서비스 컴포넌트(들)(1084)를 사용하여 활성화된다.
사용자 인터페이에서 현재 구현되는 것이 아니라 더 큰 태스크들에서 API를 통해 어시스턴트에 이용가능한 서비스들을 제공한다. 예를 들어, 일 실시예에서, 거리 주소를 취하고 기계 판독가능 지리 정보 좌표들을 되전송할 API는 그것이 웹 또는 디바이스 상에서 직접적인 사용자 인터페이스를 갖지 않는 경우에도 어시스턴트(1002)에 의해 서비스 컴포넌트(1084)로서 사용될 수 있다.
특정 실시예들에 따르면, 서비스 컴포넌트(들)(1084)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 서비스 컴포넌트(들)(1084)의 다양한 태양들, 특징들, 및/또는 기능들이 하기 유형들의 시스템들, 컴포넌트들, 시스템들, 디바이스들, 절차들, 프로세스들 등 중 하나 이상(또는 이들의 조합들)에 의해 수행될 수 있고, 구현될 수 있고, 그리고/또는 개시될 수 있다:
예를 들어, 사용자들에게 영화를 브라우징하기 위한 인터페이스를 제공하는 웹사이트가 웹사이트에 의해 사용되는 데이터베이스의 카피로서 지능형 자동 어시스턴트(1002)의 실시예에 의해 사용될 수 있다. 이어서, 서비스 컴포넌트(들)(1084)는, 데이터가 국소적으로 보전됨에도 불구하고, 마치 그것이 네트워크 API를 통해 제공된 것처럼, 데이터에 대해 내부 API를 제공할 것이다.
다른 예로서, 레스토랑 선택 및 식사 계획을 돕는 지능형 자동 어시스턴트(1002)에 대한 서비스 컴포넌트(들)(1084)는 네트워크를 통해 제3자로부터 입수가능한 후속 세트의 서비스들 중 임의의 것 또는 모두를 포함할 수 있다.
서비스 조정 컴포넌트(들)(1082)
지능형 자동 어시스턴트(1002)의 서비스 조정 컴포넌트(들)(1082)는 서비스 조정 절차를 실행한다.
적어도 하나의 실시예에서, 서비스 조정 컴포넌트(들)(1082)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
복수의 서비스들을, 다양한 서비스들로부터의 결과들을 통합한 균일한 서비스 독립적 표현으로 호출한 결과를 (예를 들어, 레스토랑들의 목록들을 되전송하는 여러 개의 레스토랑 서비스들을 호출하여, 여러 개의 서비스들로부터의 적어도 하나의 레스토랑에 대한 데이터를 병합하여, 리던던시를 제거한 결과로서) 출력하는 것;
예를 들어, 일부 상황들에서, 특정 태스크를 달성하기 위한 여러 개의 방식들이 있을 수 있다. 예를 들어, "remind me to leave for my meeting across town at 2pm(오후 2시에 마을을 가로질러 미팅을 하러 갈 것을 나에게 리마인드하라)"와 같은 사용자 입력은 적어도 세 개의 방식들, 즉, 알람 시계를 설정하거나; 캘린더 이벤트를 작성하거나; 또는 할일 매니저를 호출하는 방식으로 달성될 수 있는 작용을 특정한다. 일 실시예에서, 서비스 조정 컴포넌트(들)(1082)는 요청을 어느 방식이 가장 잘 충족시킬지에 대해 판정한다.
서비스 조정 컴포넌트(들)(1082)는 또한 여러 개의 서비스들의 어느 조합이 주어진 전반적 태스크를 수행하기 위해 호출하는 데 가장 좋을 것인지에 대해 판정할 수 있다. 예를 들어, 저녁 식사를 위한 테이블을 찾고 예약하기 위해, 서비스 조정 컴포넌트(들)(1082)는 리뷰를 검색하는 것, 이용가능성을 얻는 것, 및 예약을 하는 것과 같은 그러한 기능들을 수행하기 위해 어느 서비스들을 호출할 것인지에 대해 판정할 것이다. 어느 서비스들을 이용할 것인지의 판정은 다수의 상이한 인자들 중 임의의 것에 의존할 수 있다. 예를 들어, 적어도 하나의 실시예에서, 신뢰성, 소정 유형들의 요청들을 다루는 서비스의 능력, 사용자 피드백 등에 관한 정보가 어느 서비스(들)가 호출하기에 적절한지를 판정하는 데 있어서의 인자들로서 이용될 수 있다.
특정 실시예들에 따르면, 서비스 조정 컴포넌트(들)(1082)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다.
적어도 하나의 실시예에서, 서비스 조정 컴포넌트(들)(1082)의 주어진 인스턴스는 명시적 서비스 능력 모델들(1088)을 이용하여 외부 서비스들의 능력들 및 기타 속성들을, 그리고 서비스 조정 컴포넌트(들)(1082)의 특징들을 달성하면서 이들 능력들 및 속성들에 관한 이유를 표현할 수 있다. 이는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있는 소정 세트의 서비스들을 수동으로 프로그래밍하는 것 이상의 이점들을 제공한다:
적어도 하나의 실시예에서, 서비스 조정 컴포넌트(들)(1082)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 서비스 조정 컴포넌트(들)(1082)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만, 이들로 한정되지 않는다:
이제, 도 37을 참조하면, 일 실시예에 따른, 서비스 조정 절차를 실행하기 위한 절차의 예가 도시되어 있다.
이러한 특정 예에서, 단일 사용자가 레스토랑에서 저녁 식사를 하기에 좋은 장소를 찾는 것에 관심을 갖고 있고 이러한 서비스를 제공하는 것을 돕기 위한 대화로 지능형 자동 어시스턴트(1002)와 연계하고 있다는 것을 가정한다.
고품질의 것이고, 잘 리뷰되어 있고, 특정 위치 근처이며, 특정 시간에 예약하기 위한 시간이 있고, 특정 종류의 음식을 서빙하는 레스토랑들을 찾는 태스크를 고려한다. 방법이 시작된다(단계 400). 이들 도메인 및 태스크 파라미터들은 입력(390)으로서 주어진다.
단계 402에서, 주어진 요청이 임의의 서비스들을 요구할 수 있는지 여부가 판정된다. 일부 상황들에 있어서, 예를 들어 어시스턴트(1002)가 원하는 태스크 자체를 수행할 수 있는 경우에는 서비스 위임이 요구되지 않을 수 있다. 예를 들어, 일 실시예에서, 어시스턴트(1002)는 서비스 위임을 호출하지 않은 채 사실에 근거한 질문에 응답할 수 있을 수 있다. 이에 따라, 요청이 서비스들을 요구하지 않는 경우, 독립적인 흐름 단계가 403에서 실행되고, 그 결과(490)가 되전송된다. 예를 들어, 태스크 요청이 자동 어시스턴트(1002) 자체에 관한 정보를 물어보는 것이었던 경우, 다이얼로그 응답은 임의의 외부 서비스들을 호출하지 않은 채 다루어질 수 있다.
단계 402에서, 서비스 위임이 요구되는 것으로 판정되는 경우, 서비스 조정 컴포넌트(들)(1082)는 단계 404로 진행한다. 단계 404에서, 서비스 조정 컴포넌트(들)(1082)는 태스크 요건들을 서비스 능력 모델들(1088)에서의 서비스들의 능력들 및 속성들의 선언형 기술(declarative description)들과 매칭시킬 수 있다. 인스턴스화된 동작을 지원할 수 있는 적어도 하나의 서비스 제공자는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)을 상세히 설명하는 선언형의 정성적 메타데이터를 제공한다:
웹 서비스, 트리플 스토어, 전문 인덱스, 또는 이들의 일부 조합);
예를 들어, 서비스가 지원할 수 있는 파라미터들의 분류들에 관해 추론하자면, 서비스 모델은, 서비스 1, 서비스 2, 서비스 3, 및 서비스 4가 특정 위치 근처에 있는 레스토랑들을 제공할 수 있고(하나의 파라미터), 서비스 2 및 서비스 3이 품질별로 레스토랑들을 필터링할 수 있거나 그의 순위를 평가할 수 있고(다른 파라미터), 서비스 3, 서비스 4, 및 서비스 5가 레스토랑들에 대한 리뷰를 되전송할 수 있고(되전송된 데이터 필드), 서비스 6이 레스토랑별로 서빙되는 음식 유형들을 나열할 수 있고(되전송된 데이터 필드), 서비스 7이 특정 시간대 동안 레스토랑들의 이용가능성을 조회할 수 있음(하나의 파라미터)을 진술할 수 있다. 서비스 8 내지 서비스 99는 이러한 특정 도메인 및 태스크에 요구되지 않는 능력들을 제공한다.
이러한 선언형의 정성적 메타데이터, 태스크, 태스크 파라미터들, 및 어시스턴트의 실행시간 환경으로부터 입수가능한 기타 정보를 이용하여, 서비스 조정 컴포넌트(들)(1082)는 호출할 최적 세트의 서비스 제공자들을 판정한다(단계 404). 최적 세트의 서비스 제공자들은 하나 이상의 태스크 파라미터들을 지원할 수 있고(하나 이상의 파라미터들을 충족시키는 결과들을 되전송함), 또한 적어도 하나의 서비스 제공자의 성능 순위 평가 및 적어도 하나의 서비스 제공자의 전반적인 품질 순위 평가를 고려한다.
단계 404의 결과는 이러한 특정 사용자 및 요청을 요구하는 동적으로 생성된 목록의 서비스들이다.
적어도 하나의 실시예에서, 서비스 조정 컴포넌트(들)(1082)는 서비스들의 신뢰성뿐만 아니라 특정 정보 요청들에 응답하는 그들의 능력을 고려한다.
적어도 하나의 실시예에서, 서비스 조정 컴포넌트(들)(1082)는 오버랩되거나 리던던트인 서비스들을 호출함으로써 비-신뢰성을 제한한다.
적어도 하나의 실시예에서, 서비스 조정 컴포넌트(들)(1082)는 서비스들을 선택하기 위해 (단기 개인 메모리 컴포넌트로부터의) 사용자에 관한 개인 정보를 고려한다. 예를 들어, 사용자는 무엇보다 일부 순위 평가 서비스들을 우선시할 수 있다.
단계 450에서, 서비스 조정 컴포넌트(들)(1082)는 사용자 대신 다수의 서비스들을 동적으로 그리고 자동으로 호출한다. 적어도 하나의 실시예에서, 이들은 사용자의 요청에 응답하면서 동적으로 호출된다. 특정 실시예들에 따르면, 서비스들의 다수의 인스턴스들 또는 스레드들이 동시에 호출될 수 있다. 적어도 하나의 실시예에서, 이들은 API들을 이용하여 네트워크를 통해, 또는 웹 서비스 API들을 이용하여 네트워크를 통해, 또는 웹 서비스 API들을 이용하여 인터넷을 통해, 또는 이들의 임의의 조합을 통해 호출된다.
적어도 하나의 실시예에서, 서비스들이 호출되게 되는 속도는 프로그램에 의해 제한되고 그리고/또는 관리된다.
이제, 또한, 도 38을 참조하면, 일 실시예에 따른, 서비스 호출 절차(450)의 예가 도시되어 있다. 서비스 호출은, 예를 들어 외부 서비스들의 이용에 의해 추가 정보를 획득하는 데 또는 태스크들을 수행하는 데 이용된다. 일 실시예에서, 요청 파라미터들은 서비스의 API에 적절한 대로 변환된다. 일단 결과들이 서비스로부터 수신되면, 결과들은 어시스턴트(1002) 내에서 사용자에게로의 제시를 위한 결과 표현으로 변환된다.
적어도 하나의 실시예에서, 서비스 호출 절차(450)에 의해 호출된 서비스들은 웹 서비스, 디바이스 상에서 실행되는 애플리케이션, 운영 체제 기능 등일 수 있다.
예를 들어 태스크 파라미터들 등을 포함한 요청의 표현(390)이 제공된다. 서비스 능력 모델들(1088)로부터 입수가능한 적어도 하나의 서비스에 대해, 서비스 호출 절차(450)는 변환 단계 452, 호출 단계 454, 및 출력-맵핑 단계 456를 수행한다.
변환 단계 452에서, 요청 표현(390)으로부터의 현재 태스크 파라미터들은 적어도 하나의 서비스에 의해 이용될 수 있는 형태로 변환된다. API들 또는 데이터베이스들로서 제공될 수 있는 서비스들에 대한 파라미터들은 태스크 요청들에 이용되는 데이터 표현과는 상이할 수 있고, 또한 적어도 서로가 상이할 수 있다. 이에 따라, 단계 452의 목적은 하나 이상의 대응 포맷들로 적어도 하나의 태스크 파라미터를 맵핑하고 적어도 하나의 서비스가 호출되는 값들을 맵핑하는 것이다.
예를 들어, 레스토랑과 같은 업체명들은 그러한 업체들을 다루는 서비스들에 걸쳐서 변할 수 있다. 이에 따라, 단계 452는 임의의 명칭들을 적어도 하나의 서비스에 가장 적합한 형태들로 변환하는 단계를 수반할 것이다.
다른 예로서, 위치는 다양한 레벨들의 정밀도로 그리고 서비스들에 걸친 다양한 유닛들 및 협약들을 이용하여 알려지게 된다. 서비스 1은 ZIP 코드들, 서비스 2는 GPS 좌표들을, 그리고 서비스 3은 도로명 주소를 요구할 수 있다.
서비스는 API 및 수집된 그의 데이터를 통해 호출된다(단계 454). 적어도 하나의 실시예에서, 결과들(410)이 캐싱(cache)된다. 적어도 하나의 실시예에서, (예컨대, 서비스 레벨 협약 또는 SLA에서 특정되는 바와 같은) 특정 레벨의 성능 내에서 되전송되지 않는 서비스들은 누락된다.
출력 맵핑 단계 456에서, 서비스에 의해 되전송되는 데이터는 통합된 결과 표현(490)으로 다시 맵핑된다. 이러한 단계는 상이한 포맷들, 유닛들 등을 다루는 단계를 포함할 수 있다.
단계 412에서, 다수의 서비스들로부터의 결과들은 검증되고 병합된다. 일 실시예에서, 검증된 결과들이 수집된 경우, 균등 정책 기능 - 도메인 단위(per-domain basis)로 규정됨 - 은 하나 이상의 결과들에 걸쳐서 쌍 단위로 호출되어 어느 결과들이 실제로 동일한 개념들을 표현하는지 판정하게 한다. 한 쌍의 동일한 결과들이 발견되는 경우, 소정 세트의 속성 정책 기능들 - 또한 도메인 단위로 규정됨 - 은 속성 값들을 병합된 결과 내로 병합하는 데 이용된다. 속성 정책 기능은 서비스 능력 모델들, 태스크 파라미터들, 도메인 콘텍스트, 및/또는 장기 개인 메모리(1054)로부터의 속성 품질 순위 평가들을 이용하여 최적의 병합 전략을 결정할 수 있다.
예를 들어, 레스토랑들의 상이한 제공자들로부터의 레스토랑들의 목록들이 병합될 수 있고, 사본들이 제거될 수 있다. 적어도 하나의 실시예에서, 사본들을 식별하기 위한 기준들은 퍼지명 매칭, 퍼지 위치 매칭, 이름, 위치, 전화 번호, 및/또는 웹사이트 주소와 같은 도메인 엔티티들의 다수의 속성들에 대한 퍼지 매칭, 및/또는 이들의 임의의 조합을 포함할 수 있다.
단계 414에서, 결과들은 원하는 길이의 결과 목록을 되전송하도록 분류되고 트리밍된다.
적어도 하나의 실시예에서, 요청 완화 루프가 또한 적용된다. 단계 416에서, 서비스 조정 컴포넌트(들)(1082)가, 현재 결과 목록이 충분하지 않은 것으로 판정하는 경우(예컨대, 그것이 원하는 수보다 더 적은 매칭 아이템들을 갖는 경우), 태스크 파라미터들은 더 많은 결과들을 허용하도록 완화될 수 있다(단계 420). 예를 들어, 타깃 위치의 N 마일 내에서 찾게 된 원하는 분류의 레스토랑들의 수가 너무 적은 경우, 완화는 요청을 다시 실행시켜서, N 마일보다 더 넓은 영역을 방문하고 그리고/또는 일부 기타 검색 파라미터를 완화시킬 것이다.
적어도 하나의 실시예에서, 서비스 조정 방법은 제2 단계로 적용되어, 결과들에게 태스크에 유용한 보조 데이터를 "주석으로 첨부"한다.
단계 418에서, 서비스 조정 컴포넌트(들)(1082)는 주석 첨부가 요구되는지 여부를 판정한다. 그것은, 예를 들어 태스크가 지도 상에 결과들의 플롯을 요구할 수 있지만, 일차 서비스들이 맵핑에 요구되는 지리 공간적 좌표들을 되전송하지 않는 경우에 요구될 수 있다.
단계 422에서, 서비스 능력 모델들(1088)은 원하는 여분의 정보를 되전송할 수 있는 서비스들을 찾기 위해 다시 참고된다. 일 실시예에서, 주석 첨부 프로세스는 병합된 결과에 추가 정보 또는 더 좋은 데이터가 주석으로서 첨부될 수 있는지 여부를 판정한다. 그것은 상기 사항을 적어도 하나의 병합된 결과의 적어도 하나의 속성에 대해 속성 정책 기능 - 도메인 단위로 규정됨 - 에 위임함으로써 행한다. 속성 정책 기능은 병합된 속성 값 및 속성 품질 순위 평가, 하나 이상의 다른 서비스 제공자들의 속성 품질 순위 평가들, 도메인 콘텍스트, 및/또는 사용자 프로파일을 이용하여, 더 좋은 데이터가 획득될 수 있는지 여부를 결정할 수 있다. 하나 이상의 서비스 제공자들이 병합된 결과에 대해 하나 이상의 속성들에 주석을 첨부할 수 있는 것으로 판정되는 경우, 비용 기능이 호출되어, 주석을 첨부할 최적 세트의 서비스 제공자들을 판정한다.
이어서, 최적 세트의 주석 첨부 서비스 제공자들 내의 적어도 하나의 서비스 제공자가 병합된 결과들의 목록과 함께 호출되어(단계 450), 결과들(424)을 획득하게 한다. 적어도 하나의 서비스 제공자에 의해 적어도 하나의 병합된 결과에 대해 행해진 변화들은 이러한 프로세스 동안에 추적되고, 이어서 변화들은 단계 412에서 이용된 바와 동일한 속성 정책 기능 프로세스를 이용하여 병합된다. 그들의 결과들은 기존의 결과 세트 내에 병합된다(단계 426).
생성된 데이터는 분류되고(단계 428), 균일한 표현(490)으로 통합된다.
서비스 조정 컴포넌트(들)(1082)와 관련하여 전술된 방법들 및 시스템들의 한 가지 이점은 그들이 지능형 자동 어시스턴트들과 특히 관련되는 것들 외의 다양한 기술 분야들에서 유리하게 적용될 수 있고 그리고/또는 활용될 수 있다는 것임을 이해할 수 있다. 서비스 조정 절차들의 태양들 및/또는 특징들이 수행될 수 있고 그리고/또는 구현될 수 있는 그러한 다른 기술 영역들의 예들은 예를 들어 하기 중 하나 이상을 포함한다:
서비스 능력 모델 컴포넌트(들)(1088)
적어도 하나의 실시예에서, 서비스 능력 모델 컴포넌트(들)(1088)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
출력 프로세서 컴포넌트(들)(1090)
적어도 하나의 실시예에서, 출력 프로세서 컴포넌트(들)(1090)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
균일한 내부 데이터 구조에서 표현되는 출력 데이터를, 그것이 상이한 양식들로 적절히 렌더링되게 되는 형태들 및 레이아웃들로 포맷화한다. 출력 데이터는, 예를 들어 지능형 자동 어시스턴트와 사용자 사이에서의 자연어 통신; 레스토랑, 영화, 제품 등의 속성들과 같은 도메인 엔티티들에 관한 데이터; 기상 리포트, 항공편 상태 조회, 가격 등과 같은 정보 서비스들로부터의 도메인 특정 데이터 결과들; 및/또는 사용자가 출력 제시와 직접적으로 상호작용함으로써 응답할 수 있게 하는 양방향 링크들 및 버튼들을 포함할 수 있다.
예를 들어 그래픽 사용자 인터페이스; 텍스트 메시지; 이메일 메시지; 사운드; 애니메이션; 및/또는 스피치 출력의 임의의 조합을 포함할 수 있는, 양식들에 대한 출력 데이터를 렌더링한다.
요청에 기초하여 상이한 그래픽 사용자 인터페이스 디스플레이 엔진들에 대한 데이터를 동적으로 렌더링한다. 예를 들어, 어느 웹 브라우저 및/또는 디바이스가 사용되고 있는지에 따라 상이한 출력 프로세싱 레이아웃들 및 포맷들을 이용한다.
특정 실시예들에 따르면, 출력 프로세서 컴포넌트(들)(1090)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서(들)(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 출력 프로세서 컴포넌트(들)(1090)의 다양한 태양들, 특징들, 및/또는 기능들이 하기 유형들의 시스템들, 컴포넌트들, 시스템들, 디바이스들, 절차들, 프로세스들 등 중 하나 이상(또는 이들의 조합들)에 의해 수행될 수 있고, 구현될 수 있고, 그리고/또는 개시될 수 있다:
이제, 도 39를 참조하면, 일 실시예에 따른, 다단 출력 절차의 예를 묘사한 흐름도가 도시되어 있다. 다단 출력 절차는 자동 어시스턴트(1002)의 프로세싱 단계들 702 및 다단 출력 단계들 704를 포함한다.
단계 710에서, 스피치 입력 발언이 획득되고, 스피치-텍스트 컴포넌트(예컨대, 도 22와 관련하여 기술된 컴포넌트)가 스피치를 해석하여 소정 세트의 후보 스피치 해석들(712)을 생성한다. 일 실시예에서, 스피치-텍스트 컴포넌트는 예를 들어 미국 매사추세츠주 벌링턴 소재의 뉘앙스 커뮤니케이션스, 인크.로부터 입수가능한 뉘앙스 인식기를 사용하여 구현된다. 후보 스피치 해석들(712)은 단계 730에서, 예를 들어 패러프레이징된 형태로 사용자에게 제시될 수 있다. 예를 들어, 인터페이스는 동일한 스피치 사운드 샘플의 몇 개의 가능성있는 대안적인 텍스트형 해석들을 나열하는 대안물인 "did you say?"를 제시할 수 있다.
적어도 하나의 실시예에서, 사용자 인터페이스는 사용자가 후보 스피치 해석들을 인터럽트할 수 있도록 그리고 그들 중에서 선택할 수 있도록 제공된다.
단계 714에서, 후보 스피치 해석들(712)은 언어 해석기(1070)로 전송되는데, 이는 적어도 하나의 후보 스피치 해석(712)에 대해 사용자 의도의 표현들(716)을 생성할 수 있다. 단계 732에서, 사용자 의도의 이들 표현들(716)의 패러프레이징들이 생성되고 사용자에게 제시된다. (도 22의 절차(120)의 관련 단계 132 참조).
적어도 하나의 실시예에서, 사용자 인터페이스는 사용자가 자연어 해석들(732)의 패러프레이징들을 인터럽트할 수 있게 하고 그들 중에서 선택할 수 있게 한다.
단계 718에서, 태스크 및 다이얼로그 분석이 수행된다. 단계 734에서, 태스크 및 도메인 해석들이 의도 패러프레이징 알고리즘을 이용하여 사용자에게 제시된다.
이제, 또한, 도 40을 참조하면, 일 실시예에 따른, 출력 프로세싱의 예를 묘사한 스크린샷이 도시되어 있다. 스크린(4001)은 단계 730에 의해 생성된 사용자의 스피치 입력의 반향(4002)을 포함한다. 스크린(4001)은 또한 단계 734에 의해 생성된 사용자의 의도의 패러프레이징(4003)을 포함한다. 일 실시예에서, 도 40의 예에 묘사된 바와 같이, 특별한 포맷화/하이라이트화가 "events(이벤트들)"과 같은 키워드에 이용되는데, 이는 지능형 자동 어시스턴트(1002)와의 상호작용을 위한 사용자의 트레이닝을 가능하게 하는 데 이용될 수 있다. 예를 들어, 디스플레이된 텍스트의 포맷화를 시각적으로 관찰함으로써, 사용자는 용이하게 식별할 수 있고, 지능형 자동 어시스턴트가 "events", "next Wednesday(다음주 수요일)", "San Francisco(샌프란시스코)" 등과 같은 키워드들을 인식하는 것으로 다시 해석할 수 있다.
도 39를 다시 참조하면, 요청들이 서비스들로 디스패치되고 결과들이 동적으로 수집됨에 따라(단계 720), 중간 결과들이 실시간 진행의 형태로 디스플레이될 수 있다(단계 736). 예를 들어, 레스토랑들의 목록이 되전송될 수 있고, 이어서, 그들의 리뷰들은 리뷰 서비스들로부터의 결과들이 도달함에 따라 동적으로 파퓰레이트(populate)될 수 있다. 서비스들은 웹-인에이블형 서비스들 및/또는 디바이스 상에 국소적으로 저장된 정보 및/또는 임의의 기타 소스로부터의 정보에 액세스하는 서비스들을 포함할 수 있다.
응답의 균일한 표현(722)이 생성되고, 적절한 출력 양식을 위해 포맷화된다(단계 724). 최종 출력 포맷이 완성된 후, 상이한 종류의 패러프레이징이 단계 738에서 제공될 수 있다. 이러한 단계에서, 전체 결과 세트가 분석될 수 있고, 초기 요청과 비교될 수 있다. 이어서, 결과들의 개요 또는 질문에 대한 응답이 제공될 수 있다.
또한, 도 41을 참조하면, 일 실시예에 따른, 출력 프로세싱의 다른 예가 도시되어 있다. 스크린(4101)은 단계 732에 의해 생성된 텍스트 해석의 패러프레이징(4102), 단계 736에 의해 생성된 실시간 진행(4103), 및 단계 738에 의해 생성된 패러프레이징된 개요(4104)를 묘사한다. 또한, 상세한 결과들(4105)이 포함되어 있다.
일 실시예에서, 어시스턴트(1002)는 다수의 모드들로 출력을 생성할 수 있다. 이제, 도 42를 참조하면, 일 실시예에 따른, 다중모드 출력 프로세싱의 예를 묘사한 흐름도가 도시되어 있다.
방법이 시작된다(단계 600). 출력 프로세서(1090)는 응답의 균일한 표현(490)을 취하고, 응답을 디바이스에 따라 그리고 적절하고 적용가능한 양식에 따라 포맷화한다(단계 612). 단계 612는 디바이스 및 양식 모델들(610) 및/또는 도메인 데이터 모델들(614)로부터의 정보를 포함할 수 있다.
일단 응답(490)이 포맷화되었다면(단계 612), 다수의 상이한 출력 메커니즘들 중 임의의 것이 임의의 조합으로 이용될 수 있다. 도 42에 묘사된 예들은 하기를 포함한다:
당업자는 많은 기타 출력 메커니즘들이 이용될 수 있다는 것을 인식할 것이다.
일 실시예에서, 다단 출력 절차(700)에 의해 생성된 출력 메시지들의 콘텐츠는 다중모드 출력 프로세싱(600)의 모드에 맞춰진다. 예를 들어, 출력 양식이 스피치인 경우(단계 626), 사용자 입력(730), 텍스트 해석들(732), 태스크 및 도메인 해석들(734), 진행(736), 및/또는 결과 개요들(738)을 패러프레이징하는 데 유익한 언어는 다소 장황(verbose)할 수 있거나, 또는 기록되는 형태보다는 가청 형태로 이해하기가 더 용이한 문장들을 이용할 수 있다. 일 실시예에서, 언어는 다단 출력 절차(700)의 단계들로 맞춰지고; 다른 실시예들에서, 다단 출력 절차(700)는 다중모드 출력 프로세싱(600)에 의해 특정 언어로 추가로 구체화되는 중간 결과를 생성한다.
단기 개인 메모리 컴포넌트(들)(1052)
적어도 하나의 실시예에서, 단기 개인 메모리 컴포넌트(들)(1052)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
어느 아이템들이 열렸거나 조사되었는지, 어느 전화 번호들이 호출되었는지, 어느 아이템들이 맵핑되었는지, 어느 영화 예고편이 어디에서 상영되었는지 등등과 같은, GUI에서 사용자에 의한 최근 선택들의 이력을 보관하는 것;
클라이언트 상의 데이터베이스에, 사용자 특정 세션에서의 서버에, 또는 클라이언트에 의해 이용된 웹 브라우저 쿠키 또는 RAM과 같은 클라이언트 세션 상태로 다이얼로그 및 사용자 상호작용들의 이력을 저장하는 것;
특정 실시예들에 따르면, 단기 개인 메모리 컴포넌트(들)(1052)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다.
상이한 실시예들에 따르면, 단기 개인 메모리 컴포넌트(들)(1052)의 하나 이상의 상이한 스레드들 또는 인스턴스들이 단기 개인 메모리 컴포넌트(들)(1052)의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 하나 이상의 상이한 유형들의 최소 임계치 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 예를 들어, 단기 개인 메모리 컴포넌트(들)(1052)는 어시스턴트(1002)의 실시예와의 사용자 세션이 존재하는 경우에 사용자에 의한 적어도 하나의 입력 형태 또는 작용으로 또는 시스템에 의한 응답으로 호출될 수 있다.
적어도 하나의 실시예에서, 단기 개인 메모리 컴포넌트(들)(1052)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 예를 들어, 단기 개인 메모리 컴포넌트(들)(1052)는, (예를 들어, 사용자 아이덴티티 및 개인 선호도들을 획득하기 위해) 장기 개인 메모리 컴포넌트(들)(1054)로부터의 데이터에 그리고/또는 단기 메모리 엔트리들에 포함될 수 있는, 로컬 디바이스로부터의 시간 및 위치에 관한 데이터에 액세스할 수 있다.
이제, 도 43a 및 도 43b를 참조하면, 일 실시예에 따른, 위치를 변경하는 동안에 다이얼로그 콘텍스트를 보전하기 위한 단기 개인 메모리 컴포넌트(들)(1052)의 사용의 예를 묘사한 스크린샷들이 도시되어 있다. 이러한 예에서, 사용자는 지역 기상에 관해 물어보았고, 이어서 단지 "in new york(뉴욕에서)"라고 말한다. 스크린(4301)은 지역 기상을 포함하는 초기 응답을 제시한다. 사용자가 "in new york"라고 말할 때, 어시스턴트(1002)는 단기 개인 메모리 컴포넌트(들)(1052)를 이용하여, 다이얼로그 콘텍스트에 액세스하고, 그에 의해 현재 도메인이 기상 예보인 것으로 판정한다. 이는 어시스턴트(1002)가 새로운 발언 "in new york"가 "what is the weather forecast in New York this coming Tuesday?(이번 다가오는 화요일에 뉴욕에서의 기상 예보가 어떠한가?)"를 의미하는 것으로 해석할 수 있게 한다. 스크린(4302)은 뉴욕에 대한 기상 예보를 포함하는 적절한 응답을 제시한다.
도 43a 및 도 43b의 예에서, 단기 메모리에 저장된 것은 "is it going to rain the day after tomorrow?(모레 비가 올 것 같은가?)"라는 입력의 단어들뿐만 아니라, 모레에 대한 기상 도메인 및 시간 파라미터 세트로서의 입력에 대한 시스템의 의미론적 해석이었다.
장기 개인 메모리 컴포넌트(들)(1054)
적어도 하나의 실시예에서, 장기 개인 메모리 컴포넌트(들)(1054)는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
레스토랑, 호텔, 상점, 극장, 및 기타 장소를 비롯한 업체 엔티티들의 저장된 목록들을 지속적으로 저장하는 것. 일 실시예에서, 장기 개인 메모리 컴포넌트(들)(1054)는 단지 이름들 또는 URL들을 저장하는 것보다 많은 것을 저장할 뿐만 아니라, 전화 번호, 지도 상의 위치, 사진 등을 비롯한 엔티티들에 대한 전체 목록을 불러오기에 충분한 정보를 저장함;
특정 실시예들에 따르면, 장기 개인 메모리 컴포넌트(들)(1054)의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 예를 들어, 적어도 일부 실시예들에서, 장기 개인 메모리 컴포넌트(들)(1054)의 다양한 태양들, 특징들, 및/또는 기능들이 클라이언트들(1304) 및/또는 서버들(1340) 상의(또는 그들과 연관된) 그리고/또는 저장 디바이스들 상에 상주하고 있는 하나 이상의 데이터베이스들 및/또는 파일들을 이용하여 수행될 수 있고, 구현될 수 있고, 그리고/또는 개시될 수 있다.
상이한 실시예들에 따르면, 장기 개인 메모리 컴포넌트(들)(1054)의 하나 이상의 상이한 스레드들 또는 인스턴스들이 장기 개인 메모리 컴포넌트(들)(1054)의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 하나 이상의 상이한 유형들의 최소 임계치 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 장기 개인 메모리 컴포넌트(들)(1054)의 하나 이상의 상이한 스레드들 또는 인스턴스들의 개시 및/또는 구현을 트리거할 수 있는 조건들 또는 이벤트들의 다양한 예들은 하기 중 하나 이상(또는 이들의 조합들)을 포함할 수 있지만 이들로 한정되지 않는다:
장기 개인 메모리 엔트리들은 사용자가 어시스턴트(1002)의 실시예와 상호작용하는 부수적인 효과로서 획득될 수 있다. 어시스턴트와의 임의의 종류의 상호작용은 브라우징, 검색, 찾기, 쇼핑, 스케줄링, 구매하기, 예약하기, 어시스턴트를 통해 다른 사람들과 통신하기를 비롯한 부가사항들을 장기 개인 메모리에 생성할 수 있다.
장기 개인 메모리는 또한 사용자들이 계정 또는 서비스를 신청하는 결과로서 누적되어, 클라이언트 디바이스 상에서의 어시스턴트(1002) 서비스를 이용하여 다른 서비스들에 대한 계정들로의 어시스턴트(1002) 액세스, 및 캘린더, 할일 목록, 연락처 목록 등과 같은 기타 개인 정보 데이터베이스들로의 액세스를 가능하게 할 수 있다.
적어도 하나의 실시예에서, 장기 개인 메모리 컴포넌트(들)(1054)의 주어진 인스턴스가 하나 이상의 연관된 데이터베이스들로부터의 정보에 액세스할 수 있고 그리고/또는 그를 활용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가, 예를 들어 클라이언트(들)(1304) 및/또는 서버(들)(1340)에 위치될 수 있는 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 장기 개인 메모리 컴포넌트(들)(1054)에 의해 액세스될 수 있는 상이한 유형들의 데이터의 예들은 연락처 또는 친구 목록, 캘린더, 할일 목록, 기타 목록 관리자, 외부 서비스들(1360)에 의해 제공되는 개인 계정 및 지갑 관리자 등과 같은 기타 개인 정보 데이터베이스들로부터의 데이터를 포함할 수 있지만, 이들로 한정되지 않는다.
이제, 도 44a 내지 도 44c를 참조하면, 일 실시예에 따른, 장기 개인 메모리 컴포넌트(들)(1054)의 사용의 예를 묘사한 스크린샷들이 도시되어 있다. 이러한 예에서는, 어시스턴트(1002)의 실시예와의 양방향 세션들을 통해 찾게 되는 레스토랑, 영화, 및 업체와 같은 저장된 엔티티들로의 액세스를 포함하는 특징이 제공된다("My Stuff(나의 소지품)"으로 명명됨). 도 44a의 스크린(4401)에서, 사용자는 레스토랑을 찾았다. 사용자는 나의 소지품에 저장하기(Save to My Stuff)(4402) 상에서 탭핑하는데, 이는 레스토랑에 관한 정보를 장기 개인 메모리 컴포넌트(들)(1054)에 저장한다.
도 44b의 스크린(4403)은 나의 소지품으로의 사용자 액세스를 묘사한다. 일 실시예에서, 사용자는 희망 아이템을 탐색하기 위해 카테고리들 중에서 선택할 수 있다.
도 44c의 스크린(4404)은 나의 소지품에 이전에 저장된 아이템들을 포함하는 나의 레스토랑 카테고리를 묘사한다.
자동 호출 및 응답 절차
이제, 도 33을 참조하면, 일 실시예에 따른, 자동 호출 및 응답 절차를 묘사한 흐름도가 도시되어 있다. 도 33의 절차는 지능형 자동 어시스턴트(1002)의 하나 이상의 실시예들과 관련하여 구현될 수 있다. 도 1에 묘사된 바와 같은 지능형 자동 어시스턴트(1002)는 단지 구현될 수 있는 광범위한 지능형 자동 어시스턴트 시스템 실시예들로부터의 일례일 뿐임이 이해될 수 있다. 지능형 자동 어시스턴트 시스템들의 다른 실시예들(도시되지 않음)은, 예를 들어 도 1에 묘사된 예시적인 지능형 자동 어시스턴트(1002)에 예시된 것들보다 추가적인, 보다 적은, 그리고/또는 상이한 컴포넌트들/특징들을 포함할 수 있다.
적어도 하나의 실시예에서, 도 33의 자동 호출 및 응답 절차는, 예를 들어 하기 중 하나 이상(또는 이들의 조합들)과 같은 다양한 유형들의 기능들, 동작들, 작용들, 및/또는 기타 특징들을 수행하도록 그리고/또는 구현하도록 동작가능할 수 있다:
도 33의 자동 호출 및 응답 절차는 사용자와 지능형 자동 어시스턴트(1002) 사이에 대화형 인터페이스의 인터페이스 제어 흐름 루프를 제공할 수 있다. 자동 호출 및 응답 절차의 적어도 1회의 반복이 대화에서 플라이(ply)로서의 역할을 할 수 있다. 대화형 인터페이스는 사용자 및 어시스턴트(1002)가 대화 방식으로 주거니 받거니 발언함으로써 통신하게 되는 인터페이스이다.
도 33의 자동 호출 및 응답 절차는 지능형 자동 어시스턴트(1002)에 고급 제어 흐름을 제공할 수 있다. 즉, 절차는 입력의 수집, 입력의 프로세싱, 출력의 생성, 및 사용자에게로의 출력의 제시를 제어한다.
도 33의 자동 호출 및 응답 절차는 지능형 자동 어시스턴트(1002)의 컴포넌트들 사이에서의 통신을 조정할 수 있다. 즉, 그것은 하나의 컴포넌트의 출력이 다른 컴포넌트에 공급되는 곳과, 환경 및 환경 상에서의 작용으로부터의 전반적인 입력이 발생할 수 있는 곳을 지시할 수 있다.
적어도 일부 실시예들에서, 자동 호출 및 응답 절차의 부분들은 또한 컴퓨터 네트워크의 다른 디바이스들 및/또는 시스템들에서 구현될 수 있다.
특정 실시예들에 따르면, 자동 호출 및 응답 절차의 다수의 인스턴스들 또는 스레드들이 하나 이상의 프로세서들(63) 및/또는 하드웨어 및/또는 하드웨어와 소프트웨어의 다른 조합들의 사용을 통해 동시에 구현될 수 있고 그리고/또는 개시될 수 있다. 적어도 하나의 실시예에서, 자동 호출 및 응답 절차의 하나 이상 또는 선택된 부분들은 하나 이상의 클라이언트(1304)(들)에서, 하나 이상의 서버(1340)(들)에서, 그리고/또는 이들의 조합들에서 구현될 수 있다.
예를 들어, 적어도 일부 실시예들에서, 자동 호출 및 응답 절차의 다양한 태양들, 특징들, 및/또는 기능들이 소프트웨어 컴포넌트들, 네트워크 서비스들, 데이터베이스들 및/또는 기타 등등, 또는 이들의 임의의 조합에 의해 수행될 수 있고, 구현될 수 있고, 그리고/또는 개시될 수 있다.
상이한 실시예들에 따르면, 자동 호출 및 응답 절차의 하나 이상의 상이한 스레드들 또는 인스턴스들이, 자동 호출 및 응답 절차의 적어도 하나의 인스턴스의 개시를 트리거하기 위해 (예를 들어, 최소 임계치 기준들과 같은) 하나 이상의 상이한 유형들의 기준들을 만족시키는 하나 이상의 조건들 또는 이벤트들의 검출에 응답하여 개시될 수 있다. 자동 호출 및 응답 절차의 하나 이상의 상이한 스레드들 또는 인스턴스들의 개시 및/또는 구현을 트리거할 수 있는 다양한 유형들의 조건들 또는 이벤트들의 예들은 하기 중 하나 이상(또는 이들의 조합)을 포함할 수 있지만 이로 한정되지 않는다:
헤드셋, 전화 핸드셋 또는 기지국, GPS 내비게이션 시스템, 소비자 어플라이언스, 원격 제어, 또는 어시스턴스를 호출하는 것과 연관될 수 있는 버튼을 갖는 임의의 기타 디바이스와 같은, 컴퓨터 또는 모바일 디바이스에 부착된 주변 디바이스 상의 버튼;
기존의 웹 브라우저 세션 내에서부터 지능형 자동 어시스턴트(1002)를 구현하는 웹사이트까지 시작되는 상호작용 - 여기서, 예를 들어 지능형 자동 어시스턴트(1002) 서비스가 요청됨 -;
상이한 실시예들에 따르면, 자동 호출 및 응답 절차의 하나 이상의 상이한 스레드들 또는 인스턴스들이 수동으로, 자동으로, 정적으로, 동적으로, 동시에, 그리고/또는 이들의 조합들로 개시될 수 있고 그리고/또는 구현될 수 있다. 추가로, 자동 호출 및 응답 절차의 상이한 인스턴스들 및/또는 실시예들이 하나 이상의 상이한 시간 간격들로(예컨대, 특정 시간 간격 동안에, 규칙적인 주기적 간격들로, 불규칙적인 주기적 간격들로, 요구 시 등에) 개시될 수 있다.
적어도 하나의 실시예에서, 자동 호출 및 응답 절차의 주어진 인스턴스는 특정 태스크들 및/또는 동작들을 수행할 때 다양한 상이한 유형들의 데이터 및/또는 다른 유형들의 정보를 활용할 수 있고 그리고/또는 생성할 수 있다. 이는 예를 들어 입력 데이터/정보 및/또는 출력 데이터/정보를 포함할 수 있다. 예를 들어, 적어도 하나의 실시예에서, 자동 호출 및 응답 절차의 적어도 하나의 인스턴스는 예를 들어 하나 이상의 데이터베이스들과 같은 하나 이상의 상이한 유형들의 소스들로부터의 정보를 액세스할 수 있고, 처리할 수 있고, 그리고/또는 달리 이용할 수 있다. 적어도 하나의 실시예에서, 데이터베이스 정보 중 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 추가로, 자동 호출 및 응답 절차의 적어도 하나의 인스턴스는, 예를 들어 로컬 메모리 및/또는 원격 메모리 디바이스들에 저장될 수 있는 하나 이상의 상이한 유형들의 출력 데이터/정보를 생성할 수 있다.
적어도 하나의 실시예에서, 자동 호출 및 응답 절차의 주어진 인스턴스의 초기 구성은 하나 이상의 상이한 유형들의 초기화 파라미터들을 사용하여 수행될 수 있다. 적어도 하나의 실시예에서, 초기화 파라미터들의 적어도 일부가 하나 이상의 로컬 및/또는 원격 메모리 디바이스들과의 통신을 통해 액세스될 수 있다. 적어도 하나의 실시예에서, 자동 호출 및 응답 절차의 인스턴스에 제공된 초기화 파라미터들의 적어도 일부분은 입력 데이터/정보에 대응할 수 있고 그리고/또는 이로부터 도출될 수 있다.
도 33의 특정 예에서, 단일 사용자가 스피치 입력 능력들을 갖는 클라이언트 애플리케이션으로부터 네트워크를 통해 지능형 자동 어시스턴트(1002)의 인스턴스에 액세스하고 있다는 것을 가정한다. 사용자는 레스토랑에서 저녁 식사를 하기에 좋은 장소를 찾는 것에 관심을 갖고 있고, 이러한 서비스를 제공하는 것을 돕기 위한 대화로 지능형 자동 어시스턴트(1002)와 연계하고 있다.
단계 100에서, 사용자가 요청을 입력하도록 프롬프트된다. 클라이언트의 사용자 인터페이스는 도 26과 관련하여 기술된 바와 같이 여러 개의 입력 모드들을 제공한다. 이들은 예를 들어 하기를 포함할 수 있다:
당업자는 다른 입력 모드들이 제공될 수 있음을 인식할 것이다.
일 실시예에서, 단계 100은, 예를 들어 도 24와 관련하여 기술된 능동적 다이얼로그 제안 입력 도출 절차에서 기술된 기술들을 이용하여, 어시스턴트(1002)와의 이전 대화로부터 남아있는 옵션들을 제시하는 단계를 포함할 수 있다.
예를 들어, 단계 100에서 능동적 입력 도출의 방법들 중 하나에 의해, 사용자는 어시스턴트(1002)에게 "여기 주위 어디에선가 좀 좋은 이탈리아식을 구할 수 있을까?"라고 말할 수 있다. 예를 들어, 사용자는 이를 스피치 입력 컴포넌트에 말했을 수 있다. 능동적 입력 도출 컴포넌트(1094)의 실시예는 스피치-텍스트 서비스를 호출하고, 사용자에게 확인을 위해 물어보고, 이어서 확인된 사용자 입력을 주석이 첨부된 균일한 입력 포맷(2690)으로서 표현한다.
이어서, 언어 해석기 컴포넌트(1070)의 실시예가 도 29와 관련하여 기술된 바와 같이 단계 200에서 호출된다. 언어 해석기 컴포넌트(1070)는 텍스트 입력을 분석하고, 사용자의 의도의 가능성있는 해석들(290)의 목록을 생성한다. 일 분석에서, "이탈리아식"이라는 단어는 이탈리아식 스타일의 레스토랑들과 연관되고; "좋은"은 추천 레스토랑들의 속성과 연관되며; "여기 주위"는 전역적 센서 판독(예를 들어, 모바일 디바이스 상에서 GPS에 의해 주어진 바와 같은 사용자의 위치)으로부터의 거리를 기술하는 위치 파라미터와 연관된다.
단계 300에서, 사용자의 의도의 표현(290)은, 도 32와 관련하여 기술된 바와 같은 다이얼로그 및 흐름 분석 절차의 실시예를 구현하는 다이얼로그 흐름 프로세서(1080)로 전달된다. 다이얼로그 흐름 프로세서(1080)는 의도의 어느 해석이 가장 그럴 듯한지 판정하고, 이러한 해석을 도메인 모델들의 인스턴트들 및 태스크 모델의 파라미터들에 맵핑하며, 다이얼로그 흐름에서의 다음 흐름 단계를 판정한다. 현재 예에서, 레스토랑 도메인 모델은 제약들(요리 스타일, 추천 레벨, 및 근접성 제약들) 별로 레스토랑을 찾기 위해 제한적 선택 태스크로 인스턴스화된다. 다이얼로그 흐름 모델은 다음 단계가 이들 제약들을 충족시키는 레스토랑들의 일부 예들을 얻는 것 및 이들을 사용자에게 제시하는 것을 나타낸다.
단계 400에서, 흐름 및 서비스 조정 절차(400)의 실시예가 서비스 조정 컴포넌트(1082)를 통해 호출된다. 그것은 레스토랑을 찾으라는 사용자의 요청 대신에 소정 세트의 서비스들(1084)을 호출한다. 일 실시예에서, 이들 서비스들(1084)은 일부 데이터를 공통 결과에 제공한다. 그들의 데이터는 병합되고, 레스토랑들의 생성된 목록은 균일한, 서비스 독립적 형태로 표현된다.
단계 500에서, 출력 프로세서(1092)는 "나는 여기 근처에서 일부 추천된 이탈리아식 레스토랑들을 찾았습니다."와 같은 결과들의 다이얼로그 개요를 생성한다. 출력 프로세서(1092)는 이러한 개요를 출력 결과 데이터와 조합하고, 이어서, 그 조합을, 단계 600에서 사용자의 특정 모바일 디바이스용으로 출력을 포맷화하는 모듈로 전송한다.
단계 700에서, 이러한 디바이스 특정 출력 패키지는 모바일 디바이스로 전송되고, 디바이스 상의 클라이언트 소프트웨어는 그것을 모바일 디바이스의 스크린(또는 다른 출력 디바이스) 상에서 렌더링한다.
사용자는 이러한 제시를 브라우징하고, 상이한 옵션들을 조사하기로 결정한다. 사용자가 완료한 경우(단계 790), 방법이 종료된다. 사용자가 완료하지 않은 경우(단계 490), 단계 100으로 되돌아감으로써 루프의 다른 반복이 개시된다.
자동 호출 및 응답 절차는, 예를 들어 사용자의 쿼리 "멕시코식 음식은 어때?"에 적용될 수 있다. 그러한 입력은 단계 100에서 도출될 수 있다. 단계 200에서, 입력은 멕시코식 스타일의 레스토랑들로서 해석되고, 다른 상태(단기 개인 메모리(1052)에 보유됨)와 조합되어, 레스토랑 스타일 파라미터의 하나의 변화와 더불어 지난번과 동일한 의도의 해석을 지원한다. 단계 300에서, 이러한 업데이트된 의도는 단계 400에서 서비스 조정 컴포넌트(들)(1082)에게 주어진 요청의 구체화를 생성한다.
단계 400에서, 업데이트된 요청은 다수의 서비스들(1084)로 디스패치되어, 단계 500에서 다이얼로그에 요약되고 단계 600에서 디바이스에 대해 포맷화되며, 단계 700에서 사용자의 모바일 디바이스 상에 새로운 정보를 제시하도록 네트워크를 통해 전송되는 레스토랑들의 새로운 세트를 생성한다.
이러한 경우에 있어서, 사용자는 그의 또는 그녀의 취향의 레스토랑을 찾고, 그것을 지도 상에 보여주며, 친구에게 길 안내를 전송한다.
당업자는 자동 호출 및 응답 절차의 상이한 실시예들(도시되지 않음)이 도 33의 특정 실시예에 예시된 것들보다 추가의 특징들 및/또는 동작들을 포함할 수 있고 그리고/또는 도 33의 특정 실시예에 예시된 자동 호출 및 응답 절차의 특징들 및/또는 동작들 중 적어도 일부를 생략할 수 있다는 것을 인식할 것이다.
제한적 선택
일 실시예에서, 지능형 자동 어시스턴트(1002)는 사용자와의 그의 상호작용에서 제한적 선택을 이용하여, 관심이 있을 것 같은 아이템들을 더 효과적으로 식별하고 사용자에게 제시한다.
제한적 선택은 소정 종류의 포괄적 태스크이다. 포괄적 태스크들은 소정 분류의 태스크들 사이에서 공통적인 도메인 객체들, 입력들, 출력들, 및 제어 흐름의 종류들을 특징으로 하는 추상화 작업들이다. 제한적 선택 태스크는 (희망 요리 또는 위치와 같은) 선택 제약들에 기초하여 (레스토랑들과 같은) 도메인 객체들의 선택안 세트로부터 아이템들을 선택함으로써 수행된다. 일 실시예에서, 어시스턴트(1002)는 사용자가 가능성있는 선택안들의 공간을 조사하여, 사용자의 제약들 및 선호도들을 도출하고, 선택안들을 제시하고, 그들 선택안들에 대해 수행할 작용들, 예컨대 그들을 예약하거나, 구매하거나, 기억하거나, 또는 공유하는 작용들을 제공하는 것을 돕는다. 태스크는 사용자가 작용을 수행할 하나 이상의 아이템들을 선택하는 경우에 완료된다.
제한적 선택은 하기의 많은 콘텍스트들에서 유용하다: 예를 들어, 보러 갈 영화, 저녁 식사를 위한 레스토랑, 밤에 숙박할 호텔, 책을 구매할 장소 등을 고르는 것. 대체로, 제한적 선택은 카테고리를 알고 있고 일부 희망 속성들을 갖는 카테고리의 인스턴스를 선택할 필요가 있는 경우에 유용하다.
제한적 선택에 대한 한 가지 종래의 접근법은 디렉토리 서비스이다. 사용자는 카테고리를 고르고, 시스템은 선택안들의 목록을 제공한다. 국소적 디렉토리에서는, 도시와 같은 위치에 대한 디렉토리를 제한할 수 있다. 예를 들어, "옐로우 페이지" 서비스에서, 사용자들은 도시에 대한 책을 선택하고, 이어서 카테고리를 찾아보며, 책은 그 카테고리에 대한 하나 이상의 아이템들을 보여준다. 디렉토리 서비스에서의 주요 문제점은 가능성있는 관련 선택안들의 수가 많다는 것이다(예컨대, 주어진 도시 내의 레스토랑들).
다른 종래의 접근법은 데이터베이스 애플리케이션이며, 이는 사용자로부터의 쿼리를 도출함으로써, 매칭되는 아이템들을 검색함으로써, 그리고 핵심적인 특징들을 강조하는 일부 방식으로 아이템들을 제시함으로써 선택안 세트를 생성하는 방식을 제공한다. 사용자는 결과 세트의 행 및 열을 브라우징하여, 그 또는 그녀가 몇몇 적합한 후보들을 찾을 때까지, 가능하게는 결과들을 분류하거나 쿼리를 변경한다. 데이터베이스 서비스에서의 문제점은 그것이 사용자에게 그들의 인간적 욕구를 정형적인 쿼리로서 조작할 수 있게 할 것, 그리고 생성된 데이터를 조사하기 위해 분류하고, 필터링하며, 브라우징하는 추상적인 기계류를 이용할 것을 요구할 수 있다는 것이다. 이들은 그래픽 사용자 인터페이스들을 갖고 있더라도 대부분의 사람들이 행하기에는 어렵다.
제3의 종래의 접근법은 "지역 검색"과 같은 확장가능 검색(open-ended search)이다. 검색은 행하기 용이하지만, 검색 서비스들에서는 사람들이 제한적 선택의 태스크를 달성하기 어렵게 만드는 여러 문제점들이 있다. 구체적으로:
사용자가 제약들에 의해 선택을 좁힐 수 있는 경우, 어떤 제약들이 이용될 수 있는지가 명확하지 않다(예컨대, 내가 도보 거리 내에 있거나 늦게까지 열려 있는 곳을 검색할 수 있을까?).
다수의 선호도들이 상충된다; 보통, 주어진 상황에 대해 객관적으로 "가장 좋은" 응답은 없다(예컨대, 나는 근처에 있고 저렴하면서, 고급 식료품을 서빙하고 서비스가 훌륭하며, 한밤중까지 영업하는 곳을 원한다).
선호도들은 상대적이고, 그들은 이용가능한 것에 의존한다. 예를 들어, 사용자가 높게 순위가 평가된 레스토랑에서 테이블을 구할 수 있는 경우, 그 또는 그녀는 그것이 비싸더라도 그것을 선택할 수 있다. 그러나, 대체로, 사용자는 덜 비싼 옵션들을 선호할 것이다.
다양한 실시예들에서, 본 발명의 어시스턴트(1002)는 제한적 선택의 태스크를 간소화하는 것을 돕는다. 다양한 실시예들에서, 어시스턴트(1002)는 데이터베이스를 채용하고, 서비스들뿐만 아니라 기타 기능을 검색하여, 사용자 측에서, 그 또는 그녀가 찾고 있는 것을 진술하고, 이용가능한 것을 고려하고, 만족스러운 해결책에 대해 결정하는 노고를 감소시킨다.
다양한 실시예들에서, 어시스턴트(1002)는 다수의 상이한 방식들 중 임의의 방식으로 제한적 선택을 인간들을 위해 더 단순하게 만드는 것을 돕는다.
예를 들어, 일 실시예에서, 어시스턴트(1002)는 속성들을 제약들로 조작가능하게 할 수 있다. 사용자는 그 또는 그녀가 원하는 결과의 속성들에 관해서 원하는 것을 진술한다. 어시스턴트(1002)는 이러한 입력을 정형적인 제약들로 조작가능하게 한다. 예를 들어, "요리가 이탈리아식 음식을 포함하는 하나 이상의 레스토랑들을 팔로 알토의 중심부에서 2 마일 미만 내에서 찾아라"라고 말하는 대신, 사용자는 단지 "팔로 알토 내에서 아탈리아식 레스토랑들"이라고만 말할 수 있다. 어시스턴트(1002)는 또한 데이터베이스에 대한 파라미터들이 아닌, 사용자에 의해 요청된 품질들을 조작가능하게 할 수 있다. 예를 들어, 사용자가 낭만적인 레스토랑들을 요청하는 경우, 시스템은 이것을 텍스트 검색 또는 태그 매칭 제약으로서 조작가능하게 할 수 있다. 이러한 방식으로, 어시스턴트(1002)는 사용자들이 달리 가질 수 있는 문제점들 중 일부를 제한적 선택으로 극복하는 것을 돕는다. 사용자가 적합한 해결책들과 부적합한 해결책들을 구별할 조건들을 기술하는 것보다 만족스러운 해결책을 상상하고 기술하도록 하는 것이 더 용이하다.
일 실시예에서, 어시스턴트(1002)는 유용한 선택 기준들을 제안할 수 있고, 사용자는 단지 어느 기준들이 그 순간에 중요한지 말하기만 하면 된다. 예를 들어, 어시스턴트(1002)는 "이들 사안 중 어느 사안: 가격(더 저렴한 것이 더 좋음), 위치(더 가까운 것이 더 좋음), 순위 평가(더 높게 평가된 것이 더 좋음)?"를 물어볼 수 있다. 어시스턴트(1002)는 또한 특정 값들을 요구할 수 있는 기준들, 예를 들어 "당신은 당신이 원하는 요리가 어떤 종류인지 또는 당신이 원하는 음식 아이템을 말할 수 있습니다."를 제안할 수 있다.
일 실시예에서, 어시스턴트(1002)는 사용자가 다수의 경합하는 기준들(예를 들어, 가격, 품질, 이용가능성, 및 편의성)에 대해 상이한 선택안들 중에서 결정하는 것을 도울 수 있다.
그러한 안내를 제공함으로써, 어시스턴트(1002)는 사용자들이 하기의 여러 개의 방식들 중 임의의 방식으로 다중 파라미터 결정을 행하는 것을 도울 수 있다:
하나는 공간의 차원수를 감소시켜서, 다수의 소스들로부터의 순위 평가와 같은 원시 데이터를 복합적 "추천" 점수로 조합하는 것이다. 복합적 점수는 데이터의 소스들에 관한 도메인 지식을 고려할 수 있다(예컨대, Zagat 순위 평가는 Yelp보다 품질을 더 많이 예측할 수 있다).
다른 접근법은 기준들의 서브세트에 중점을 두어서, "어떤 것이 고려할 모든 가능성있는 기준들이고 그들이 어떻게 조합하는가?"의 문제를 주어진 상황에서 가장 중요한 기준들의 선택(예컨대, "어느 것이 더 중요한가, 가격인가 아니면 근접성인가?")으로 변환하는 것이다.
결정을 간소화시키는 다른 방식은 디폴트 값들 및 선호도 순서들을 가정하는 것이다(예컨대, 모든 것이 동일하다면, 더 높게 순위가 평가되고 더 가깝고 더 저렴한 것이 더 좋다). 시스템은 또한 사용자들의 이전 응답들을 기억할 수 있는데, 이는 그들의 디폴트 값들 및 선호도들을 나타낸다.
네번째로, 시스템은 오리지널 요청에서 언급되지 않은 선택안 세트 내의 아이템들의 핵심적인 속성들을 제공할 수 있다. 예를 들어, 사용자는 지역 이탈리아식 음식을 물어보았을 수 있다. 시스템은 레스토랑들의 선택안 세트, 및 그들과 함께, 리뷰자들에 의해 사용된 인기 태그들의 목록 또는 안내 책자로부터의 태그 라인(예컨대, "데이트를 위한 멋진 곳", "훌륭한 파스타")을 제공할 수 있다. 이는 사람들이 특정 아이템을 고르게 할 수 있고, 태스크를 완료하게 할 수 있다. 리서치는 대부분의 사람들이 기준들에 대해 결정하고 상부에 팝핑(pop)하는 것을 합리적으로 받아들이기보다는 특정 인스턴스들을 평가함으로써 결정을 내린다는 것을 보여준다. 그것은 또한 사람들이 구체적인 경우들로부터의 특징들에 관해 학습함을 보여준다. 예를 들어, 차를 선택할 때, 구매자들은 그들이 일부의 차가 내비게이션 시스템을 갖고 있음을 알 때까지 내비게이션 시스템에 관해 신경쓰지 않을 수 있다(그리고, 이후에 내비게이션 시스템은 중요한 기준이 될 수 있다). 어시스턴트(1002)는 사람들이 위너(winner)를 고르는 것을 돕거나 어느 것을 최적화할 것인지에 따라 치수를 제안하는 나열된 아이템들의 핵심적인 속성들을 제시할 수 있다.
개념적 데이터 모델
일 실시예에서, 어시스턴트(1002)는 개념적 데이터 모델을 간소화시킴으로써 제한적 선택 태스크를 갖는 어시스턴스를 제공한다. 개념적 데이터 모델은 어시스턴트(1002)의 인터페이스에서 사용자들에게 제시되는 추상물이다. 전술한 심리적 문제를 극복하기 위해, 일 실시예에서, 어시스턴트(1002)는 사용자들이 제약 표현들보다는 적합한 선택안들의 몇 개의 용이하게 인식되고 상기되는 속성들의 측면에서 그들이 원하는 것을 기술하게 하는 모델을 제공한다. 이러한 방식으로, 속성들은 자연어 요청들(예컨대, 키워드 마커들을 수정하는 형용사들)을 작성하기 쉽게 만들어질 수 있고, 프롬프트("당신은 또한.. 추천된 레스토랑들에 호의를 보일 수 있다")에서 인식가능할 수 있다. 일 실시예에서, 어시스턴트(1002)가 관심 도메인을 판정(예컨대, 레스토랑 대 호텔)하게 하고, 도메인 특정 속성들로 인스턴스화될 수 있는 안내로의 일반적인 접근법을 판정하게 하는 데이터 모델이 이용된다.
일 실시예에서, 어시스턴트(1002)에 의해 이용되는 개념적 데이터 모델은 선택 분류를 포함한다. 이는 선택하게 되는 것들의 공간의 표현이다. 예를 들어, 레스토랑 찾기 애플리케이션에서, 선택 분류는 레스토랑들의 분류이다. 선택 분류는 추상적일 수 있고, "목적지에 있는 동안에 할일들"과 같은 하위분류들을 가질 수 있다. 일 실시예에서, 개념적 데이터 모델은, 주어진 문제 해결 상황에서, 사용자가 단일 선택 분류로부터 선택하는 것에 관심이 있다는 것을 가정한다. 이러한 가정은 상호작용을 간소화시키며, 또한 어시스턴트(1002)가 그의 능력(competence)의 한계("나는 도시에서의 생활에 관해 압니다."가 아니라 "나는 레스토랑, 호텔, 및 영화에 관해 압니다.")를 선언하게 한다.
선택 분류가 주어지면, 일 실시예에서, 제한적 선택 태스크를 위해 사용자에게 제시되는 데이터 모델은, 예를 들어 아이템; 아이템 특징; 선택 기준; 및 제약을 포함한다.
아이템들은 선택 분류의 인스턴스들이다.
아이템 특징들은 적어도 하나의 아이템과 함께 제시될 수 있고 그리고/또는 그와 연관될 수 있는 속성들, 특질들, 또는 계산된 값들이다. 예를 들어, 레스토랑의 이름 및 전화 번호는 아이템 특징들이다. 특징들은 고유한 것(레스토랑의 이름 또는 요리)일 수 있거나, 또는 상관 관계에 있는 것(예컨대, 현재 관심 위치로부터의 거리)일 수 있다. 그들은 정적(예컨대, 레스토랑 이름)일 수 있거나 또는 동적(순위 평가)일 수 있다. 그들은 다른 데이터로부터 계산된 합성 값들(예컨대, "돈의 가치" 점수)일 수 있다. 아이템 특징들은 도메인 모델러에 의해 제작된, 사용자를 위한 추상물들이며; 그들은 백엔드 서비스들로부터의 기초 데이터에 대응할 필요가 없다.
선택 기준들은 아이템들의 값 또는 관련성을 비교하는 데 이용될 수 있는 아이템 특징들이다. 즉, 그들은 어느 아이템들이 바람직한지 말하는 방식들이다. 선택 기준들은, 아이템들 자체가 고유한 속성들이든 계산된 것들이든, 그들의 특징들로서 모델링된다. 예를 들어, 근접성(관심 위치로부터의 거리로서 정의됨)은 선택 기준이다. 공간-시간에서의 위치는 선택 기준이 아닌 속성이며, 그것은 관심 위치로부터의 거리를 계산하기 위해 관심 위치와 함께 이용된다.
선택 기준들은 고유한 선호도 순서를 가질 수 있다. 즉, 임의의 특정 기준의 값들은 최상의 첫번째 순서로 아이템들을 정렬시키는 데 이용될 수 있다. 예를 들어, 근접성 기준은 더 가까운 것이 더 좋은 것이라는 고유한 선호도를 갖는다. 반면, 위치는 고유한 선호도 값을 갖지 않는다. 이러한 제약은 시스템이 디폴트 가정을 하게 하며, 사용자가 단지 기준을 언급하기만 하면 선택을 안내한다. 예를 들어, 사용자 인터페이스는 "순위 평가별로 분류"할 것을 제공할 수 있고, 더 높게 순위가 평가된 것이 더 좋은 것이라고 가정할 수 있다.
하나 이상의 선택 기준들은 또한 아이템 특징들이며; 그들은 가능성있는 아이템들 중에서 선택하는 것과 관련된 그러한 특징들이다. 그러나, 아이템 특징들이 반드시 선호도와 관련되는 것은 아니다(예컨대, 레스토랑의 이름 및 전화 번호는 그들 중에서 선택하는 것과는 보통 무관하다).
적어도 하나의 실시예에서, 제약들은 선택 기준들의 원하는 값들에 대한 제약들이다. 공식적으로, 제약들은 세트 구성원(예컨대, 요리 유형이 이탈리아식을 포함함), 패턴 매칭들(예컨대, 레스토랑 리뷰 텍스트가 "낭만적"을 포함함), 퍼지 불균등(예컨대, 몇 마일 미만의 거리), 정성적 임계치들(예컨대, 순위가 높게 평가됨), 또는 더 복잡한 기능들(예컨대, 돈에 대한 양호한 가치)로서 표현될 수 있다. 일반인들을 위해 충분히 간단한 상황을 만들기 위해, 이러한 데이터 모델은 적어도 하나 이상의 제약들을, 단어들로서 매칭될 수 있는 심볼 값들로 감소시킨다. 시간 및 거리는 이러한 감소로부터 배제될 수 있다. 일 실시예에서, 제약들을 구현하는 데 이용되는 연산자들 및 임계 값들은 사용자로부터 은닉된다. 예를 들어, "요리"로 지칭되는 선택 기준들에 대한 제약이 "이탈리아식" 또는 "중국식"과 같은 심볼 값으로서 표현될 수 있다. 순위 평가에 대한 제약은 "추천"된다(이원적 선택). 시간 및 거리의 경우, 일 실시예에서, 어시스턴트(1002)는 소정 범위의 입력들 및 제약 값들을 다루는 전용 표현(proprietary representation)들을 이용한다. 예를 들어, 거리는 "도보 거리"일 수 있고, 시간은 "오늘밤"일 수 있으며; 일 실시예에서, 어시스턴트(1002)는 특별한 프로세싱을 이용하여 그러한 입력을 더 정확한 데이터에 매칭시킨다.
적어도 하나의 실시예에서, 일부 제약들은 필수적인 제약들일 수 있다. 이는 태스크가 단순히 이러한 데이터 없이 완성될 수는 없다는 것을 의미한다. 예를 들어, 이름을 알고 있는 경우라고 하더라도, 원하는 위치에 대한 어떤 견해 없이 레스토랑을 고르는 것은 어렵다.
요약하자면, 도메인은 사용자들에게 중요한 아이템 특징들을 갖는 선택 분류들로서 모델링된다. 특징들 중 일부는 사용자에게 제공된 아이템들을 선택하고 주문하는 데 이용된다 - 이들 특징들은 선택 기준들로서 지칭됨. 제약들은 아이템들의 세트를 매칭되는 것들로 좁히는 선택 기준들에 대한 심볼 한계들이다.
종종, 다수의 기준들이 경합할 수 있고, 제약들이 부분적으로 매칭될 수 있다. 데이터 모델은, 최적화(최상의 솔루션을 찾는 것)로부터 매칭 문제(특정 기준들의 세트에 상당히 적절하고 심볼 제약들의 세트를 매칭시키는 아이템들을 찾는 것)에 이르는 선택 문제를 감소시킨다. 기준들 및 제약들을 선택하고 순서를 판정하기 위한 알고리즘들이 다음 섹션에서 기술된다.
제한적 선택에 대한 방법
일 실시예에서, 어시스턴트(1002)는 적어도 하나에 대한 암시적 또는 명시적 제약들과 함께 입력으로서 기준들의 정렬된 목록을 취함으로써 그리고 핵심적인 특징들을 갖는 후보 아이템들의 세트를 생성함으로써 제한적 선택을 수행한다. 계산상, 선택 태스크는, 우선, 선택 분류를 식별하고, 이어서, 중요한 선택 기준들을 식별하고, 이어서, 제약들(수용가능한 솔루션들의 한계들)을 특정하고, 그리고 수용가능한 아이템들을 찾는 가장 적합한 순서로 인스턴스들을 철저히 조사하는 내포형 검색(nested search)으로서 특징지어질 수 있다.
이제, 도 45를 참조하면, 내포형 검색으로서의 제한적 선택 태스크에 대한 추상적 모델(4500)의 예가 도시되어 있다. 예에서, 어시스턴트(1002)는 모든 국소적 검색 유형들(4501) 중에서 선택 호출을 식별한다(4505). 식별된 분류는 레스토랑이다. 모든 레스토랑들(4502)의 세트 내에서, 어시스턴트(1002)는 기준들을 선택한다(4506). 예에서, 기준은 거리로서 식별된다. 펜실베니아주에 있는 레스토랑들(4503)의 세트 내에서, 어시스턴트(1002)는 검색을 위한 제약들을 특정한다(4507). 예에서, 식별된 제약은 "이탈리아식 요리"이다. 펜실베니아주에 있는 이탈리아식 레스토랑들(4504)의 세트 내에서, 어시스턴트(1002)는 사용자에게로의 제시를 위한 아이템들을 선택한다(4508).
일 실시예에서, 그러한 내포형 검색은, 데이터를 도출하고 결과들을 제시하기 위한 흐름이라기보다는, 일단 그것이 관련 입력 데이터를 갖게 되면 어시스턴트(1002)가 행하는 것이다. 일 실시예에서, 그러한 제어 흐름은 어시스턴트(1002)와 사용자 사이에서의, 다이얼로그 및 태스크 흐름 모델들과 같은 다른 절차들에 의해 동작하는 다이얼로그를 통해 관리된다. 제한적 선택은 이러한 추상화 레벨(즉, 도메인과는 무관하게 제한적 선택 태스크들에 적합함)에서 다이얼로그 및 태스크 흐름 모델들을 구축하기 위한 프레임워크를 제공한다.
이제, 도 46을 참조하면, 검색 프로세스를 통해 사용자를 안내하여 관련 입력 데이터가 획득될 수 있는 것을 돕도록 하는 다이얼로그(4600)의 예가 도시되어 있다.
예시적인 다이얼로그(4600)에서, 제1 단계는, 사용자가, 선택 분류로서, 그들이 찾고 있는 것의 종류를 진술하게 하는 것이다. 예를 들어, 사용자는 "팔로 알토에서 정찬"이라고 말함으로써 이를 행할 수 있다. 이것은 어시스턴트(1002)가 태스크(예컨대, 제한적 선택 태스크(4602)) 및 도메인을 추론하게 한다(4601).
일단 어시스턴트(1002)가 태스크 및 도메인 결합(선택 분류 = 레스토랑)을 이해했다면, 다음 단계는, 예를 들어 기준들 및/또는 제약들을 통합함으로써(4603), 이러한 사용자에게 어느 선택 기준들이 중요한지 이해하는 것이다. 상기 예에서, "팔로 알토에서"는 관심 위치를 나타낸다. 레스토랑의 맥락에서, 시스템은 위치를 근접성 제약(엄밀히 말해서, 근접성 기준에 대한 제약)으로서 해석할 수 있다. 어시스턴트(1002)는 필요한 것을 설명하고(1604) 입력을 수신한다. 선택안 세트를 합리적인 크기로 제한하기에 충분한 정보가 있는 경우, 어시스턴트(1002)는 입력을 패러프레이징하고, 일부 유용한 순서로 분류된, 근접성 제약을 충족시키는 하나 이상의 레스토랑들을 제시한다(4605). 이어서, 사용자는 이러한 목록으로부터 기준들 및 제약들을 선택할 수 있거나(4607) 또는 구체화할 수 있다(4606). 어시스턴트(1002)는 이미 진술된 제약들에 관해 추론하고, 도움이 될 수 있는 다른 기준들을 제안하는 도메인 특정 지식을 이용하여 이들 기준들에 대한 제약을 마찬가지로 통합한다. 예를 들어, 어시스턴트(1002)는, 호텔의 도보 거리 내에 있는 레스토랑들을 추천할 때, 통합할 유용한 기준들이 요리 및 테이블의 이용가능성일 것임을 추론할 수 있다.
제한적 선택 태스크는 사용자가 선택 분류의 인스턴스를 선택할 때(4607) 완료된다. 일 실시예에서, 추가적인 후속 태스크들(4609)이 어시스턴트(1002)에 의해 가능해진다. 따라서, 어시스턴트(1002)는 일부 다른 값을 제공하면서 선택을 나타내는 서비스들을 제공할 수 있다. 예들(4608)은 레스토랑을 예약하는 것, 캘린더에 리마인더를 설정하는 것, 그리고/또는 초대장을 보냄으로써 다른 이들과 선택을 공유하는 것을 포함한다. 예를 들어, 레스토랑을 예약하는 것은 그것이 선택되었다는 것을 확실히 나타내며; 다른 옵션들은 캘린더 상에 레트토랑을 넣는 것 또는 친구들에게 길 안내와 함께 초대장을 전송하는 것일 수 있다.
이제, 도 47을 참조하면, 일 실시예에 따른 제한적 선택의 방법을 묘사한 흐름도가 도시되어 있다. 일 실시예에서, 어시스턴트(1002)는 기회주의적이고 상호 주도적인 방식(opportunistic and mixed-initiative manner)으로 동작하여, 사용자가, 예를 들어 태스크, 도메인, 기준들, 및 제약들을 입력 시에 한번에 하나 이상 진술함으로써 내부 루프로 점프하는 것을 허용한다.
방법이 시작된다(단계 4701). 입력이 본 명세서에 기술된 모드들 중 임의의 것에 따라 사용자로부터 수신된다(단계 4702). 입력에 기초하여, 태스크가 알려져 있지 않은 경우, 어시스턴트(1002)는 사용자로부터 입력을 명확히 할 것을 요청한다(단계 4705).
단계 4717에서, 어시스턴트(1002)는 사용자가 추가 입력을 제공하는지 여부를 판정한다. 제공하는 경우, 어시스턴트(1002)는 단계 4702로 되돌아간다. 제공하지 않는 경우, 방법은 종료된다(단계 4799).
단계 4703에서, 태스크가 알려져 있는 경우, 어시스턴트(1002)는 태스크가 제한적 선택인지 여부를 판정한다(단계 4704). 제한적 선택이 아닌 경우, 어시스턴트(1002)는 특정 태스크 흐름으로 진행한다(단계 4706).
단계 4704에서, 태스크가 제한적 선택인 경우, 어시스턴트(1002)는 선택 분류가 판정될 수 있는지 여부를 판정한다(단계 4707). 판정될 수 없는 경우, 어시스턴트(1002)는 알려진 선택 분류들의 선택안을 제공하고(단계 4708), 단계 4717로 되돌아간다.
단계 4707에서, 선택 분류가 판정될 수 있는 경우, 어시스턴트(1002)는 모든 필수적인 제약들이 판정될 수 있는지 여부를 판정한다(단계 4709). 판정될 수 없는 경우, 어시스턴트(1002)는 필수적인 정보에 대해 프롬프트하고(단계 4710), 단계 4717로 되돌아간다.
단계 4709에서, 모든 필수적인 제약들이 판정될 수 있는 경우, 어시스턴트(1002)는, 제약들이 주어지면, 임의의 결과 아이템들을 찾을 수 있는지 여부를 판정한다(단계 4711). 제약들을 충족시키는 아이템들이 없는 경우, 어시스턴트(1002)는 제약들을 완화시킬 방식들을 제공한다(단계 4712). 예를 들어, 어시스턴트(1002)는 필터/분류 알고리즘을 이용하여 제약들을 최저 우선권으로부터 최고 우선권까지 완화시킬 수 있다. 일 실시예에서, 제약들 중 일부를 충족시키는 아이템들이 있는 경우, 어시스턴트(1002)는 상황을 패러프레이징할 수 있다(예를 들어, "나는 샌 카를로스에서 일요일에 배달하는 추천된 그리스식 레스토랑들을 찾을 수 없었습니다. 그러나, 나는 샌 카를로스에서 3곳의 그리스식 레스토랑들과 7곳의 추천된 레스토랑들을 찾았습니다."를 출력할 수 있다). 일 실시예에서, 임의의 제약들과 매칭되는 아이템들이 없는 경우, 어시스턴트(1002)는 이러한 상황을 패러프레이징할 수 있고, 상이한 제약들에 대해 프롬프트할 수 있다(예를 들어, "죄송합니다만, 나는 텍사스주 애니타운에서 어떠한 레스토랑도 찾을 수 없었습니다. 당신은 상이한 위치를 고를 수 있습니다."를 출력할 수 있다). 어시스턴트(1002)는 단계 4717로 되돌아간다.
단계 4711에서, 결과 아이템들을 찾을 수 있는 경우, 어시스턴트(1002)는 아이템들의 목록을 제공한다(단계 4713). 일 실시예에서, 어시스턴트(1002)는 현재 특정된 기준들 및 제약들을 패러프레이징한다(예를 들어, "산호세에는 몇 개의 추천된 이탈리아식 레스토랑들이 있습니다."를 출력한다 (추천됨=예, 요리=이탈리아식, 근접성=<산호세에서>)). 일 실시예에서, 어시스턴트(1002)는 알려진 제약들을 충족시키는 아이템들의 분류된, 페이지가 매겨진 목록을 제시한다. 아이템이 제약들 중 일부만을 나타내는 경우, 그러한 조건은 아이템 디스플레이의 일부로서 나타날 수 있다. 일 실시예에서, 어시스턴트(1002)는 사용자에게 예를 들어 예약하기, 기억하기, 스케줄링하기, 또는 공유하기와 같은, 아이템에 대한 다른 태스크를 개시함으로써 그 아이템을 선택하는 방식들을 제공한다. 일 실시예에서, 임의의 주어진 아이템에 대해, 어시스턴트(1002)는 선택 분류의 인스턴스들을 고르는 데 핵심적인 아이템 특징들을 제시한다. 일 실시예에서, 어시스턴트(1002)는 아이템이 제약을 얼마나 충족시키는지 제시하는데; 예를 들어, 5의 Zagat 순위 평가는 "추천됨=예"라는 제약을 충족시키고, "1 마일 떨어짐"은 "주소지의 도보 거리 내에서"라는 제약을 충족시킨다. 일 실시예에서, 어시스턴트(1002)는 사용자가 아이템 상에 더 많은 상세사항을 드릴 다운(drill down)하게 하는데, 이는 더 많은 아이템 특징들의 디스플레이를 야기한다.
어시스턴트(1002)는 사용자가 아이템을 선택했는지 여부를 판정한다(단계 4714). 사용자가 아이템을 선택하는 경우, 태스크는 완료된다. 임의의 후속 태스크가, 있는 경우에, 수행되고(단계 4715), 방법은 종료된다(단계 4799).
단계 4714에서, 사용자가 아이템을 선택하지 않는 경우, 어시스턴트(1002)는 사용자에게 다른 기준들 및 제약들을 선택하는 방식들을 제공하고(단계 4716), 단계 4717로 되돌아간다. 예를 들어, 현재 특정된 기준들 및 제약들이 주어지면, 어시스턴트(1002)는 선택안 세트를 원하는 크기로 제한할 가능성이 가장 큰 기준들을 제공할 수 있다. 사용자가 제약 값을 선택하는 경우, 그 제약 값은 단계 4703 내지 단계 4713이 반복될 때 이전에 판정된 제약들에 추가된다.
하나 이상의 기준들이 고유한 선호도 값을 가질 수 있으므로, 기준들을 선택하는 것은 요청에 대한 정보를 추가시킬 수 있다. 예를 들어, 사용자에게 긍정적 리뷰가 가치있음을 나타내게 하는 것은 어시스턴트(1002)가 이러한 기준에 의해 분류하게 한다. 그러한 정보는 단계 4703 내지 단계 4713이 반복될 때 고려될 수 있다.
일 실시예에서, 어시스턴트(1002)는 사용자가 이미 특정된 기준의 중요성을 높여서 그것이 우선권 순서상 더 높아지게 한다. 예를 들어, 사용자가 그의 위치의 1 블록 내에 있는 빠르고, 저렴하며, 높게 추천되는 레스토랑들을 물어본 경우, 어시스턴트(1002)는 사용자가 이들 기준들 중 어느 것이 더 중요한지 선택할 것을 요청할 수 있다. 그러한 정보는 단계 4703 내지 단계 4713이 반복될 때 고려될 수 있다.
일 실시예에서, 사용자는 도 47의 방법이 수행되고 있는 동안의 임의의 지점에서 추가 입력을 제공할 수 있다. 일 실시예에서, 어시스턴트(1002)는 그러한 입력을 주기적으로 또는 연속적으로 조회하고, 응답으로, 단계 4703으로 되돌아가서 그것을 프로세싱한다.
일 실시예에서, 아이템 또는 아이템들의 목록을 출력할 때, 어시스턴트(1002)는, 아이템들의 제시 시에, 그들을 선택하고 주문하는 데 이용된 특징들을 나타낸다. 예를 들어, 사용자가 근처의 이탈리아식 레스토랑들을 물어본 경우, 거리 및 요리에 대한 그러한 아이템 특징들은 아이템의 제시 시에 제시될 수 있다. 이는 매칭들을 강조하는 것뿐만 아니라 아이템의 제시 시에 수반된 선택 기준들을 나열하는 것을 포함할 수 있다.
예시적인 도메인들
도 52는 다양한 실시예들에 따른, 어시스턴트(1002)에 의해 다루어질 수 있는 제한적 선택 도메인들의 예를 제공한다.
필터링 및 분류 결과들
일 실시예에서, 현재 특정된 기준들 및 제약들을 충족시키는 아이템들을 제시하는 경우, 필터/분류 방법이 채용될 수 있다. 일 실시예에서, 선택 제약들은 기초 서비스들에 대한 필터 및 분류 파라미터들 양측 모두의 역할을 할 수 있다. 따라서, 어느 아이템들이 목록 내에 있는지 판정하는 데 그리고 그들의 페이지를 매기고 그들을 제시하는 순서를 계산하는 데 임의의 선택 기준이 이용될 수 있다. 이러한 태스크에 대한 분류 순서는 검색에서의 관련성 순위 평가와 유사하다. 예를 들어, 근접성은 "운전 거리 내에서"와 같은 심볼 제약 값들을 갖는 기준, 및 거리별로 분류하는 일반적인 견해이다. "운전 거리" 제약은 후보 아이템들의 그룹을 선택하는 데 이용될 수 있다. 그 그룹 내에서, 더 가까운 아이템들이 목록 내에서 더 높게 분류될 수 있다.
일 실시예에서, 선택 제약들 및 연관된 필터링하기 및 분류하기는 별개의 "레벨"들에 있으며, 이들은 기초 데이터 및 사용자로부터의 입력 양측 모두의 기능들이다. 예를 들어, 근접성은 "도보 거리", "택시 거리", "운전 거리"와 같은 레벨들로 그룹화된다. 분류 시, 도보 거리 내에 있는 하나 이상의 아이템들은 그들이 동일한 거리에 있는 것처럼 취급된다. 사용자로부터의 입력은 그 또는 그녀가 제약을 특정하는 방식으로 작동하기 시작할 수 있다. 예를 들어 사용자가 "팔로 알토에서"를 입력하는 경우, 팔로 알토 시 경계 내의 하나 이상의 아이템들은 완벽한 매칭들이고, 동등하다. 사용자가 "유니버시티 애비뉴 기차역 근처"라고 입력하는 경우, 매칭은 선택 분류에 의존하는 매칭의 정도(예컨대, 레스토랑에 대한 "근처"는 호텔에 대한 "근처"와는 상이함)와 함께 그 주소로부터의 거리에 의존할 것이다. 심지어 연속 값으로 특정될 수 있는 제약 내에서조차, 불연속화(discretization)가 적용될 수 있다. 이는 다수의 기준들이 최상의 첫번째 순서를 판정하는 데 관여할 수 있도록 분류 동작들에 있어서 중요할 수 있다.
일 실시예에서, 아이템 목록 -- "매칭"되거나 "충분히 양호한" 것으로 간주되는 그들 아이템들 -- 은 출력의 하나의 "페이지" 상에 제시된 아이템들의 수보다 더 짧을 수 있거나 더 길 수 있다. 대체로, 첫번째 페이지에서의 아이템들이 가장 많은 주목을 받지만, 개념적으로는 더 긴 목록이 있으며, 페이지 매김은 단순히 출력 매체의 폼 팩터(form factor)의 기능일 뿐이다. 이는, 예를 들어, 사용자가 어떤 기준별로 아이템들을 분류하거나 브라우징하는 방식을 제공받는 경우, 그것은 분류되거나 브라우징된 아이템들의 전체 세트(하나의 페이지보다 가치가 더 큼)임을 의미한다.
일 실시예에서, 선택 기준들 사이에는 우선권 순서가 있다. 즉, 일부 기준들은 필터 및 분류 시에 다른 것들보다 더 중요할 수 있다. 일 실시예에서, 사용자에 의해 선택된 그들 기준들은 다른 것들보다 더 높은 우선권을 부여받으며, 하나 이상의 기준들을 넘어서는 디폴트 순서가 있다. 이는 일반적인 사전편찬상의 분류를 허용한다. 가정은, 의미있는 선험적 우선권이 있다는 것이다. 예를 들어, 사용자가 달리 진술하지 않는다면, 레스토랑이 비싸지 않은 것보다 가까운 것이 더 중요할 수 있다. 일 실시예에서, 선험적 우선권 순서는 도메인 특정적이다. 모델은, 원하는 경우, 사용자 특정 선호도가 도메인 디폴트보다 우선하게 한다.
제약들의 값들이 여러 개의 내부 데이터 유형들을 표현할 수 있으므로, 제약들이 매칭되는 상이한 방식들이 있고, 그들은 제약에 특정적일 수 있다. 예를 들어, 일 실시예에서:
세트 구성원 제약들은 속성 값에 기초하여 하나 이상 매칭되거나 또는 어느 것도 매칭되지 않는다. 예를 들어, "요리=그리스식"은 레스토랑에 대한 요리들의 세트가 그리스식을 포함한다는 것을 의미한다.
계산 제약들은 임계치에서 매칭된다. 예를 들어, 순위 평가 기준은 순위 평가되거나, 높게 순위 평가되거나, 또는 최고로 순위 평가된 제약 값들을 가질 수 있다. 높게 순위 평가되는 것에 대해 제한하는 것은 또한 최고로 순위 평가되는 것과 매칭될 것이다.
수치 제약들은 기준 특정적일 수 있는 임계치에서 매칭된다. 예를 들어, "늦게 영업하는 것"이 기준일 수 있고, 사용자는 10:00pm 후에 영업하는 장소들을 물어볼 수 있다. 이러한 종류의 제약은 제한적 선택 태스크에 대한 범주로부터 약간 벗어날 수 있는데, 이는 그것이 심볼 제약 값이 아니기 때문이다. 그러나, 일 실시예에서, 어시스턴트(1002)는 이와 같은 수치 제약들의 일부 경우들을 인식하고, 그들을 심볼 제약들을 갖는 임계 값들에 맵핑시킨다(예컨대, "팔로 알토에서 현재 영업 중인 레스토랑들" -> "팔로 알토에서 늦게 영업하는 레스토랑이 2곳 있습니다.").
위치 및 시간은 특수하게 다루어진다. 근접성에 대한 제약은, 어떤 레벨의 입도로 특정되고 매칭을 판정하는 관심 위치일 수 있다. 사용자가 도시를 특정하는 경우, 도시 레벨 매칭이 적절하며; ZIP 코드가 반경을 허용할 수 있다. 어시스턴트(1002)는, 또한, 특수한 프로세싱에도 기초하여, 다른 관심 위치들 "근처"에 있는 위치들을 이해할 수 있다. 시간은 주어진 시간대 내에서의 테이블 이용가능성 또는 항공편과 같은 서비스 호출에 기초하여 임계 값을 갖는 기준들의 제약 값으로서 관련된다.
일 실시예에서, 제약들은 선택을 위한 단일 임계 값 및 분류하기 위한 개별 값들의 작은 세트가 있도록 모델링될 수 있다. 예를 들어, 가격 적정성(affordability) 기준은 대략적으로 이원적인 제약으로서 모델링될 수 있는데, 여기서 적정 가격의 레스토랑들은 어떤 임계 가격대 아래에 있는 임의의 것이다. 데이터가 선택을 위한 다수의 개별 레벨들을 정당화시키는 경우, 제약들은 매칭의 변화도(gradient)를 이용하여 모델링될 수 있다. 일 실시예에서, 두 개의 매칭 레벨들(예컨대, 강한 매칭과 약한 매칭)이 제공될 수 있지만; 당업자는, 다른 실시예들에서 임의의 수의 매칭 레벨들이 제공될 수 있다는 것을 인식할 것이다. 예를 들어, 근접성은 퍼지 한계와 매칭되어, 관심 위치 근처에 있는 것들이 약하게 매칭될 수 있게 할 수 있다. 강하거나 약한 매칭의 동작 결과는 후술하는 바와 같은 필터/분류 알고리즘 내에 있다.
적어도 하나의 기준에 대해, 매칭 및 디폴트 임계치들에 대한 접근법이, 관련되는 경우에, 확립될 수 있다. 사용자는 단지 제약의 이름, 심볼 제약 값, 또는 (시간 및 위치와 같이) 특수하게 다루어지는 경우의 정확한 제약 표현만을 말하는 것이 가능할 수 있다.
제한적 선택에 대한 이상적인 상황은, 후보들 - 그들 중 하나 이상이 제약들을 충족시킴 - 의 짧은 목록을 생성하는 제약들을 사용자가 진술하는 경우에 발생한다. 이어서, 사용자는 아이템 특징들에 기초하여 위너들 중에서 선택한다. 그러나, 많은 경우에 있어서, 문제는 과도 제한되는 것 또는 과소 제한되는 것이다. 그것이 과도 제한되는 경우, 제약들을 충족시키는 아이템들은 거의 또는 전혀 없다. 그것이 과소 제한되는 경우, 목록을 검사하는 것이 적절하지 않은 아주 많은 후보들이 있다. 일 실시예에서, 본 발명의 대체적인 제한적 선택 모델은 강건한 매칭을 갖는 다수의 제약들을 다룰 수 있고, 보통, 선택하게 될 무엇인가를 생성할 수 있다. 이어서, 사용자는 그들의 기준들 및 제약들을 구체화할 것 또는 단지 "충분히 양호한" 솔루션으로 태스크를 완료할 것을 택할 수 있다.
방법
일 실시예에서, 하기의 방법은 결과들을 필터링하고 분류하는 데 이용된다:
1. 사용자에 의해 선택된 선택 기준들의 정렬된 목록이 주어지면, 적어도 하나에 대한 제약들을 판정한다.
a. 사용자가 제약 값을 특정한 경우, 그것을 이용한다. 예를 들어, 사용자가 "그리스식 음식"이라고 말한 경우, 제약은 요리=그리스식이다. 사용자가 "샌프란시스코"라고 말한 경우, 제약은 샌프란시스코 시에서이다. 사용자가 "시장의 남쪽"이라고 말한 경우, 제약은 소마(SoMa)의 이웃에서이다.
b. 그렇지 않은 경우, 도메인 특정적 및 기준 특정적 디폴트를 이용한다. 예를 들어, 사용자가 "어떤 타이식 장소에서의 테이블"이라고 말한 경우, 그 또는 그녀는 이용가능성 기준이 관련된다는 것을 나타내고 있지만, 그 또는 그녀는 제약 값을 특정하지 않았다. 이용가능성에 대한 디폴트 제약 값들은 오늘밤과 같은 어떤 날짜 시간대 및 2라는 디폴트 인원수일 수 있다.
2. 특정된 제약들에 의해 N개의 결과들 중 최소치를 선택한다.
a. 강한 매칭에서 N개의 결과들을 얻도록 시도한다.
b. 그것이 실패하는 경우, 역 우선권 순서로 제약들을 완화시키도록 시도한다. 즉, 약한 레벨에서 매칭될 수 있는, 마지막을 제외한 기준들 중 하나 이상에 대해 강한 레벨에서 매칭시킨다. 그 제약에 대한 약한 매칭이 없는 경우, 최저 우선권으로부터 최고 우선권으로 약한 매칭들을 정렬시키도록 시도한다.
c. 이어서, 최저 우선권으로부터 최고 우선권으로 제약들에 대해 실패가 매칭되게 하는 루프를 반복한다.
3. 최소 선택안 세트를 얻은 후, 우선권 순서로 하나 이상의 기준들(사용자 특정적 기준들뿐만 아니라 기타 기준들을 포함할 수 있음) 전체에 걸쳐서 사전편찬상으로 분류한다.
a. 사용자 특정적 기준들의 세트를 최고 우선권으로서 고려하고, 이어서 하나 이상의 나머지 기준들을 그들의 선험적 우선권으로 고려한다. 예를 들어, 선험적 우선권이 (이용가능성, 요리, 근접성, 순위 평가)이고, 사용자가 근접성 및 요리에 대한 제약들을 제공하는 경우, 분류 우선권은 (요리, 근접성, 이용가능성, 순위 평가)이다.
b. 개별 매칭 레벨들(강한 매칭, 약한 매칭, 매칭 없음)을 이용하여, 제약들을 완화에서와 동일한 접근법을 이용하여 기준들을 분류하며, 이번에는 전체 기준 목록에 적용한다.
i. 선택안 세트가 제약들을 완화시키지 않은 채 획득된 경우, 선택안 세트의 하나 이상이 분류 시에 "연결"될 수 있는데, 그 이유는 그들이 강한 레벨들에서 하나 이상 매칭되기 때문이다. 이어서, 우선권 목록 내의 다음 기준들이 그들을 분류하도록 효과를 나타내기 시작할 수 있다. 예를 들어, 사용자가 요리=이탈리아식, 근접성=샌프란시스코에서, 그리고 분류 우선권이 (요리, 근접성, 이용가능성, 순위 평가)이다라고 말하는 경우, 목록 상에 있는 장소들 중 하나 이상이 요리 및 근접성에 대한 동등한 매칭 값들을 갖는다. 그래서, 목록은 이용가능성에 대해 분류될 것이다(이용 가능한 테이블들을 갖는 장소들은 최상측으로 올라간다). 이용가능한 장소들 내에서, 최고 순위 평가된 것들은 최상측에 있을 것이다.
ii. 선택안 세트가 제약들을 완화시킴으로써 획득된 경우, 전체 매칭 아이템들 중 하나 이상이 목록의 최상측에 있고, 이어서 부분적으로 매칭되는 아이템들이 있다. 매칭 그룹 내에서, 그들은 나머지 기준들에 의해 분류되고, 부분 매칭 그룹에 대해서도 동일하다. 예를 들어, 샌프란시스코에 단지 두 개의 이탈리아식 레스토랑들이 있는 경우, 이용가능한 하나가 먼저 제시될 것이고, 이어서 이용불가능한 하나가 제시될 것이다. 이어서, 샌프란시스코에 있는 나머지 레스토랑들이 이용가능성 및 순위 평가에 의해 분류된 채 제시될 것이다.
우선권 순서
본 명세서에서 설명되는 기술들은 어시스턴트(1002)가 부분적으로 특정된 제약들 및 불완전한 데이터에도 불구하고 극히 강건해지게 한다. 일 실시예에서, 어시스턴트(1002)는 이들 기술들을 이용하여, 즉 관련성에 따라 최상의 첫번째 순서로 아이템들의 사용자 목록을 생성한다.
일 실시예에서, 그러한 관련성 분류는 선험적 우선권 순서에 기초한다. 즉, 도메인에 관한 중요한 것들 중에서, 기준들의 세트가 선택되고, 중요도의 순서로 배치된다. 하나 이상의 것들이 동등한 경우, 우선권 순위가 더 높은 기준들이 순서적으로 더 낮은 것들보다 아이템들 사이에서 제한적 선택에 대해 더 많이 관련될 수 있다. 어시스턴트(1002)는 임의의 수의 기준들에 대해 동작할 수 있다. 추가로, 기준들은 기존의 거동들을 벗어나지 않으면서 시간 경과에 따라 수정될 수 있다.
일 실시예에서, 기준들 사이에서의 우선권 순서는 도메인 특정 파라미터들로 동조될 수 있는데, 이는 기준들이 상호작용하는 방식이 선택 분류에 의존할 수 있기 때문이다. 예를 들어, 호텔들 중에서 선택하는 경우에는 이용가능성 및 가격이 우세한 제약들일 수 있고, 반면에 레스토랑들의 경우에는 요리 및 근접성이 더 중요할 수 있다.
일 실시예에서, 사용자는 다이얼로그에서 디폴트 기준 순서를 무시할 수 있다. 이는 순서를 이용하여 어느 제약들이 완화되어야 하는지 판정하게 함으로써 검색이 과도 제한될 때 시스템이 사용자를 안내하게 한다. 예를 들어, 사용자가 요리, 근접성, 추천, 및 음식 아이템에 대한 제약들을 주었고, 전체적으로 매칭되는 아이템들이 없던 경우, 사용자는 음식 아이템이 추천 레벨보다 더 중요했다는 것을 말할 수 있고, 믹스를 변경하여 원하는 음식 아이템 매칭이 최상측으로 분류되게 할 수 있다.
일 실시예에서, 우선권 순서가 판정되는 경우, 사용자 특정적 제약들은 다른 것들 이상의 우선권을 취한다. 예를 들어, 일 실시예에서, 근접성은 필수적인 제약이고, 그러한 것은 항상 특정되며, 추가로 다른 선택되지 않은 제약들 이상의 우선권을 갖는다. 따라서, 그것은 상당히 우세해지도록 하기 위해 최고의 우선권 제약이 될 필요는 없다. 또한, 많은 기준들은 제약이 사용자에 의해 주어지지 않는 경우에는 하나 이상에서 매칭될 수 없으며, 그래서 이들 기준들의 우선권은 사용자 선택 기준들 내에서만 중요하다.
예를 들어, 사용자가 요리를 특정하는 경우에 그것은 그들에게 중요하고, 그렇지 않은 경우에는 아이템들을 분류하는 것에 관련되지 않는다.
예를 들어, 하기는 레스토랑 도메인에 대한 후보 우선권 분류 패러다임이다:
1. 요리* (제약 값이 주어지지 않는 경우에는 분류가능하지 않음)
2. 이용가능성* (디폴트 제약 값, 예컨대 시간을 이용하여 분류가능함)
3. 추천됨
4. 근접성* (제약 값이 항상 주어짐)
5. 가격 적정성
6. 배달할 수 있음
7. 음식 아이템(제약 값, 예컨대 키워드가 주어지지 않는 경우에는 분류가능하지 않음)
8. 키워드들(제약 값, 예컨대 키워드가 주어지지 않는 경우에는 분류가능하지 않음)
9. 레스토랑 이름
하기는 상기 분류 패러다임에 대한 설계 근거의 예이다:
적어도 하나의 실시예에서, 근접성은 대부분의 것들보다 더 중요할 수 있다. 그러나, 그것이 개별 레벨들(도시에서, 도보 반경 내에서 등)에서 매칭되고, 그것이 항상 특정되므로, 주로 대부분의 매칭 아이템들이 근접성에 대해 "연결"될 수 있다.
(예를 들어, open-table.com과 같은 웹사이트 상에서의 검색에 의해 판정되는 바와 같은) 이용가능성은 귀중한 분류 기준이며, 특정되지 않는 경우에 분류하기 위한 디폴트 값에 기초할 수 있다. 사용자가 예약하기 위한 시간을 나타내는 경우, 오로지 이용가능한 장소들만이 목록 내에 있을 수 있고, 분류는 추천에 기초할 수 있다.
사용자가 그들이 높게 추천된 장소들을 원한다고 말하는 경우, 그것은 근접성 및 이용가능성을 넘어서 분류할 수 있고, 이들 기준들은 추천 전에 완화될 수 있다. 가정은, 누군가가 멋진 장소를 찾고 있는 경우, 그들이 좀 먼 거리를 기꺼이 운전할 수 있고 그것이 디폴트 테이블 이용가능성보다 더 중요하다는 것이다. 이용가능성에 대한 특정 시간이 특정되고, 사용자가 추천된 장소들을 요청하는 경우, 추천되면서 이용가능하기도 한 장소들이 먼저 올 수 있고, 추천은 이용가능성이 하나 이상에서 매칭되는 것에 실패하기 전에 약한 매칭으로 완화될 수 있다.
이름을 제외한 나머지 제약들은 불완전한 데이터 또는 매칭에 기초한 하나 이상의 것들이다. 그래서, 그들은 디폴트에 의한 약한 분류 휴리스틱들이며, 그들이 특정되는 경우에는 매칭은 하나 이상이거나, 전혀 없다.
이름은 누군가가 레스토랑을 이름별로 언급하는 경우를 다루기 위한, 예컨대 팔로 알토 근처에 있는 하나 이상의 호비스 레스토랑들을 찾기 위한 제약으로서 이용될 수 있다. 이러한 경우에 있어서, 하나 이상의 아이템들은 이름과 매칭될 수 있고, 근접성(이러한 예에서는, 다른 특정된 제약)별로 분류될 수 있다.
도메인 모델링: 기초 데이터로의 선택 기준들의 맵핑
어시스턴트(1002)에 의한 계산에 이용가능한 데이터와 선택을 행하는 데 이용되는 데이터 사이를 구별하는 것이 바람직할 수 있다. 일 실시예에서, 어시스턴트(1002)는 아이템들 사이를 구별하는 데 이용되는 하나 이상의 종류들의 데이터를 간단한 선택 기준 모델 내에 삽입함으로써 사용자를 위해 복잡도를 감소시키는 데이터 모델을 이용한다. 내부적으로, 이들 데이터는 여러 개의 형태들을 취할 수 있다. 선택 분류의 인스턴스들은 고유한 속성들 및 특질들(예컨대, 레스토랑의 요리)을 가질 수 있고, 치수(예컨대, 어떤 위치로부터의 거리)를 따라서 비교될 수 있고, 어떤 쿼리(예컨대, 그것이 텍스트 패턴과 매칭되는지 또는 주어진 시간에 이용가능한지 여부)에 의해 발견될 수 있다. 그들은 또한 선택 기준들로서 사용자에게 노출되지 않은 다른 데이터(예컨대, 다수의 소스들로부터의 순위 평가들의 가중화된 조합들)로부터 계산될 수 있다. 이들 데이터는 태스크에 하나 이상이 관련되지만, 이들 세 가지 종류의 데이터 사이의 구분은 사용자와 관련되지 않는다. 사용자가 속성들 및 치수들에서보다는 오히려 원하는 선택안의 특징들에 관해서 생각하므로, 어시스턴트(1002)는 이들 다양한 기준들을 아이템들의 특징들로 조작가능하다. 어시스턴트(1002)는 사용자 직면 도메인 데이터 모델(user-facing domain data model)을 제공하고, 이를 웹 서비스들에서 발견된 데이터와 맵핑시킨다.
하나의 유형의 맵핑은 기초 데이터로부터 사용자 직면 기준들로의 유질동상(isomorphism)이다. 예를 들어, 사용자가 볼 수 있는 바와 같은 예약을 위한 테이블들의 이용가능성은 정확하게는 opentable.com과 같은 온라인 예약 웹사이트가 시간 및 인원수에 대해 동일한 입도를 이용하여 제공하는 것일 수 있다.
다른 유형의 맵핑은, 가능하게는 동등한 값들의 통합을 갖는, 하나 이상의 서비스들로부터 공통 값 세트로의 데이터 정규화이다. 예를 들어, 하나 이상의 레스토랑들의 요리들은 어시스턴트(1002)에서 단일 온톨로지로서 표현될 수 있고, 상이한 서비스들에서 이용되는 다양한 어휘들에 맵핑될 수 있다. 그 온톨로지는 계층적일 수 있고, 적어도 하나의 서비스로부터의 특정 값들을 가리키는 잎 노드들을 가질 수 있다. 예를 들어, 하나의 서비스는 "중국식"에 대한 요리 값을 가질 수 있고, 다른 서비스는 "사천식(Szechuan)"에 대한 요리 값을 가질 수 있으며, 제3 서비스는 "아시아식"에 대한 요리 값을 가질 수 있다. 어시스턴트(1002)에 의해 이용되는 온톨로지는 "중국식 음식" 또는 "사천식"에 대한 지칭이 이들 노드들 중 하나 이상과 의미론적으로 매칭되게 할 것인데, 그 신뢰 레벨들은 매칭 정도를 반영한다.
정규화는 또한 정확도에서의 차이들을 해결하는 경우에 수반될 수 있다. 예를 들어, 레스토랑의 위치는 하나의 서비스에서의 거리 레벨로 주어질 수 있지만, 다른 서비스에서는 도시 레벨로만 제공될 수 있다. 일 실시예에서, 어시스턴트(1002)는 상이한 표면 데이터 값들에 맵핑될 수 있는 위치 및 시간의 심층적인 구조적 표현을 이용한다.
일 실시예에서, 어시스턴트(1002)는 전체 텍스트 검색 시의 매칭들에 맵핑될 수 있는 확장가능 수식어(qualifier)들(예컨대, 낭만적, 조용한), 태그들, 또는 기타 오픈 텍스트형 특징들에 대한 특수한 종류의 맵핑을 이용한다. 이러한 경우에 있어서의 선택 제약의 이름은 "~로서 기술된다"와 같은 무언가일 것이다.
적어도 하나의 실시예에서, 제약들은 동작 선호도 순서들에 맵핑될 수 있다. 즉, 선택 기준의 이름 및 그의 제약 값이 주어지면, 어시스턴트(1002)는 기준을 가능성있는 아이템들 전체에 걸친 순서로서 해석할 수 있다. 그러한 맵핑에서 다루는 여러 개의 기술적 문제들이 있다. 예를 들어:
선호도 순서들이 상충될 수 있다. 하나의 제약에 의해 부여되는 순서는 다른 제약에 의해 부여되는 순서와 부합하지 않을 수 있거나 또는 심지어 역으로 상관될 수 있다. 예를 들어, 가격 및 품질은 상반되는 경향이 있다. 일 실시예에서, 어시스턴트(1002)는 사용자의 희망을 반영하지만 데이터에 대해 참(ture)이 되는 가중화되거나 달리 조합된 순서로 사용자에 의해 선택된 제약들을 해석한다. 예를 들어, 사용자는 "도보 거리 내의 높게 순위 평가된, 저렴한 패스트푸드 프랑스식 레스토랑들"을 물어볼 수 있다. 많은 위치들에서, 어떠한 그러한 레스토랑도 없을 수 있다. 그러나, 일 실시예에서, 어시스턴트(1002)는 적어도 하나의 제약을 최적화하도록 시도하는 아이템들의 목록을 제시할 수 있고, 적어도 하나가 나열된 이유를 설명할 수 있다. 예를 들어, 아이템 하나는 "높게 순위 평가된 프랑스식 요리"일 수 있고, 다른 아이템은 "도보 거리 내의 저렴한 패스트푸드"일 수 있다.
데이터는 경성 제약 또는 연성 제약 중 어느 하나로서 이용될 수 있다. 예를 들어, 레스토랑의 가격대는 하나를 선택하는 데 중요할 수 있지만, 가격에 대한 임계 값을 미리 진술하는 것은 어려울 수 있다. 심지어 요리처럼 외견상으로 경성인 제약들조차도 부분 매칭 때문에 실제로는 연성 제약들일 수 있다. 일 실시예에서, 어시스턴트(1002)가 하나 이상의 기준들을 심볼 값들(예컨대, "저렴한" 또는 "가까운")로 단조롭게 하고자 하는 데이터 모델링 전략을 이용하므로, 이들 제약들은 매칭되는 특정 임계 값들에 관해 엄격하지 않다면 기준들 및 순서의 권리를 얻는 기능에 맵핑될 수 있다. 명확한 객관적 참 값들을 갖는 심볼 기준들의 경우, 어시스턴트(1002)는 다른 기준들보다 더 높은 객관적 기준들을 가중화할 수 있고, 아이템들 중 일부가 요청된 기준들과 엄밀하게 매칭되지 않음을 어시스턴트가 알고 있다는 것이 설명에서 명확해지게 할 수 있다.
대체로, 어시스턴트(1002)는 어느 아이템 특징들이 도메인에 대해 핵심적인지 그리고 선택 기준들로서 역할할 수 있는지 판정하며, 적어도 하나의 기준들에 대해, 가능성있는 제약 값들을 판정한다. 그러한 정보는, 예를 들어, 조작가능한 데이터 및 API 호출을 통해 제공될 수 있다.
패러프레이징 및 프롬프트 텍스트
전술한 바와 같이, 일 실시예에서, 어시스턴트(1002)는, 그것이 사용자의 의도를 이해하고 있고, 그의 현재 이해의 패러프레이징들을 생성함으로써 사용자의 목적을 향해 작업하는 중임을 보여주는 피드백을 제공한다. 본 발명의 대화형 다이얼로그 모델에서, 패러프레이징은 서문(예를 들어, 도 40에서의 패러프레이징(4003)), 또는 다음에 오는 결과들의 개요(예를 들어, 도 35에서의 목록(3502))와 같이 어시스턴트(1002)가 사용자의 입력 후에 출력하는 것이다.
프롬프트는 그들의 요청을 구체화하기 위해 또는 일부 치수들을 따르는 선택 공간을 조사하기 위해 그들이 할 수 있는 다른 무엇에 관한, 사용자에게로의 제안이다.
일 실시예에서, 패러프레이징 및 프롬프트 텍스트의 목적들은, 예를 들어 하기를 포함한다:
사용자의 진술된 기준들 및 어시스턴트(1002)의 가정의 측면에서 서비스들로부터 획득된 현재 결과들을 설명하는 것(예를 들어, 과소 제한된 요청들 및 과도 제한된 요청들의 결과들을 설명하는 것).
예를 들어, 하기의 패러프레이징 및 프롬프트는 이들 목적들 중 여러 개를 예시한다:
사용자 입력: 멘로 파크 내의 인도네시아식 음식
시스템 해석:
Task=constrainedSelection
SelectionClass=restaurant
제약들:
Location=Menlo Park, CA
Cuisine=Indonesian (known in ontology)
서비스들로부터의 결과들: 강한 매칭들이 아님
패러프레이징: 죄송합니다만, 나는 멘로 파크 근처에서 어떠한 인도네시아식 레스토랑도 찾을 수 없습니다.
프롬프트: 당신은 다른 요리들 또는 위치들을 시도할 수 있습니다.
하이퍼텍스트 링크들 하의 프롬프트:
인도네시아식: 당신은 중국식과 같은 다른 음식 카테고리들 또는 스테이크와 같은 좋아하는 음식 아이템을 시도할 수 있습니다.
멘로 파크: 도시, 이웃, 거리 주소, 또는 랜드마크 다음에 이어지는 "근처"와 같은 위치를 입력하십시오.
요리들: 중국식 또는 피자와 같은 음식 카테고리를 입력하십시오.
위치들: 위치, 즉 도시, 우편번호, 또는 장소명 다음에 이어지는 "근처"를 입력한다.
일 실시예에서, 어시스턴트(1002)는 패러프레이징으로 상대적으로 빠르게 사용자 입력에 응답한다. 이어서, 결과들이 알려진 후에 패러프레이징이 업데이트된다. 예를 들어, 초기 응답은 멘로 파크 근처의 인도네시아식 레스토랑들을 찾고 있습니다.."일 수 있다. 일단 결과들이 획득되면, 어시스턴트(1002)는 "죄송합니다만, 나는 멘로 파크 근처에서 어떠한 인도네시아식 레스토랑도 찾을 수 없습니다. 당신은 다른 요리들 또는 위치들을 시도할 수 있습니다."라고 판독할 텍스트를 업데이트할 것이다. 소정 아이템들이 강조되어(여기서는 밑줄로 나타내짐), 그들 아이템들이 완화될 수 있거나 변경될 수 있는 제약들을 표현한다는 것을 나타낸다는 것에 주목한다.
일 실시예에서, 특수한 포맷화/강조화가 패러프레이징 시의 키워드들에 이용된다. 이는 어시스턴트(1002)에게 어느 단어들이 가장 중요하고 어시스턴트(1002)에 의해 인식될 가능성이 더 큰지를 사용자에게 나타냄으로써 지능형 자동 어시스턴트(1002)와의 상호작용을 위한 사용자의 트레이닝을 가능하게 하는 데 도움이 될 수 있다. 그러면, 사용자는 추후에 그러한 단어들을 사용할 가능성이 더 많을 수 있다.
일 실시예에서, 패러프레이징 및 프롬프트가 임의의 관련 콘텍스트 데이터를 이용하여 생성된다. 예를 들어, 하기 데이터 아이템들 중 임의의 것이 단독으로 또는 조합하여 이용될 수 있다:
분석 - 온톨로지 노드들의 트리는 노드들의 매칭되는 입력 토큰들에 한정되며 주석 첨부 및 예외들이 있음. 분석에 있어서 각각의 노드에 대해, 이것은 노드의 값에 대한 증거를 제공하는 입력 내의 임의의 토큰들 및/또는 노드의 메타데이터를 포함할 수 있다.
일 실시예에서, 패러프레이징 알고리즘은 쿼리, 도메인 모델(1056), 및 서비스 결과들을 설명한다. 도메인 모델(1056)은 텍스트를 어떻게 생성할 것인지 결정하는 데 이용되는 메타데이터를 포함하는 특징들 및 분류들을 포함한다. 패러프레이징 생성을 위한 그러한 메타데이터의 예들은 하기를 포함한다:
ConstraintType={EntityName, Location, Time, CategoryConstraint, AvailabilityConstraint, BinaryConstraint, SearchQualifier, Guessed-Qualifier}
예를 들어, 분석은 하기 요소들을 포함할 수 있다:
분류: 레스토랑
IsConstraint=false
DisplayTemplateSingular="restaurant"
DisplayTemplatePlural="restaurants"
GrammaticalRole=Noun
특징: RestaurantName (예: "Il Fornaio")
IsConstraint=true
IsMultiValued=false
ConstraintType=EntityName
DisplayTemplateSingular="named $1"
DisplayTemplatePlural="named $1"
GrammaticalRole=Noun
특징: RestaurantCuisine (예: "Chinese")
IsConstraint=true
IsMultiValued=false
ConstraintType= CategoryConstraint
GrammaticalRole=AdjectiveBeforeNoun
특징: RestaurantSubtype (예: "cafe")
IsConstraint=true
IsMultiValued=false
ConstraintType= CategoryConstraint
DisplayTemplateSingular="$1"
DisplayTemplatePlural="$Is"
GrammaticalRole=Noun
특징: RestaurantQualifiers (예: "romantic")
IsConstraint=true
IsMultiValued=true
ConstraintType=SearchQualifier
DisplayTemplateSingular="is described as $1"
DisplayTemplatePlural="are described as $1"
DisplayTemplateCompact="matching $1"
GrammaticalRole=Noun
특징: FoodType (예: "burritos")
IsConstraint=true
IsMultiValued=false
ConstraintType= SearchQualifier
DisplayTemplateSingular="serves $1"
DisplayTemplatePlural="serve $1"
DisplayTemplateCompact="serving $1"
GrammaticalRole=ThatClauseModifer
특징: IsRecommended (예: true)
IsConstraint=true
IsMultiValued=false
ConstraintType= BinaryConstraint
DisplayTemplateSingular="recommended"
DisplayTemplatePlural="recommended"
GrammaticalRole=AdjectiveBeforeNoun
특징: RestaurantGuessedQualifiers (예: "spectacular")
IsConstraint=true
IsMultiValued=false
ConstraintType= GuessedQualifier
DisplayTemplateSingular="matches $1 in reviews"
DisplayTemplatePlural="match $1 in reviews"
DisplayTemplateCompact="matching $1"
GrammaticalRole=ThatClauseModifer
일 실시예에서, 어시스턴트(1002)는 매칭되지 않은 입력을 다룰 수 있다. 그러한 입력을 다루기 위해, 도메인 모델(1056)은 각각의 선택 분류를 위한 유형 GuessedQualifier의 노드들을 제공할 수 있으며, 이와 달리, 노드들이 올바른 문법적 콘텍스트 내에 있는 경우에는 매칭되지 않은 단어들과 매칭되는 규칙들을 제공할 수 있다. 즉, GuessedQualifiers는, 온톨로지에서 발견되지 않지만 올바른 콘텍스트 내에 있어서 그것이 아마도 선택 분류의 수식어들일 것임을 나타내는 단어들이 있는 경우에 매칭되는 분석 내의 잡다한 노드들로서 취급된다. GuessedQualifiers와 SearchQualifiers 사이의 차이는 후자가 온톨로지에서의 어휘와 매칭된다는 것이다. 이러한 구분은 어시스턴트(1002)가 의도를 SearchQualifiers에 대해 확고하게 식별했고 GuessedQualifiers를 도로 반향시킬 때 더 많이 망설일 수 있다는 것을 패러프레이징하게 한다.
일 실시예에서, 어시스턴트(1002)는 패러프레이징 텍스트를 생성할 때 하기 단계들을 수행한다:
1. 태스크가 알려져 있지 않은 경우, 어시스턴트(1002)가 할 수 있는 것을 설명하고 더 많은 입력에 대해 프롬프트한다.
2. 태스크가 제한적 선택 태스크이고 위치가 알려져 있는 경우, 어시스턴트(1002)가 알고 있는 도메인들을 설명하고 선택 분류에 대해 프롬프트한다.
3. 선택 분류가 알려져 있지만 필수적인 제약이 누락되어 있는 경우, 그 제약에 대해 프롬프트한다. (예를 들어, 위치는 레스토랑들에 대한 제한적 선택을 위해 요구된다.)
4. 입력이 선택 분류의 EntityName을 포함하는 경우, <위치>에서의 <이름>을 "검색 중"을 출력한다.
5. 이것이 대화에서의 최초 요청인 경우, 제약들을 기술하는 복합명사구 다음에 이어지는 "찾는 중"을 출력한다.
6. 이것이 다이얼로그에서의 후속 구체화 단계인 경우,
a. 사용자가 방금 필수적인 입력을 완성한 경우, "고맙습니다"를 출력하고 이어서 통상적으로 패러프레이징한다. (이는 사용자 입력에 맵핑되는 필수적인 제약이 있을 때 일어난다.)
b. 사용자가 제약을 변경하고 있는 중인 경우, 이를 확인하고, 이어서 통상적으로 패러프레이징한다.
c. 사용자가 선택 분류의 인스턴스의 적절한 이름에 타이핑한 경우, 이를 특수하게 다룬다.
d. 사용자가 방금 인식되지 않은 구절을 추가한 경우, 그것이 검색으로서 어떻게 삽입될 것인지 나타낸다. 적절한 경우에는, 입력은 검색 서비스로 디스패치될 수 있다.
e. 사용자가 방금 일반적인 제약을 추가하고 있는 중인 경우, "OK"를 출력하고 통상적으로 패러프레이징한다.
7. 결과들을 설명하기 위해, 패러프레이징에 대해 동일한 접근법을 이용한다. 그러나, 결과들이 놀라운 것이거나 예상치 못한 경우에는, 데이터 및 서비스에 관한 지식을 이용하여 결과들을 설명한다. 또한, 쿼리가 과도 제한되거나 또는 과소 제한되는 경우, 더 많은 입력에 대해 프롬프트한다.
복합 명사구들을 구성하기 위한 문법
일 실시예에서, 제한적 선택 태스크 쿼리를 패러프레이징할 때(단계 734), 기반은 현재 제약들을 지칭하는 선택 분류에 맞춘 복합명사구이다. 각각의 제약은 그의 유형에 기초한 문법적 위치를 갖는다. 예를 들어, 일 실시예에서, 어시스턴트(1002)는 하기와 같은 패러프레이징을 구성할 수 있다:
오소 부코(osso buco) 를 서빙하고 " 조용한 " 것으로 평가되는 2인용 오픈 테 이블들이 있는 멘로 파크 근처의 추천된 낭만적인 이탈리아식 레스토랑들
이것을 구성하는 문법은 하기와 같다:
<paraphraseNounClause> :== <binaryConstraint> <searchQualifier>
<categoryConstraint> <itemNoun> <locationConstraint> <availabiltyConstraint>
<adjectival Clauses>
<binaryConstraint> :== BinaryConstraint의 존재 여부를 나타내는 단일 형용사(예컨대, 추천된(최상), 적정 가격의(저렴한)). 동일한 쿼리에 둘 이상을 나열하는 것이 가능하다.
<search Qualifier> :== 선택 분류의 수식어에 대한 온톨로지와 매칭되는 단어 또는 단어들이며, 검색 엔진 서비스 내로 전달될 것이다. (예컨대, 낭만적인 레스토랑들, 재미있는 영화들)
ConstraintType= SearchQualifier인 경우에 사용한다.
<categoryConstraint> :== 선택 분류의 장르, 요리, 또는 카테고리를 식별하는 형용사(예컨대, 중국식 레스토랑 또는 준성인용 파일) 그것은 마지막 접두형 형용사인데, 그 이유는 그것이 가장 본질적인 것이기 때문이다. 유형 CategoryConstraint 및 GrammaticalRole=AdjectiveBeforeNoun의 특징들에 대해 사용한다.
<itemNoun> :== <namedEntityPhrase> / <selectionClass> / <selectionClassSubType>
명사를 디스플레이할 가장 분명한 방식을 찾는다. NamedEntity <SubType< Class <selectionClass > :==선택 분류를 위한 포괄적 이름인 명사(예컨대, 레스토랑, 영화, 장소)
<selectionClassSubType> :==알려져 있는 경우에 선택 분류의 하위유형인 명사구(예컨대, 저녁 식사, 박물관, 상점, 선택 분류 지역 업체를 위한 바).
ConstraintType = CategoryConstraint 및 GrammaticalRole = AdjectiveB eforeNoun인 특징들에 대하여 사용한다.
<namedEntityPhrase> :== <entityName> |
"the" (<selection Class> / <selectionClassSub Type>)
<entity Name> :== 선택 분류의 인스턴스의 적절한 이름(예컨대, "Il Fornaio"
"Animal House" "Harry's Bar")
<locationConstraint> :== <locationPreposition> <locationName>
<locationPreposition> :== "in", "near", "at" 등
<locationName> :== 도시, 거리 주소, 랜드마크, 또는 "당신의 현재 위치"와 같은 GPS를 위한 무언가
<availabilityConstraint> :== 명사 뒤에 오는 전치사구로서 표현되는 가용성 제약(예컨대, "오픈 테이블을
갖는", "이용가능한 좌석들을 갖는", "온라인으로 이용가능한"). 이것은 중요성을 제공하기 위해 명사 바로 뒤에 온다.
<adjectivalClauses>:== <modiferVerbPhrase> I "that" <modiferVerbPhrase> "and" <modiferVerbPhrase>
<modiferVerbPhrase> := 선택 분류에 대한 검색 키워드 스타일 제약을 표현하는 동사구(예컨대, "조용한 것으로 평가되고", "~ 이후에 식사를 제공하고", "리뷰 내의 '비참한(tragically hip)'과 매칭되는" 레스토랑들; "폭력을 포함하는" "Billy Bob Thornton가 주연인" 영화들) 둘 이상이 존재하는 경우에 "that...and" 변형을 이용하는, GrammaticalRole=ThatClauseModifier를 갖는 분석 내의 모든 제약들을 포함한다. Display-TemplatePlural을 사용하여, GuessedQualifier를 마지막에 넣는 "that" 절을 생성한다. 오직 하나의 그러한 제약만이 존재하는 경우, DisplayTemplateCompact 변형을 사용한다.
표 1은 일 실시예에 따른, 태스크에 대한 제1 입력에 응답하여 제공될 수 있는 패러프레이징들의 일부 예들을 제공한다.
[표 1]
식사할 장소들에 대한 쿼리의 구체화
표 2는 식사할 장소를 찾으려는 사용자의 의도가 알려져 있지만, 그가 식사할 특정 장소를 선택하지 않은 상황에 응답하는 패러프레이징들의 일부 예들을 제공한다. 이들은 레스토랑들의 목록을 대면하고 있고, 그들은 구체화를 제공한다.
[표 2]
표 3은 일단 결과들이 획득되면 제공되는 결과 개요들의 일부 예들을 제공한다.
[표 3]
표 4는 사용자들이 활성 링크들을 클릭할 때 제공되는 프롬프트들의 일부 예들을 제공한다.
[표 4]
다이얼로그에서의 가능한 응답들의 제안
일 실시예에서, 어시스턴트(1002)는 콘텍스트 제안을 제공한다. 제안들은 어시스턴트(1002)가 사용자에게 다이얼로그에서 그의 또는 그녀의 현재 상황으로부터 진행할 옵션들을 제공하는 하나의 방식이다. 어시스턴트(1002)에 의해 제공되는 제안들의 세트는 콘텍스트에 의존하며, 제공되는 제안들의 수는 매체 및 폼 팩터에 의존할 수 있다 예를 들어, 일 실시예에서, 가장 핵심적인 제안들은 다이얼로그에서 정렬하여 제공될 수 있고, ("더 많은") 제안들의 확장된 목록은 스크롤가능 메뉴로 제공될 수 있으며, 몇몇 문자를 타이핑하고 자동 완성 옵션들로부터 고름으로써 훨씬 더 많은 제안이 이루어질 수 있다. 당업자는 다른 메커니즘들이 제안들을 제공하는 데 이용될 수 있다는 것을 인식할 것이다.
다양한 실시예들에서, 상이한 유형의 제안들이 제공될 수 있다. 제안 유형들의 예들은 하기를 포함한다:
다양한 실시예들에서, 가장 적절한 제안들을 판정하는 콘텍스트가 예를 들어 하기로부터 도출될 수 있다:
다양한 실시예들에서, 제안들은 예를 들어 하기와 같은 임의의 메커니즘에 의해 생성될 수 있다:
일 실시예에 따르면, 제안들은 소정의 완성 상태에서 커맨드에 대한 동작들로서 생성된다. 커맨드들은 사용자 입력에 대한 시도된 해석들에 기초하는, 가정들 및 추론들을 비롯한, 요청들의 명시적인 기본 표현들이다. 사용자 입력이 미완성형이거나 불명료한 상황들에 있어서, 제안들은 사용자가 입력을 조정하여 커맨드를 명확히 하는 것을 돕는 시도이다.
일 실시예에서, 각각의 커맨드는 하기 사항들의 소정 조합을 갖는 명령형 문장이다.
커맨드의 이들 부분들(동사, 도메인, 제약들)은 온톨로지 내의 노드들에 대응한다.
이어서, 제안은 그것을 설정하거나, 그것을 변경하거나, 또는 그것이 관련되거나 관련되지 않는 것으로 선언하는 것과 같은, 커맨드에 대한 동작들로서 간주될 수 있다. 예들은 하기를 포함한다:
제안은 또한 상기의 것들의 소정 조합을 포함할 수 있다. 예를 들어:
일 실시예에서, 어시스턴트(1002)는 관련성별로 정리된 제안들의 목록을 유지하는 일반 메커니즘을 포함한다. 제안이 제공되는 포맷은 디바이스의 현재 콘텍스트, 모드 및 폼 팩터에 따라 다를 수 있다.
일 실시예에서, 어시스턴트(1002)는 하기의 팩터들 중 임의의 것 또는 모두를 고려하여 어느 제약들을 수정할 것인지 판정한다.
일 실시예에서, 어시스턴트(1002)는 제안에 대한 출력 포맷을 판정한다. 출력 포맷들의 예들은 하기를 포함한다.
일 실시예에서, 어시스턴트(1002)는 제안들을 통해 중의성을 해결하려고 시도한다. 예를 들어, 사용자 의도의 현재 해석들의 세트가 너무 불명료한 경우(단계 310), 제안들은 더 많은 정보를 위해 프롬프트(단계 322)하는 한 가지 방법이다. 일 실시예에서, 제한적 선택 태스크들에 대해, 어시스턴트(1002)는 의도의 불명료한 해석들(290) 중에서 공통 제약들을 제거하고, 이들 간의 차이들을 사용자에게 제시한다. 예를 들어, 사용자 입력이 단어 "카페"를 포함하고, 이 단어가 레스토랑의 이름 또는 레스토랑의 유형과 매칭될 수 있는 경우, 어시스턴트(1002)는 "당신은 '카페 레스토랑' 또는 '카페'로 명명된 레스토랑을 의미했습니까?"라고 물어볼 수 있다.
일 실시예에서, 어시스턴트(1002)는 소정 상황들 하에서 제약들을 추론한다. 즉, 제한적 선택 태스크들에 대해, 모든 제약들이 사용자 입력에서 명시적으로 언급될 필요는 없으며; 일부는 능동적 온톨로지(1050), 단기 메모리(1052), 및/또는 어시스턴트(1002)가 이용할 수 있는 다른 정보 소스들에서 이용가능한 다른 정보로부터 추론될 수 있다. 예를 들어:
어시스턴트(1002)가 제약 값들을 추론하는 경우에 있어서, 어시스턴트는 또한 사용자가 기각하도록 하기 위한 제안들로서 이러한 가정들을 제안할 수 있다. 예를 들어, 어시스턴트는 사용자에게 "나는 당신이 여기 주위를 의도한 것으로 가정했습니다. 당신은 다른 장소를 보고 싶습니까?"라고 말할 수 있다.
도 48은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 검색 및 예약 요청들을 어시스턴스에 제공하기 위한 방법을 묘사한 흐름도이다. 도 48에 도시된 바와 같이, 프로세스(4800)에서는, 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 검색 요청 - 검색 요청은 적어도 스피치 입력을 포함하며, 하나 이상의 제3자 제공자들에 의해 제공되는 예약가능 아이템들을 식별하기 위한 하나 이상의 검색 기준들을 특정함 - 이 수신된다(단계 4810).
명세서에 초기에 기술된 바와 같이, 디지털 어시스턴트 능동적인 경우, 디지털 어시스턴트는 디지털 어시스턴트와 사용자 사이의 실시간 양방향 통신을 가능하게 하는 다이얼로그 인터페이스를 선택적으로 유지시킨다. 디지털 어시스턴트의 다이얼로그 인터페이스는 다수의 양식들을 통해(예컨대, 스피치, 텍스트, 터치, 제스처, 및 기타 청각적, 시각적 및 촉각적 수단을 통해) 사용자로부터 입력들을 수신할 수 있고 사용자에게 출력들을 제공할 수 있다. 일부 실시예들에서는, 다이얼로그 인터페이스가 스피치 전용(예컨대, 아이즈프리 및 핸즈프리 인터페이스) 입력 및 출력 인터페이스이며, 사용자와 디지털 어시스턴트는 전적으로 스피치 및 사운드를 통해 통신한다. 일부 실시예들에서는, 다이얼로그 인터페이스가 스피치 기반 입력 및 출력 인터페이스 외에도 대화 스크린을 제공한다. 일부 실시예들에서는, 대화 스크린이 사용자의 스피치 입력(예컨대, 검색 요청)의 텍스트형 패러프레이징들을 제시하고 그리고/또는 텍스트 및 그래픽 형태로 정보 및 검색 결과들을 제시한다. 일부 실시예들에서, 대화 스크린은 사용자가 텍스트를 입력하게 하고, 검색 결과들을 선택하게 하고, 그리고/또는 대화 스크린 상에 제시되는 다양한 사용자 인터페이스 요소들과 상호작용하게 한다. 일부 실시예들에서, 대화 스크린은 사용자와 디지털 어시스턴트 사이에서의 다이얼로그의 텍스트형 표현들을 포함하는, 사용자 디바이스 상에 디스플레이되는 단일 프레임이다. 일부 실시예들에서, 텍스트형 표현들은 사용자로부터의 오리지널 텍스트 입력에 대한 일련의 텍스트 박스들, 텍스트 버블들, 또는 다른 시각적 렌디션(visual rendition)들, 사용자 스피치 입력(예컨대, 오리지널 단어들 또는 패러프레이징들)으로부터 파생된 텍스트, 및/또는 디지털 어시스턴트에 의해 제공되는 텍스트 출력을 포함한다.
프로세스(4800)에서, 검색 요청을 수신하는 것에 응답하여, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자에게 복수의 검색 결과들 - 검색 결과 각각은 검색 요청에 따라 식별된 각자의 예약가능 아이템에 대응함 - 을 제시한다(단계 4820). 예약가능 아이템은 아이템의 제공자에 의해 기술된 예약 또는 예약 프로세스에 따라 예약 및/또는 구매될 수 있는 아이템을 지칭한다. 예약가능 아이템의 예들은 레스토랑에서의 테이블, 이벤트, 콘서트, 영화, 스포츠 게임, 공연, 강연 등에서의 티켓 또는 좌석, 경매의 판매 아이템 등을 포함한다. 검색 결과는 검색 요청에 따라 식별되는 각각의 예약가능 아이템에 대응하며, 예약가능 아이템 또는 예약가능 아이템의 제3자 제공자에 관한 정보(예컨대, 이름, 위치, 쇼타임, 가격, 순위 평가 등)를 제공한다. 예를 들어, 레스토랑 검색 요청에 대한 검색 결과는 예약을 위해 오픈 테이블을 갖는 레스토랑에 대한 정보(예컨대, 이름, 요리, 및 위치)를 제공한다. 엔터테인먼트 검색 요청에 대한 검색 결과는 판매용 티켓을 갖는 엔터테인먼트 이벤트(예컨대, 영화 또는 콘서트)에 대한 정보(예컨대, 이름, 시간, 위치, 및 가격)를 제공한다. 예약가능 아이템들을 식별하기 위한 검색 기준들은 검색 분류 또는 선택 분류(예컨대, 레스토랑, 엔터테인먼트 이벤트 등), 및 검색 결과들을 필터링하고 순위 평가하기 위한 다양한 제약들(예컨대, 위치, 시간, 가격, 리뷰, 장르, 요리 등)을 포함한다.
일부 실시예들에서, 디지털 어시스턴트는 대화 스크린 상에 검색 결과들의 목록을 제시한다. 일부 실시예들에서, 디지털 어시스턴트는 대화 스크린 상의 검색 결과들의 목록을 사용자에게 판독시킨다. 아이즈프리 모드에서, 디지털 어시스턴트는 대화 스크린 상에 검색 결과들을 제시하지 않은 채 사용자에게 검색 결과들의 목록을 선택적으로 판독시킨다. 일부 실시예들에서, 디지털 어시스턴트는 검색 결과들을 요약한 스피치 출력을 제공하며, 검색 결과들에 관한 더 상세한 정보를 대화 스크린 상에 제시한다.
일부 실시예들에서, 검색 요청은 레스토랑 검색 요청이며, 사용자에게 제시되는 검색 결과들은 레스토랑 검색 요청에 따라 식별되는 레스토랑들에 대응한다. 예를 들어, 디지털 어시스턴트가 능동적인 경우, 디지털 어시스턴트는 사용자 입력에 대한 다양한 입력 채널들을 모니터링한다(예컨대, 사용자의 스피치 입력을 청취하여 캡처하고, 그리고/또는 대화 스크린 상의 텍스트 또는 제스처 입력들을 캡처한다). 디지털 어시스턴트가 레스토랑에 대한 검색을 요청하는 사용자로부터의 스피치 입력(예컨대, "멘로 파크 내의 낭만적인 이탈리아식 레스토랑을 찾아라"라는 스피치 입력)을 캡처하는 경우, 디지털 어시스턴트는 스피치 입력을 분석하여 스피치 입력에서 특정된 검색 기준들을 판정한다(예컨대, Task = {Search or ConstrainedSelection}, SelectionClass = Restaurant, SearchConstraints = {RestaurantCuisine = "Italian", RestaurantQualifiers ="romantic", RestaurantLocation = "Menlo Park"}). 일부 실시예들에서는, 검색 기준들 중 하나 이상이 사용자로부터의 다른 입력들 또는 사용자의 저장된 선호도들과 같은 콘텍스트 정보에 기초한다.
검색의 검색 기준들이 판정된 후, 디지털 어시스턴트는 스피치 입력 및 콘텍스트 정보에서 특정된 검색 기준들에 따라 레스토랑들에 대한 검색을 수행한다. 이어서, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자에게 검색 결과들을 제시한다.
일부 실시예들에서, 검색이 수행되기 전 또는 검색 결과들이 제시되기 전, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 스피치 출력 - 스피치 출력은 사용자로부터 수신된 검색 요청을 패러프레이징함 - 을 제공한다. 예를 들어, 사용자가 "팔로 알토에서 식사할 장소를 찾아라"라고 말한 경우, 디지털 어시스턴트는 "OK, 팔로 알토 내의 레스토랑들을 찾고 있습니다"라고 말함으로써 응답할 수 있다. 다른 예를 들어, 사용자가 "오늘 저녁 식사에 이탈리아식을 먹기 원한다"라고 말하는 경우, 현재 시간이 저녁 식사 시간에 가깝다면, 디지털 어시스턴트는 "OK, 당신의 현재 위치 근처의 이탈리아식 레스토랑들을 찾고 있습니다"라고 말함으로써 응답할 수 있다.
일부 실시예들에서, 디지털 어시스턴트는 검색 결과들을 갖는 스피치 출력 - 스피치 출력은 검색 결과들을 식별하는 데 이용되는 하나 이상의 검색 기준들을 안내함 - 을 제공한다. 예를 들어, 디지털 어시스턴트가 사용자의 요청에 따라 팔로 알토 내의 이탈리아식 레스토랑들에 대한 검색을 수행한 후, 디지털 어시스턴트는 "내가 팔로 알토 내에서 찾은 이탈리아식 레스토랑은 5개 ...가 있습니다"라고 말함으로써 검색 결과들을 안내한다. 다른 예를 들어, 디지털 어시스턴트가 사용자의 현재 위치 근처의 레스토랑들에 대한 검색을 수행한 후, 디지털 어시스턴트는 "나는 근처에서 패스트푸드 레스토랑과 프랑스식 레스토랑 ...을 찾았습니다"라고 말함으로써 검색 결과들을 안내한다.
일부 실시예들에서, 스피치 출력을 통해 검색 결과들을 안내한 후, 디지털 어시스턴트는 검색 결과들의 목록을 사용자에게 선택적으로 판독시킨다. 일부 실시예들에서는, 안내 및 검색 결과들 양측 모두가 사용자 디바이스 상의 대화 스크린 상에 제시된다. 일부 실시예들에서는, 검색 결과들을 식별하는 데 이용되는 검색 기준들을 표현하는 텍스트(예컨대, 레스토랑, 이탈리아식, 팔로 알토, 근처)가 안내 및/또는 검색 결과들에서 강조된다.
일부 실시예들에서는, 검색 결과들에 대한 안내가 검색 결과들을 획득하는 데 이용되는 검색 기준들에서의 변화들(예컨대, 완화 및/또는 변형)을 나타낼 수 있다. 예를 들어, 사용자가 팔로 알토 내의 말레이시아식 레스토랑을 찾을 것을 요청했고 팔로 알토에서 어떠한 말레이시아식 레스토랑도 찾지 못한 경우, 디지털 어시스턴트는 근처 도시들(예컨대, 멘로 파크)을 포함하도록 검색 지역을 확장할 수 있다. 디지털 어시스턴트가 확장된 검색으로부터 획득된 검색 결과들을 제시하는 경우, 디지털 어시스턴트는 "팔로 알토에서는 어떠한 말레이시아식 레스토랑도 찾지 못했습니다만, 나는 팔로 알토에 접해 있는 멘로 파크에서 하나의 말레이시아식 레스토랑을 찾았습니다."라고 말함으로써 검색 결과들을 안내한다.
일부 실시예들에서, 검색 요청은 엔터테인먼트 검색 요청이고, 검색 결과들은 엔터테인먼트 검색 요청에 따라 식별된 복수의 엔터테인먼트 이벤트들에 대응한다. 엔터테인먼트 이벤트들은, 대체로 사전결정된 시간에 발생하고 참석을 위해서는 전형적으로 예약 또는 티켓을 요구하는, 엔터테인먼트 및 재미와 관련된 대중 활동들 및 이벤트들을 지칭한다. 엔터테인먼트 이벤트들의 예들은 영화, 쇼, 콘서트, 공연, 스포츠 게임, 여행 등을 포함한다.
예를 들어, 디지털 어시스턴트가 특정 유형의 엔터테인먼트 이벤트들에 대한 검색을 요청하는 사용자로부터의 스피치 입력(예컨대, "누가 다음주에 필모어에서 공연할 것인가?"라는 스피치 입력)을 캡처하는 경우, 디지털 어시스턴트는 스피치 입력을 프로세싱하며, "필모어"가 음악 장소의 이름이라는 것과 사용자가 다음주에 필모어에서 공연할 콘서트를 검색 중이라는 것을 판정한다. 스피치 프로세싱에 기초하여, 디지털 어시스턴트는 스피치 입력에서 특정된 검색 기준들을 획득한다(예컨대, Task = {Search or ConstrainedSelection, SelectionClass = Entertainment Event, Sub-class = Concerts, SearchConstraints = {Venue = "Fillmore," Time = "next week"}). 일부 실시예들에서는, 검색 기준들 중 하나 이상이 사용자로부터의 다른 입력들 또는 사용자의 저장된 선호도들과 같은 스피치 입력과 연관된 콘텍스트 정보에 기초할 수 있다. 엔터테인먼트 이벤트 검색의 검색 기준들이 판정된 후, 디지털 어시스턴트는 스피치 입력에서 특정된 검색 기준들(예컨대, Venue=Fillmorc, 및 Time=next week) 및 콘텍스트 정보(예컨대, 현재 날짜)에 따라 엔터테인먼트 이벤트들(예컨대, 다가오는 콘서트)에 대한 검색을 수행한다. 일단 검색 기준들을 충족시키는 엔터테인먼트 이벤트들이 식별되었다면, 디지털 어시스턴트는 검색 결과들을 생성하여 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자에게 제시한다.
일부 실시예들에서, 검색이 수행되기 전 또는 검색 결과들에 제시되기 전, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 스피치 출력 - 스피치 출력은 사용자로부터 수신된 검색 요청을 패러프레이징함 - 을 제공한다. 예를 들어, 사용자의 스피치 입력이 "다음주에 필모어에서 누가 공연하는가?"인 경우, 디지털 어시스턴트는 스피치 입력에 기초하여 검색 기준들을 판정하고, "다음주에 필모어 콘서트홀에서의 콘서트들을 검색 중입니다"라고 말함으로써 검색 요청을 패러프레이징한다.
일부 실시예들에서, 검색 요청을 패러프레이징하는 경우, 디지털 어시스턴트는 패러프레이징 내의 콘텍스트 정보로부터 도출된 명시적 검색 기준들 및 암시적 검색 기준들 양측 모두를 제공한다. 예를 들어, 디지털 어시스턴트가 사용자의 요청에서 토요일 밤 이탈리아식 레스토랑에 2인용 테이블을 방금 예약했고 이어서 "나는 저녁 식사 전에 영화를 보고 싶다. 지금 무엇이 상영되고 있지?"라고 말하는 스피치 입력을 검출한 경우, 스피치 입력에 기초하여, 디지털 어시스턴트는 Task=Search, SelectionClass=Entertainment Events, Subclass=Movies와 같은 명시적 검색 기준들, 및 Date="Saturday evening"=(예컨대, 2012년 6월 9일), Time="before dinner"=(예컨대, 오후 4시에서 오후 6시 사이), Location="near restaurant"=(예컨대, 팔로 알토에서 15 마일 이내)와 같은 암시적 검색 기준들을 판정할 수 있다. 따라서, 검색 요청을 패러프레이징하는 경우, 디지털 어시스턴트는 "토요일 오후 4시에서 오후 6시 사이에 상영하는 영화를 검색 중입니다."를 이야기하거나 대화 스크린 상에 제시한다.
일부 실시예들에서, 디지털 어시스턴트는 검색 결과들을 갖는 스피치 출력을 제공하여, 검색 결과들을 식별하는 데 이용되는 하나 이상의 검색 기준들을 안내한다. 예를 들어, 상기 예에서 영화 검색에 대한 검색 결과들을 제공하는 경우, 디지털 어시스턴트는 "토요일 당신의 저녁 식사 이전에 상영되는 영화 ...가 있습니다" 또는 "나는 토요일 오후 4시에서 오후 6시 사이에 상영 시간을 갖는 영화 6편 ...을 찾았습니다"라고 말하는 스피치 출력을 제공할 수 있다. 스피치 출력을 통해 검색 결과들을 안내한 후, 디지털 어시스턴트는 검색 결과들의 목록을 사용자에게 선택적으로 판독시킨다. 일부 실시예들에서는, 안내 및 검색 결과들 양측 모두가 사용자 디바이스 상의 대화 스크린 상에 제시된다. 일부 실시예들에서는, 검색 결과들을 식별하는 데 이용되는 검색 기준들을 표현하는 텍스트(예컨대, "movies", "Saturday", "before your dinner", "between 4:00PM and 6:00PM")가 안내 및/또는 검색 결과들에서 강조된다.
상기 예들에서 나타난 바와 같이, 일부 실시예들에서, 검색 요청은 사용자로부터 수신되는 스피치 입력과 연관된 콘텍스트 정보를 포함한다. 일부 실시예들에서, 디지털 어시스턴트는 다이얼로그 인터페이스를 통한 사용자와 디지털 어시스턴트 사이에서의 하나 이상의 이전 사용자 상호작용들에 기초하여 콘텍스트 정보를 유지한다. 콘텍스트 정보가 어떻게 활용되는지에 대한 더 많은 상세사항들은 명세서의 초기 부분에 제공되어 있다. 콘텍스트 정보의 예들은 개인 상호작용 이력(예컨대, 다이얼로그 이력, 결과들로부터의 이전 선택들 등), 개인 물리적 콘텍스트(예컨대, 사용자의 현재 위치 및 현재 시간), 및 상호작용의 콘텍스트에서 수집된 개인 정보(예컨대, 이름, 이메일 주소, 물리적 주소, 전화 번호, 계좌 번호, 캘린더 정보, 연락처, 선호도 등)를 포함한다.
일부 실시예들에서, 디지털 어시스턴트는 스피치 입력과 연관된 콘텍스트 정보에 적어도 부분적으로 기초하여 검색 요청 내의 검색 기준들 중 적어도 일부를 판정한다. 검색 기준들이 스피치 입력 및 연관된 콘텍스트 정보로부터 판정된 후, 디지털 어시스턴트는 판정된 검색 기준들에 따라 예약가능 아이템들을 식별하고, 식별된 예약가능 아이템들에 기초하여 검색 결과들을 생성한다.
하기는 검색 요청의 검색 기준을 도출하는 데 이용되는 콘텍스트 정보의 다른 예이다. 디지털 어시스턴트가 토요일에 필모어에서 선택된 콘서트에 대한 티켓을 2장 구매하라는 사용자의 요청으로 예약 절차를 실행 중인 동안, 또는 예약이 행해진 직후, 사용자는, 다이얼로그 인터페이스를 통해, "콘서트 전에 어디에서 식사할 수 있을까?"라고 말하는 스피치 입력을 제공한다. 스피치 입력에 응답하여, 그리고 디지털 어시스턴트가 이미 이용가능한 콘텍스트 정보(예컨대, 콘서트 위치 및 시간)에 기초하여, 디지털 어시스턴트는 토요일의 콘서트 시간 전에 영업하는 필모어 근처의 장소에 대한 레스토랑 검색을 실행한다. 일부 실시예들에서, 디지털 어시스턴트는 또한 콘텍스트 정보로부터 레스토랑 검색 요청에 대한 인원수 요건(예컨대, 구매되고 있는 콘서트 티켓 개수)을 추론하고, 검색 결과들로서 인원수 요건을 충족시키는 오픈 테이블들을 갖는 레스토랑들만을 제시한다.
일부 실시예들에서, 검색 요청이 사용자로부터 수신된 후, 디지털 어시스턴트는, 스피치 입력 및 연관된 콘텍스트 정보에 기초하여, 검색을 추가로 제한하거나 또는 사용자에 의해 초기에 제공된 검색 기준들을 이용하여 이미 획득된 검색 결과들을 분류하는 데 사용자로부터의 추가 입력이 필요하다는 것을 판정한다. 예를 들어, 사용자가 "필모어에서 무엇이 진행 중이지?"라고 말하는 경우, 디지털 어시스턴트는 사용자가 필모어에서 벌어지는 이벤트들을 검색하는 것에 흥미가 있는 것으로 판정할 수 있을 것이다. 그러나, 검색을 위한 적절한 기간을 나타내는 초기 사용자 입력들 또는 콘텍스트 정보가 없다면, 디지털 어시스턴트는 가장 적절한 검색 결과들을 제공할 수 없을 것이다. 그러한 시나리오에서, 디지털 어시스턴트는 사용자로부터의 추가 입력이 검색을 추가로 제한하는 데 필요하거나 바람직한 것으로 판정한다.
일부 실시예들에서, 하나 이상의 추가 검색 기준들을 특정하는 추가 사용자 입력이 필요하거나 바람직한 것으로 판정할 시, 디지털 어시스턴트는, 디지털 어시스턴트의 다이얼로그 인터페이스를 통해, 추가 검색 기준들을 요청하는 스피치 출력을 생성한다. 예를 들어, 디지털 어시스턴트는 "OK, 당신은 이번주의 모든 공연들에 관심이 있습니까? 아니면 단지 주말의 공연에만 관심이 있습니까?"라고 말하는 스피치 출력을 제공할 수 있다. 스피치 출력을 제공하는 것에 응답하여, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자로부터 추가 입력을 수신하고, 추가 입력들로 검색 요청을 보완한다. 예를 들어, 사용자가 "단지 이번 주말만"이라고 말하는 경우, 디지털 어시스턴트는 추가 검색 기준 {Date="this weekend"= actual date range of the upcoming weekend (예컨대, "2012년 6월 9일과 10일")}을 도출하고, 이러한 추가 검색 기준으로 오리지널 검색 요청을 보완한다. 대신, 사용자가 "이번주 토요일 공연만 찾아라."라고 말하는 경우, 디지털 어시스턴트는 추가 검색 기준 {Date = "this Saturday" = actual date of the upcoming Saturday (예컨대, 2012년 6월 9일)}을 도출하고, 이러한 추가 검색 기준으로 오리지널 검색 요청을 보완한다. 일부 실시예들에서, 디지털 어시스턴트는 또한 "OK, 이번주 주말 필모어에서의 공연들을 검색 중입니다." 또는 "OK, 이번주 토요일 필모어에서의 공연들을 검색 중입니다."라고 말함으로써 사용자에게 증강된 검색 요청을 패러프레이징한다.
일부 실시예들에서, 디지털 어시스턴트는 오리지널 검색 요청에서 특정된 다수의 검색 기준들에 기초하여 검색을 수행할 수 있으며, 모든 검색 기준들을 마찬가지로 동등하게 충족시키는 것은 아닌 일부 예비 검색 결과들을 획득한다. 그러한 시나리오에서, 일부 실시예들에서, 디지털 어시스턴트는 사용자에게 검색 기준들의 상대적 중요성에 관한 추가 입력을 요청하는 스피치 입력을 생성한다. 예를 들어, 오리지널 검색 요청이 "팔로 알토 내의 낭만적인 이탈리아식 레스토랑들"에 대한 것이고 디지털 어시스턴트가 팔로 알토 내에 낭만적인 것으로 간주되는 비-이탈리아식 레스토랑들, 팔로 알토 외부에만 있는 낭만적인 이탈리아식 레스토랑들, 및 팔로 알토 내의 낭만적인 것으로 간주될 수 있거나 또는 간주될 수 없는 이탈리아식 레스토랑들을 식별한 경우, 예비 검색 결과들의 혼합에 기초하여, 디지털 어시스턴트는 세 가지 검색 기준들 "RestaurantQualifiers = romantic", "RestaurantCuisine = Italian", 및 "RestaurantLocation = Palo Alto"의 상대적 중요성에 관한 추가 입력을 요청하는 출력을 생성한다. 예를 들어, 디지털 어시스턴트는 "어느 것이 더 중요합니까? 분위기입니까, 위치입니까, 아니면 요리입니까?"라고 사용자에게 물어볼 수 있다. 사용자의 후속 입력(예컨대, "요리와 분위기"라고 말하는 스피치 입력)에 기초하여, 디지털 어시스턴트는 추가 제약을 도출하고, 추가 제약에 따라 검색 결과들을 필터링하고 그리고/또는 순위 평가한다(예컨대, 요리 및 분위기 기준들에 더 큰 가중치를 부여한다).
일부 실시예들에서, 각각의 검색 결과에 대해, 디지털 어시스턴트는 검색 결과에 대응하는 예약가능 아이템의 하나 이상의 속성들 - 각각의 속성은 검색 결과들을 식별하는 데 이용된 검색 기준들 중 하나에 대응함 - 을 제시한다. 예를 들어, 검색 요청이 콘서트 전에 먹을 장소에 대한 것이었던 경우, 검색 결과들에서 각각의 레스토랑의 이름과 함께 제시되는 속성들은 레스토랑과 필모어(즉, 콘서트 위치) 사이의 거리를 포함할 수 있다. 다른 예를 들어, 검색이 멘로 파크 내의 낭만적인 이탈리아식 레스토랑들에 대한 것이었던 경우, 디지털 어시스턴트는 검색 결과들에서 각각의 레스토랑에 대한 토막 정보(snippet)를 제시할 것이며, 토막 정보에서, "이탈리아식", "이탈리아", "낭만적", "멋진 분위기", "투스카니(Tuscany)" 등과 같은 키워드들이 레스토랑 이름, 요리, 및/또는 고객 리뷰에서 강조된다.
일부 실시예들에서, 검색 결과들을 제시하는 경우, 디지털 어시스턴트는 복수의 검색 결과들과 함께 다이얼로그 인터페이스에(예컨대, 대화 스크린에) 하나 이상의 사용자 인터페이스 요소들을 동시에 제시한다. 사용자 인터페이스 요소들은 예를 들어 링크들, 버튼들, 및 기타 상호작용 요소들을 포함한다. 일부 실시예들에서, 사용자 인터페이스 요소들 중 하나의 요소의 선택은 다이얼로그 인터페이스에서 검색 결과들 중 하나 이상과 관련된 추가 정보의 제시를 야기한다. 예를 들어, 리뷰 사용자 인터페이스 요소는, 선택된 검색 결과에 대한 더 많은 고객 리뷰가 다이얼로그 인터페이스를 통해 제시되게 한다. 대안으로, 리뷰 사용자 인터페이스 요소는 레스토랑 리뷰 사이트의 인터페이스가 사용자 디바이스 상에 로딩되게 하며, 선택된 검색 결과에 대한 고객 리뷰들은 리뷰 사이트에서 그들의 오리지널 포맷으로 제시된다(즉, 리뷰 사용자 인터페이스 요소의 선택은 리뷰 사이트가 디지털 어시스턴트의 다이얼로그 인터페이스 외부로 나타나게 했다). 사용자 인터페이스 요소들의 다른 예들은 리뷰, 지도, 예고편, 이용가능성 개요, 및 복수의 검색 결과들 중 하나 이상과 연관된 순위 평가의 제시를 야기하는 링크들 및 버튼들을 포함한다.
일부 실시예들에서, 검색 결과들을 제시하는 경우, 디지털 어시스턴트는 또한 검색 결과들에 관한 다양한 후속 작용들을 호출하기 위한 다이얼로그 인터페이스 내의(예컨대, 대화 스크린 상의) 하나 이상의 사용자 인터페이스 요소들을 동시에 제시한다. 그러한 사용자 인터페이스 요소의 선택은 검색 결과들 중 하나 이상과 연관된 후속 작용이 디지털 어시스턴트에 의해 실행되게 한다. 예를 들어, 일부 실시예들에서, 디지털 어시스턴트는 검색 결과에 대한 호출 버튼을 제시한다. 호출 버튼이 호출되는 경우, 호출 버튼은 디지털 어시스턴트가 검색 결과와 연관된 전화 번호(예컨대, 레스토랑 또는 매표소와 연관된 전화 번호)로 전화 통화를 개시하게 한다. 일부 실시예들에서, 디지털 어시스턴트는 각각의 검색 결과에 대한 리뷰 버튼을 제시한다. 리뷰 버튼이 호출되는 경우, 리뷰 버튼은 디지털 어시스턴트가 검색 결과에 대응하는 예약가능 아이템(예컨대, 레스토랑, 영화, 콘서트 등)과 연관된 리뷰를 제시하게 한다. 일부 실시예들에서, 리뷰는 다수의 제3자 웹사이트들 또는 서비스들로부터 제공된다. 일부 실시예들에서, 디지털 어시스턴트는 각각의 검색 결과에 대한 길 안내 버튼을 제시한다. 길 안내 버튼이 호출되는 경우, 길 안내 버튼은 디지털 어시스턴트가 검색 결과와 연관된 주소(예컨대, 검색 결과에 의해 식별된 레스토랑의 주소)에 대한 길 안내 요청을 생성하게 한다. 길 안내 요청에 응답하여, 길 안내 인터페이스에는 목적지로서 검색 결과와 연관된 주소가 제시될 수 있다. 대안으로, 사용자의 현재 위치와, 검색 결과와 연관된 주소 사이의 루트가 제시될 수 있다. 일부 실시예들에서, 길 안내 인터페이스 또는 루트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 제시될 수 있고, 사용자는 길 안내 인터페이스 또는 루트를 리뷰하는 동안에 계속해서 디지털 어시스턴트와 상호작용할 수 있다. 일부 실시예들에서, 디지털 어시스턴트는 각각의 검색 결과에 대한 하나 이상의 예약 또는 구매 사용자 인터페이스 요소(예컨대, 예약 또는 구매 버튼)을 제시한다. 예약 또는 구매 사용자 인터페이스 요소들 중 하나가 호출되는 경우, 디지털 어시스턴트는 검색 결과와 연관된 예약가능 아이템(예컨대, 레스토랑에서의 테이블, 엔터테인먼트 이벤트를 위한 티켓들)을 예약하거나 구매하기 위한 예약 절차를 개시한다. 일부 실시예들에서, 디지털 어시스턴트는 또한 링크를 공유하거나 링크를 검색 결과에 저장하기 위한 사용자 인터페이스 요소들을 제시한다.
도 48에 도시된 바와 같이, 프로세스(4800)에서, 검색 결과들이 제시된 후, 검색 결과들 중 특정한 하나의 검색 결과에 대한 예약 요청이 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 수신된다(단계 4830). 예를 들어, 검색 결과들의 목록이 사용자에게 하나씩 판독되는 경우, 사용자는 "이 레스토랑에 2인을 예약하라." 또는 "이 콘서트용 티켓을 2장 구매하라."라고 말함으로써 선호하는 레스토랑 또는 콘서트를 청취시킨 후에 디지털 어시스턴트를 인터럽트할 수 있다. 대안으로, 사용자는 대화 인터페이스 상에 제시된 검색 결과들(예컨대, 레스토랑 검색 결과들 또는 이벤트 검색 결과들) 중 하나를 선택할 수 있고, 이어서 디지털 어시스턴트에게 "여기 레스토랑에 예약을 행하라." 또는 "토요일 티켓을 구하라."라고 말할 수 있다. 일부 실시예들에서, 디지털 어시스턴트는 각각의 검색 결과에 대한 예약 요청을 제출하기 위한 각각의 사용자 인터페이스 요소(예컨대, 예약 또는 구매 버튼)를 제시하고, 사용자는 각각의 사용자 인터페이스 요소를 호출하여, 검색 결과 목록에 나타난 선택된 레스토랑 또는 엔터테인먼트 이벤트에 대한 예약 요청을 제출할 수 있다.
프로세스(4800)에서, 예약 요청을 수신하는 것에 응답하여, 디지털 어시스턴트는 후속 사용자 입력을 수신하도록 다이얼로그 인터페이스를 유지하면서, 특정 검색 결과에 대응하는 각각의 예약가능 아이템을 예약하도록 예약 절차를 실행한다(단계 4840). 일부 실시예들에서, 디지털 어시스턴트에 의해 실행되는 예약 절차는 예약 요청이 제출되게 된 특정 검색 결과에 대응하는 각각의 레스토랑에서 테이블을 예약한다. 일부 실시예들에서, 예약 절차는 예약 요청이 제출되게 된 특정 검색 결과에 대응하는 각각의 엔터테인먼트 이벤트를 위한 하나 이상의 티켓들을 구매하거나 예약한다.
일부 실시예들에서, 디지털 어시스턴트는 예약 태스크와 연관된 태스크 흐름을 호출함으로써 각각의 예약가능 아이템(예컨대, 레스토랑 테이블 또는 이벤트 좌석)을 예약하도록 예약 절차를 실행한다. 일부 실시예들에서, 태스크 흐름은 요청된 예약을 행하기 위한 제3자 서비스들(예컨대, 레스토랑들에 대한 온라인 예약 서비스 또는 영화나 다른 엔터테인먼트 이벤트들에 대한 온라인 티켓 구매 서비스)을 호출한다. 일부 실시예들에서, 예약 절차를 실행하는 동안, 디지털 어시스턴트와 사용자는 예약 프로세스 및 관련 트랜잭션에 관한 다이얼로그 인터페이스를 통해 계속해서 통신한다. 예를 들어, 예약 절차를 실행하는 동안, 디지털 어시스턴트는 사용자에게 사용자가 예약을 위한 임의의 추가 요건들(예컨대, 레스토랑 예약을 위한 식단 조절, 인원수, 와인 선호도 등, 및 이벤트 예약을 위한 좌석 선호도)을 갖고 있는지 여부를 물어볼 수 있다.
일부 실시예들에서, 디지털 어시스턴트는, 사용자와 디지털 어시스턴트가 다이얼로그 인터페이스를 통해 다른 검색 결과들 및/또는 다른 무관 태스크들 및 요청들에 관해 계속해서 상호작용하는 동안, 백그라운드에서 요청된 예약을 수행한다. 예를 들어, 디지털 어시스턴트가 예약 절차를 실행하는 동안, 사용자는 예약되고 있는 레스토랑의 메뉴를 리뷰할 수 있거나, 또는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 레스토랑 근처의 꽃집을 검색할 것을 디지털 어시스턴트에게 부탁할 수 있다.
일부 실시예들에서, 예약 태스크의 태스크 흐름은 예약에 따라 리마인더 또는 캘린더 엔트리를 생성하고 저장하는 것을 추가로 포함한다. 예를 들어, 예약이 레스토랑에서 성공적으로 행해진 후 또는 티켓들이 디지털 어시스턴트에 의해 이벤트에 대해 구매된 후, 디지털 어시스턴트는 예약의 날짜, 시간, 및/또는 위치에 따라 예약에 대한 리마인더 또는 캘린더 엔트리를 생성한다. 일부 실시예들에서, 디지털 어시스턴트는 사용자의 전자 캘린더들로 액세스하고, 리마인더 또는 캘린더 엔트리를 사용자의 캘린더들 내에 직접 삽입한다. 일부 실시예들에서, 디지털 어시스턴트는 사용자의 캘린더에 리마인더 또는 캘린더 엔트리를 삽입하라는 요청을 제3자 서비스, 예컨대 온라인 캘린더 서비스로 전송한다. 일부 실시예들에서, 디지털 어시스턴트는 리마인더 또는 캘린더 엔트리가 사용자에 대해 생성되기 전에 다이얼로그 인터페이스를 통해 사용자의 허가를 요청한다.
일부 실시예들에서, 예약 태스크의 태스크 흐름은 예약에 따라 다른 사용자를 위한 초대장을 생성하는 것을 추가로 포함한다. 예를 들어, 일부 실시예들에서, 예약이 2인 이상의 사람을 위한 것인 경우(예컨대, 레스토랑에서 2인 이상의 사람들을 위한 테이블에 대한 예약, 또는 이벤트를 위한 2자 이상의 티켓들의 구매), 디지털 어시스턴트는 레스토랑에서 식사를 함께 하도록 또는 사용자와 함께 엔터테인먼트 이벤트에 참여하도록 초대받을 사람들의 아이덴티티들을 판정한다. 일단 이들 다른 사람들의 아이덴티티들이 판정되었다면, 디지털 어시스턴트는 그러한 사람들에게로의 초대장을 생성한다.
일부 실시예들에서, 디지털 어시스턴트는 예약이 행해진 다이얼로그 세션 동안에 수집된 콘텍스트 정보에 기초하여 식사 또는 이벤트에 초대받은 사람들의 아이덴티티들을 판정한다. 예를 들어, 사용자가 "이 레스토랑에 나와 나의 엄마에 대해 예약을 행하라"라고 말한 경우, 디지털 어시스턴트는 사용자의 주소록 내의 사용자의 연락처들에 기초하여 사용자의 엄마의 아이덴티티 및 연락처 정보를 판정할 수 있다. 일부 실시예들에서, 디지털 어시스턴트는 초대장을 생성할 것을 권할 수 있으며, 초대받은 사람(들)의 필수 연락처 정보를 제공하도록 사용자를 프롬프트할 수 있다.
도 48과 관련하여 상기에 제공된 특징들은 다양한 실시예들로 조합될 수 있다. 추가로, 특징들은 반드시 레스토랑 검색들 또는 엔터테인먼트 이벤트 검색들로 한정되는 것은 아니다. 다른 적용가능 영역들은 예를 들어 제품들, 경매 아이템들, 이벤트 장소들 등에 대한 검색을 포함한다. 도 49 및 도 50은 레스토랑 검색들 및 엔터테인먼트 이벤트 검색들과 관련된 특징들에 대한 더 많은 상세사항들을 각각 제공한다. 도 48과 관련하여 기술된 특징들은 도 49 및 도 50과 관련하여 기술되는 특징들뿐만 아니라 명세서의 다른 부분들에서 기술되는 다른 특징들과도 조합될 수 있다.
도 49는 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 레스토랑 검색을 수행하기 위한 방법을 묘사한 흐름도이다. 도 49에 도시된 바와 같이, 프로세스(4900)에서, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 스피치 입력을 수신한다(단계 4910). 디지털 어시스턴트는 스피치 입력과 연관된 콘텍스트 정보 - 콘텍스트 정보는 다이얼로그 인터페이스를 통한 사용자와 디지털 어시스턴트 사이에서의 적어도 하나의 이전 상호작용을 포함함 - 를 판정한다(단계 4920). 일부 실시예들에서, 콘텍스트 정보는 다이얼로그 인터페이스를 통해 이전에 수신된 하나 이상의 스피치 입력들로부터 추출된 정보를 포함한다. 디지털 어시스턴트는 하나 이상의 레스토랑 검색 기준들을 판정하도록 스피치 입력을 프로세싱 - 프로세싱은 콘텍스트 정보에 기초하여 스피치 입력의 적어도 일부분의 중의성을 해소하는 것을 포함함 - 한다(단계 4930). 검색이 레스토랑 검색 기준들에 따라 수행된 후, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자에게 검색 결과들 - 각각의 검색 결과는 레스토랑 검색 기준들에 따라 식별된 각자의 레스토랑에 대응함 - 을 제시한다(단계 4940).
예를 들어, 사용자가 특정 다이얼로그 세션 동안 디지털 어시스턴트를 통해 특정 영화를 위한 티켓을 구매했다고 가정한다. 그 후, 사용자는 "영화 후에 어디서 먹을 수 있을까?라는 스피치 입력을 제공함으로써 영화관 근처 레스토랑을 찾도록 디지털 어시스턴트에게 부탁한다. 그러한 시나리오에서, 디지털 어시스턴트는 이전 사용자 상호작용들(예컨대, 영화 티켓을 구매하는 것)에 의해 제공된 콘텍스트를 이용하여, 사용자가 스피치 입력에서 어느 영화를 지칭하고 있었는지 판정한다. 사용자가 방금 티켓을 구매하게 되었던 특정 영화를 지칭하고 있었음을 판정한 후, 디지털 어시스턴트는 그 영화와 연관된 날짜, 시간, 및 위치를 판정할 수 있다. 이어서, 디지털 어시스턴트는 판정된 날짜, 시간, 및 위치를 새롭게 수신된 검색 요청(예컨대, 레스토랑 검색 요청)에 대한 검색 기준들로서 이용한다. 다시 말해, 사용자가 영화의 이름, 날짜, 시간, 및 위치를 명시적으로 반복할 필요 없이, 디지털 어시스턴트는 사용자의 스피치 입력을 프로세싱했으며, 디지털 어시스턴트와 사용자 사이의 이전 사용자 상호작용들을 비롯한 콘텍스트 정보를 이용하여 새롭게 수신된 레스토랑 검색 요청에 대한 적절한 검색 기준들을 판정했다.
일부 실시예들에서, 디지털 어시스턴트는 연관된 콘텍스트 정보와 함께 사용자로부터의 스피치 입력을 프로세싱하여, 검색 요청을 명확히 하도록 추가 입력이 요구되는지 여부를 판정하고, 검색을 추가로 제한하고, 그리고/또는 검색 요청에서 특정된 다양한 검색 기준들의 상대적 중요성을 순위 평가한다. 디지털 어시스턴트가, 그러한 추가 입력이 필요하거나 바람직한 것으로 판정하는 경우, 디지털 어시스턴트는 그러한 추가 입력을 요청하는 스피치 출력 또는 텍스트형 프롬프트를 생성한다.
일부 실시예들에서, 디지털 어시스턴트는, 다이얼로그 인터페이스를 통해, 레스토랑 검색 요청에 대한 적어도 하나의 추가 검색 기준을 요청하는 스피치 출력을 제공한다. 스피치 출력을 제공하는 것에 응답하여, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자로부터 추가 입력(예컨대, 디지털 어시스턴트의 요청에 응답하는 스피치 입력)을 수신한다. 디지털 어시스턴트는 추가 입력을 프로세싱하고, 레스토랑 검색 요청을 추가 사용자 입력으로 보완한다.
일부 실시예들에서, 디지털 어시스턴트는 또한 다수의 검색 기준들 중 상대적 중요성을 특정할 것을 사용자에게 요청하는 스피치 입력을 제공한다. 일단 디지털 어시스턴트가 다수의 검색 기준들 중 상대적 중요성을 특정하는 추가 사용자 입력을 수신하면, 디지털 어시스턴트는 추가 사용자 입력에 기초하여 검색 결과들을 순위 평가하고 그리고/또는 필터링한다.
일부 실시예들에서, 디지털 어시스턴트는 사용자로부터 스피치 입력을 수신하고, 레스토랑 검색 요청에 대한 인원수 요건을 식별하도록 스피치 입력 및 연관된 콘텍스트 정보를 프로세싱한다. 예를 들어, 사용자가 "나는 토요일 밤에 나의 부모님을 멋진 저녁 식사에 초대하고 싶은데, 좋은 레스토랑을 찾아주세요."라고 말하는 경우, 이러한 스피치 입력에 기초하여, 디지털 어시스턴트는 레스토랑 검색 요청에 대해 3인이라는 인원수 요건, 즉 사용자와 사용자의 부모님을 추론할 수 있다.
상기 예에서, 디지털 어시스턴트는 사용자의 스피치 입력으로부터 인원수 요건을 직접적으로 추론한다. 다른 예에서, 사용자가 디지털 어시스턴트를 통해 2장의 영화 티켓을 방금 구매하고, 이어서 디지털 어시스턴트에게 "영화 전에 어디서 먹을 수 있을까?"라고 물어보는 경우, 스피치 입력(즉, 영화 티켓의 구매)과 연관된 콘텍스트 정보에 기초하여, 디지털 어시스턴트는 스피치 입력에서 언급된 영화가 티켓이 구매된 동일한 영화인 것을 추론한다. 추가로, 2장의 영화 티켓이 구매되었다는 사실에 기초하여, 디지털 어시스턴트는 레스토랑 검색 요청에 대해 2인의 인원수 요건(즉, 영화를 보러 갈 두 사람)을 추론한다. 일부 실시예들에서, 디지털 어시스턴트는 사용자에게 레스토랑 검색을 위한 인원수 요건을 제공할 것을 요청하는 스피치 출력을 생성하며, 디지털 어시스턴트의 요청에 응답하여 제공된 사용자의 추가 입력으로부터 인원수 요건을 획득한다.
일부 실시예들에서, 디지털 어시스턴트가 레스토랑 검색 요청을 위한 인원수 요건을 판정한 후, 디지털 어시스턴트는 각각이 인원수 요건을 충족시키는 적어도 하나의 오픈 테이블을 갖는 하나 이상의 레스토랑들을 식별한다. 일부 실시예들에서, 디지털 어시스턴트는 레스토랑 검색 요청의 하나 이상의 다른 검색 기준들과 함께 인원수 요건을 하나 이상의 제3자 정보 소스들(예컨대, 온라인 레스토랑 검색 및 예약 서비스들)에게 제출하며, 인원수 요건을 충족시키는 레스토랑들만이 제3자 정보 소스들에 의해 제공될 것을 요청한다. 일부 실시예들에서, 디지털 어시스턴트는 적어도 최소 세트의 검색 기준들을 충족시키는 레스토랑들에 대한 이용가능성 정보를 요청하며, 잠재적 검색 결과들로서 인원수 요건을 충족시키는 적어도 하나의 오픈 테이블을 갖는 레스토랑들만을 선택한다.
일부 실시예들에서, 인원수 요건(뿐만 아니라 기타 검색 기준들)을 충족시키는 레스토랑들이 식별된 후, 디지털 어시스턴트는 식별된 레스토랑들에 기초하여 검색 결과들을 생성한다. 일부 실시예들에서, 각각의 검색 결과는 각각의 레스토랑에 관한 정보, 및 또한 레스토랑에 관한 이용가능성 정보를 제시한다. 예를 들어, 사용자의 레스토랑 검색 요청이 레스토랑 검색을 위한 날짜 및 시간을 특정하지 않은 경우, 검색 결과들은 레스토랑 검색 요청의 인원수 요건을 충족시키는 이용가능성(즉, 오픈 테이블들)을 갖는 날짜(들) 및 시간 슬롯(들)을 선택적으로 제시한다.
일부 실시예들에서, 사용자에게 검색 결과들을 제시하기 전, 디지털 어시스턴트는 다수의 제3자 정보 서비스들로부터 수집된 정보에 기초하여 검색 결과들을 순위 평가한다. 예를 들어, 일부 실시예들에서, 디지털 어시스턴트는 다수의 온라인 소스들로부터의 후보 레스토랑들의 리뷰들을 컴파일하고, 상이한 온라인 소스들로부터의 리뷰들 및 순위 평가들 사이의 차이점들을 조화시킨다. 일부 실시예들에서, 디지털 어시스턴트는 또한 중복 정보를 제거하고, 그리고/또는 상이한 온라인 소스들로부터 입수가능한 동일한 후보 레스토랑에 관한 정보의 상이한 측면들을 통합한다. 이어서, 후보 레스토랑들에 관한, 다수의 온라인 소스들로부터의 정보를 조화시키고 통합한 후, 디지털 어시스턴트는 통합되고 조화된 정보에 기초하여 검색 결과들을 생성하고 순위 평가한다. 다수의 소스들로부터의 정보가 어떻게 통합되고 조화되는지에 관한 더 많은 상세사항들은 본 명세서의 초기 부분에 제공되어 있다.
일부 실시예들에서, 디지털 어시스턴트는 레스토랑 검색 요청에 따라 다수의 레스토랑들을 식별하고, 다수의 레스토랑들 각각에 대한 각자의 오픈 예약 슬롯(open reservation slot)을 보류 상태(hold)에 처하게 한다. 예를 들어, 사용자가 레스토랑 검색 요청에서 인원수 요건을 특정한 경우 또는 디지털 어시스턴트가 콘텍스트 정보(예컨대, 이전 사용자 입력, 이전 사용자 상호작용들, 또는 디폴트 사용자 선호도들 등)에 기초하여 인원수 요건을 추론한 경우, 디지털 어시스턴트는 인원수 요건을 충족시키는 레스토랑 예약 슬롯(또는 오픈 테이블)을 보류 상태에 처하게 한다. 일부 실시예들에서, 보류 상태는 제3자 온라인 레스토랑 예약 서비스의 API를 통해 처해진다. 일부 실시예들에서, 보류 상태는 레스토랑 검색 요청의 모든 검색 기준들을 충족시키는 것으로 판정된 각각의 레스토랑에 대해 자동으로 처해진다. 일부 실시예들에서, 보류 상태는 그렇게 하라는 긍정적 명령어가 사용자에 의해 (예컨대, 실시간 입력을 통해 또는 이전에 저장된 사용자 선호도들을 통해) 제공될 때까지 레스토랑 검색 요청의 검색 기준들 중 일부만을 충족시키는 레스토랑들에 대해서는 처해지지 않는다. 일부 실시예들에서, 보류 상태는 보류 상태를 실제 예약으로 전환하도록 하는 어떠한 후속 예약 절차도 수행되지 않는 경우에 사전결정된 기간 이후에 자동으로 해제된다.
일부 실시예들에서, 검색 결과들이 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자에게 제시된 후, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 검색 결과들 중 하나에 대한 예약 요청을 수신한다. 예약 요청을 수신하는 것에 응답하여, 디지털 어시스턴트는 검색 결과에 대응하는 각자의 레스토랑에 대한 예약을 행하도록 예약 절차를 실행한다. 디지털 어시스턴트가 어떻게 예약 요청을 수신하고 예약 절차를 실행하는지에 대한 더 많은 상세사항들은 도 48 및 본 명세서의 초기 부분들과 관련하여 제공된다.
일부 실시예들에서, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 검색 결과들 중 하나에 대한 예약 요청을 수신한다. 예약 요청을 수신하는 것에 응답하여, 보류 상태가 검색 결과에 대응하는 레스토랑에 대해 처해진 경우, 디지털 어시스턴트는 각자의 레스토랑에 대해 처해진 보류 상태를 예약으로 전환한다. 보류 상태를 예약으로 성공적으로 전환한 후, 디지털 어시스턴트는 예약되지 않은 다른 레스토랑들에 대해 처해진 보류 상태를 해제한다. 일부 실시예들에서, 디지털 어시스턴트는 실제로 예약을 행하기 전에 사용자 확인을 요청한다. 일부 실시예들에서, 보류 상태는 인원수 요건 없이도 처해지며, 디지털 어시스턴트는 사용자가 디지털 어시스턴트에게 보류 상태를 실제 예약으로 전환할 것을 부탁할 때 사용자로부터 인원수 요건을 요청한다.
일부 실시예들에서, 사용자에게 검색 결과들을 제시하는 경우, 디지털 어시스턴트는 매번 다이얼로그 인터페이스를 통해 사전결정된 수의 검색 결과들을 동시에 제시한다. 예를 들어, 디지털 어시스턴트는 사용자에게 5개 이하의 결과들(예컨대, 3개 내지 5개의 결과들)을 동시에 제공한다. 일부 실시예들에서, 사용자가 더 많은 결과들을 보기 위해 요청하는 경우에만, 더 많은 결과들이 사용자에게 제시된다. 동시에 제시되는 검색 결과들의 수를 적은 수(예컨대, 3개 내지 5개)로 제한함으로써, 디지털 어시스턴트는 사용자가 결과들을 리뷰할 때 사용자에 대해 처해지는 인지적 부담을 감소시킬 수 있다.
일부 실시예들에서, 검색 결과들 각각에 대해, 디지털 어시스턴트는 검색 결과에 대응하는 각자의 레스토랑의 하나 이상의 속성들 - 각각의 속성은 복수의 검색 결과들을 식별하는 데 이용되는 각자의 레스토랑 검색 기준에 대응함 - 을 제시한다. 예를 들어, 특정 위치로부터의 거리가 레스토랑 검색을 위한 검색 기준으로서 이용된 경우, 각각의 검색 결과에 대해, 그 특정 위치와, 검색 결과에 대응하는 각자의 레스토랑 사이의 거리가 검색 결과마다 제시될 수 있다. 요리(예컨대, 프랑스식, 이탈리아식, 피자, 채식주의자, 미국식, 버거류, 캘리포니아식 등), 분위기(예컨대, 낭만적, 멋진, 유행하는, 차분한, 청결한, 좋은 등), 가격(예컨대, 비싼, $$$, 저렴한 등), 인기도(예컨대, 리뷰 수, 존속 년수, 좋은 리뷰들의 개수, 나쁜 리뷰들의 개수 등)와 같은 다른 속성들이, 또한 그들이 레스토랑 검색 기준들로서 이용될 때 각각의 검색 결과마다 제시될 수 있다.
일부 실시예들에서, 디지털 어시스턴트는 복수의 검색 결과들과 함께 다이얼로그 인터페이스에(예컨대, 대화 스크린 상에) 하나 이상의 사용자 인터페이스 요소들(예컨대, 리뷰 탭, 지도 버튼, 순위 평가 링크 등)을 동시에 제시하는데, 사용자 인터페이스 요소들의 선택은 선택된 검색 결과에 대응하는 각자의 레스토랑과 연관된 리뷰, 지도, 또는 순위 평가의 제시를 야기한다.
일부 실시예들에서, 디지털 어시스턴트는 복수의 검색 결과들과 함께 다이얼로그 인터페이스에(예컨대, 대화 스크린 상에) 하나 이상의 사용자 인터페이스 요소들(예컨대, 호출 버튼, 리뷰 제출 버튼 또는 링크, 링크 저장 버튼, 링크 공유 버튼, 길 안내 요청 버튼, 예약 버튼 등)을 동시에 제시한다. 사용자 인터페이스 요소들의 선택은: 선택된 검색 결과에 대응하는 각자의 레스토랑과 관련하여, 제3자에게 전화 걸기를 개시하거나, 리뷰를 제출하거나, 링크를 저장하거나, 링크를 공유하거나, 길 안내를 요청하거나, 또는 예약을 행하는 후속 작용들을 야기한다.
도 50은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 엔터테인먼트 관련 요청들을 어시스턴스에 제공하기 위한 방법을 묘사한 흐름도이다. 도 50에 도시된 바와 같이, 프로세스(5000)에서, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 스피치 입력을 수신한다(단계 5010). 이어서, 디지털 어시스턴트는 스피치 입력과 연관된 콘텍스트 정보를 판정한다(단계 5020). 디지털 어시스턴트는 하나 이상의 엔터테인먼트 검색 기준들을 판정하도록 스피치 입력을 프로세싱하는데, 여기서 프로세싱은 엔터테인먼트 검색 기준들 중 적어도 하나의 엔터테인먼트 검색 기준을 판정하도록 콘텍스트 정보로 스피치 입력을 보완하고 그리고/또는 스피치 입력의 중의성을 해소하는 것을 포함한다(단계 5030). 일부 실시예들에서, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자에게 검색 결과들 - 검색 결과 각각은 하나 이상의 엔터테인먼트 검색 기준들에 따라 식별된 각자의 엔터테인먼트 이벤트에 대응함 - 을 제시한다(단계 5040).
일부 실시예들에서, 스피치 입력을 보완하는 것은 스피치 입력에서 특정되지 않거나 지칭되지 않는 검색 기준을 판정하는 것을 포함한다. 예를 들어, 콘텍스트 정보는 위치 검색 기준을 제공하는 데 이용될 수 있지만, 스피치 입력은 임의의 위치에 대해 언급하지 않는다. 일부 실시예들에서, 스피치 입력의 중의성을 해소하는 것은 스피치 입력이 다수의 합리적인 해석들을 갖는 용어를 포함하는 것으로 판정하는 것, 스피치 입력과 연관된 콘텍스트 정보에 기초하여 다수의 합리적인 해석들 중 하나를 선택하는 것, 및 선택된 해석에 기초하여 검색 기준을 생성하는 것을 포함한다.
일부 실시예들에서, 스피치 입력과 연관된 콘텍스트 정보는 다이얼로그 인터페이스를 통한 사용자와 디지털 어시스턴트 사이에서의 적어도 하나의 이전 상호작용을 포함한다. 일부 실시예들에서, 콘텍스트 정보는 캘린더 애플리케이션, 이메일 애플리케이션, 인스턴트 메시징 애플리케이션, 및 주소록 애플리케이션과 같은 하나 이상의 애플리케이션들에 저장된 정보를 포함한다. 예를 들어, 사용자가 스피치 입력에서 이름 또는 스케줄링된 약속을 언급하는 경우, 디지털 어시스턴트는 적절한 애플리케이션을 통해 사용자의 주소록 또는 캘린더에 액세스함으로써 그 이름과 연관된 사람(들)에 관한 더 많은 정보 또는 스케줄링된 약속에 관한 정보를 획득할 수 있다.
일부 실시예들에서, 콘텍스트 정보는 현재 위치, 현재 시간, 및 현재 또는 예보된 기상 정보 중 하나 이상을 포함한다. 일부 실시예들에서, 콘텍스트 정보는 다이얼로그 인터페이스를 통해 이전에 수신된 하나 이상의 스피치 입력들로부터 추출된 정보를 포함한다. 일부 실시예들에서, 콘텍스트 정보는 다이얼로그 인터페이스를 통해 이전에 수신된 하나 이상의 비언어적 입력(non-verbal input)들로부터 추출된 정보를 포함한다. 예를 들어, 비언어적 입력은 사용자 디바이스에 커플링된 다양한 입력 디바이스들을 통해 사용자로부터 수신된 제스처 입력, 포인터 입력, 및 텍스트 입력을 포함한다.
일부 실시예들에서, 디지털 어시스턴트는 검색 결과들과 함께 다이얼로그 인터페이스에 하나 이상의 사용자 인터페이스 요소들을 동시에 제시한다. 일부 실시예들에서, 사용자 인터페이스 요소들 중 하나는 대응 엔터테인먼트 이벤트 검색 결과와 연관된 미디어 파일을 다운로드하고 재생하기 위한 것이다. 예를 들어, 영화 검색에 대한 검색 결과들 중에서, 각각의 예고편 버튼이 각각의 영화 검색 결과에 대해 제시될 수 있다. 예고편 버튼의 선택은 영화 예고편이 사용자 디바이스 상에 다운로드되고 재생되게 할 것이다. 일부 실시예들에서, 리뷰 및 공연 시간을 제시하고 예약을 행하기 위한 사용자 인터페이스 요소들이 또한 각각의 검색 결과마다 제공된다.
일부 실시예들에서, 디지털 어시스턴트가 다이얼로그 인터페이스를 통해 사용자에게 검색 결과들을 제공한 후, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자와 계속해서 통신한다. 예를 들어, 디지털 어시스턴트는 추가 정보를 요청하는 사용자로부터 후속 스피치 입력을 수신할 수 있다. 요청된 추가 정보는 다이얼로그 인터페이스를 통해(예컨대, 디지털 어시스턴트에 의한 스피치 출력들을 통해, 그리고/또는 대화 스크린 상에 제시됨) 이전에 제시된 검색 결과들, 또는 대화 스크린 상에 현재 제시되고 있는 하나 이상의 검색 결과들 중 하나 이상과 관련된 것일 수 있다. 예를 들어, 디지털 어시스턴트가 다이얼로그 인터페이스를 통해 사용자의 초기 검색 요청에 기초한 다수의 영화 검색 결과들을 제시한 후, 사용자는 "이러한 주제에 대한 다른 영화들이 있나?" 또는 "동일한 감독의 몇몇 다른 영화들을 보여달라." 또는 "B+ 등급을 갖는 영화들만을 보여달라."라고 말함으로써 영화 검색 결과들 중 하나 이상에 관한 추가 정보를 요청하는 후속 스피치 입력을 제공할 수 있다. 다른 예를 들어, 사용자가 영화 검색 결과들 중 하나에 대한 예고편을 리뷰한 후, 사용자는 "동일한 배우가 연기한 다른 영화들이 있나?"라고 말함으로써 후속 스피치 입력을 제공할 수 있다.
일부 실시예들에서, 후속 스피치 입력을 수신하는 것에 응답하여, 디지털 어시스턴트는 요청된 추가 정보를 검색하기 위한 검색 쿼리를 생성하도록 후속 스피치 입력의 적어도 일부분의 중의성을 해소하는데, 여기서 중의성을 해소하는 것은 검색 결과들에 대응하는 각자의 엔터테인먼트 이벤트들과 관련된 하나 이상의 속성들에 적어도 부분적으로 기초한다. 예를 들어, 사용자가 영화 검색 결과들 중 하나를 선택하고 "동일한 감독의 다른 영화들이 있나?"라는 후속 스피치 입력을 제공한다고 가정한다. 후속 스피치 입력에 응답하여, 디지털 어시스턴트는 선택된 검색 결과들에 대응하는 영화를 식별하고, 영화와 연관된 관련 속성, 즉 영화 감독을 판정한다. 관련 속성(예컨대, 영화 감독의 아이덴티티)에 기초하여, 디지털 어시스턴트는 사용자의 후속 스피치 입력의 중의성을 해소하며, 식별된 감독이 연출한 영화들을 검색하기 위한 검색 쿼리를 생성한다.
일부 실시예들에서, 디지털 어시스턴트는 검색 쿼리에 기초하여 요청된 추가 정보를 검색하고, 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자에게 정보를 제시한다. 상기 예를 계속하면, 일단 디지털 어시스턴트가 식별된 감독이 연출한 영화들에 대한 검색 결과들을 검색했다면, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자에게 새롭게 검색된 검색 결과들을 제시한다. 사용자와 디지털 어시스턴트는 새롭게 검색된 검색 결과들, 초기에 제시된 검색 결과들, 및/또는 새로운 검색 요청과 관련하여 다이얼로그 인터페이스를 통해 계속해서 서로 상호작용할 수 있다.
일부 실시예들에서, 스피치 입력이 수신된 다이얼로그 세션 동안, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 수신된 사용자 입력들 및 다이얼로그 인터페이스를 통해 사용자에게 제공된 정보에 기초하여 다이얼로그 콘텍스트를 유지한다. 다이얼로그 세션은 사용자와 디지털 어시스턴트 사이에서의 스피치 입력 및 출력의 교환을 포함한다. 일부 실시예들에서, 다이얼로그 세션은 또한 디지털 어시스턴트에 의해 제공된 텍스트형 프롬프트 및 사용자에 의해 제공된 텍스트형 응답뿐만 아니라 디지털 어시스턴트에 의해 제공된 통지 또는 경보, 및 통지 및 경보를 해결하는 사용자 입력과 같이, 다른 양식을 통해 교환되는 요청들 및 응답들을 포함한다.
다이얼로그 세션은 다양한 방식들로 정의될 수 있다. 일부 실시예들에서, 다이얼로그 세션은 사전결정된 듀레이션, 예컨대, 수 분, 수 십분, 1시간, 하루, 며칠, 또는 심지어 더 긴 기간에 의해 정의된다. 다이얼로그 세션을 합리적인 길이, 예컨대 반시간 미만 내에 유지시키는 것이 유리하며, 따라서 콘텍스트 정보를 유지시키는 것이 너무 많은 계산 리소스들을 차지하지 않게 한다. 추가로, 사용자는 다이얼로그에서 최근에 언급된 아이템을 다시 지칭할 가능성이 더 많으며, 따라서 매우 긴 다이얼로그 세션을 정의하는 것이 특별히 필요한 것은 아니다.
일부 실시예들에서, 다이얼로그 세션은 사전결정된 듀레이션(예컨대, 2분 또는 5분)보다 더 긴 인터럽션이 없는 디지털 어시스턴트와 사용자 사이에서의 연속적 또는 간헐적 상호작용들로서 정의된다. 예를 들어, 사용자는 잠시동안 연속적으로 디지털 어시스턴트와 상호작용할 수 있고, 디지털 어시스턴트의 대화 스크린으로부터 나가서 다른 애플리케이션에 액세스하고, 이어서 그 후에 디지털 어시스턴트와의 상호작용을 재개한다. 이러한 예에서, 사용자가 다이얼로그 세션을 유지시키는 데 필요한 사전결정된 듀레이션이 만료되기 전에 디지털 어시스턴트와의 상호작용을 재개하는 한, 다이얼로그 세션은 지속되고, 다이얼로그 세션과 연관된 다이얼로그 콘텍스트는 계속적으로 유지된다.
일부 실시예들에서, 다이얼로그 세션은 시작 트리거 이벤트 및 종료 트리거 이벤트에 의해 정의된다. 예를 들어, 사용자는 버튼을 누르거나 트리거 구절을 이야기하여, 디지털 어시스턴의 능동적 청취를 호출하고 다이얼로그 세션을 시작하게 할 수 있다. 다이얼로그 세션 동안에 디지털 어시스턴트와 상호작용한 후, 사용자는 버튼을 누르거나 다른 트리거 구절을 이야기하여 다이얼로그 세션을 종료시킬 수 있다. 다이얼로그 세션을 정의하는 다른 방식들이 가능하다.
일부 실시예들에서, 스피치 입력이 수신된 다이얼로그 세션 동안, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자로부터 하나 이상의 추가 스피치 입력들을 수신한다. 디지털 어시스턴트는 디지털 어시스턴트에 의해 유지되는 다이얼로그 콘텍스트에 기초하여 하나 이상의 추가 스피치 입력들 각각을 프로세싱하여, 추가 스피치 입력에서 표현된 사용자 의도를 판정한다. 일부 실시예들에서, 추가 스피치 입력의 프로세싱은 다이얼로그 콘텍스트에 기초하여 추가 스피치 입력을 보완하는 것 및/또는 추가 스피치 입력의 중의성을 해소하는 것을 포함한다. 일부 실시예들에서, 디지털 어시스턴트는 프로세싱에 기초하여 하나 이상의 추가 스피치 입력들 각각에 응답하여 추가 정보를 제공한다.
일부 실시예들에서, 디지털 어시스턴트가 엔터테인먼트 검색 결과들(예컨대, 영화 검색 결과들 또는 콘서트 검색 결과들)을 제시한 경우, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 검색 결과들 중 하나 이상에 대한 예약 요청을 수신한다. 예약 요청을 수신하는 것에 응답하여, 디지털 어시스턴트는 하나 이상의 검색 결과들에 대응하는 각자의 엔터테인먼트 이벤트를 위한 하나 이상의 티켓들을 구매하도록 예약 절차를 실행한다.
일부 실시예들에서, 디지털 어시스턴트는 디지털 어시스턴트와 사용자가 다이얼로그 인터페이스를 통해 계속해서 상호작용하는 동안 백그라운드에서 예약 절차를 수행한다. 일부 실시예들에서, 예약 절차 동안, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통한 예약에 관해 다양한 선호도들 및 추가 정보(예컨대, 신용 카드 정보, 지불 인증 등)에 관해 사용자와 통신한다. 일부 실시예들에서, 디지털 어시스턴트는 제3자 온라인 예약 서비스의 인터페이스를 로딩하고, 사용자가 제3자 온라인 예약 서비스의 인터페이스를 통해 직접적으로 예약을 행하게 한다.
일부 실시예들에서, 초기 스피치 입력(예컨대, 엔터테인먼트 검색 요청을 개시한 스피치 입력)이 수신된 다이얼로그 세션 동안, 디지털 어시스턴트는 검색 결과들의 제시가 후속 사용자 입력들에 응답하여 다른 정보로 대체된 후에 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 예약 요청을 수신한다. 예약 요청에 응답하여, 디지털 어시스턴트는 다이얼로그 콘텍스트에 기초하여 예약 요청의 타깃 엔터테인먼트 이벤트 - 타깃 엔터테인먼트 이벤트는 이전에 제시된 검색 결과들 중 하나에 대응함 - 를 판정한다. 일단 타깃 엔터테인먼트 이벤트가 판정되었다면, 디지털 어시스턴트는 판정된 타깃 엔터테인먼트 이벤트를 위한 하나 이상의 티켓들을 구매하도록 예약 절차를 실행한다. 하기의 예는 이러한 프로세스를 예시한다:
사용자가 "이번주 토요일에 어떤 영화들이 상영되지?"라는 초기 스피치 입력을 이용하여 영화 검색을 요청했다고 가정한다. 디지털 어시스턴트가 다이얼로그 인터페이스를 통해 이번주 토요일에 상영되는 영화들의 목록을 제시한 후, 사용자는 영화 결과들 중 일부에 대한 약간의 예고편들을 보여 줄 것을 부탁했다. 응답으로, 디지털 어시스턴트는 사용자에게 예고편들을 보여주었고, 그 결과, 스크린 상에 이전에 제시된 영화들의 목록은 예고편들로 대체되었다. 디지털 어시스턴트가 영화 검색, 영화 검색 결과들, 및 예고편들에 관해 사용자와 상호작용하는 동안, 디지털 어시스턴트는 현재 다이얼로그 세션에 관련된 다이얼로그 콘텍스트를 유지시켰다. 영화 예고편들이 보여진 후, 사용자는 예를 들어 "Ok, 공룡 영화를 위한 티켓을 얻어라."라는 스피치 입력을 이용하여 디지털 어시스턴트에게 예약 요청을 제출한다. 스피치 입력 및 현재 다이얼로그 세션의 다이얼로그 콘텍스트에 기초하여, 디지털 어시스턴트는 사용자에 의해 리뷰되었던 예고편들을 식별하고, 그들 예고편들에 대응하는 영화들을 판정한다. 이어서, 디지털 어시스턴트는 그들 영화들 중에서 공룡들과 관련된 특정 영화를 식별한다. 일단 공룡과 관련된 그 특정 영화가 식별되었다면, 디지털 어시스턴트는 타깃 엔터테인먼트 이벤트(즉, 식별된 특정 공룡 영화)에 대한 예약 절차를 개시한다. 일부 실시예들에서, 디지털 어시스턴트는 영화를 위한 티켓을 예약하거나 구매하도록 진행하기 전에 영화의 이름을 안내한다.
도 51은 일부 실시예들에 따른, 디지털 어시스턴트를 사용하여 정보의 특정 도메인들에 관련된 정보를 제공하기 위한 방법을 묘사한 흐름도이다. 본 명세서에 초기에 기술된 바와 같이, 정보의 도메인은 온톨로지 내의 상호접속 노드들의 클러스터로서 구현될 수 있다. 정보의 도메인 각각은 소정 세트의 어휘, 도메인 엔티티 데이터, 언어 패턴(예컨대, 숙어, 구절, 기술 용어, 전형적인 쿼리 등), 도메인 모델, 태스크 흐름, 서비스 능력 모델, 다이얼로그 흐름, 및 정보 도메인과 관련된 기타 컴포넌트 및 데이터 모델과 연관된다. 예를 들어, 레스토랑 도메인은 레스토랑, 음식 및 정찬과 연관된 어휘, 도메인 엔티티 데이터, 및 언어 패턴; 레스토랑을 검색하고, 레스토랑으로의 길 안내를 찾고, 레스토랑 검색에 대한 검색 결과를 제시하고, 사용자의 검색 우선순위에 기초하여 레스토랑들을 비교 및 순위 평가하고, 레스토랑 예약을 행하는 태스크 흐름; 검색 기준, 제약, 레스토랑 검색과 관련된 참조문 및 예약을 도출하고, 사용자의 검색 요청들을 패러프레이징하고, 레스토랑 검색 결과를 안내하기 위한 다이얼로그 흐름; 및 레스토랑 도메인에서 구현된 기타 흐름 및 데이터 모델을 포함한다.
다른 예를 들어, 영화 도메인은 영화, 배우, 감독, 영화관, 영화 이력 등과 연관된 언어 패턴, 도메인 엔티티 데이터, 및 어휘를 포함한다. 영화 도메인은 또한 태스크 흐름, 다이얼로그 흐름, 및 영화/배우/감독 검색, 영화 순위 평가, 영화 예고편의 다운로드 및 재생, 영화 티켓의 예약 또는 구매, 및 영화와 관련된 기타 질문 및 대답과 연관된 서비스 능력 모델을 포함한다.
유사하게, 일부 실시예들에서, 디지털 어시스턴트는 또한 스포츠 도메인을 구현한다. 스포츠 도메인은 어휘, 도메인 엔티티, 언어 패턴, 태스크 흐름, 다이얼로그 흐름, 및 스포츠에 대한 정보의 검색, 스포츠 이벤트와 관련된 태스크의 수행, 스포츠와 관련된 짧은 메시지의 전송, 스프츠 관련 기념품 거래 등과 연관된 서비스 능력 모델을 포함한다.
일부 실시예들에서, 디지털 어시스턴트는 음악 도메인을 구현한다. 음악 도메인은 어휘, 도메인 엔티티, 언어 패턴, 태스크 흐름, 다이얼로그 흐름, 및 음악 및 음악 관계자, 이벤트, 및 제품에 대한 정보의 검색, 음악과 관련된 태스크(예컨대, CD, 앨범, 상품의 구매 및/또는 미디어 파일의 다운로드)의 수행, 및 이벤트(예컨대, 콘서트, 초연, 앨범 사인회)에 대한 티켓의 구매와 연관된 서비스 능력 모델을 포함한다.
일부 실시예들에서, 디지털 어시스턴트는 엔터테인먼트 도메인을 구현한다. 엔터테인먼트 도메인은 어휘, 도메인 엔티티, 언어 패턴, 태스크 흐름, 다이얼로그 흐름, 및 엔터테인먼트 관계자 및 이벤트에 대한 정보의 검색과 연관된 서비스 능력 모델을 포함한다.
일부 실시예들에서, 디지털 어시스턴트는 쇼핑 도메인을 구현한다. 쇼핑 도메인은 어휘, 도메인 엔티티, 언어 패턴, 태스크 흐름, 다이얼로그 흐름, 및 제품 및 쇼핑의 검색과 연관된 서비스 모델을 포함한다.
일부 실시예들에서, 디지털 어시스턴트는 게이밍 도메인을 구현한다. 쇼핑 도메인은 어휘, 도메인 엔티티, 언어 패턴, 태스크 흐름, 다이얼로그 흐름, 및 게임, 게이밍, 게이밍 제품, 워크스루(walkthrough)에 대한 정보의 검색, 게이밍 관련 구매의 이행, 및 게이밍 관련 가상 상품 및 실제 상품, 장비, 및 속성의 거래와 연관된 서비스 모델을 포함한다.
일부 실시예들에서, 각각의 도메인은 다수의 하위도메인들을 포함한다. 예를 들어, 일부 실시예들에서, 엔터테인먼트 도메인은 영화 도메인, 스포츠 도메인, 및 음악 도메인을 포함한다. 일부 실시예들에서, 스포츠 도메인은 상이한 스포츠들에 대한 하위도메인들을 포함한다. 일부 실시예들에서, 음악 도메인은 상이한 음악 장르들에 대한 하위도메인들을 포함한다. 일부 실시예들에서, 하위도메인들은 그들 자체의 하위도메인들을 추가로 포함할 수 있고, 하위도메인들은 중첩될 수 있다.
일부 실시예들에서, 디지털 어시스턴트는 사용자로부터의 자연어 요청에 응답하여 정보의 도메인과 관련된 정보를 선택적으로 제공한다. 예를 들어, 디지털 어시스턴트에 의해 구현되는 각각의 정보 도메인에 대한 요청들과 공통적으로 연관된 어휘(예컨대, 특정 키워드), 도메인 엔티티(예컨대, 주지되어 있는 사람 및 엔티티), 및/또는 언어 패턴(예컨대, 특정 쿼리 템플릿 또는 요청 패턴)에 기초하여, 디지털 어시스턴트는 사용자의 요청이 정보의 특정 도메인을 가리킬 가능성이 큰 것으로 판정할 수 있다. 일단 디지털 어시스턴트가 가능성있는 관심 도메인을 판정했다면, 사용자의 현재 및 후속 요청들의 자연어 프로세싱은 그 특정 도메인을 향해 편향되어, 자연어 요청에서 표현된 사용자 의도, 엔티티, 위치, 및 사람 이름의 중의성을 해소하게 할 수 있다.
예를 들어, 스포츠 도메인과 연관된 어휘는 상이한 스포츠, 운동선수, 스프츠 팀, 스포츠 이벤트, 및 스포츠 이벤트의 주지되어 있는 스폰서의 적절한 이름 및 별명, 스프츠 상품에 대한 상표, 스포츠 이벤트 및 게임의 장소, 스포츠 이력, 상이한 스포츠 및 게임의 기술 용어 및 전문 용어 등을 포함한다. 스포츠 도메인과 연관된 언어 패턴은 "…에 대한 점수는 어떠한가?", "...에 대항해 누가 경기하고 있는가?", "어느 팀이 …를 이겼나", "...에 대한 게임 통계는 무엇인가" 등과 같은 키워드들 및 구절들을 포함한다. 스포츠 관련 어휘 및 언어 패턴에 기초하여, 디지털 어시스턴트는 사용자의 요청이 스포츠 도메인과 관련되는지 여부를 추론할 수 있다.
다른 예를 들어, 음악 도메인에 대해, 사용자는 종종 음악, 장르, 노래 및 앨범의 빌보드 순위, 가사, 특정 아티스트에 대한 앨범 및 투어, 유명한 아티스트에 관한 뉴스, 최신 히트작 등과 관련된 질문을 물어본다. 음악 도메인과 연관된 어휘는 음악가, 가수, 노래, 장르, 음악 그룹 등의 적절한 이름 및 별명을 포함할 것이다. 음악 도메인과 연관된 언어 패턴은 "…에 대한 가사를 보여달라", "...하는 노래의 제목이 무엇인가", "누가 …를 노래했나", "…의 최신 노래는 무엇인가" 등과 같은 키워드 및 구절을 포함한다. 음악 관련 어휘 및 언어 패턴에 기초하여, 디지털 어시스턴트는 사용자의 요청이 음악 도메인과 관련되는지 여부를 추론할 수 있다.
일부 실시예들에서, 디지털 어시스턴트는 사용자가 특정 정보 도메인에서 빈번하게 물어보는 질문들의 유형을 표현하는 공통 쿼리 유형들의 집합을 저장한다. 예를 들어, 스포츠 도메인의 경우, 사용자는 종종 게임 점수 및 플레이어 통계, 게임 시간, 팀 선수 명단, 운동 선수 연봉, 플레이어 및/또는 팀 이력, 및 현재 스포츠 뉴스와 관련된 질문들을 물어본다. 음악 도메인의 경우, 사용자는 종종 아티스트, 장르, 가사, 최신 히트작, 클래식, 유명한 노래, 특정 노래에서 잘 알려진 소절 등과 관련된 질문들을 물어본다.
일부 실시예들에서, 디지털 어시스턴트는 또한 도메인 내에 유명한 개인 및 엔티티와 관련된 공통 쿼리 유형들의 하위도메인들을 구현한다. 예를 들어, 일부 실시예들에서, 스포츠 도메인에서, 디지털 어시스턴트는 또한 "코비(Kobe) 관련 질문", "자이언트 관련 질문", "슈퍼볼 관련 질문" 등과 같은 유명한 운동 선수, 스포츠 팀, 및 스포츠 이벤트를 중심으로 하는 공통 쿼리 유형들의 하위도메인들을 구현한다. 일부 실시예들에서, 음악 도메인에 대해, 디지털 어시스턴트는 "엘비스 관련 질문", "블루스 관련 질문", "힙합 관련 질문" 등과 같은 유명한 가수, 노래, 및 장르와 관련된 공통 쿼리 유형들의 하위도메인들을 구현할 수 있다.
도 51에 도시된 바와 같이, 프로세스(5100)에서, 디지털 어시스턴트는 정보의 사전결정된 도메인과 연관된 어휘 - 어휘는 정보의 사전결정된 도메인과 관련된 정보를 선택적으로 검색하기 위한 복수의 사전결정된 쿼리 유형들에 따라 구성됨 - 를 저장한다(단계 5102). 예를 들어, 스포츠 도메인에서는, 스포츠 관련 어휘가 점수와 관련된 쿼리, 운동 선수 통계와 관련된 쿼리, 스포츠 팀과 관련된 쿼리, 현재 게임 또는 시즌과 관련된 쿼리, 유명한 운동 선수 X(예컨대, 타이거 우즈 또는 마이클 조던)와 관련된 쿼리 등과 같은 상이한 쿼리 유형들과의 연관성에 저장된다.
프로세스(5100)에서, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자로부터 스피치 입력을 수신한다(단계 5104). 디지털 어시스턴트는 스피치 입력과 연관된 콘텍스트 정보를 판정한다(단계 5106). 디지털 어시스턴트는 하나 이상의 검색 기준들을 판정하도록 스피치 입력을 프로세싱하는데, 프로세싱은, 콘텍스트 정보 및 정보의 사전결정된 도메인과 연관된 어휘를 이용하여, 스피치 입력을 보완하는 것 및/또는 스피치 입력의 중의성을 해소하는 것을 포함한다(단계 5108).
예를 들어, 사용자의 스피치 입력이 스포츠 관련 어휘를 포함하는 경우, 일단 디지털 어시스턴트가 스포츠 관련 어휘(예컨대, 스포츠 도메인에 저장된 사전결정된 쿼리 유형과 연관된 키워드 또는 언어 패턴)를 검출한다면, 디지털 어시스턴트는 스포츠 도메인과 연관된 어휘 및 콘텍스트 정보를 이용하여 스피치 입력을 보완하고 그리고/또는 스피치 입력의 중의성을 해소한다. 더 상세한 예를 들어, 사용자가 "누가 오늘밤 레이커스(Lakers)와 경기하는가?"라고 말하는 것을 가정한다. 이러한 스피치 입력으로부터, 디지털 어시스턴트는, 양측 모두가 디지털 어시스턴트의 스포츠 도메인에 저장되어 있던 스포츠 관련 어휘 "레이커스" 및 스포츠 관련 언어 패턴 "누가 [스포츠 팀] …과 경기하는가"를 인식한다. 그 결과, 디지털 어시스턴트는 사용자가 스포츠 관련 정보에 관심이 있는 것으로 판정한다. 디지털 어시스턴트는 또한 콘텍스트 정보(예컨대, 현재 날짜)를 이용하여 사용자가 스피치 입력에서 "오늘밤"이라는 단어로 지칭하고 있는 날짜를 판정한다. 디지털 어시스턴트가 사용자의 스피치 입력의 중의성을 완전히 해소한 후, 디지털 어시스턴트는 검색을 수행하여 요청된 정보를 검색하도록 진행한다. 특히, 디지털 어시스턴트는 현재 날짜의 저녁에 레이커스에 대항해 경기하는 팀의 이름을 검색한다.
다른 더 상세한 예를 들어, 사용자가 "어제밤에 르브론(Lebron)은 어땠지?"라고 물어보는 것을 가정한다. 스포츠 도메인 하에 저장된 어휘(예컨대, 농구 플레이어의 적절한 이름 및 별명을 포함함) 및 도메인 엔티티(예컨대, 플레이어 및 스포츠 팀에 대한 데이터 기록)에 따라, 디지털 어시스턴트는 "르브론"이 유명한 농구 플레이어 "르브론 제임스"의 이름이고 "마이애미 히트(Miami Heat)"로 불리는 NBA 팀의 현재 구성원임을 인식한다. 스포츠 도메인 하에 저장된 "[플레이어 이름]이 어땠나?"라는 언어 패턴에 기초하여, 디지털 어시스턴트는 또한 사용자가 플레이어 게임 통계(즉, 스포츠 도메인 하에 저장된 사전결정된 쿼리 유형)와 관련된 질문을 물어보고 있음을 인식한다. 디지털 어시스턴트가, 사용자가 특정 팀의 농구 플레이어에 대한 게임 통계를 아는 것에 관심이 있음을 인식한 후, 디지털 어시스턴트는 콘텍스트 정보(예컨대, 현재 날짜)를 이용하여 그 전날 마이애미 히트가 어느 게임을 경기했는지 판정하고, 그 게임에 대한 르브론 제임스의 게임 통계의 검색을 진행한다.
상기 예에 도시된 바와 같이, 프로세스(5100)에서, 디지털 어시스턴트는 하나 이상의 검색 기준들(예컨대, {query type = player's game statistics, player name = LeBron James, Team = Miami Heat, game date = yesterday = 예컨대, 2012년 6월 8일})에 따라 사전결정된 도메인(예컨대, 스포츠 도메인)의 정보와 관련된 정보를 검색한다(단계 5110). 정보가 검색 기준들에 기초하여 검색된 후, 디지털 어시스턴트는 디지털 어시스턴트의 다이얼로그 인터페이스를 통해 사용자에게 검색된 정보를 제시한다(단계 5112). 예를 들어, 디지털 어시스턴트는 사용자에게 "르브론이 어제밤 30 포인트, 8 리바운드, 및 2 어시스트로 잘 했습니다."라고 말하는 스피치 출력을 생성할 수 있다.
일부 실시예들에서, 디지털 어시스턴트가, 사용자가 특정 도메인의 정보에 관심이 있음을 확정한 후(예컨대, 디지털 어시스턴트가 스포츠 도메인과 관련된 사용자의 질문에 만족스럽게 대답한 후), 디지털 어시스턴트는 스포츠 도메인 내에서의 사용자와의 대화를 계속할 수 있다. 일부 실시예들에서, 디지털 어시스턴트는 대화의 다이얼로그 콘텍스트를 유지함으로써 대화(예컨대, 계속되는 질문 및 대답)를 실행한다. 다이얼로그 콘텍스트는 어떤 정보가 어느 시간에 그리고/또는 어느 순서로 사용자에 의해 질문받았고 수신되었는지 추적한다.
예를 들어, 일부 실시예들에서, 스피치 입력(예컨대, 특정 도메인의 정보와 관련된 초기 사용자 질문)이 수신된 다이얼로그 세션 동안, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 수신된 사용자 입력 및 다이얼로그 인터페이스를 통해 사용자에게 제공된 정보에 기초하여 다이얼로그 콘텍스트를 유지한다. 이어서, 동일한 다이얼로그 세션 동안, 디지털 어시스턴트는 다이얼로그 인터페이스를 통해 사용자로부터 하나 이상의 추가 스피치 입력들을 수신한다. 디지털 어시스턴트는 다이얼로그 콘텍스트에 기초하여 하나 이상의 추가 스피치 입력들 각각을 프로세싱하여, 추가 스피치 입력에서 표현된 사용자 의도를 판정한다. 일부 실시예들에서, 프로세싱은 다이얼로그 콘텍스트에 기초하여 추가 스피치 입력을 보완하는 것 및/또는 추가 스피치 입력의 중의성을 해소하는 것을 포함한다. 이어서, 프로세싱하는 것에 기초하여, 디지털 어시스턴트는 하나 이상의 추가 스피치 입력들 각각에 응답하여 추가 정보를 제공한다.
상기 스포츠 관련 예로 계속하면, 사용자가 르브론 제임스의 게임 통계에 관해 질문한 다이얼로그 세션 동안, 디지털 어시스턴트는 다이얼로그 콘텍스트를 유지하고, 사용자가 물어봤던 것을 추적하며, 어떤 정보가 어느 시간에 그리고/또는 어느 순서로 사용자에게 제공되었는지를 추적한다. 르브론의 게임 통계를 청취한 후, 사용자가 "코비는 어땠나?"라는 추가 스피치 입력을 통해 다른 질문을 물어본다는 것을 가정한다. 이러한 스피치 입력에 기초하여, 디지털 어시스턴트는 "코비"도 또한 농구 플레이어를 지칭하는 것을 식별할 수 있다. 디지털 어시스턴트에 의해 저장된 다이얼로그 콘텍스트에 기초하여, 디지털 어시스턴트는 사용자가 다른 농구 플레이어 "르브론 제임스"에 대한 게임 통계에 관해 방금 질문했고 대답을 수신한 것으로 판정한다. 따라서, 디지털 어시스턴트는 "코비는 어땠나?"라는 사용자의 질문을 코비 브라이언트(Kobe Bryant)에 대한 게임 통계의 요청으로서 해석한다. 일부 구현예들에서, 디지털 어시스턴트는 플레이어 이름 "르브론 제임스"를 상이한 플레이어 이름 "코비 브라이언트"로 대체한다는 점을 제외하면 이전에 수행된 바와 같이 플레이어 게임 통계를 검색하기 위한 태스크 흐름을 수행한다. 일단 디지털 어시스턴트가 어제밤에 코비 브라이언트에 대한 플레이어 게임 통계를 검색하면, 디지털 어시스턴트는 "코비도 어제밤 30 포인트, 4 리바운드, 및 4 어시스트로 잘 했습니다."라는 스피치 출력을 통해 다이얼로그 인터페이스를 통해 사용자에게 게임 통계를 제시한다.
일부 실시예들에서, 몇몇 쿼리 유형들에 대해, 디지털 어시스턴트들은 사용자에게 사용자의 현재 질문들과 관련된 추가 정보를 제공하도록 제안하는 다이얼로그 흐름들을 구현한다. 예를 들어, 디지털 어시스턴트가 특정 플레이어들에 관한 게임 통계 정보를 제공한 후, 디지털 어시스턴트는 플레이어들이 득점한 게임의 비디오 클립을 보여주도록 제안할 수 있다. 예를 들어, 디지털 어시스턴트가 사용자에게 어제밤 코비의 게임 통계를 제공한 후, 디지털 어시스턴트는 사용자에게 "당신은 게임의 비디오 클립을 보고 싶습니까?"라고 물어볼 수 있다. 사용자가 수락하는 경우, 디지털 어시스턴트는 코비가 득점한 어제밤의 게임에 대한 비디오 클립을 재생하도록 진행한다.
디지털 어시스턴트가 사용자에게 코비의 게임 통계를 제공한 후, 또는 비디오 클립들이 사용자에게 보여진 후, 디지털 어시스턴트와 사용자 사이의 대화가 계속된다고 가정한다. 예를 들어, 이어서, 사용자는 "그래서, 누가 더 많은 돈을 벌지?"라고 물어본다. 디지털 어시스턴트는 사용자의 입력이 스포츠 도메인 하에 저장된 쿼리 유형 "플레이어 연봉"과 연관된 언어 패턴(예컨대, "…돈을 벌다")과 매칭되는 것을 식별한다. 현재 다이얼로그 세션에 대해 저장된 다이얼로그 콘텍스트에 기초하여, 디지털 어시스턴트는 두 농구 플레이어들(예컨대, 르브론 제임스와 코비 브라이언트)이 사용자와 디지털 어시스턴트 사이의 가장 최근 교환에서 언급된 것으로 판정한다. 다이얼로그 콘텍스트에 기초하여, 디지털 어시스턴트는 사용자의 입력의 중의성을 해소하고, 사용자의 입력을 두 농구 플레이어들의 연봉, 및 특히 두 농구 플레이어들의 연봉들 사이의 비교에 관한 질문으로서 해석한다. 디지털 어시스턴트가 사용자의 의도를 판정한 후, 디지털 어시스턴트는 두 플레이어들에 관한 연봉 정보를 검색하도록 진행하고, 두 플레이어들의 연봉들을 비교한 출력을 나타낸다. 예를 들어, 디지털 어시스턴트는 "나의 소스에 기초하면, 코비는 2011년 연봉이 X 달러였고, 르브론은 2011년 연봉이 Y 달러였습니다."라고 말하는 스피치 출력을 제공할 수 있다.
일부 실시예들에서, 디지털 어시스턴트는 사용자가 관심이 있을 수 있는 추가 관련 정보를 제공하도록 다이얼로그 흐름을 구현한다. 예를 들어, 플레이어 연봉 관련 쿼리와 연관된 다이얼로그 흐름에서, 디지털 어시스턴트는 플레이어들에 의한 제품 협찬에 대한 정보 및 협찬 제품에 대한 합의를 제공할 수 있다. 예를 들어, 다이얼로그 흐름에 기초하여, 플레이어 연봉에 관한 사용자의 질문에 대한 평범한 대답 대신, 디지털 어시스턴트는 "나의 소스들에 기초하면, 코비는 2011년 연봉이 X 달러였고, 르브론은 2011년 연봉이 Y 달러였습니다. 코디와 르브론 둘 다 자선 단체에 기부하고 있습니다. 당신은 도시 아이들에게 방과후 프로그램을 제공하는 국립 아동 자선단체(national children's charity)인 "애프터-스쿨 올-스타스(After-School All-Stars)"를 지원하는 것에 그들과 함께 하고 싶습니까?"라고 말하는 스피치 출력을 제공한다. 사용자가 긍정적으로 대답하는 경우, 디지털 어시스턴트는 사용자를 위해 기부 절차를 개시하도록 적절한 태스크 흐름을 호출한다.
일부 실시예들에서, 디지털 어시스턴트는 디지털 어시스턴트가 사용자의 오리지널 질문에 만족스러운 대답을 제공할 수 없는 경우에 사용자가 관심을 가질 수 있는 관련 정보를 제공하도록 다이얼로그 흐름을 구현한다. 예를 들어, 사용자가 디지털 어시스턴트에게 "누가 더 좋은 플레이어인가?"라고 물어보는 경우, 디지털 어시스턴트는 이러한 복합적인 질문에 만족스러운 대답을 제공할 수 없는 것으로 판정한다. 그 결과, 디지털 어시스턴트는 "그것은 곤란한 질문(touch question)입니다. 그러나, 당신은 코비와 르브론 둘 다 트위터 하기를 좋아하지만, 르브론이 Twitter™에 4배 더 많은 팔로워들을 갖고 있다는 것을 알고 있습니까?"라고 말하는 출력을 제공한다.
상기 예들이 스포츠 도메인의 콘텍스트에서 제공되지만, 다른 도메인들에 대한 어휘, 태스크 흐름들, 다이얼로그 흐름들이 유사한 방식으로 구현될 수 있다. 예를 들어, 디지털 어시스턴트는 또한 유명 인사들 및 엔터테인먼트 산업에 관한 사용자의 질문에 대답할 엔터테인먼트 도메인; 여행, 관광, 및 지역 및 외국 문화에 관한 사용자의 질문에 대답할 여행 도메인; 게임, 게이밍 도구, 워크스루, 시합 등에 관한 사용자의 질문에 대답할 게이밍 도메인 등을 구현할 수 있다. 기타 도메인들도 또한 가능하다.
본 발명은 가능한 실시예들에 대하여 특히 상세히 설명되었다. 당업자들은 본 발명이 다른 실시예들에서 실시될 수 있다는 것을 이해할 것이다. 먼저, 컴포넌트들의 특정한 명명(naming), 용어들의 대문자화, 속성들, 데이터 구조들, 또는 임의의 다른 프로그래밍 또는 구조적 태양은 의무적이거나 중요하지 않으며, 본 발명을 구현하는 메커니즘들 또는 그들의 특징들은 상이한 이름들, 포맷들, 또는 프로토콜들을 가질 수 있다. 또한, 시스템은 설명된 바와 같이, 하드웨어 및 소프트웨어의 조합을 통해, 또는 전체적으로 하드웨어 요소들로, 또는 전체적으로 소프트웨어 요소들로 구현될 수 있다. 또한, 본 명세서에서 설명되는 다양한 시스템 컴포넌트들 사이의 기능의 특정 분할은 강제적인 것이 아니라 예시적인 것일 뿐이며, 단일 시스템 컴포넌트에 의해 수행되는 기능들은 다수의 컴포넌트에 의해 대신 수행될 수 있고, 다수의 컴포넌트에 의해 수행되는 기능들은 단일 컴포넌트에 의해 대신 수행될 수 있다.
다양한 실시예들에서, 본 발명은 전술된 기술들을 개별적으로 또는 임의의 조합으로 수행하기 위한 시스템 또는 방법으로서 구현될 수 있다. 다른 실시예에서, 본 발명은 컴퓨팅 디바이스 또는 다른 전자 디바이스에서의 프로세서가 전술된 기술들을 수행하게 하기 위해, 비일시적 컴퓨터 판독가능 저장 매체 및 매체 상에 인코딩된, 컴퓨터 프로그램 코드를 포함한 컴퓨터 프로그램 제품으로서 구현될 수 있다.
명세서에서 "하나의 실시예" 또는 "일 실시예"에 대한 언급은 실시예들과 관련하여 설명되는 특정 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 문구의 출현들은 모두가 반드시 동일 실시예를 지칭하는 것은 아니다.
상기의 일부 부분들은 컴퓨팅 디바이스의 메모리 내에서의 데이터 비트들에 대한 동작들의 알고리즘들 및 심볼 표현들에 관하여 제공된다. 이들 알고리즘 설명들 및 표현들은 데이터 처리 기술 분야의 숙련자들에 의해 사용되어 다른 당업자에게 그들의 작업의 본질을 가장 효과적으로 전달하는 수단이다. 알고리즘은, 본 명세서에서 그리고 일반적으로, 원하는 결과로 이어지는 단계들(명령어들)의 일관성 있는 시퀀스인 것으로 고려된다. 단계들은 물리적인 양들의 물리적인 조작들을 요구하는 것들이다. 보통, 필수적이지는 않지만, 이들 양은 저장, 전달, 조합, 비교 및 달리 조작될 수 있는 전기, 자기, 또는 광학 신호들의 형태를 취한다. 때때로, 주로 공통 사용의 이유들로 인해, 이러한 신호들을 비트들, 값들, 요소들, 심볼들, 글자들, 용어들, 숫자들 등으로서 언급하는 것이 편리하다. 더욱이, 때때로, 일반성의 손실 없이, 모듈들 또는 코드 디바이스들로서 물리적 양들의 물리적 조작들을 요구하는 단계들의 소정의 배열들을 언급하는 것이 또한 편리하다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되며 단지 이들 양에 적용된 편리한 라벨들임을 명심해야 한다. 하기의 논의로부터 명백한 바와 같이, 달리 구체적으로 서술되지 않는다면, 설명 전체에 걸쳐, "프로세싱하는" 또는 "컴퓨팅하는" 또는 "계산하는" 또는 "표시하는" 또는 "판정하는" 등과 같은 용어들을 이용하는 논의들은 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장, 송신 또는 디스플레이 디바이스들 내에서의 물리적 (전자) 양들로서 표현된 데이터를 조작 및 변형하는 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 모듈 및/또는 디바이스의 동작 및 프로세스들을 나타낸다는 것이 이해된다.
본 발명의 소정의 태양들은 알고리즘의 형태로 본 명세서에 설명된 프로세스 단계들 및 명령어들을 포함한다. 본 발명의 프로세스 단계들 및 명령어들은 소프트웨어, 펌웨어, 및/또는 하드웨어로 구체화될 수 있으며, 소프트웨어로 구체화될 때, 다양한 운영 체제들에 의해 사용된 상이한 플랫폼들 상에 존재하도록 다운로드되며 그 플랫폼들로부터 동작될 수 있다는 것에 주목하여야 한다.
본 발명은 또한 본 명세서에서의 동작들을 수행하기 위한 장치와 관련된다. 이러한 장치는 요구된 목적들을 위해 특별하게 구성될 수 있거나, 컴퓨팅 디바이스에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨팅 디바이스를 포함할 수 있다. 그러한 컴퓨터 프로그램은, 이로 한정되지 않는, 플로피 디스크들, 광 디스크들, CD-ROM들, 자기-광학 디스크들을 비롯한 임의의 유형의 디스크, ROM들, RAM들, EPROM들, EEPROM들, 자기 또는 광학 카드들, ASIC들, 또는 전자 명령어들을 저장하기에 적합하고 컴퓨터 시스템 버스에 각각 커플링된 임의의 유형의 매체와 같은 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 또한, 본 명세서에서 언급된 컴퓨팅 디바이스들은 단일 프로세서를 포함할 수 있거나, 향상된 컴퓨팅 능력을 위해 다수의 프로세서 설계들을 채용하는 아키텍처일 수 있다.
본 명세서에 제공된 알고리즘들 및 디스플레이들은 임의의 특정한 컴퓨팅 디바이스, 가상화 시스템, 또는 다른 장치와 본질적으로 관련되지 않는다. 다양한 범용 시스템들이 본 명세서에서의 교시들에 따라 프로그램들과 함께 또한 사용될 수 있거나, 요구된 방법 단계들을 수행하기 위해 보다 특수화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 다양한 이들 시스템들을 위해 요구된 구조는 본 명세서에 제공된 설명으로부터 명백할 것이다. 추가로, 본 발명은 임의의 특정 프로그래밍 언어와 관련하여 설명되지는 않는다. 다양한 프로그래밍 언어들이 본 명세서에 설명된 바와 같은 본 발명의 교시들을 구현하기 위해 사용될 수 있으며, 특정한 언어들에 대한 상기 임의의 참조들은 본 발명의 구현 및 최상 모드의 개시를 위해 제공된다는 것이 이해될 것이다.
따라서, 다양한 실시예들에서, 본 발명은 컴퓨터 시스템, 컴퓨팅 디바이스, 또는 다른 전자 디바이스, 또는 이들의 복수개 또는 임의의 조합을 제어하기 위한 소프트웨어, 하드웨어, 및/또는 다른 요소들로서 구현될 수 있다. 그러한 전자 디바이스는, 당업계에 잘 알려진 기술들에 따라, 예를 들어, 프로세서, 입력 디바이스(예를 들어, 키보드, 마우스, 터치패드, 트랙패드, 조이스틱, 트랙볼, 마이크로폰, 및/또는 이들의 임의의 조합), 출력 디바이스(예를 들어, 스크린, 스피커 및/또는 기타 등등), 메모리, 장기 저장 장치(예를 들어, 자기 저장 장치, 광학 저장 장치, 및/또는 기타 등등), 및/또는 네트워크 연결성을 포함할 수 있다. 그러한 전자 디바이스는 휴대 가능하거나 휴대 가능하지 않을 수 있다. 본 발명을 구현하는 데 사용될 수 있는 전자 디바이스들의 예들은 모바일 전화, 개인 휴대 단말기, 스마트폰, 키오스크, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 소비자 전자 디바이스, 소비자 엔터테인먼트 디바이스; 음악 플레이어; 카메라; 텔레비전; 셋톱 박스; 전자 게이밍 유닛 등을 포함한다. 본 발명을 구현하기 위한 전자 디바이스는, 예를 들어 미국 캘리포니아주 쿠퍼티노의 애플, 인크.로부터 입수 가능한, iOS 또는 MacOS와 같은 임의의 운영 시스템, 또는 디바이스 상에서의 사용을 위해 적응되는 임의의 다른 운영 시스템을 사용할 수 있다.
본 발명은 제한된 수의 실시예들에 대하여 설명되었지만, 상기 설명의 이익을 갖는 당업자는 본 명세서에 설명된 바와 같은 본 발명의 범주로부터 벗어나지 않는 다른 실시예들이 고안될 수 있다는 것을 이해할 것이다. 게다가, 본 명세서에 사용된 언어는 주로 가독성 및 설명 목적들을 위해 선택되며, 본 발명의 요지를 상세히 기술하거나 제한하기 위해 선택되지 않을 수 있다는 것에 주목하여야 한다. 따라서, 본 발명의 개시는 청구범위에 기재된 본 발명의 범주를 제한하는 것이 아닌 예시하는 것으로 의도된다.
Claims (18)
- 방법으로서,
프로세서 및 상기 프로세서에 의한 실행을 위한 명령어들을 저장하는 메모리를 포함하는 전자 디바이스에서,
디지털 어시스턴트의 대화 인터페이스를 통해 복수의 검색 결과를 사용자에게 제시하는 단계;
상기 사용자로부터, 상기 복수의 검색 결과 중의 검색 결과에 대한 예약 요청을 수신하는 단계;
상기 예약 요청을 수신하는 것에 응답하여, 상기 검색 결과에 대응하는 예약 절차를 실행하는 단계;
상기 예약 절차를 실행하는 동안, 상기 디지털 어시스턴트의 대화 인터페이스를 통해 사용자 입력을 수신하는 단계; 및
상기 디지털 어시스턴트에 의해, 상기 사용자 입력에 기초하여 출력을 제공하는 단계를 포함하는, 방법. - 제1항에 있어서,
복수의 검색 결과는 레스토랑 검색 요청에 따라 식별된 복수의 레스토랑에 대응하고, 상기 예약 절차는 상기 검색 결과에 대응하는 각각의 레스토랑의 테이블을 예약하는, 방법. - 제1항에 있어서,
상기 복수의 검색 결과는 엔터테인먼트 검색 요청에 따라 식별된 복수의 엔터테인먼트 이벤트에 대응하고, 상기 예약 절차는 상기 검색 결과에 대응하는 각각의 엔터테인먼트 이벤트에 대한 하나 이상의 티켓을 구매하거나 예약하는, 방법. - 제2항에 있어서,
상기 레스토랑 검색 요청은 스피치 입력과 연관된 컨텍스트 정보를 더 포함하고, 상기 방법은,
스피치 입력과 연관된 컨텍스트 정보에 적어도 부분적으로 기초하여 하나 이상의 검색 기준을 식별하는 단계; 및
상기 하나 이상의 검색 기준에 따라 복수의 예약 가능한 아이템을 식별하여 상기 복수의 검색 결과를 생성하는 단계를 더 포함하는, 방법. - 제4항에 있어서,
상기 대화 인터페이스를 통해 상기 사용자와 상기 디지털 어시스턴트 간의 하나 이상의 이전 사용자 상호작용에 기초하여 상기 컨텍스트 정보를 유지하는 단계를 더 포함하는, 방법. - 제4항에 있어서,
상기 컨텍스트 정보는 상기 사용자와 연관된 현재 위치, 현재 시간, 사용자 선호도들, 캘린더 정보, 및 연락처들 중 하나 이상을 포함하는, 방법. - 제1항에 있어서,
상기 복수의 검색 결과의 각각에 대해, 상기 검색 결과에 대응하는 각각의 예약 가능한 아이템의 각각의 하나 이상의 속성을 제시하는 단계 - 각각의 속성은 상기 복수의 검색 결과를 식별하는 데 사용되는 검색 기준의 각각의 검색 기준에 대응함 - 를 더 포함하는, 방법. - 제1항에 있어서,
상기 복수의 검색 결과와 함께 상기 대화 인터페이스에서 하나 이상의 사용자 인터페이스 요소를 제시하는 단계 - 상기 사용자 인터페이스 요소들 중 적어도 하나의 사용자 인터페이스 요소의 선택은 상기 대화 인터페이스에서 상기 검색 결과들 중 하나 이상의 검색 결과에 관련된 추가 정보의 제시를 야기함 - 를 더 포함하는, 방법. - 제8항에 있어서,
상기 사용자 인터페이스 요소들 중 적어도 하나의 사용자 인터페이스 요소의 선택은 상기 복수의 검색 결과 중 하나 이상의 검색 결과와 연관된 리뷰, 지도, 예고편, 이용가능성 개요, 및 순위 평가 중 하나 이상의 제시를 야기하는, 방법. - 제1항에 있어서,
상기 복수의 검색 결과와 함께 상기 대화 인터페이스에 하나 이상의 사용자 인터페이스 요소를 제시하는 단계 - 상기 사용자 인터페이스 요소들 중 적어도 하나의 사용자 인터페이스 요소의 선택은 상기 복수의 검색 결과 중 하나 이상의 검색 결과와 연관된 후속 동작이 상기 디지털 어시스턴트에 의해 실행되게 함 - 를 더 포함하는, 방법. - 제10항에 있어서,
상기 사용자 인터페이스 요소들 중 적어도 하나의 사용자 인터페이스 요소의 선택은, 상기 복수의 검색 결과 중 하나 이상의 검색 결과에 관하여 상기 디지털 어시스턴트에 의해 실행될, 제3자에게 전화 통화를 개시하는 동작, 리뷰를 제출하는 동작, 링크를 저장하는 동작, 링크를 공유하는 동작, 방향을 요청하는 동작, 예약을 하는 동작, 및 하나 이상의 티켓을 구매하는 동작 중 하나 이상을 야기하는, 방법. - 제1항에 있어서,
상기 대화 인터페이스를 통해 스피치 출력을 제공하는 단계 - 상기 스피치 출력은 상기 사용자로부터 수신된 검색 요청을 패러프레이징(paraphrasing) 함 - 를 더 포함하는, 방법. - 제1항에 있어서,
상기 복수의 검색 결과와 동시에 스피치 출력을 제공하는 단계 - 상기 스피치 출력은 상기 복수의 검색 결과를 식별하는 데 사용되는 하나 이상의 검색 기준을 알림(announcing) - 를 더 포함하는, 방법. - 제1항에 있어서,
상기 대화 인터페이스를 통해 스피치 출력을 제공하는 단계 - 상기 스피치 출력은 수신된 검색 요청에 대한 적어도 하나의 추가 검색 기준을 요청함 - ;
상기 스피치 출력을 제공하는 것에 응답하여, 상기 대화 인터페이스를 통해 상기 사용자로부터 입력을 수신하는 단계; 및
상기 수신된 검색 요청을 상기 사용자 입력으로 보충하는 단계를 더 포함하는, 방법. - 제1항에 있어서,
상기 검색 결과에 대응하는 예약 가능한 아이템에 따라 리마인더 또는 캘린더 엔트리를 생성하고 저장하는 단계를 더 포함하는, 방법. - 제1항에 있어서,
상기 검색 결과에 대응하는 예약 가능한 아이템에 따라 다른 사용자에 대한 초대를 생성하는 단계를 더 포함하는, 방법. - 하나 이상의 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서, 상기 하나 이상의 프로그램은, 전자 디바이스의 하나 이상의 프로세서에 의해 실행될 때, 상기 전자 디바이스로 하여금 제1항 내지 제16항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 포함하는, 컴퓨터 판독가능 저장 매체.
- 전자 디바이스로서,
하나 이상의 프로세서;
메모리; 및
하나 이상의 프로그램 - 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되고, 상기 하나 이상의 프로그램은 제1항 내지 제16항 중 어느 한 항의 방법을 수행하기 위한 명령어들을 포함함 - 을 포함하는, 전자 디바이스.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020237019935A KR20230096122A (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/913,336 | 2013-06-07 | ||
US13/913,336 US10276170B2 (en) | 2010-01-18 | 2013-06-07 | Intelligent automated assistant |
PCT/US2014/040961 WO2014197635A2 (en) | 2013-06-07 | 2014-06-04 | Intelligent automated assistant |
KR1020227006342A KR102429833B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227006342A Division KR102429833B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237019935A Division KR20230096122A (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220116064A KR20220116064A (ko) | 2022-08-19 |
KR102545095B1 true KR102545095B1 (ko) | 2023-06-16 |
Family
ID=51168353
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177035711A KR101995660B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020237019935A KR20230096122A (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020197018332A KR102197560B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020157035370A KR20160010523A (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020227006342A KR102429833B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020227026740A KR102545095B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020207037138A KR102369784B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
Family Applications Before (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177035711A KR101995660B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020237019935A KR20230096122A (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020197018332A KR102197560B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020157035370A KR20160010523A (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
KR1020227006342A KR102429833B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207037138A KR102369784B1 (ko) | 2013-06-07 | 2014-06-04 | 지능형 자동 어시스턴트 |
Country Status (6)
Country | Link |
---|---|
EP (2) | EP3005150A4 (ko) |
KR (7) | KR101995660B1 (ko) |
CN (2) | CN105247511A (ko) |
AU (6) | AU2014274913B2 (ko) |
HK (2) | HK1220023A1 (ko) |
WO (1) | WO2014197635A2 (ko) |
Families Citing this family (196)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677377B2 (en) | 2005-09-08 | 2014-03-18 | Apple Inc. | Method and apparatus for building an intelligent automated assistant |
US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
US10002189B2 (en) | 2007-12-20 | 2018-06-19 | Apple Inc. | Method and apparatus for searching using an active ontology |
US9330720B2 (en) | 2008-01-03 | 2016-05-03 | Apple Inc. | Methods and apparatus for altering audio output signals |
US8676904B2 (en) | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
US10706373B2 (en) | 2011-06-03 | 2020-07-07 | Apple Inc. | Performing actions associated with task items that represent tasks to perform |
US10276170B2 (en) | 2010-01-18 | 2019-04-30 | Apple Inc. | Intelligent automated assistant |
US8682667B2 (en) | 2010-02-25 | 2014-03-25 | Apple Inc. | User profiling for selecting user specific voice input processing information |
US9262612B2 (en) | 2011-03-21 | 2016-02-16 | Apple Inc. | Device access using voice authentication |
US11068954B2 (en) | 2015-11-20 | 2021-07-20 | Voicemonk Inc | System for virtual agents to help customers and businesses |
US10057736B2 (en) | 2011-06-03 | 2018-08-21 | Apple Inc. | Active transport based notifications |
US10134385B2 (en) | 2012-03-02 | 2018-11-20 | Apple Inc. | Systems and methods for name pronunciation |
US10417037B2 (en) | 2012-05-15 | 2019-09-17 | Apple Inc. | Systems and methods for integrating third party services with a digital assistant |
KR20240132105A (ko) | 2013-02-07 | 2024-09-02 | 애플 인크. | 디지털 어시스턴트를 위한 음성 트리거 |
US10652394B2 (en) | 2013-03-14 | 2020-05-12 | Apple Inc. | System and method for processing voicemail |
US10748529B1 (en) | 2013-03-15 | 2020-08-18 | Apple Inc. | Voice activated device for use with a voice-based digital assistant |
WO2014197335A1 (en) | 2013-06-08 | 2014-12-11 | Apple Inc. | Interpreting and acting upon commands that involve sharing information with remote devices |
US10176167B2 (en) | 2013-06-09 | 2019-01-08 | Apple Inc. | System and method for inferring user intent from speech inputs |
KR101772152B1 (ko) | 2013-06-09 | 2017-08-28 | 애플 인크. | 디지털 어시스턴트의 둘 이상의 인스턴스들에 걸친 대화 지속성을 가능하게 하기 위한 디바이스, 방법 및 그래픽 사용자 인터페이스 |
DE112014003653B4 (de) | 2013-08-06 | 2024-04-18 | Apple Inc. | Automatisch aktivierende intelligente Antworten auf der Grundlage von Aktivitäten von entfernt angeordneten Vorrichtungen |
US10296160B2 (en) | 2013-12-06 | 2019-05-21 | Apple Inc. | Method for extracting salient dialog usage from live data |
JP5737641B2 (ja) * | 2014-05-24 | 2015-06-17 | 洋彰 宮崎 | 自律型思考パターン生成機 |
US9430463B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Exemplar-based natural language processing |
US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
US9633004B2 (en) | 2014-05-30 | 2017-04-25 | Apple Inc. | Better resolution when referencing to concepts |
CN110797019B (zh) | 2014-05-30 | 2023-08-29 | 苹果公司 | 多命令单一话语输入方法 |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US9818400B2 (en) | 2014-09-11 | 2017-11-14 | Apple Inc. | Method and apparatus for discovering trending terms in speech requests |
US10074360B2 (en) | 2014-09-30 | 2018-09-11 | Apple Inc. | Providing an indication of the suitability of speech recognition |
US10127911B2 (en) | 2014-09-30 | 2018-11-13 | Apple Inc. | Speaker identification and unsupervised speaker adaptation techniques |
US9668121B2 (en) | 2014-09-30 | 2017-05-30 | Apple Inc. | Social reminders |
US9554356B2 (en) * | 2015-02-19 | 2017-01-24 | Microsoft Technology Licensing, Llc | Personalized reminders |
US10152299B2 (en) | 2015-03-06 | 2018-12-11 | Apple Inc. | Reducing response latency of intelligent automated assistants |
US9721566B2 (en) | 2015-03-08 | 2017-08-01 | Apple Inc. | Competing devices responding to voice triggers |
US9886953B2 (en) | 2015-03-08 | 2018-02-06 | Apple Inc. | Virtual assistant activation |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
US10200824B2 (en) | 2015-05-27 | 2019-02-05 | Apple Inc. | Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device |
US10083688B2 (en) | 2015-05-27 | 2018-09-25 | Apple Inc. | Device voice control for selecting a displayed affordance |
US9578173B2 (en) | 2015-06-05 | 2017-02-21 | Apple Inc. | Virtual assistant aided communication with 3rd party service in a communication session |
US20160378747A1 (en) | 2015-06-29 | 2016-12-29 | Apple Inc. | Virtual assistant for media playback |
KR102449543B1 (ko) * | 2015-07-21 | 2022-10-04 | 삼성전자주식회사 | 전자 장치 및 전자 장치에서 사용자의 정보를 획득하는 방법 |
KR101813901B1 (ko) | 2015-07-29 | 2018-01-03 | 성 완 김 | 광고 웹사이트를 이용한 온라인 광고 방법 |
US10331312B2 (en) | 2015-09-08 | 2019-06-25 | Apple Inc. | Intelligent automated assistant in a media environment |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10671428B2 (en) | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
US10740384B2 (en) | 2015-09-08 | 2020-08-11 | Apple Inc. | Intelligent automated assistant for media search and playback |
US11587559B2 (en) | 2015-09-30 | 2023-02-21 | Apple Inc. | Intelligent device identification |
CN105405076A (zh) * | 2015-11-02 | 2016-03-16 | 北京奇虎科技有限公司 | 基于互联网的点餐方法和装置 |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
US10956666B2 (en) | 2015-11-09 | 2021-03-23 | Apple Inc. | Unconventional virtual assistant interactions |
JP6898322B2 (ja) | 2015-11-12 | 2021-07-07 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 対話補助 |
US10049668B2 (en) | 2015-12-02 | 2018-08-14 | Apple Inc. | Applying neural network language models to weighted finite state transducers for automatic speech recognition |
US10223066B2 (en) | 2015-12-23 | 2019-03-05 | Apple Inc. | Proactive assistance based on dialog communication between devices |
CN105634925B (zh) * | 2016-01-20 | 2018-11-09 | 北京乐动卓越科技有限公司 | 一种用户间可扩展的通信方法及系统 |
US10417346B2 (en) * | 2016-01-23 | 2019-09-17 | Microsoft Technology Licensing, Llc | Tool for facilitating the development of new language understanding scenarios |
CN105844506A (zh) * | 2016-03-22 | 2016-08-10 | 太仓诚泽网络科技有限公司 | 一种基于网络的用户信息与分销商位置匹配系统 |
US10158593B2 (en) * | 2016-04-08 | 2018-12-18 | Microsoft Technology Licensing, Llc | Proactive intelligent personal assistant |
US10824932B2 (en) | 2016-04-29 | 2020-11-03 | Microsoft Technology Licensing, Llc | Context-aware digital personal assistant supporting multiple accounts |
US11494206B2 (en) | 2016-05-17 | 2022-11-08 | Google Llc | Automated initiation and adaptation of a dialog with a user via user interface devices of a computing device of the user |
US9699128B1 (en) * | 2016-05-17 | 2017-07-04 | Google Inc. | Automated generation of prompts and analyses of user responses to the prompts to determine an entity for an action and perform one or more computing actions related to the action and the entity |
US20170337284A1 (en) * | 2016-05-17 | 2017-11-23 | Google Inc. | Determining and using attributes of message exchange thread participants |
US11227589B2 (en) | 2016-06-06 | 2022-01-18 | Apple Inc. | Intelligent list reading |
CN105847605A (zh) * | 2016-06-07 | 2016-08-10 | 北京智驾互联信息服务有限公司 | 语音服务方法及呼叫服务器 |
CN107480161A (zh) * | 2016-06-08 | 2017-12-15 | 苹果公司 | 用于媒体探究的智能自动化助理 |
US10049663B2 (en) | 2016-06-08 | 2018-08-14 | Apple, Inc. | Intelligent automated assistant for media exploration |
CN107490971B (zh) * | 2016-06-09 | 2019-06-11 | 苹果公司 | 家庭环境中的智能自动化助理 |
DK179588B1 (en) | 2016-06-09 | 2019-02-22 | Apple Inc. | INTELLIGENT AUTOMATED ASSISTANT IN A HOME ENVIRONMENT |
US10509862B2 (en) * | 2016-06-10 | 2019-12-17 | Apple Inc. | Dynamic phrase expansion of language input |
US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking environment |
CN113238707A (zh) * | 2016-06-11 | 2021-08-10 | 苹果公司 | 具有数字助理的应用集成 |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
DK179415B1 (en) | 2016-06-11 | 2018-06-14 | Apple Inc | Intelligent device arbitration and control |
CN114584660A (zh) | 2016-06-13 | 2022-06-03 | 谷歌有限责任公司 | 向人类操作员的升级 |
US10481861B2 (en) | 2016-08-30 | 2019-11-19 | Google Llc | Using user input to adapt search results provided for presentation to the user |
US10192551B2 (en) * | 2016-08-30 | 2019-01-29 | Google Llc | Using textual input and user state information to generate reply content to present in response to the textual input |
US10217462B2 (en) * | 2016-08-31 | 2019-02-26 | Microsoft Technology Licensing, Llc | Automating natural language task/dialog authoring by leveraging existing content |
US10474753B2 (en) | 2016-09-07 | 2019-11-12 | Apple Inc. | Language identification using recurrent neural networks |
US10043516B2 (en) | 2016-09-23 | 2018-08-07 | Apple Inc. | Intelligent automated assistant |
US20180096072A1 (en) * | 2016-10-03 | 2018-04-05 | Google Inc. | Personalization of a virtual assistant |
US10552742B2 (en) * | 2016-10-14 | 2020-02-04 | Google Llc | Proactive virtual assistant |
US10446144B2 (en) * | 2016-11-21 | 2019-10-15 | Google Llc | Providing prompt in an automated dialog session based on selected content of prior automated dialog session |
CN106557576B (zh) * | 2016-11-24 | 2020-02-04 | 百度在线网络技术(北京)有限公司 | 基于人工智能的提示信息推荐方法以及装置 |
CN108228642B (zh) * | 2016-12-21 | 2022-03-11 | 华为技术有限公司 | 一种基于忆阻器的项目推荐以及装置 |
US10224031B2 (en) | 2016-12-30 | 2019-03-05 | Google Llc | Generating and transmitting invocation request to appropriate third-party agent |
US20210118445A1 (en) * | 2017-01-05 | 2021-04-22 | Samsung Electronics Co., Ltd. | Method and apparatus for managing communication to perform action |
US11204787B2 (en) | 2017-01-09 | 2021-12-21 | Apple Inc. | Application integration with a digital assistant |
US20180246964A1 (en) * | 2017-02-28 | 2018-08-30 | Lighthouse Ai, Inc. | Speech interface for vision-based monitoring system |
CN110447026B (zh) * | 2017-03-02 | 2023-07-11 | 微软技术许可有限责任公司 | 用于在新的域中提供自动化助理的开发人员平台 |
US10636418B2 (en) | 2017-03-22 | 2020-04-28 | Google Llc | Proactive incorporation of unsolicited content into human-to-computer dialogs |
US11231943B2 (en) | 2017-03-24 | 2022-01-25 | Google Llc | Smart setup of assistant services |
US10169770B2 (en) * | 2017-04-10 | 2019-01-01 | Wildfire Systems, Inc. | Digital communications monetization system |
CN110383799B (zh) * | 2017-04-20 | 2021-04-27 | 麦克赛尔株式会社 | 信息处理终端以及自动响应方法 |
EP3613044A1 (en) * | 2017-04-20 | 2020-02-26 | Semantic Machines, Inc. | Automated assistant data flow |
US9865260B1 (en) | 2017-05-03 | 2018-01-09 | Google Llc | Proactive incorporation of unsolicited content into human-to-computer dialogs |
US10237209B2 (en) * | 2017-05-08 | 2019-03-19 | Google Llc | Initializing a conversation with an automated agent via selectable graphical element |
US10417266B2 (en) | 2017-05-09 | 2019-09-17 | Apple Inc. | Context-aware ranking of intelligent response suggestions |
DK201770383A1 (en) | 2017-05-09 | 2018-12-14 | Apple Inc. | USER INTERFACE FOR CORRECTING RECOGNITION ERRORS |
US10726832B2 (en) | 2017-05-11 | 2020-07-28 | Apple Inc. | Maintaining privacy of personal information |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
US10395654B2 (en) | 2017-05-11 | 2019-08-27 | Apple Inc. | Text normalization based on a data-driven learning network |
US11301477B2 (en) | 2017-05-12 | 2022-04-12 | Apple Inc. | Feedback analysis of a digital assistant |
DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
DK179745B1 (en) | 2017-05-12 | 2019-05-01 | Apple Inc. | SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT |
DK201770428A1 (en) | 2017-05-12 | 2019-02-18 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
DK201770411A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | MULTI-MODAL INTERFACES |
DK179549B1 (en) | 2017-05-16 | 2019-02-12 | Apple Inc. | FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES |
US10311144B2 (en) | 2017-05-16 | 2019-06-04 | Apple Inc. | Emoji word sense disambiguation |
US20180336892A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Detecting a trigger of a digital assistant |
US10403278B2 (en) | 2017-05-16 | 2019-09-03 | Apple Inc. | Methods and systems for phonetic matching in digital assistant services |
US20180336275A1 (en) * | 2017-05-16 | 2018-11-22 | Apple Inc. | Intelligent automated assistant for media exploration |
CN109463004B (zh) * | 2017-05-16 | 2023-07-21 | 苹果公司 | 数字助理服务的远场延伸 |
CN107193948B (zh) * | 2017-05-22 | 2018-04-20 | 邢加和 | 人机对话数据分析方法及装置 |
US11416817B2 (en) * | 2017-06-02 | 2022-08-16 | Apple Inc. | Event extraction systems and methods |
US10742435B2 (en) * | 2017-06-29 | 2020-08-11 | Google Llc | Proactive provision of new content to group chat participants |
CN107621874B (zh) * | 2017-08-01 | 2021-03-30 | 北京光年无限科技有限公司 | 内容分发方法及系统 |
CN110019699B (zh) | 2017-09-05 | 2023-10-20 | 声音猎手公司 | 域间通过语法槽的分类 |
US11777875B2 (en) | 2017-09-15 | 2023-10-03 | Microsoft Technology Licensing, Llc | Capturing and leveraging signals reflecting BOT-to-BOT delegation |
CN107704233B (zh) * | 2017-09-29 | 2021-06-15 | 联想(北京)有限公司 | 一种信息处理方法和电子设备 |
US10546023B2 (en) | 2017-10-03 | 2020-01-28 | Google Llc | Providing command bundle suggestions for an automated assistant |
US10771406B2 (en) | 2017-11-11 | 2020-09-08 | Microsoft Technology Licensing, Llc | Providing and leveraging implicit signals reflecting user-to-BOT interaction |
TWI675303B (zh) * | 2017-11-17 | 2019-10-21 | 中國信託金融控股股份有限公司 | 對話式金融服務裝置及系統 |
WO2019102066A1 (en) | 2017-11-23 | 2019-05-31 | Mikko Vaananen | Mobile secretary cloud application |
US11184471B2 (en) | 2017-11-23 | 2021-11-23 | Mikko Vaananen | Mobile secretary cloud application |
US10636424B2 (en) | 2017-11-30 | 2020-04-28 | Apple Inc. | Multi-turn canned dialog |
KR102532300B1 (ko) | 2017-12-22 | 2023-05-15 | 삼성전자주식회사 | 어플리케이션 실행 방법 및 이를 위한 장치 |
CN108109689B (zh) * | 2017-12-29 | 2023-09-29 | 李向坤 | 诊疗会话方法及装置、存储介质、电子设备 |
EP3726376B1 (en) * | 2017-12-29 | 2023-07-26 | Huawei Technologies Co., Ltd. | Program orchestration method and electronic device |
US10733982B2 (en) | 2018-01-08 | 2020-08-04 | Apple Inc. | Multi-directional dialog |
US10733375B2 (en) | 2018-01-31 | 2020-08-04 | Apple Inc. | Knowledge-based framework for improving natural language understanding |
DE102018104438A1 (de) * | 2018-02-27 | 2019-08-29 | Dtms Gmbh | Computerimplementiertes Verfahren zum Beschaffen von Informationen |
US10789959B2 (en) | 2018-03-02 | 2020-09-29 | Apple Inc. | Training speaker recognition models for digital assistants |
US10592604B2 (en) | 2018-03-12 | 2020-03-17 | Apple Inc. | Inverse text normalization for automatic speech recognition |
US11170773B2 (en) * | 2018-03-12 | 2021-11-09 | Google Llc | Systems, methods, and apparatuses for managing incomplete automated assistant actions |
US10818288B2 (en) | 2018-03-26 | 2020-10-27 | Apple Inc. | Natural assistant interaction |
US10909331B2 (en) | 2018-03-30 | 2021-02-02 | Apple Inc. | Implicit identification of translation payload with neural machine translation |
CN112136124B (zh) * | 2018-04-19 | 2024-02-20 | 谷歌有限责任公司 | 用于与计算机实现的自动助理进行人机对话会话的依赖图谈话建模 |
US10650054B2 (en) * | 2018-04-24 | 2020-05-12 | Rovi Guides, Inc. | Systems and methods for updating search results based on a conversation |
US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
US11145294B2 (en) | 2018-05-07 | 2021-10-12 | Apple Inc. | Intelligent automated assistant for delivering content from user experiences |
US10984780B2 (en) | 2018-05-21 | 2021-04-20 | Apple Inc. | Global semantic word embeddings using bi-directional recurrent neural networks |
US11386266B2 (en) | 2018-06-01 | 2022-07-12 | Apple Inc. | Text correction |
DK201870355A1 (en) | 2018-06-01 | 2019-12-16 | Apple Inc. | VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS |
US10892996B2 (en) | 2018-06-01 | 2021-01-12 | Apple Inc. | Variable latency device coordination |
DK179822B1 (da) | 2018-06-01 | 2019-07-12 | Apple Inc. | Voice interaction at a primary device to access call functionality of a companion device |
DK180639B1 (en) | 2018-06-01 | 2021-11-04 | Apple Inc | DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT |
US11076039B2 (en) | 2018-06-03 | 2021-07-27 | Apple Inc. | Accelerated task performance |
CN109242252B (zh) * | 2018-08-03 | 2020-09-04 | 张继升 | 一种智能服务平台及方法 |
KR20200017292A (ko) | 2018-08-08 | 2020-02-18 | 삼성전자주식회사 | 음성 인식 방법 및 그 방법을 지원하는 전자 장치 |
US11216292B2 (en) * | 2018-08-27 | 2022-01-04 | Google Llc | Adapting client application of feature phone based on experiment parameters |
KR102643444B1 (ko) * | 2018-09-27 | 2024-03-06 | 구글 엘엘씨 | 자동 내비게이션을 용이하게 하기 위한 웹 페이지 분석 |
US11010561B2 (en) | 2018-09-27 | 2021-05-18 | Apple Inc. | Sentiment prediction from textual data |
US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
US11170166B2 (en) | 2018-09-28 | 2021-11-09 | Apple Inc. | Neural typographical error modeling via generative adversarial networks |
US10839159B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Named entity normalization in a spoken dialog system |
US11475898B2 (en) | 2018-10-26 | 2022-10-18 | Apple Inc. | Low-latency multi-speaker speech recognition |
CN111276135B (zh) * | 2018-12-03 | 2023-06-20 | 华为终端有限公司 | 网络语音识别方法、网络业务交互方法及智能耳机 |
US11638059B2 (en) | 2019-01-04 | 2023-04-25 | Apple Inc. | Content playback on multiple devices |
US11557381B2 (en) * | 2019-02-25 | 2023-01-17 | Merative Us L.P. | Clinical trial editing using machine learning |
US11348573B2 (en) | 2019-03-18 | 2022-05-31 | Apple Inc. | Multimodality in digital assistant systems |
US11544475B2 (en) | 2019-03-22 | 2023-01-03 | Predictika Inc. | System and method for providing a model-based intelligent conversational agent |
US11475884B2 (en) | 2019-05-06 | 2022-10-18 | Apple Inc. | Reducing digital assistant latency when a language is incorrectly determined |
US11423908B2 (en) | 2019-05-06 | 2022-08-23 | Apple Inc. | Interpreting spoken requests |
DK201970509A1 (en) | 2019-05-06 | 2021-01-15 | Apple Inc | Spoken notifications |
US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
SG11202111681RA (en) | 2019-05-17 | 2021-11-29 | Hollywood Com Llc | Aggregated adaptive purchase process and interface |
US11140099B2 (en) | 2019-05-21 | 2021-10-05 | Apple Inc. | Providing message response suggestions |
DK180129B1 (en) | 2019-05-31 | 2020-06-02 | Apple Inc. | USER ACTIVITY SHORTCUT SUGGESTIONS |
US11496600B2 (en) | 2019-05-31 | 2022-11-08 | Apple Inc. | Remote execution of machine-learned models |
US11289073B2 (en) | 2019-05-31 | 2022-03-29 | Apple Inc. | Device text to speech |
DK201970511A1 (en) | 2019-05-31 | 2021-02-15 | Apple Inc | Voice identification in digital assistant systems |
US11360641B2 (en) | 2019-06-01 | 2022-06-14 | Apple Inc. | Increasing the relevance of new available information |
US11227599B2 (en) | 2019-06-01 | 2022-01-18 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
CN110310631A (zh) * | 2019-06-28 | 2019-10-08 | 北京百度网讯科技有限公司 | 语音识别方法、装置、服务器和存储介质 |
EP4022538A4 (en) * | 2019-08-29 | 2023-10-25 | Hollywood.Com Llc | CONCIERGE SYSTEMS AND METHODS FOR ONLINE PURCHASE AND RESERVATION OF MOVIE TICKETS |
JP2022547482A (ja) * | 2019-09-04 | 2022-11-14 | ブレイン テクノロジーズ インコーポレイテッド | コンピュータ画面表示用のリアルタイムモーフィングインターフェース |
US12086541B2 (en) | 2019-09-04 | 2024-09-10 | Brain Technologies, Inc. | Natural query completion for a real-time morphing interface |
WO2021056255A1 (en) | 2019-09-25 | 2021-04-01 | Apple Inc. | Text detection using global geometry estimators |
US11308284B2 (en) * | 2019-10-18 | 2022-04-19 | Facebook Technologies, Llc. | Smart cameras enabled by assistant systems |
EP4022431A1 (en) | 2019-10-29 | 2022-07-06 | Google LLC | Automated assistant architecture for preserving privacy of application content |
KR20210087713A (ko) * | 2020-01-03 | 2021-07-13 | 엘지전자 주식회사 | 전자 장치 및 그의 작동 방법 |
JP2021135645A (ja) * | 2020-02-26 | 2021-09-13 | 本田技研工業株式会社 | 情報提供システム |
US11038934B1 (en) | 2020-05-11 | 2021-06-15 | Apple Inc. | Digital assistant hardware abstraction |
US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
US11755276B2 (en) | 2020-05-12 | 2023-09-12 | Apple Inc. | Reducing description length based on confidence |
US10944867B1 (en) * | 2020-07-06 | 2021-03-09 | Google Llc | Reducing telephone network traffic through automated telephone calls |
US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
CN112527254B (zh) * | 2020-12-04 | 2024-06-28 | 佰聆数据股份有限公司 | 基于服务编排的业务策略设计方法、系统及计算机设备 |
US11762871B2 (en) | 2021-01-29 | 2023-09-19 | Walmart Apollo, Llc | Methods and apparatus for refining a search |
CN113435622A (zh) * | 2021-08-26 | 2021-09-24 | 深圳百胜扬工业电子商务平台发展有限公司 | 一种数据预约方法及系统 |
US12021806B1 (en) | 2021-09-21 | 2024-06-25 | Apple Inc. | Intelligent message delivery |
CN116841661A (zh) * | 2022-03-24 | 2023-10-03 | 华为技术有限公司 | 服务调用方法及电子设备 |
US11978436B2 (en) | 2022-06-03 | 2024-05-07 | Apple Inc. | Application vocabulary integration with a digital assistant |
US11995457B2 (en) | 2022-06-03 | 2024-05-28 | Apple Inc. | Digital assistant integration with system interface |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130111487A1 (en) * | 2010-01-18 | 2013-05-02 | Apple Inc. | Service Orchestration for Intelligent Automated Assistant |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020032591A1 (en) * | 2000-09-08 | 2002-03-14 | Agentai, Inc. | Service request processing performed by artificial intelligence systems in conjunctiion with human intervention |
US7398209B2 (en) * | 2002-06-03 | 2008-07-08 | Voicebox Technologies, Inc. | Systems and methods for responding to natural language speech utterance |
US8676904B2 (en) * | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
US8805711B2 (en) * | 2009-12-22 | 2014-08-12 | International Business Machines Corporation | Two-layer data architecture for reservation management systems |
US8700658B2 (en) * | 2011-09-01 | 2014-04-15 | Knf Technologies, Inc. | Relational meta model and associated domain context-based knowledge inference engine for knowledge discovery and organization |
-
2014
- 2014-06-04 KR KR1020177035711A patent/KR101995660B1/ko active IP Right Grant
- 2014-06-04 KR KR1020237019935A patent/KR20230096122A/ko active IP Right Grant
- 2014-06-04 KR KR1020197018332A patent/KR102197560B1/ko active IP Right Grant
- 2014-06-04 CN CN201480030811.4A patent/CN105247511A/zh active Pending
- 2014-06-04 AU AU2014274913A patent/AU2014274913B2/en active Active
- 2014-06-04 WO PCT/US2014/040961 patent/WO2014197635A2/en active Application Filing
- 2014-06-04 EP EP14737370.8A patent/EP3005150A4/en not_active Ceased
- 2014-06-04 EP EP19195766.1A patent/EP3594828A1/en active Pending
- 2014-06-04 CN CN202110472089.1A patent/CN113032084A/zh active Pending
- 2014-06-04 KR KR1020157035370A patent/KR20160010523A/ko active Search and Examination
- 2014-06-04 KR KR1020227006342A patent/KR102429833B1/ko active IP Right Grant
- 2014-06-04 KR KR1020227026740A patent/KR102545095B1/ko active IP Right Grant
- 2014-06-04 KR KR1020207037138A patent/KR102369784B1/ko active IP Right Grant
-
2016
- 2016-07-11 HK HK16108102.0A patent/HK1220023A1/zh unknown
- 2016-09-13 HK HK16110811.8A patent/HK1222726A1/zh unknown
-
2017
- 2017-06-21 AU AU2017204217A patent/AU2017204217B2/en active Active
-
2019
- 2019-01-17 AU AU2019200296A patent/AU2019200296B2/en active Active
- 2019-12-19 AU AU2019283923A patent/AU2019283923A1/en not_active Abandoned
-
2021
- 2021-09-27 AU AU2021240130A patent/AU2021240130B9/en active Active
-
2023
- 2023-05-02 AU AU2023202682A patent/AU2023202682A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130111487A1 (en) * | 2010-01-18 | 2013-05-02 | Apple Inc. | Service Orchestration for Intelligent Automated Assistant |
Also Published As
Publication number | Publication date |
---|---|
WO2014197635A3 (en) | 2015-05-28 |
KR20170141274A (ko) | 2017-12-22 |
AU2017204217A1 (en) | 2017-07-13 |
AU2021240130B9 (en) | 2023-04-06 |
AU2014274913B2 (en) | 2017-05-11 |
KR20220032119A (ko) | 2022-03-15 |
CN113032084A (zh) | 2021-06-25 |
KR102429833B1 (ko) | 2022-08-05 |
HK1220023A1 (zh) | 2017-04-21 |
HK1222726A1 (zh) | 2017-07-07 |
EP3594828A1 (en) | 2020-01-15 |
KR20230096122A (ko) | 2023-06-29 |
KR20210000327A (ko) | 2021-01-04 |
AU2017204217B2 (en) | 2018-10-18 |
KR20220116064A (ko) | 2022-08-19 |
KR102369784B1 (ko) | 2022-03-03 |
AU2019283923A1 (en) | 2020-01-16 |
AU2019200296B2 (en) | 2019-09-19 |
EP3005150A2 (en) | 2016-04-13 |
AU2014274913A1 (en) | 2015-11-12 |
KR20160010523A (ko) | 2016-01-27 |
AU2021240130A1 (en) | 2021-10-28 |
AU2023202682A1 (en) | 2023-05-18 |
AU2021240130B2 (en) | 2023-02-02 |
KR20190077611A (ko) | 2019-07-03 |
KR101995660B1 (ko) | 2019-07-02 |
AU2019200296A1 (en) | 2019-02-07 |
WO2014197635A2 (en) | 2014-12-11 |
EP3005150A4 (en) | 2016-06-15 |
KR102197560B1 (ko) | 2020-12-31 |
CN105247511A (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2021240130B9 (en) | Intelligent automated assistant | |
US12087308B2 (en) | Intelligent automated assistant | |
JP7213206B2 (ja) | インテリジェント自動アシスタント |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |