RU2785950C2 - Maintenance of contextual information between user interactions with voice assistant - Google Patents
Maintenance of contextual information between user interactions with voice assistant Download PDFInfo
- Publication number
- RU2785950C2 RU2785950C2 RU2018112505A RU2018112505A RU2785950C2 RU 2785950 C2 RU2785950 C2 RU 2785950C2 RU 2018112505 A RU2018112505 A RU 2018112505A RU 2018112505 A RU2018112505 A RU 2018112505A RU 2785950 C2 RU2785950 C2 RU 2785950C2
- Authority
- RU
- Russia
- Prior art keywords
- user
- input
- additional
- speech input
- intent
- Prior art date
Links
- 230000003993 interaction Effects 0.000 title claims abstract description 44
- 230000004044 response Effects 0.000 claims abstract description 72
- 230000004913 activation Effects 0.000 claims abstract description 14
- 238000000034 method Methods 0.000 claims description 150
- 230000015654 memory Effects 0.000 claims description 11
- 230000001276 controlling effect Effects 0.000 claims description 7
- 230000003213 activating Effects 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 23
- 238000005516 engineering process Methods 0.000 abstract description 12
- 239000000126 substance Substances 0.000 abstract 1
- 238000003860 storage Methods 0.000 description 116
- 239000000203 mixture Substances 0.000 description 107
- 235000013305 food Nutrition 0.000 description 50
- 238000004891 communication Methods 0.000 description 35
- 239000008186 active pharmaceutical agent Substances 0.000 description 34
- 238000000605 extraction Methods 0.000 description 28
- 238000004458 analytical method Methods 0.000 description 24
- 235000021158 dinner Nutrition 0.000 description 18
- 235000012054 meals Nutrition 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000010006 flight Effects 0.000 description 13
- 230000036961 partial Effects 0.000 description 12
- 238000003058 natural language processing Methods 0.000 description 11
- 235000013550 pizza Nutrition 0.000 description 11
- 230000000977 initiatory Effects 0.000 description 10
- 230000001131 transforming Effects 0.000 description 9
- 210000001015 Abdomen Anatomy 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 238000011049 filling Methods 0.000 description 8
- 235000013410 fast food Nutrition 0.000 description 7
- 238000001914 filtration Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 6
- 235000015220 hamburgers Nutrition 0.000 description 6
- 230000003287 optical Effects 0.000 description 6
- 235000001497 healthy food Nutrition 0.000 description 5
- 238000002360 preparation method Methods 0.000 description 5
- 230000006403 short-term memory Effects 0.000 description 5
- 235000021259 spicy food Nutrition 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 230000001419 dependent Effects 0.000 description 4
- 238000005755 formation reaction Methods 0.000 description 4
- 238000003825 pressing Methods 0.000 description 4
- 241000538568 Brachydeuterus auritus Species 0.000 description 3
- 210000004080 Milk Anatomy 0.000 description 3
- 238000005352 clarification Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 3
- 230000000875 corresponding Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 235000015219 food categories Nutrition 0.000 description 3
- 230000002452 interceptive Effects 0.000 description 3
- 239000008267 milk Substances 0.000 description 3
- 235000013336 milk Nutrition 0.000 description 3
- 230000002093 peripheral Effects 0.000 description 3
- 230000003068 static Effects 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000002596 correlated Effects 0.000 description 2
- 230000002708 enhancing Effects 0.000 description 2
- 235000019692 hotdogs Nutrition 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006011 modification reaction Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000737 periodic Effects 0.000 description 2
- 230000002085 persistent Effects 0.000 description 2
- 230000000704 physical effect Effects 0.000 description 2
- 238000010187 selection method Methods 0.000 description 2
- 230000003997 social interaction Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000001960 triggered Effects 0.000 description 2
- 241000538571 Brachydeuterus Species 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 101700050571 SUOX Proteins 0.000 description 1
- 210000003491 Skin Anatomy 0.000 description 1
- 229940105648 Soma Drugs 0.000 description 1
- 230000003044 adaptive Effects 0.000 description 1
- 230000002730 additional Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 150000001875 compounds Chemical class 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 Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 235000015243 ice cream Nutrition 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000000670 limiting Effects 0.000 description 1
- 238000011068 load Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 235000013372 meat Nutrition 0.000 description 1
- 235000015927 pasta Nutrition 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000002040 relaxant effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 235000015067 sauces Nutrition 0.000 description 1
- 231100000486 side effect Toxicity 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 235000010384 tocopherol Nutrition 0.000 description 1
- 235000019731 tricalcium phosphate Nutrition 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Abstract
Description
Перекрестные ссылки на родственные заявкиCross-references to related applications
[0001] Данная заявка притязает на приоритет предварительной заявки на патент (США) порядковый номер 61/295774, озаглавленной "Intelligent Automated Assistant", адвокатская выписка номер SIRIP003P, поданной 18 января 2010 года, которая содержится в данном документе по ссылке.[0001] This application claims priority to U.S. Provisional Patent
[0002] Данная заявка дополнительно притязает на приоритет заявки на патент на изобретение (США) 12/987982, озаглавленной "Intelligent Automated Assistant", адвокатская выписка номер P10575US1, поданной 10 января 2011 года, которая содержится в данном документе по ссылке.[0002] This application further claims the priority of U.S. Patent Application 12/987982 entitled "Intelligent Automated Assistant", Attorney's Statement Number P10575US1, filed January 10, 2011, which is incorporated herein by reference.
[0003] Данная заявка дополнительно связана с заявкой на патент (США) порядковый номер 11/518292, озаглавленной "Method and Apparatus for Building the Intelligent Automated Assistant", поданной 8 сентября 2006 года, которая содержится в данном документе по ссылке.[0003] This application is further related to U.S. Patent Application Serial Number 11/518292 entitled "Method and Apparatus for Building the Intelligent Automated Assistant", filed September 8, 2006, which is incorporated herein by reference.
[0004] Данная заявка дополнительно связана с предварительной заявкой на патент (США) порядковый номер 61/186414, озаглавленной "System and Method for Semantic Auto-Completion", поданной 12 июня 2009 года, которая содержится в данном документе по ссылке.[0004] This application is further related to U.S. Provisional
Область техники, к которой относится изобретениеThe technical field to which the invention belongs
[0005] Настоящее изобретение относится к интеллектуальным системам, а более конкретно, к классам приложений для интеллектуальных автоматизированных помощников.[0005] The present invention relates to intelligent systems, and more specifically, to classes of applications for intelligent automated assistants.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИPRIOR ART
[0006] Сегодняшние электронные устройства имеют возможность осуществлять доступ к значительному, возрастающему и разнообразному количеству функций, служб (сервисов) и информации, как через Интернет, так и из других источников. Функциональность для таких устройств быстро расширяется, поскольку многие бытовые устройства, смартфоны, планшетные компьютеры и т.п. имеют возможность запускать программные приложения, чтобы выполнять различные задачи и предоставлять различные типы информации. Зачастую, каждое приложение, функция, web-узел или признак имеет собственный пользовательский интерфейс и собственные практические парадигмы, многие из которых могут быть сложными в изучении или трудными для понимания пользователями. Помимо этого, многие пользователи могут испытывать затруднение даже при обнаружении того, какая функциональность и/или информация доступна на их электронных устройствах или на различных web-узлах; таким образом, эти пользователи могут быть разочарованы или сбиты с толку либо просто могут быть неспособны эффективно использовать ресурсы, доступные для них.[0006] Today's electronic devices have the ability to access a significant, growing and diverse number of functions, services (services) and information, both via the Internet and from other sources. Functionality for such devices is expanding rapidly as many consumer devices, smartphones, tablet computers, etc. have the ability to run software applications to perform various tasks and provide various types of information. Often, each application, feature, website, or feature has its own user interface and its own practical paradigms, many of which can be difficult to learn or difficult for users to understand. In addition, many users may experience difficulty even discovering what functionality and/or information is available on their electronic devices or on various web sites; thus, these users may be frustrated or confused, or may simply be unable to make efficient use of the resources available to them.
[0007] В частности, неопытные пользователи или люди, которые имеют какие-либо физические нарушения или ограниченные возможности, и/или являются пожилыми, суетливыми, невнимательными, и/или управляют транспортным средством, могут испытывать затруднение касательно эффективного взаимодействия со своими электронными устройствами и/или эффективного применения онлайновых служб. Такие пользователи, в частности с большой вероятностью должны испытывать затруднение при большом числе разнообразных и несогласованных функций, приложений и web-узлов, которые могут быть доступными для их использования.[0007] In particular, inexperienced users or people who have any physical impairment or disability, and/or are elderly, fussy, inattentive, and/or drive a vehicle, may have difficulty interacting effectively with their electronic devices and /or effective use of online services. Such users in particular are likely to be hampered by the large number of diverse and inconsistent features, applications and websites that may be available for their use.
[0008] Соответственно, существующие системы зачастую являются сложными в использовании и навигации и зачастую представляют пользователям несогласованные и трудные в понимании интерфейсы, которые зачастую мешают эффективному использованию технологии пользователями.[0008] Accordingly, existing systems are often complex to use and navigate, and often present users with inconsistent and difficult to understand interfaces that often interfere with users' effective use of the technology.
Сущность изобретенияThe essence of the invention
[0009] Согласно различным вариантам осуществления настоящего изобретения, интеллектуальный автоматизированный помощник реализуется на электронном устройстве, чтобы упрощать пользовательское взаимодействие с устройством и помогать пользователю эффективнее применять локальные и/или удаленные службы. В различных вариантах осуществления, интеллектуальный автоматизированный помощник контактирует с пользователем в единой разговорной манере с использованием диалога на естественном языке и при необходимости активирует внешние службы, чтобы получать информацию или выполнять различные действия.[0009] According to various embodiments of the present invention, an intelligent automated assistant is implemented on an electronic device to facilitate user interaction with the device and to help the user make better use of local and/or remote services. In various embodiments, the intelligent automated assistant interacts with the user in a uniform conversational manner using natural language dialogue and activates external services as needed to obtain information or perform various actions.
[0010] Согласно различным вариантам осуществления настоящего изобретения, интеллектуальный автоматизированный помощник интегрирует множество характеристик, предоставляемых различными программными компонентами (например, для поддержки распознавания естественного языка и диалога на естественном языке, многомодального ввода, управления персональной информацией, управления потоками задач, оркестровки распределенных служб и т.п.). Кроме того, чтобы предлагать интеллектуальные интерфейсы и полезную функциональность пользователям, интеллектуальный автоматизированный помощник согласно настоящему изобретению, по меньшей мере, в некоторых вариантах осуществления может координировать эти компоненты и службы. Разговорный интерфейс и возможность получать информацию и выполнять дальнейшую задачу реализуются, по меньшей мере, в некоторых вариантах осуществления посредством координирования различных компонентов, таких как языковые компоненты, диалоговые компоненты, компоненты управления задачами, компоненты управления информацией и/или множество внешних служб.[0010] According to various embodiments of the present invention, an intelligent automated assistant integrates a variety of features provided by various software components (e.g., to support natural language recognition and natural language dialogue, multimodal input, personal information management, task flow management, distributed service orchestration, and etc.). In addition, in order to offer intelligent interfaces and useful functionality to users, the intelligent automated assistant of the present invention, in at least some embodiments, can coordinate these components and services. The conversational interface and the ability to receive information and perform a further task are implemented, in at least some embodiments, by coordinating various components, such as language components, dialog components, task control components, information control components, and/or a plurality of external services.
[0011] Согласно различным вариантам осуществления настоящего изобретения, системы на основе интеллектуального автоматизированного помощника могут быть выполнены с возможностью предоставлять различные специальные типы операций, функциональностей и/или признаков и/или комбинировать множество признаков, операций и приложений электронного устройства, на котором они устанавливаются. В некоторых вариантах осуществления, системы на основе интеллектуального автоматизированного помощника настоящего изобретения могут выполнять любое или все из следующего: активное извлечение ввода от пользователя, интерпретация намерения пользователя, разрешение неоднозначности между конкурирующими интерпретациями, запрос и прием проясняющей информации при необходимости, а также выполнение (или инициирование) действий на основе различаемого намерения. Действия могут быть выполнены, например, посредством активации и/или взаимодействия с любыми приложениями или службами, которые могут быть доступными на электронном устройстве, а также службами, которые доступны по электронной сети, такой как Интернет. В различных вариантах осуществления, такая активация внешних служб может быть выполнена через API или посредством любого другого подходящего механизма. Таким образом, системы на основе интеллектуального автоматизированного помощника различных вариантов осуществления настоящего изобретения могут унифицировать, упрощать и улучшать взаимодействие пользователя относительно многих различных приложений и функций электронного устройства и относительно служб, которые могут быть доступными по Интернету. Пользователь тем самым может быть освобожден от нагрузки по изучению того, какая функциональность может быть доступной в устройстве и в службах на основе web-подключения, как взаимодействовать с такими службами, чтобы получать то, что он хочет, и как интерпретировать вывод, принимаемый из таких служб; наоборот, помощник согласно настоящему изобретению может выступать в качестве посредника между пользователем и такими разнообразными службами.[0011] According to various embodiments of the present invention, intelligent automated assistant systems can be configured to provide various special types of operations, functionality and/or features and/or combine multiple features, operations and applications of the electronic device on which they are installed. In some embodiments, systems based on the intelligent automated assistant of the present invention may perform any or all of the following: actively extract input from the user, interpret the user's intent, resolve ambiguities between competing interpretations, request and receive clarification information when necessary, and perform (or initiation) of actions based on discernible intent. Actions may be performed, for example, by activating and/or interacting with any applications or services that may be available on the electronic device, as well as services that are available over an electronic network such as the Internet. In various embodiments, such activation of external services may be done through an API or through any other suitable mechanism. Thus, systems based on the intelligent automated assistant of various embodiments of the present invention can unify, simplify, and improve user interaction with many different applications and functions of an electronic device, and with respect to services that can be accessed over the Internet. The user can thereby be relieved of the burden of learning what functionality may be available on the device and web-based services, how to interact with such services to get what they want, and how to interpret the output received from such services. services; on the contrary, the assistant according to the present invention can act as an intermediary between the user and such various services.
[0012] Помимо этого, в различных вариантах осуществления, помощник согласно настоящему изобретению предоставляет разговорный интерфейс, который пользователь может находить более интуитивным и менее обременительным, чем традиционные графические пользовательские интерфейсы. Пользователь может контактировать в форме разговорного диалога с помощником с использованием любого числа доступных механизмов ввода и вывода, таких как, например, речь, графические пользовательские интерфейсы (кнопки и ссылки), ввод текста и т.п. Система может быть реализована с использованием любого числа различных платформ, таких как API устройств, web-технологии, электронная почта и т.п. или любая комбинация вышеозначенного. Запросы на предмет дополнительного ввода могут быть представлены пользователю в контексте такого разговора. Кратковременное запоминающее устройство и долговременное запоминающее устройство могут применяться, так что пользовательский ввод может быть интерпретирован в надлежащем контексте с учетом предыдущих событий и обмена данными в данном сеансе, а также статистической информации и информации профиля о пользователе.[0012] In addition, in various embodiments, the assistant of the present invention provides a conversational interface that a user may find more intuitive and less burdensome than traditional graphical user interfaces. The user may interact in the form of a conversational dialogue with the assistant using any number of available input and output mechanisms, such as, for example, speech, graphical user interfaces (buttons and links), text input, and the like. The system may be implemented using any number of different platforms such as device APIs, web technologies, email, and the like. or any combination of the above. Requests for additional input may be presented to the user in the context of such a conversation. Short-term storage and long-term storage can be applied so that user input can be interpreted in the proper context, taking into account previous events and communications in the session, as well as statistical and profile information about the user.
[0013] Помимо этого, в различных вариантах осуществления, контекстная информация, извлекаемая из пользовательского взаимодействия с признаком, операцией или приложением в устройстве, может быть использована для того, чтобы упрощать работу других признаков, операций или приложений в устройстве или в других устройствах. Например, интеллектуальный автоматизированный помощник может использовать контекст телефонного вызова (к примеру, вызова с человеком), чтобы упрощать инициирование текстового сообщения (например, чтобы определять то, что текстовое сообщение должно отправляться тому же человеку без необходимости для пользователя явно указывать получателя текстового сообщения). Интеллектуальный автоматизированный помощник согласно настоящему изобретению тем самым может интерпретировать инструкции, к примеру, "отправить ему текстовое сообщение", причем "ему" интерпретируется согласно контекстной информации, извлекаемой из текущего телефонного вызова и/или из любого признака, операции или приложения в устройстве. В различных вариантах осуществления, интеллектуальный автоматизированный помощник принимает во внимание различные типы доступных контекстных данных, чтобы определять то, какой контакт из адресной книги использовать, какие контактные данные использовать, какой номер телефона использовать для контакта и т.п., так что пользователь не должен повторно указывать эту информацию вручную.[0013] In addition, in various embodiments, contextual information derived from user interaction with a feature, operation, or application on a device may be used to facilitate other features, operations, or applications on the device or other devices. For example, an intelligent automated assistant may use the context of a telephone call (eg, a call with a person) to facilitate the initiation of a text message (eg, to determine that the text message should be sent to the same person without the user having to explicitly specify the recipient of the text message). The intelligent automated assistant of the present invention can thus interpret instructions, for example, "send him a text message", with "him" being interpreted according to contextual information derived from the current phone call and/or from any feature, operation or application on the device. In various embodiments, the intelligent automated assistant takes into account the various types of available context data to determine which address book contact to use, which contact information to use, which phone number to use for the contact, and the like, so that the user does not have to re-enter this information manually.
[0014] В различных вариантах осуществления, помощник также может принимать во внимание внешние мероприятия и реагировать соответствующим образом, например, чтобы инициировать действие, инициировать связь с пользователем, предоставлять оповещения и/или модифицировать ранее инициированное действие с учетом внешних мероприятий. Если требуется ввод от пользователя, разговорный интерфейс снова может быть использован.[0014] In various embodiments, the assistant may also take external events into account and respond appropriately, for example, to initiate an action, initiate communication with a user, provide alerts, and/or modify a previously initiated action based on external events. If user input is required, the conversational interface can again be used.
[0015] В одном варианте осуществления, система основана на наборах взаимосвязанных предметных областей и задач и использует дополнительную функциональность, поддерживаемую посредством внешних служб, с которыми может взаимодействовать система. В различных вариантах осуществления, эти внешние службы включают в себя службы на основе web-технологий, а также функциональность, связанную с самим аппаратным устройством. Например, в варианте осуществления, в котором интеллектуальный автоматизированный помощник реализуется на смартфоне, персональном цифровом устройстве, планшетном компьютере или другом устройстве, помощник может управлять многими операциями и функциями устройства, к примеру, набирать номер телефона, отправлять текстовое сообщение, задавать напоминания, добавлять мероприятия в календарь и т.п.[0015] In one embodiment, the system is based on sets of interrelated subject areas and tasks and uses additional functionality supported through external services with which the system can interact. In various embodiments, these external services include web-based services as well as functionality associated with the hardware device itself. For example, in an embodiment in which the intelligent automated assistant is implemented on a smartphone, personal digital assistant, tablet computer, or other device, the assistant can control many device operations and functions, such as dialing a phone number, sending a text message, setting reminders, adding events. to the calendar, etc.
[0016] В различных вариантах осуществления, система по настоящему изобретению может быть реализована, чтобы предоставлять помощь в любой из ряда различных предметных областей. Примеры включают в себя:[0016] In various embodiments, the system of the present invention may be implemented to provide assistance in any of a number of different subject areas. Examples include:
- локальные службы (включающие в себя зависящие от местоположения и времени службы, такие как рестораны, фильмы, банкоматы (ATM), мероприятия и места для встречи);- local services (including location and time dependent services such as restaurants, movies, ATMs, events and meeting places);
- службы персонального и социального запоминающего устройства (включающие в себя намеченные дела, заметки, календарные мероприятия, совместно используемые ссылки и т.п.);- personal and social storage services (including scheduled tasks, notes, calendar events, shared links, etc.);
- электронная коммерция (включающая в себя онлайновые покупки товаров, таких как книги, DVD, музыка и т.п.);- e-commerce (including online purchases of goods such as books, DVDs, music, etc.);
- службы по организации путешествий (включающие в себя рейсы, отели, достопримечательности и т.п.).- travel services (including flights, hotels, attractions, etc.).
[0017] Специалисты в данной области техники должны признавать, что вышеуказанный список предметных областей является просто примерным. Помимо этого, система по настоящему изобретению может быть реализована в любой комбинации предметных областей.[0017] Those skilled in the art will recognize that the above list of subject areas is merely exemplary. In addition, the system of the present invention can be implemented in any combination of subject areas.
[0018] В различных вариантах осуществления, системы на основе интеллектуального автоматизированного помощника, раскрытые в данном документе, могут быть выполнены с возможностью или спроектированы включать в себя функциональность для автоматизации применения данных и служб, доступных по Интернету, чтобы обнаруживать, находить, выбирать, покупать, резервировать или заказывать продукты и услуги. В дополнение к автоматизации процесса использования этих данных и служб, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, также может предоставлять одновременное комбинированное использование нескольких источников данных и служб. Например, он может комбинировать информацию о продуктах из нескольких обзорных web-узлов, проверять цены и доступность от нескольких дистрибьюторов и проверять их местоположения и временные ограничения, а также помогать пользователю находить персонифицированное решение своей проблемы. Дополнительно, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, может быть выполнен с возможностью включать в себя функциональность для автоматизации использования данных и служб, доступных по Интернету, чтобы обнаруживать, собирать сведения, выбирать, резервировать и иным образом узнавать о занятиях (включающих в себя, но не только, фильмы, мероприятия, выступления, выставки, шоу и достопримечательности); местах, куда направляться (включающих в себя, но не только, пункты назначения при поездке, отели и другие места, где останавливаться, достопримечательности и другие интересные места и т.д.); местах, чтобы поесть и выпить (таких как рестораны и бары), временах и местах для встречи с другими людьми, а также любые другие источники развлечений или социального взаимодействия, которые можно находить по Интернету. Дополнительно, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, может быть выполнен с возможностью включать в себя функциональность для обеспечения работы приложений и служб через диалог на естественном языке, который может в противном случае предоставляться посредством специальных приложений с графическими пользовательскими интерфейсами, включающих в себя поиск (включающий в себя основанный на местоположении поиск); навигацию (карты и указания по маршруту); поиск в базе данных (к примеру, нахождение организаций или людей по названию (имени) или другим свойствам); получение данных по погодным условиям и прогнозов погоды, проверку цены коммерческих изделий или состояния финансовых транзакций; мониторинг трафика или статуса рейсов; осуществление доступа и обновление календарей и расписаний; управление напоминаниями, оповещениями, задачами и проектами; обмен данными по электронной почте или другим платформам обмена сообщениями; и локальную или удаленную работу с устройствами (например, набор номеров телефона, управление освещением и температурой, управление домашними защитными устройствами, воспроизведение музыки или видео и т.д.). Дополнительно, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, может быть выполнен с возможностью включать в себя функциональность для идентификации, формирования и/или предоставления персонализированных рекомендаций для действий, продуктов, услуг, источника развлечения, управления временем или любого другого вида службы предоставления рекомендаций, которая извлекает выгоду из интерактивного диалога на естественном языке и автоматизированного доступа к данным и службам.[0018] In various embodiments, the intelligent automated assistant systems disclosed herein may be configured or designed to include functionality to automate the use of data and services available over the Internet to discover, find, select, purchase , reserve or order products and services. In addition to automating the process of using these data and services, at least one embodiment of the intelligent automated assistant system disclosed herein can also provide simultaneous combined use of multiple data sources and services. For example, it can combine product information from multiple review websites, check prices and availability from multiple distributors and check their locations and time limits, and help the user find a personalized solution to their problem. Additionally, at least one embodiment of the intelligent automated assistant system disclosed herein may be configured to include functionality to automate the use of data and services available over the Internet to discover, collect information, select, reserve and otherwise learn about activities (including, but not limited to, films, events, performances, exhibits, shows, and attractions); places to go (including, but not limited to, travel destinations, hotels and other places to stay, sights and other places of interest, etc.); places to eat and drink (such as restaurants and bars), times and places to meet other people, and any other sources of entertainment or social interaction that can be found on the Internet. Additionally, at least one embodiment of the intelligent automated assistant system disclosed herein may be configured to include functionality to enable applications and services to operate through natural language dialogue, which may otherwise be provided through dedicated applications with graphical user interfaces, including search (including location-based search); navigation (maps and route directions); search in the database (for example, finding organizations or people by name (name) or other properties); obtaining weather data and weather forecasts, checking the price of commercial items or the status of financial transactions; monitoring traffic or flight status; accessing and updating calendars and schedules; managing reminders, alerts, tasks and projects; communication via email or other messaging platforms; and local or remote operation of devices (eg, dialing telephone numbers, controlling lighting and temperature, controlling home security devices, playing music or video, etc.). Additionally, at least one embodiment of the intelligent automated assistant system disclosed herein may be configured to include functionality to identify, generate, and/or provide personalized recommendations for activities, products, services, entertainment source, time management or any other type of recommendation service that benefits from interactive natural language dialogue and automated access to data and services.
[0019] В различных вариантах осуществления, интеллектуальный автоматизированный помощник по настоящему изобретению может управлять многими признаками и операциями электронного устройства. Например, интеллектуальный автоматизированный помощник может вызывать службы, которые взаимодействуют с функциональностью и приложениями в устройстве через API-интерфейсы или посредством другого средства, чтобы выполнять функции и операции, которые в противном случае могут быть инициированы с использованием традиционного пользовательского интерфейса в устройстве. Такие функции и операции могут включать в себя, например, установку будильника, осуществление телефонного вызова, отправку текстового сообщения или почтового сообщения, добавление календарного мероприятия и т.п. Такие функции и операции могут быть выполнены в качестве дополнительных функций в контексте разговорного диалога между пользователем и помощником. Такие функции и операции могут указываться пользователем в контексте такого диалога, или они могут быть автоматически выполнены на основе контекста диалога. Специалисты в данной области техники должны признавать, что помощник тем самым может быть использован в качестве механизма управления для инициирования и управления различными операциями на электронном устройстве, и может быть использован в качестве альтернативы традиционным механизмам, таким как кнопки или графические пользовательские интерфейсы.[0019] In various embodiments, the intelligent automated assistant of the present invention can control many features and operations of an electronic device. For example, an intelligent automated assistant may call services that interact with functionality and applications on the device through APIs or other means to perform functions and operations that might otherwise be initiated using a traditional user interface on the device. Such functions and operations may include, for example, setting an alarm, making a phone call, sending a text message or mail message, adding a calendar event, and the like. Such functions and operations may be performed as additional functions in the context of a conversational dialogue between the user and the assistant. Such functions and operations may be specified by the user in the context of such a dialog, or they may be automatically performed based on the context of the dialog. Those skilled in the art will recognize that the assistant can thus be used as a control mechanism to initiate and control various operations on an electronic device, and can be used as an alternative to traditional mechanisms such as buttons or graphical user interfaces.
Краткое описание чертежейBrief description of the drawings
[0020] Прилагаемые чертежи иллюстрируют несколько вариантов осуществления изобретения и вместе с описанием служат для того, чтобы пояснять принципы изобретения согласно вариантам осуществления. Специалисты в данной области техники должны признавать, что конкретные варианты осуществления, проиллюстрированные на чертежах, являются просто примерными и не имеют намерение ограничивать объем настоящего изобретения.[0020] The accompanying drawings illustrate several embodiments of the invention and, together with the description, serve to explain the principles of the invention according to the embodiments. Those skilled in the art will recognize that the specific embodiments illustrated in the drawings are merely exemplary and are not intended to limit the scope of the present invention.
[0021] Фиг.1 является блок-схемой, иллюстрирующей пример одного варианта осуществления системы на основе интеллектуального автоматизированного помощника.[0021] FIG. 1 is a block diagram illustrating an example of one embodiment of an intelligent automated assistant system.
[0022] Фиг.2 иллюстрирует пример взаимодействия между пользователем и интеллектуальным автоматизированным помощником согласно, по меньшей мере, одному варианту осуществления.[0022] Figure 2 illustrates an example of an interaction between a user and an intelligent automated assistant according to at least one embodiment.
[0023] Фиг.3 является блок-схемой, иллюстрирующей вычислительное устройство, подходящее для реализации, по меньшей мере, части интеллектуального автоматизированного помощника согласно, по меньшей мере, одному варианту осуществления.[0023] FIG. 3 is a block diagram illustrating a computing device suitable for implementing at least a portion of an intelligent automated assistant according to at least one embodiment.
[0024] Фиг.4 является блок-схемой, иллюстрирующей архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в автономной вычислительной системе, согласно, по меньшей мере, одному варианту осуществления.[0024] FIG. 4 is a block diagram illustrating an architecture for implementing at least a portion of an intelligent automated assistant in an autonomous computing system, according to at least one embodiment.
[0025] Фиг.5 является блок-схемой, иллюстрирующей архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в распределенной вычислительной сети, согласно, по меньшей мере, одному варианту осуществления.[0025] FIG. 5 is a block diagram illustrating an architecture for implementing at least a portion of an intelligent automated assistant in a distributed computing network, according to at least one embodiment.
[0026] Фиг.6 является блок-схемой, демонстрирующей архитектуру системы, иллюстрирующую несколько различных типов клиентов и режимов работы.[0026] FIG. 6 is a block diagram showing a system architecture illustrating several different types of clients and modes of operation.
[0027] Фиг.7 является блок-схемой, иллюстрирующей клиент и сервер, которые обмениваются данными друг с другом, чтобы реализовывать настоящее изобретение согласно одному варианту осуществления.[0027] FIG. 7 is a block diagram illustrating a client and a server that communicate with each other to implement the present invention according to one embodiment.
[0028] Фиг.8 является блок-схемой, иллюстрирующей фрагмент активной онтологии согласно одному варианту осуществления.[0028] FIG. 8 is a block diagram illustrating a fragment of an active ontology according to one embodiment.
[0029] Фиг.9 является блок-схемой, иллюстрирующей пример альтернативного варианта осуществления системы на основе интеллектуального автоматизированного помощника.[0029] FIG. 9 is a block diagram illustrating an example of an alternative implementation of an intelligent automated assistant system.
[0030] Фиг.10 является блок-схемой последовательности операций, иллюстрирующей способ работы для компонента(ов) активного извлечения ввода согласно одному варианту осуществления.[0030] FIG. 10 is a flowchart illustrating a method of operation for active input extraction component(s) according to one embodiment.
[0031] Фиг.11 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения печатаемого ввода согласно одному варианту осуществления.[0031] FIG. 11 is a flowchart illustrating a method for actively retrieving typed input according to one embodiment.
[0032] Фиг.12-21 являются снимками экрана, иллюстрирующими некоторые части некоторых процедур для активного извлечения печатаемого ввода согласно одному варианту осуществления.[0032] FIGS. 12-21 are screen shots illustrating some portions of some procedures for actively retrieving typed input, according to one embodiment.
[0033] Фиг.22 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода для голосового или речевого ввода согласно одному варианту осуществления.[0033] FIG. 22 is a flowchart illustrating a method for actively extracting input for voice or speech input, according to one embodiment.
[0034] Фиг.23 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода для ввода на основе GUI согласно одному варианту осуществления.[0034] FIG. 23 is a flowchart illustrating a method for actively retrieving input for GUI-based input according to one embodiment.
[0035] Фиг.24 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода на уровне потока диалогов согласно одному варианту осуществления.[0035] FIG. 24 is a flowchart illustrating a method for actively retrieving input at a dialog flow level, according to one embodiment.
[0036] Фиг.25 является блок-схемой последовательности операций, иллюстрирующей способ для активного мониторинга релевантных событий согласно одному варианту осуществления.[0036] FIG. 25 is a flowchart illustrating a method for actively monitoring relevant events according to one embodiment.
[0037] Фиг.26 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения многомодального ввода согласно одному варианту осуществления.[0037] FIG. 26 is a flowchart illustrating a method for actively retrieving a multimodal input according to one embodiment.
[0038] Фиг.27 является набором снимков экрана, иллюстрирующих пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) моделей предметных областей и оркестровки служб согласно одному варианту осуществления.[0038] FIG. 27 is a set of screenshots illustrating an example of various types of functions, operations, actions, and/or other features that can be provided by domain model and service orchestration component(s) according to one embodiment.
[0039] Фиг.28 является блок-схемой последовательности операций способа, иллюстрирующей пример способа для обработки естественного языка согласно одному варианту осуществления.[0039] FIG. 28 is a flowchart illustrating an example of a method for natural language processing according to one embodiment.
[0040] Фиг.29 является снимком экрана, иллюстрирующим обработку естественного языка согласно одному варианту осуществления.[0040] FIG. 29 is a screenshot illustrating natural language processing according to one embodiment.
[0041] Фиг.30 и 31 являются снимками экрана, иллюстрирующими пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) процессора потока диалогов согласно одному варианту осуществления.[0041] FIGS. 30 and 31 are screen shots illustrating an example of various types of functions, operations, actions, and/or other features that may be provided by the dialog flow processor component(s) according to one embodiment.
[0042] Фиг.32 является блок-схемой последовательности операций, иллюстрирующей способ работы для компонента(ов) процессора потока диалогов согласно одному варианту осуществления.[0042] FIG. 32 is a flowchart illustrating a method of operation for the dialog flow processor component(s) according to one embodiment.
[0043] Фиг.33 является блок-схемой последовательности операций способа, иллюстрирующей процедуру автоматического вызова и ответа согласно одному варианту осуществления.[0043] FIG. 33 is a flowchart illustrating an automatic call and response procedure according to one embodiment.
[0044] Фиг.34 является блок-схемой последовательности операций способа, иллюстрирующей пример потока задач для задачи выбора с ограничениями согласно одному варианту осуществления.[0044] FIG. 34 is a flowchart illustrating an example task flow for a constrained selection task according to one embodiment.
[0045] Фиг.35 и 36 являются снимками экрана, иллюстрирующими пример операции задачи выбора с ограничениями согласно одному варианту осуществления.[0045] FIGS. 35 and 36 are screen shots illustrating an example operation of a constrained selection task according to one embodiment.
[0046] Фиг.37 является блок-схемой последовательности операций способа, иллюстрирующей пример процедуры для выполнения процедуры оркестровки служб согласно одному варианту осуществления.[0046] FIG. 37 is a flowchart illustrating an example procedure for performing a service orchestration procedure according to one embodiment.
[0047] Фиг.38 является блок-схемой последовательности операций способа, иллюстрирующей пример процедуры активации служб согласно одному варианту осуществления.[0047] FIG. 38 is a flowchart illustrating an example of a service activation procedure according to one embodiment.
[0048] Фиг.39 является блок-схемой последовательности операций способа, иллюстрирующей пример процедуры многофазного вывода согласно одному варианту осуществления.[0048] FIG. 39 is a flowchart illustrating an example of a multi-phase output procedure according to one embodiment.
[0049] Фиг.40 и 41 являются снимками экрана, иллюстрирующими примеры обработки вывода согласно одному варианту осуществления.[0049] FIGS. 40 and 41 are screen shots illustrating examples of output processing according to one embodiment.
[0050] Фиг.42 является блок-схемой последовательности операций способа, иллюстрирующей пример обработки многомодального вывода согласно одному варианту осуществления.[0050] FIG. 42 is a flowchart illustrating an example of multimodal output processing according to one embodiment.
[0051] Фиг.43A и 43B являются снимками экрана, иллюстрирующими пример использования компонента(ов) кратковременного персонального запоминающего устройства, чтобы поддерживать диалоговый контекст при изменении местоположения, согласно одному варианту осуществления.[0051] FIGS. 43A and 43B are screen shots illustrating an example of using short-term personal storage component(s) to maintain conversational context when changing location, according to one embodiment.
[0052] Фиг.44A-44C являются снимками экрана, иллюстрирующими пример использования компонента(ов) долговременного персонального запоминающего устройства, согласно одному варианту осуществления.[0052] FIGS. 44A-44C are screen shots illustrating an example of using the long-term personal storage component(s), according to one embodiment.
[0053] Фиг.45 иллюстрирует пример абстрактной модели для задачи выбора с ограничениями.[0053] FIG. 45 illustrates an example of an abstract model for a constrained selection problem.
[0054] Фиг.46 иллюстрирует пример модели потока диалогов, чтобы помогать направлять пользователя через процесс поиска.[0054] FIG. 46 illustrates an example of a dialog flow model to help guide the user through the search process.
[0055] Фиг.47 является блок-схемой последовательности операций, иллюстрирующей способ выбора с ограничениями согласно одному варианту осуществления.[0055] FIG. 47 is a flowchart illustrating a restricted selection method according to one embodiment.
Подробное описание вариантов осуществленияDetailed description of embodiments
[0056] Далее подробно описываются различные технологии в отношении нескольких примерных вариантов осуществления, как проиллюстрировано на прилагаемых чертежах. В последующем описании, множество конкретных подробностей изложено для того, чтобы предоставлять полное понимание одного или более аспектов и/или признаков, описанных или указываемых ссылкой в данном документе. Тем не менее, для специалистов в данной области техники должно быть очевидным, что один или более аспектов и/или признаков, описанных или указываемых ссылкой в данном документе, могут осуществляться на практике без некоторых или всех этих конкретных подробностей. В других случаях, известные этапы процесса и/или структуры не описаны подробно, чтобы не затруднять понимание некоторых аспектов и/или признаков, описанных или указываемых ссылкой в данном документе.[0056] Various technologies are now described in detail with respect to several exemplary embodiments, as illustrated in the accompanying drawings. In the following description, many specific details are set forth in order to provide a thorough understanding of one or more aspects and/or features described or referenced herein. However, those skilled in the art will appreciate that one or more of the aspects and/or features described or referenced herein may be practiced without some or all of these specific details. In other instances, known process steps and/or structures are not described in detail so as not to obscure certain aspects and/or features described or referenced herein.
[0057] Одно или более различных изобретений могут быть описаны в настоящей заявке. Дополнительно, для одного или более изобретения(й), множество вариантов осуществления, описанных в данном документе, могут быть описаны в этой заявке на патент и представляются только в качестве иллюстрации. Описанные варианты осуществления не имеют намерение быть ограничивающими в каком-либо смысле. Одно или более изобретение(я) могут быть широко применимыми ко множеству вариантов осуществления, как должно быть очевидным из раскрытия сущности. Эти варианты осуществления описываются достаточно подробно, чтобы предоставлять возможность специалистам в данной области техники осуществлять на практике одно или более изобретение(я), и следует понимать, что могут быть использованы другие варианты осуществления, и что структурные, логические, программные, электрические и другие изменения могут осуществляться без отступления от объема одного или более изобретения(й). Соответственно, специалисты в данной области техники должны признавать, что одно или более изобретение(й) могут осуществляться на практике с различными модификациями и изменениями. Конкретные признаки одного или более изобретения(й) могут быть описаны в отношении одного или более конкретных вариантов осуществления или чертежей, которые являются частью настоящего раскрытия сущности, и на которых показаны, в качестве иллюстрации, конкретные варианты осуществления одного или более изобретения(й). Тем не менее, следует понимать, что такие признаки не ограничены использованием в одном или более конкретных вариантах осуществления или на чертежах, в отношении которых они описываются. Настоящее раскрытие сущности не является ни буквальным описанием всех вариантов осуществления одного или более изобретения(й), ни перечнем признаков одного или более изобретения(й), которые должны присутствовать во всех вариантах осуществления.[0057] One or more different inventions may be described in this application. Additionally, for one or more of the invention(s), many of the embodiments described herein may be described in this patent application and are provided by way of illustration only. The described embodiments are not intended to be limiting in any sense. One or more invention(s) may be broadly applicable to a variety of embodiments, as should be apparent from the disclosure. These embodiments are described in sufficient detail to enable those skilled in the art to practice one or more of the invention(s), and it should be understood that other embodiments may be used and that structural, logical, software, electrical, and other changes may be carried out without departing from the scope of one or more of the invention(s). Accordingly, those skilled in the art will recognize that one or more of the invention(s) may be practiced with various modifications and variations. Specific features of one or more invention(s) may be described in relation to one or more specific embodiments or drawings that are part of the present disclosure, and which show, by way of illustration, specific embodiments of one or more invention(s). However, it should be understood that such features are not limited to use in one or more specific embodiments or in the drawings with respect to which they are described. The present disclosure is neither a literal description of all embodiments of one or more invention(s), nor a list of features of one or more invention(s) that must be present in all embodiments.
[0058] Заголовки разделов, предусмотренных в этой заявке на патент, и название этой заявки на патент предоставлены только для удобства и не должны рассматриваться в качестве какого-либо ограничения раскрытия сущности.[0058] The section headings provided in this patent application and the title of this patent application are provided for convenience only and should not be construed as any limitation on the disclosure.
[0059] Устройства, которые поддерживают связь друг с другом, не обязательно должны поддерживать непрерывную связь друг с другом, если прямо не указано иное. Помимо этого, устройства, которые поддерживают связь друг с другом, могут обмениваться данными прямо или косвенно через одного или более посредников.[0059] Devices that communicate with each other do not need to communicate continuously with each other, unless expressly stated otherwise. In addition, devices that communicate with each other may communicate directly or indirectly through one or more intermediaries.
[0060] Описание варианта осуществления с несколькими компонентами, поддерживающими связь друг с другом, не подразумевает, что все такие компоненты являются обязательными. Наоборот, описывается множество необязательных компонентов, чтобы иллюстрировать широкое множество возможных вариантов осуществления одного или более изобретения(й).[0060] The description of an embodiment with multiple components communicating with each other does not imply that all such components are required. Rather, a variety of optional components are described to illustrate a wide variety of possible embodiments of one or more of the invention(s).
[0061] Дополнительно, хотя этапы процесса, этапы способа, алгоритмы и т.п. могут быть описаны в последовательном порядке, такие процессы, способы и алгоритмы могут быть выполнены с возможностью работать в альтернативных порядках. Другими словами, любая последовательность или порядок этапов, которые могут быть описаны в этой заявке на патент, сама по себе не указывает обязательность выполнения этапов в этом порядке. Этапы описанных процессов могут быть выполнены в любом практичном порядке. Дополнительно, некоторые этапы могут выполняться одновременно, несмотря на описание или подразумевание как выполняемых неодновременно (например, поскольку один этап описывается после другого этапа). Кроме того, иллюстрация процесса посредством его демонстрации на чертеже не подразумевает, что проиллюстрированный процесс исключает другие изменения и модификации в нем, не подразумевает, что проиллюстрированный процесс или любой из его этапов являются обязательными для одного или более изобретения(й), и не подразумевает, что проиллюстрированный процесс является предпочтительным.[0061] Additionally, although process steps, method steps, algorithms, and the like may be described in sequential order, such processes, methods, and algorithms may be configured to operate in alternate orders. In other words, any sequence or order of steps that may be described in this patent application does not by itself indicate that the steps must be performed in that order. The steps of the described processes may be performed in any practical order. Additionally, some steps may be performed concurrently, despite being described or implied to be non-simultaneous (eg, because one step is described after another step). Furthermore, the illustration of a process by means of a drawing does not imply that the illustrated process excludes other changes and modifications therein, does not imply that the illustrated process or any of its steps are indispensable to one or more of the invention(s), and does not imply, that the illustrated process is preferred.
[0062] Когда описываются одно устройство или изделие, должно быть очевидным, что несколько устройств/изделий (взаимодействуют они или нет) могут быть использованы вместо одного устройства/изделия. Аналогично, если описываются несколько устройств или изделий (взаимодействуют они или нет), должно быть очевидным, что одно устройство/изделие может быть использовано вместо нескольких устройств или изделий.[0062] When describing a single device or article, it should be obvious that several devices/articles (whether they interact or not) can be used instead of a single device/article. Similarly, if multiple devices or articles are described (whether they interact or not), it should be obvious that a single device/article can be used in place of multiple devices or articles.
[0063] Функциональность и/или признаки устройства могут быть альтернативно осуществлены посредством одного или более других устройств, которые не описываются явно как имеющие такую функциональность/признаки. Таким образом, другие варианты осуществления одного или более изобретения(й) не обязательно должны включать в себя само устройство.[0063] The functionality and/or features of the device may alternatively be implemented by one or more other devices that are not explicitly described as having such functionality/features. Thus, other embodiments of one or more of the invention(s) need not include the device itself.
[0064] Технологии и механизмы, описанные или указываемые ссылкой в данном документе, для ясности иногда описываются в форме единственного числа. Тем не менее, следует отметить, что конкретные варианты осуществления включают в себя несколько итераций технологии или несколько конкретизаций механизма, если не указано иное.[0064] The technologies and mechanisms described or referenced herein are sometimes described in the singular for clarity. However, it should be noted that specific embodiments include multiple technology iterations or mechanism instantiations unless otherwise noted.
[0065] Хотя описываются в контексте технологии на основе интеллектуального автоматизированного помощника, можно понимать, что различные аспекты и технологии, описанные в данном документе (такие как, например, ассоциированные с активными онтологиями), также могут развертываться и/или применяться в других областях техники с вовлечением человеческого и/или компьютеризированного взаимодействия с программным обеспечением.[0065] While described in the context of intelligent automated assistant technology, it can be understood that various aspects and technologies described herein (such as, for example, those associated with active ontologies) may also be deployed and/or applied in other technical fields. involving human and/or computerized interaction with software.
[0066] Другие аспекты, связанные с технологией на основе интеллектуального автоматизированного помощника (например, которая может использоваться посредством, предоставляться посредством и/или реализовываться в одном или более вариантов осуществления системы на основе интеллектуального автоматизированного помощника, описанных в данном документе), раскрываются в одном или более из следующих противопоставленных материалов:[0066] Other aspects related to AI-based technology (for example, which may be used by, provided by, and/or implemented in one or more of the AI-assisted system embodiments described herein) are disclosed in one or more of the following opposed materials:
- предварительная заявка на патент (США) порядковый номер 61/295774, озаглавленная "Intelligent Automated Assistant", адвокатская выписка номер SIRIP003P, поданная 18 января 2010 года, раскрытие которой содержится в данном документе по ссылке;- U.S. provisional patent application
- заявка на патент (США) порядковый номер 11/518292, озаглавленная "Method and Apparatus for Building the Intelligent Automated Assistant", поданная 8 сентября 2006 года, раскрытие которой содержится в данном документе по ссылке; и- US patent application serial number 11/518292, entitled "Method and Apparatus for Building the Intelligent Automated Assistant", filed September 8, 2006, the disclosure of which is incorporated herein by reference; and
- предварительная заявка на патент (США) порядковый номер 61/186414, озаглавленная "System and Method for Semantic Auto-Completion", поданная 12 июня 2009 года, раскрытие которой содержится в данном документе по ссылке.- provisional patent application (US)
Аппаратная архитектураHardware architecture
[0067] В общем, технологии интеллектуального автоматизированного помощника, раскрытые в данном документе, могут быть реализованы в аппаратных средствах или в комбинации программного обеспечения и аппаратных средств. Например, они могут быть реализованы в ядре операционной системы, в отдельном пользовательском процессе, в библиотечном пакете, привязанном к сетевым приложениям, в специально созданной машине или в сетевой интерфейсной плате. В конкретном варианте осуществления, технологии, раскрытые в данном документе, могут быть реализованы в программном обеспечении, к примеру, в операционной системе или в приложении, запущенном в операционной системе.[0067] In general, the intelligent automated assistant technologies disclosed herein may be implemented in hardware or in a combination of software and hardware. For example, they may be implemented in the kernel of an operating system, in a separate user process, in a library package tied to network applications, in a specially built machine, or in a network interface card. In a particular embodiment, the technologies disclosed herein may be implemented in software, such as an operating system or an application running on an operating system.
[0068] Программная/аппаратная гибридная реализация(и), по меньшей мере, части варианта(ов) осуществления интеллектуального автоматизированного помощника, раскрытого в данном документе, может быть реализована на программируемой машине, избирательно активируемой или реконфигурируемой посредством компьютерной программы, сохраненной в запоминающем устройстве. Эти сетевые устройства могут иметь несколько сетевых интерфейсов, которые могут быть выполнены с возможностью использовать различные типы протоколов передачи данных по сети. Общая архитектура для некоторых из этих машин может быть очевидной из описаний, раскрытых в данном документе. Согласно конкретным вариантам осуществления, по меньшей мере, некоторые признаки и/или функциональности различных вариантов осуществления интеллектуального автоматизированного помощника, раскрытых в данном документе, могут быть реализованы в одной или более сетевых хост-машин общего назначения, таких как компьютерная система конечного пользователя, компьютер, сетевой сервер или серверная система, мобильное вычислительное устройство (например, персональное цифровое устройство, мобильный телефон, смартфон, переносной компьютер, планшетный компьютер и т.п.), потребительское электронное устройство, музыкальный проигрыватель или любое другое подходящее электронное устройство, маршрутизатор, коммутатор и т.п. или любая комбинация вышеозначенного. По меньшей мере, в некоторых вариантах осуществления, по меньшей мере, некоторые признаки и/или функциональности различных вариантов осуществления интеллектуального автоматизированного помощника, раскрытых в данном документе, могут быть реализованы в одном или более виртуализированных вычислительных окружений (например, сетевых вычислительных облаках и т.п.).[0068] The software/hardware hybrid implementation(s) of at least part of the embodiment(s) of the intelligent automated assistant disclosed herein may be implemented on a programmable machine selectively activated or reconfigured by a computer program stored in a storage device . These network devices may have multiple network interfaces, which may be configured to use various types of network communication protocols. The general architecture for some of these machines may be apparent from the descriptions disclosed in this document. According to particular embodiments, at least some of the features and/or functionality of various embodiments of the intelligent automated assistant disclosed herein may be implemented in one or more general purpose networked host machines such as an end user computer system, a computer, a network server or server system, a mobile computing device (such as a personal digital assistant, a mobile phone, a smartphone, a laptop computer, a tablet computer, etc.), a consumer electronic device, a music player, or any other suitable electronic device, a router, a switch, and etc. or any combination of the above. In at least some embodiments, at least some of the features and/or functionality of various embodiments of the intelligent automated assistant disclosed herein may be implemented in one or more virtualized computing environments (e.g., networked computing clouds, etc.). P.).
[0069] Ссылаясь теперь на Фиг.3, показана блок-схема, иллюстрирующая вычислительное устройство 60, подходящее для реализации, по меньшей мере, части признаков и/или функциональностей интеллектуального автоматизированного помощника, раскрытых в данном документе. Вычислительное устройство 60 может быть, например, компьютерной системой конечного пользователя, сетевым сервером или серверной системой, мобильным вычислительным устройством (например, персональным цифровым устройством, мобильным телефоном, смартфоном, переносным компьютером, планшетным компьютером и т.п.), потребительским электронным устройством, музыкальным проигрывателем или любым другим подходящим электронным устройством либо любой их комбинацией или частью. Вычислительное устройство 60 может быть выполнено с возможностью обмениваться данными с другими вычислительными устройствами, такими как клиенты и/или серверы, по сети связи, к примеру, по Интернету, с использованием известных протоколов для этой связи (беспроводной или проводной).[0069] Referring now to FIG. 3, a block diagram is shown illustrating a
[0070] В одном варианте осуществления, вычислительное устройство 60 включает в себя центральный процессор (CPU) 62, интерфейсы 68 и шину 67 (к примеру, шину на основе стандарта взаимодействия периферийных компонентов (PCI)). При работе под управлением надлежащего программного обеспечения или микропрограммного обеспечения, CPU 62 может отвечать за реализацию конкретных функций, ассоциированных с функциями специально сконфигурированного вычислительного устройства или машины. Например, по меньшей мере, в одном варианте осуществления, персональное цифровое устройство (PDA) пользователя может быть выполнено с возможностью выступать в качестве системы на основе интеллектуального автоматизированного помощника, использующей CPU 62, запоминающее устройство 61, 65 и интерфейс(ы) 68. По меньшей мере, в одном варианте осуществления, CPU 62 может инструктироваться выполнять одну или более из различных типов функций и/или операций интеллектуального автоматизированного помощника под управлением программных модулей/компонентов, которые, например, могут включать в себя операционную систему и любое надлежащее прикладное программное обеспечение, драйверы и т.п.[0070] In one embodiment,
[0071] CPU 62 может включать в себя один или более процессоров 63, таких как, например, процессор из семейства микропроцессоров Motorola или Intel либо семейства микропроцессоров MIPS. В некоторых вариантах осуществления, процессор(ы) 63 может включать в себя специально разработанные аппаратные средства (например, специализированные интегральные схемы (ASIC), электрически стираемые программируемые постоянные запоминающие устройства (EEPROM), программируемые пользователем вентильные матрицы (FPGA) и т.п.) для управления работой вычислительного устройства 60. В конкретном варианте осуществления, запоминающее устройство 61 (к примеру, энергонезависимое оперативное запоминающее устройство (RAM) и/или постоянное запоминающее устройство (ROM)) также является частью CPU 62. Тем не менее, существует множество различных способов, которыми запоминающее устройство может соединяться с системой. Блок 61 запоминающего устройства может использоваться для множества целей, таких как, например, кэширование и/или сохранение данных, программирование инструкций и т.п.[0071]
[0072] При использовании в данном документе, термин "процессор" не ограничивается просто этими интегральными схемами, упоминаемыми в данной области техники как процессор, но в широком смысле означает микроконтроллер, микрокомпьютер, контроллер с программируемой логикой, специализированную интегральную схему и любую другую программируемую схему.[0072] As used herein, the term "processor" is not limited to simply these integrated circuits referred to in the art as a processor, but broadly means a microcontroller, microcomputer, programmable logic controller, ASIC, and any other programmable circuit. .
[0073] В одном варианте осуществления, интерфейсы 68 предоставляются в качестве интерфейсных плат (иногда называемых "линейными платами"). В общем, они управляют отправкой и приемом пакетов данных по вычислительной сети и иногда поддерживают другие периферийные устройства, используемые с вычислительным устройством 60. Из интерфейсов, которые могут предоставляться, предусмотрены Ethernet-интерфейсы, интерфейсы по протоколу ретрансляции кадров, кабельные интерфейсы, DSL-интерфейсы, интерфейсы по протоколу маркерного кольца и т.п. Помимо этого, могут предоставляться различные типы интерфейсов, такие как, например, универсальная последовательная шина (USB), последовательный, Ethernet, FireWire, PCI, параллельный, радиочастотный (RF), Bluetooth™, связь в зоне ближнего поля (например, с использованием магнетизма в зоне ближнего поля), 802.11 (Wi-Fi), ретрансляция кадров, TCP/IP, ISDN, интерфейсы Fast Ethernet, интерфейсы Gigabit Ethernet, интерфейсы на основе режима асинхронной передачи (ATM), высокоскоростные последовательные интерфейсы (HSSI), интерфейсы кассового терминала (POS), интерфейсы распределенной передачи данных по волоконно-оптическим каналам (FDDI) и т.п. В общем, такие интерфейсы 68 могут включать в себя порты, подходящие для связи с надлежащими носителями. В некоторых случаях, они также могут включать в себя независимый процессор и, в некоторых случаях, энергозависимое и/или энергонезависимое запоминающее устройство (например, RAM).[0073] In one embodiment, the
[0074] Хотя система, показанная на Фиг.3, иллюстрирует одну конкретную архитектуру для вычислительного устройства 60 для реализации технологий изобретения, описанного в данном документе, она никоим образом не является единственной архитектурой устройств, в которой может быть реализована, по меньшей мере, часть признаков и технологий, описанных в данном документе. Например, могут быть использованы архитектуры, имеющие один или любое число процессоров 63, и такие процессоры 63 могут присутствовать в одном устройстве или распределяться между любым числом устройств. В одном варианте осуществления, один процессор 63 обрабатывает обмен данными, а также вычисления при маршрутизации. В различных вариантах осуществления, различные типы признаков и/или функциональностей интеллектуального автоматизированного помощника могут быть реализованы в системе на основе интеллектуального автоматизированного помощника, которая включает в себя клиентское устройство (к примеру, персональное цифровое устройство или смартфон с запущенными клиентским программным обеспечением) и серверную систему(ы) (к примеру, серверную систему, подробнее описанную ниже).[0074] Although the system shown in FIG. 3 illustrates one particular architecture for computing
[0075] Независимо от конфигурации сетевого устройства, система по настоящему изобретению может использовать одно или более запоминающих устройств или модулей запоминающих устройств (таких как, например, блок 65 запоминающего устройства), выполненных с возможностью сохранять данные, программные инструкции для работы сети общего назначения и/или другую информацию, связанную с функциональностью технологий интеллектуального автоматизированного помощника, описанных в данном документе. Программные инструкции могут управлять, например, работой операционной системы и/или одного или более приложений. Запоминающее устройство или запоминающие устройства также могут быть выполнены с возможностью сохранять структуры данных, информацию таксономии ключевых слов, информацию оповещений, информацию о пользовательских щелчках и нажатиях и/или другую конкретную непрограммную информацию, описанную в данном документе.[0075] Regardless of the configuration of the network device, the system of the present invention may use one or more storage devices or storage modules (such as, for example, storage unit 65) configured to store data, program instructions for operating a general purpose network, and /or other information related to the functionality of the intelligent automated assistant technologies described in this document. Program instructions may control, for example, the operation of an operating system and/or one or more applications. The storage device or storage devices may also be configured to store data structures, keyword taxonomy information, alert information, user click and tap information, and/or other specific non-program information described herein.
[0076] Поскольку эта информация и программные инструкции могут использоваться для того, чтобы реализовывать системы/способы, описанные в данном документе, по меньшей мере, некоторые варианты осуществления сетевого устройства могут включать в себя энергонезависимые машиночитаемые носители хранения данных, которые, например, могут быть выполнены с возможностью сохранять программные инструкции, информацию состояния и т.п. для выполнения различных операций, описанных в данном документе. Примеры таких энергонезависимых машиночитаемых носителей хранения данных включают в себя, но не только, магнитные носители, такие как жесткие диски, гибкие диски и магнитная лента; оптические носители, такие как CD-ROM-диски; магнитооптические носители, такие как флоптические диски, и аппаратные устройства, которые специально выполнены с возможностью сохранять и выполнять программные инструкции, такие как постоянные запоминающие устройства (ROM), флэш-память, запоминающее устройство на мемристорах, оперативное запоминающее устройство (RAM) и т.п. Примеры программных инструкций включают в себя как машинный код, к примеру, сформированный посредством компилятора, так и файлы, содержащие код верхнего уровня, который может быть выполнен посредством компьютера с использованием интерпретатора.[0076] Because this information and program instructions may be used to implement the systems/methods described herein, at least some embodiments of a network device may include non-volatile computer-readable storage media, which, for example, may be configured to store program instructions, state information, and the like. to perform the various operations described in this document. Examples of such non-volatile computer-readable storage media include, but are not limited to, magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs; magneto-optical media such as floppy disks; and hardware devices that are specifically configured to store and execute program instructions, such as read-only memory (ROM), flash memory, memristor storage, random access memory (RAM), etc. P. Examples of program instructions include both machine code, such as generated by a compiler, and files containing top-level code that can be executed by a computer using an interpreter.
[0077] В одном варианте осуществления, система по настоящему изобретению реализуется в автономной вычислительной системе. Ссылаясь теперь на Фиг.4, показана блок-схема, иллюстрирующая архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в автономной вычислительной системе, согласно, по меньшей мере, одному варианту осуществления. Вычислительное устройство 60 включает в себя процессор(ы) 63, который выполняют программное обеспечение для реализации интеллектуального автоматизированного помощника 1002. Устройство 1206 ввода может иметь любой тип, подходящий для приема пользовательского ввода, включающий в себя, например, клавиатуру, сенсорный экран, микрофон (например, для голосового ввода), мышь, сенсорную панель, шаровой манипулятор, переключатель с пятью кнопками, джойстик и/или любую комбинацию вышеозначенного. Устройство 1207 вывода может быть экраном, динамиком, принтером и/или любой комбинацией вышеозначенного. Запоминающее устройство 1210 может быть оперативным запоминающим устройством, имеющим структуру и архитектуру, известную в данной области техники, для использования посредством процессора(ов) 63 в ходе выполнения программного обеспечения. Устройство 1208 хранения данных может быть любым магнитным, оптическим и/или электрическим устройством хранения данных для хранения данных в цифровой форме; примеры включают в себя флэш-память, магнитный жесткий диск, CD-ROM и т.п.[0077] In one embodiment, the system of the present invention is implemented on a standalone computing system. Referring now to FIG. 4, there is shown a block diagram illustrating an architecture for implementing at least a portion of an intelligent automated assistant in an autonomous computing system, according to at least one embodiment.
[0078] В другом варианте осуществления, система по настоящему изобретению реализуется в распределенной вычислительной сети, к примеру, в сети, имеющей любое число клиентов и/или серверов. Ссылаясь теперь на Фиг.5, показана блок-схема, иллюстрирующая архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в распределенной вычислительной сети, согласно, по меньшей мере, одному варианту осуществления.[0078] In another embodiment, the system of the present invention is implemented in a distributed computer network, such as a network having any number of clients and/or servers. Referring now to FIG. 5, there is shown a block diagram illustrating an architecture for implementing at least a portion of an intelligent automated assistant in a distributed computing network, according to at least one embodiment.
[0079] В компоновке, показанной на Фиг.5, предоставляется любое число клиентов 1304; каждый клиент 1304 может выполнять программное обеспечение для реализации клиентских частей настоящего изобретения. Помимо этого, любое число серверов 1340 может предоставляться для обработки запросов, принимаемых из клиентов 1304. Клиенты 1304 и серверы 1340 могут обмениваться данными друг с другом через электронную сеть 1361, к примеру, Интернет. Сеть 1361 может быть реализована с использованием любых известных сетевых протоколов, включающих в себя, например, проводные и/или беспроводные протоколы.[0079] In the arrangement shown in Fig. 5, any number of
[0080] Помимо этого, в одном варианте осуществления, серверы 1340 могут вызывать внешние службы 1360 при необходимости, чтобы получать дополнительную информацию или сохранять данные относительно предыдущих взаимодействий с конкретными пользователями. Связь с внешними службами 1360 может осуществляться, например, через сеть 1361. В различных вариантах осуществления, внешние службы 1360 включают в себя службы на основе web-технологий и/или функциональность, связанную или установленную в самом аппаратном устройстве. Например, в варианте осуществления, в котором помощник 1002 реализуется на смартфоне или другом электронном устройстве, помощник 1002 может получать информацию, сохраненную в приложении для работы с календарем ("приложении"), в контактах и/или других источниках.[0080] In addition, in one embodiment,
[0081] В различных вариантах осуществления, помощник 1002 может управлять многими признаками и операциями электронного устройства, на котором он устанавливается. Например, помощник 1002 может вызывать внешние службы 1360, которые взаимодействуют с функциональностью и приложениями в устройстве через API или посредством другого средства, чтобы выполнять функции и операции, которые в противном случае могут быть инициированы с использованием традиционного пользовательского интерфейса в устройстве. Такие функции и операции могут включать в себя, например, установку будильника, осуществление телефонного вызова, отправку текстового сообщения или почтового сообщения, добавление календарного мероприятия и т.п. Такие функции и операции могут быть выполнены в качестве дополнительных функций в контексте разговорного диалога между пользователем и помощником 1002. Такие функции и операции могут указываться пользователем в контексте такого диалога, или они могут быть автоматически выполнены на основе контекста диалога. Специалисты в данной области техники должны признавать, что помощник 1002 тем самым может быть использован в качестве механизма управления для инициирования и управления различными операциями на электронном устройстве, который может быть использован в качестве альтернативы традиционным механизмам, таким как кнопки или графические пользовательские интерфейсы.[0081] In various embodiments,
[0082] Например, пользователь может предоставлять ввод в помощник 1002, к примеру, "Мне нужно проснуться завтра в 8:00". После того, как помощник 1002 определяет намерение пользователя с использованием технологий, описанных в данном документе, помощник 1002 может вызывать внешние службы 1340, чтобы взаимодействовать с функцией или приложением будильника в устройстве. Помощник 1002 устанавливает будильник от имени пользователя. Таким образом, пользователь может использовать помощник 1002 в качестве замены традиционных механизмов для установки будильника или выполнения других функций в устройстве. Если запросы пользователя являются неоднозначными или требуют дополнительного прояснения, помощник 1002 может использовать различные технологии, описанные в данном документе, включающие в себя активное извлечение, перефразирование, рекомендации и т.п., чтобы получать необходимую информацию, так что вызываются корректные службы 1340, и предпринимается намеченное действие. В одном варианте осуществления, помощник 1002 может запрашивать в виде подсказки у пользователя подтверждение до вызова службы 1340, чтобы выполнять функцию. В одном варианте осуществления, пользователь может избирательно деактивировать возможность помощника 1002 вызывать конкретные службы 1340 или может деактивировать весь такой вызов служб при необходимости.[0082] For example, the user may provide input to
[0083] Система по настоящему изобретению может быть реализована для многих различных типов клиентов 1304 и режимов работы. Фиг.6 является блок-схемой, демонстрирующей архитектуру системы, иллюстрирующую несколько различных типов клиентов и режимов работы. Специалисты в данной области техники должны признавать, что различные типы клиентов 1304 и режимов работы, показанные на Фиг.6, являются просто примерными, и что система по настоящему изобретению может быть реализована с использованием клиентов 1304 и/или режимов работы, отличных от проиллюстрированных. Дополнительно, система может включать в себя любые или все из таких клиентов 1304 и/или режимов работы, по одному или в любой комбинации. Проиллюстрированные примеры включают в себя:[0083] The system of the present invention can be implemented for many different types of
- Компьютерные устройства с устройствами ввода-вывода и/или датчиками 1402. Клиентский компонент может быть развернут на любом таком компьютерном устройстве 1402. По меньшей мере, один вариант осуществления может быть реализован с использованием web-обозревателя 1304A или другого приложения для предоставления возможности связи с серверами 1340 через сеть 1361. Каналы ввода и вывода могут иметь любой тип, включающий в себя, например, визуальные и/или акустические каналы. Например, в одном варианте осуществления, система изобретения может быть реализована с использованием способов голосовой связи, обеспечивающих вариант осуществления помощника для слепых, в котором эквивалент web-обозревателя управляется посредством речи и использует речь для вывода.- Computer devices with input/output devices and/or sensors 1402. The client component may be deployed on any such computing device 1402. At least one embodiment may be implemented using a web browser 1304A or other application to enable communication with
- Мобильные устройства с модулями ввода-вывода и датчиками 1406, для которых клиент может быть реализован как приложение на мобильном устройстве 1304B. Они включают в себя, но не только, мобильные телефоны, смартфоны, персональные цифровые устройства, планшетные устройства, сетевые игровые приставки и т.п.- Mobile devices with I / O modules and sensors 1406, for which the client can be implemented as an application on a mobile device 1304B. These include, but are not limited to, mobile phones, smart phones, personal digital devices, tablet devices, network game consoles, and the like.
- Бытовые приборы с модулями ввода-вывода и датчиками 1410, для которых клиент может быть реализован как встроенное приложение в приборе 1304C.- Home appliances with I/O modules and 1410 sensors, for which the client can be implemented as an embedded application in the 1304C appliance.
- Автомобили и другие транспортные средства с интерфейсами и датчиками 1414 приборной панели, для которых клиент может быть реализован как встроенное системное приложение 1304D. Они включают в себя, но не только, автомобильные навигационные системы, системы голосового управления, встроенные в автомобиль электронные мультимедийные системы и т.п.- Cars and other vehicles with dashboard interfaces and sensors 1414, for which the client can be implemented as an embedded
- Сетевые вычислительные устройства, к примеру, маршрутизаторы 1418 или любое другое устройство, которое постоянно размещается или взаимодействует с сетью, для которых клиент может быть реализован как постоянно размещающееся в устройстве приложение 1304E.- Networked computing devices, such as routers 1418 or any other device that resides on or interacts with the network, for which the client can be implemented as a
- Почтовые клиенты 1424, с которыми вариант осуществления помощника соединяется через сервер 1426 модальности по электронной почте. Сервер 1426 модальности по электронной почте выступает в качестве моста связи, например, принимающего ввод от пользователя в качестве почтовых сообщений, отправленных в помощник, и отправляющего вывод из помощника пользователю в качестве ответов.-
- Клиенты 1428 мгновенного обмена сообщениями, с которыми вариант осуществления помощника соединяется через сервер 1430 модальности по протоколу обмена сообщениями. Сервер 1430 модальности по протоколу обмена сообщениями выступает в качестве моста связи, принимающего ввод от пользователя в качестве сообщений, отправленных в помощник, и отправляющего вывод из помощника пользователю в качестве сообщений в ответ.- Clients 1428 instant messaging, with which the embodiment of the assistant connects through the
- Голосовые телефоны 1432, с которыми вариант осуществления помощника соединяется через сервер 1430 модальности по протоколу "речь-по-IP" (VoIP). Сервер 1430 модальности по VoIP выступает в качестве моста связи, принимающего ввод от пользователя в качестве голоса, произносимого для помощника, и отправляющего вывод из помощника пользователю, например, в качестве синтезированной речи, в ответ.- Voice telephones 1432 to which the assistant's embodiment connects via a voice-over-IP (VoIP)
[0084] Для платформ обмена сообщениями, включающих в себя, но не только, электронную почту, мгновенный обмен сообщениями, дискуссионные форумы, сеансы групповых чатов, сеансы интерактивной помощи или технической поддержки и т.п., помощник 1002 может выступать в качестве участника разговоров. Помощник 1002 может отслеживать разговор и ответ людям или группе с использованием одной или более технологий и способов, описанных в данном документе для взаимодействий "один-к-одному".[0084] For messaging platforms, including but not limited to email, instant messaging, discussion forums, group chat sessions, online help or technical support sessions, and the like,
[0085] В различных вариантах осуществления, функциональность для реализации технологий настоящего изобретения может быть распределена по любому числу клиентских и/или серверных компонентов. Например, различные программные модули могут быть реализованы для выполнения различных функций в связи с настоящим изобретением, и такие модули могут быть по-разному реализованы, чтобы работать на серверных и/или клиентских компонентах. Ссылаясь теперь на Фиг.7, показан пример клиента 1304 и сервера 1340, которые обмениваются данными друг с другом, чтобы реализовывать настоящее изобретение согласно одному варианту осуществления. Фиг.7 иллюстрирует одну возможную компоновку, посредством которой программные модули могут быть распределены между клиентом 1304 и сервером 1340. Специалисты в данной области техники должны признавать, что проиллюстрированная компоновка является просто примерной, и что такие модули могут быть распределены многими различными способами. Помимо этого, любое число клиентов 1304 и/или серверов 1340 может предоставляться, и модули могут быть распределены между этими клиентами 1304 и/или серверами 1340 любым из ряда различных способов.[0085] In various embodiments, the functionality for implementing the technologies of the present invention may be distributed across any number of client and/or server components. For example, different software modules may be implemented to perform different functions in connection with the present invention, and such modules may be implemented differently to run on server and/or client components. Referring now to FIG. 7, an example of a
[0086] В примере по Фиг.7, функциональность извлечения ввода и функциональность обработки вывода распределяются между клиентом 1304 и сервером 1340, при этом клиентская часть извлечения 1094a ввода и клиентская часть обработки 1092a вывода расположены в клиенте 1304, а серверная часть извлечения 1094b ввода и серверная часть обработки 1092b вывода расположены на сервере 1340. Следующие компоненты находятся на сервере 1340:[0086] In the example of FIG. 7, the input extraction functionality and the output processing functionality are distributed between the
- полный словарь 1058b;-
- полная библиотека модулей 1060b распознавания языковых конструкций;- a complete library of modules 1060b recognition of language constructs;
- главная (мастер) версия 1052b кратковременного персонального запоминающего устройства;- main (master)
- главная версия 1054b долговременного персонального запоминающего устройства.- master version 1054b of the long-term personal storage device.
[0087] В одном варианте осуществления, клиент 1304 локально хранит поднаборы и/или части этих компонентов, чтобы повышать скорость реагирования и уменьшать зависимость от сетевой связи. Такие поднаборы и/или части могут поддерживаться и обновляться согласно известным технологиям управления кэш-памятью. Такие поднаборы и/или части включают в себя, например:[0087] In one embodiment,
- поднабор словаря 1058a;- vocabulary subset 1058a;
- поднабор библиотеки модулей 1060a распознавания языковых конструкций;- a subset of the library of
- кэш 1052a кратковременного персонального запоминающего устройства;- cache 1052a short-term personal storage device;
- кэш 1054a долговременного персонального запоминающего устройства.- cache 1054a long-term personal storage device.
[0088] Дополнительные компоненты могут быть реализованы как часть сервера 1340, включающие в себя, например:[0088] Additional components may be implemented as part of the
- языковой интерпретатор 1070;-
- процессор 1080 потока диалогов;-
- процессор 1090 вывода;-
- базы 1072 данных объектов предметной области;-
- модели 1086 потока задач;-
- оркестровку 1082 служб;- orchestration of 1082 services;
- модели 1088 характеристик служб.-
[0089] Каждый из этих компонентов подробнее описывается ниже. Сервер 1340 получает дополнительную информацию посредством взаимодействия с внешними службами 1360 при необходимости.[0089] Each of these components is described in more detail below.
Концептуальная архитектураConceptual architecture
[0090] Ссылаясь теперь на Фиг.1, показана упрощенная блок-схема конкретного примерного варианта осуществления интеллектуального автоматизированного помощника 1002. Как подробнее описано в данном документе, различные варианты осуществления систем на основе интеллектуального автоматизированного помощника могут быть выполнены с возможностью предоставлять различные специальные типы операций, функциональностей и/или признаков, в общем, связанных с технологией на основе интеллектуального автоматизированного помощника. Дополнительно, как подробнее описано в данном документе, многие различные операции, функциональности и/или признаки системы на основе интеллектуального автоматизированного помощника, раскрытой в данном документе, могут предоставлять или обеспечивать различные типы преимуществ и/или выгод для различных объектов, взаимодействующих с системой(ами) на основе интеллектуального автоматизированного помощника. Вариант осуществления, показанный на Фиг.1, может быть реализован с использованием любой из аппаратных архитектур, описанных выше, или с использованием другого типа аппаратной архитектуры.[0090] Referring now to FIG. 1, a simplified block diagram of a specific exemplary embodiment of an intelligent
[0091] Например, согласно различным вариантам осуществления, по меньшей мере, некоторая система(ы) на основе интеллектуального автоматизированного помощника может быть выполнена с возможностью предоставлять различные специальные типы операций, функциональностей и/или признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0091] For example, according to various embodiments, at least some intelligent automated assistant system(s) may be configured to provide various special types of operations, functionality, and/or features, such as, for example, one or more of the following (or a combination of the above):
- автоматизация применения данных и служб, доступных по Интернету, чтобы обнаруживать, находить, выбирать, покупать, резервировать или заказывать продукты и услуги. В дополнение к автоматизации процесса использования этих данных и служб, интеллектуальный автоматизированный помощник 1002 также может предоставлять одновременное комбинированное использование нескольких источников данных и служб. Например, он может комбинировать информацию о продуктах из нескольких обзорных web-узлов, проверять цены и доступность от нескольких дистрибьюторов и проверять их местоположения и временные ограничения, а также помогать пользователю находить персонифицированное решение своей проблемы.- automating the use of data and services available on the Internet to discover, find, select, buy, reserve or order products and services. In addition to automating the process of using these data and services, the intelligent automated assistant 1002 can also provide simultaneous combined use of multiple data sources and services. For example, it can combine product information from multiple review websites, check prices and availability from multiple distributors and check their locations and time limits, and help the user find a personalized solution to their problem.
- автоматизация использования данных и служб, доступных по Интернету, чтобы обнаруживать, собирать сведения, выбирать, резервировать и иным образом узнавать о занятиях (включающих в себя, но не только, фильмы, мероприятия, выступления, выставки, шоу и достопримечательности); местах, куда направляться (включающих в себя, но не только, пункты назначения при поездке, отели и другие места, где останавливаться, достопримечательности и другие интересные места и т.п.); местах, чтобы поесть и выпить (таких как рестораны и бары), временах и местах для встречи с другими людьми, а также любые другие источники развлечений или социального взаимодействия, которые можно находить по Интернету.- automating the use of data and services available over the Internet to discover, collect information, select, reserve and otherwise learn about activities (including, but not limited to, films, events, performances, exhibitions, shows and attractions); places to go (including, but not limited to, travel destinations, hotels and other places to stay, sights and other points of interest, etc.); places to eat and drink (such as restaurants and bars), times and places to meet other people, and any other sources of entertainment or social interaction that can be found on the Internet.
- обеспечение работы приложений и служб через диалог на естественном языке, которые в противном случае предоставляются посредством специальных приложений с графическими пользовательскими интерфейсами, включающих в себя поиск (включающий в себя основанный на местоположении поиск); навигацию (карты и указания по маршруту); поиск в базе данных (к примеру, нахождение организаций или людей по названию (имени) или другим свойствам); получение данных по погодным условиям и прогнозов погоды, проверка цен коммерческих изделий или состояния финансовых транзакций; мониторинг трафика или статуса рейсов; осуществление доступа и обновление календарей и расписаний; управление напоминаниями, оповещениями, задачами и проектами; обмен данными по электронной почте или другим платформам обмена сообщениями; и локальную или удаленную работу с устройствами (например, набор номеров телефона, управление освещением и температурой, управление домашними защитными устройствами, воспроизведение музыки или видео и т.п.). В одном варианте осуществления, помощник 1002 может быть использован для того, чтобы инициировать, оперировать и управлять многими функциями и приложениями, доступными в устройстве.- providing applications and services through natural language dialogue, which are otherwise provided through special applications with graphical user interfaces, including search (including location-based search); navigation (maps and route directions); search in the database (for example, finding organizations or people by name (name) or other properties); obtaining weather data and weather forecasts, checking the prices of commercial items or the status of financial transactions; monitoring traffic or flight status; accessing and updating calendars and schedules; managing reminders, alerts, tasks and projects; communication via email or other messaging platforms; and local or remote operation of devices (eg, dialing telephone numbers, controlling lighting and temperature, controlling home security devices, playing music or video, etc.). In one embodiment,
- предложение персональных рекомендаций для действий, продуктов, услуг, источника развлечения, управления временем или любого другого вида службы предоставления рекомендаций, которая извлекает выгоду из интерактивного диалога на естественном языке и автоматизированного доступа к данным и службам.- offering personal recommendations for activities, products, services, source of entertainment, time management or any other type of recommendation service that benefits from interactive natural language dialogue and automated access to data and services.
[0092] Согласно различным вариантам осуществления, по меньшей мере, часть различных типов функций, операций, действий и/или других признаков, предоставляемых посредством интеллектуального автоматизированного помощника 1002, может быть реализована в одной или более клиентских систем, в одной или более серверных систем и/или в комбинациях вышеозначенного.[0092] According to various embodiments, at least a portion of the various types of functions, operations, actions, and/or other features provided by the intelligent
[0093] Согласно различным вариантам осуществления, по меньшей мере, часть различных типов функций, операций, действий и/или других признаков, предоставляемых посредством помощника 1002, может быть реализована, по меньшей мере, посредством одного варианта осуществления процедуры автоматизированного вызова и ответа, к примеру, проиллюстрированной и описанной, например, относительно Фиг.33.[0093] According to various embodiments, at least a portion of the various types of functions, operations, actions, and/or other features provided by assistant 1002 may be implemented by at least one embodiment of an automated call and response procedure, to example, illustrated and described, for example, with respect to Fig.33.
[0094] Дополнительно, различные варианты осуществления помощника 1002, описанные в данном документе, могут включать в себя или предоставлять ряд различных преимуществ и/или выгод по сравнению с существующей в настоящее время технологией на основе интеллектуального автоматизированного помощника, таких как, например, одно или более из следующего (или их комбинации):[0094] Additionally, various embodiments of assistant 1002 described herein may include or provide a number of different advantages and/or benefits over currently existing intelligent automated assistant technology, such as, for example, one or more of the following (or combinations thereof):
- Интеграция технологии понимания естественного языка и преобразования речи в текст, которая ограничивается посредством набора явных моделей предметных областей, задач, служб и диалогов. В отличие от технологии на основе помощника, которая пытается реализовывать систему искусственного интеллекта общего назначения, варианты осуществления, описанные в данном документе, могут применять несколько источников ограничений, чтобы сокращать число решений до более поддающегося обработке размера. Это приводит к меньшему числу неоднозначных интерпретаций языка, меньшему числу релевантных предметных областей или задач и меньшему числу способов операционализировать намерение в службах. Сосредоточение на конкретных предметных областях, задачах и диалогах также позволяет достигать охвата предметных областей и задач с помощью управляемого человеком словаря и преобразований из намерения в параметры служб.- Integration of natural language understanding and speech-to-text technology, which is limited by a set of explicit domain models, tasks, services and dialogs. Unlike assistant-based technology that attempts to implement a general purpose artificial intelligence system, the embodiments described herein can apply multiple sources of constraints to reduce the number of decisions to a more manageable size. This results in fewer ambiguous language interpretations, fewer relevant domains or tasks, and fewer ways to operationalize intent in services. Focusing on specific subject areas, tasks, and conversations also allows you to achieve scope and task coverage with a human-driven vocabulary and transformations from intent to service parameters.
- Возможность разрешать проблемы пользователя посредством активации служб от их имени по Интернету, с использованием API. В отличие от поисковых механизмов, которые возвращают только ссылки и содержимое, некоторые варианты осуществления автоматизированных помощников 1002, описанные в данном документе, могут автоматизировать действия по исследованию и решению проблем. Возможность активировать несколько служб для данного запроса также предоставляет более широкую функциональность пользователю, чем достигается посредством посещения одного web-узла, например, чтобы создавать продукт или услугу или находить себе занятие.- The ability to resolve user problems by activating services on their behalf over the Internet, using the API. Unlike search engines, which only return links and content, some embodiments of the
- Применение персональной информации и персональной предыстории взаимодействия при интерпретации и выполнении пользовательских запросов. В отличие от традиционных поисковых механизмов или служб ответа на вопросы, варианты осуществления, описанные в данном документе, используют информацию из предыстории персонального взаимодействия (например, предыстории диалогов, предыдущих выборов от результатов и т.п.), персонального физического контекста (например, местоположения пользователя и времени) и персональную информацию, собираемую в контексте взаимодействия (например, имя, адреса электронной почты, физические адреса, телефонные номера, номера лицевого счета, предпочтения и т.п.). Использование этих источников информации обеспечивает, например:- The use of personal information and personal interaction history when interpreting and fulfilling user requests. Unlike traditional search engines or question answering services, the embodiments described herein use information from personal interaction history (e.g., history of conversations, previous choices from results, etc.), personal physical context (e.g., location user and time) and personal information collected in the context of the interaction (for example, name, email addresses, physical addresses, telephone numbers, personal account numbers, preferences, etc.). The use of these sources of information provides, for example:
-- лучшую интерпретацию пользовательского ввода (например, с использованием персональной предыстории и физического контекста при интерпретации языка);-- better interpretation of user input (eg, using personal history and physical context when interpreting the language);
-- более персонифицированные результаты (например, ориентированы на предпочтения или недавние выборы);-- more personalized results (for example, focused on preferences or recent elections);
-- повышенную эффективность для пользователя (например, посредством автоматизации этапов, заключающих в себе регистрацию в службах или заполнение форм).-- increased efficiency for the user (for example, by automating steps that involve signing up for services or filling out forms).
- Использование предыстории диалогов в интерпретации естественного языка пользовательских вводов. Поскольку варианты осуществления могут сохранять персональную предысторию и применять понимание естественного языка к пользовательским вводам, они также могут использовать диалоговый контекст, такой как текущее местоположение, время, предметная область, этап задач и параметры задачи, чтобы интерпретировать новые вводы. Традиционные поисковые механизмы и командные процессоры интерпретируют, по меньшей мере, один запрос независимо от предыстории диалогов. Способность использовать предысторию диалогов может обеспечивать возможность более естественного взаимодействия, которое напоминает обычный человеческий разговор.- Use of dialog background in natural language interpretation of user inputs. Because embodiments can store personal history and apply natural language understanding to user inputs, they can also use conversational context such as current location, time, subject area, task stage, and task parameters to interpret new inputs. Traditional search engines and shells interpret at least one query regardless of the history of the dialogs. The ability to use dialogue backstory can allow for more natural interaction that resembles normal human conversation.
- Активное извлечение ввода, при котором помощник 1002 активно направляет и ограничивает ввод от пользователя на основе идентичных моделей и информации, используемых для того, чтобы интерпретировать их ввод. Например, помощник 1002 может применять модели диалогов, чтобы рекомендовать следующие этапы в диалоге с пользователем, на которых они уточняют запрос; предлагать заполнения для частично печатаемого ввода на основе зависящих от предметной области и контекста возможностей; или использовать семантическую интерпретацию, чтобы выбирать из неоднозначных интерпретаций речи в качестве текста или текста в качестве намерения.- Active input retrieval, in which
- Явное моделирование и динамическое управление службами при динамической и надежной оркестровке служб. Архитектура описанных вариантов осуществления предоставляет возможность помощнику 1002 взаимодействовать со многими внешними службами, динамически определять то, какие службы могут предоставлять информацию для конкретного пользовательского запроса, преобразовывать параметры пользовательского запроса в различные API служб, вызывать несколько служб сразу, интегрировать результаты из нескольких служб, корректно восстанавливаться после ошибок в ходе работы служб и/или эффективно поддерживать реализацию служб по мере того, как их API и характеристики совершенствуются.- Explicit modeling and dynamic management of services with dynamic and reliable orchestration of services. The architecture of the described embodiments allows the
- Использование активных онтологий в качестве способа и аппаратной системы для компоновки помощников 1002, которые упрощают разработку программного обеспечения и сопровождение данных систем автоматизированного помощника. Активные онтологии являются интеграцией сред моделирования данных и выполнения для помощников. Они предоставляют инфраструктуру, чтобы связывать различные источники моделей и данных (концепты предметной области, потоки задач, словарь, модули распознавания языковых конструкций, диалоговый контекст, персональную информацию пользователя и преобразования из запросов по предметным областям и задачам во внешние службы). Активные онтологии и другие архитектурные нововведения, описанные в данном документе, обеспечивают практичность построения глубокой функциональности в предметных областях, унификации нескольких источников информации и служб и выполнения этого через набор предметных областей.- The use of active ontologies as a method and hardware system for assembling
[0095] По меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью использовать и/или формировать различные специальные типы данных и/или другие типы информации при выполнении конкретных задач и/или операций. Они могут включать в себя, например, входные данные/информацию и/или выходные данные/информацию. Например, по меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью осуществлять доступ, обрабатывать и/или иным образом использовать информацию из одного или более различных типов источников, таких как, например, одно или более локальных и/или удаленных запоминающих устройств, устройств и/или систем. Дополнительно, по меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью формировать один или более различных типов выходных данных/информации, которые, например, могут быть сохранены в запоминающем устройстве одного или более локальных и/или удаленных устройств и/или систем.[0095] In at least one embodiment, the intelligent
[0096] Примеры различных типов входных данных/информации, к которым может осуществляться доступ и/или которые могут использоваться посредством интеллектуального автоматизированного помощника 1002, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0096] Examples of various types of input/information that may be accessed and/or used by intelligent automated assistant 1002 may include, but are not limited to, one or more of the following (or a combination of the foregoing):
- Голосовой ввод: из мобильных устройств, таких как мобильные телефоны и планшетные компьютеры, компьютеры с микрофонами, гарнитуры Bluetooth, автомобильные системы голосового управления, по телефонной системе, записи в службах записи и передачи сообщений абонентам, голосовая аудиопочта в службах интегрированного обмена сообщениями, бытовые приборы с голосовым вводом, такие как радиочасы, абонентский телефон, системы управления домашним электронным мультимедийным оборудованием и игровые приставки.- Voice input: from mobile devices such as mobile phones and tablets, computers with microphones, Bluetooth headsets, in-vehicle voice control systems, via phone system, recordings in recording and messaging services, voice mail in integrated messaging services, household devices with voice input, such as clock radios, personal telephones, home electronic multimedia equipment control systems, and game consoles.
- Ввод текста с клавиатур на компьютерах или мобильных устройствах, клавишных панелей на пультах дистанционного управления или других бытовых электронных устройствах, почтовые сообщения, отправленные в помощник, мгновенные сообщения или аналогичные короткие сообщения, отправленные в помощник, текст, принимаемый от игроков в многопользовательских игровых окружениях, и текст, передаваемый в потоках сообщений.- Entering text from keyboards on computers or mobile devices, keypads on remote controls or other consumer electronic devices, mail messages sent to the assistant, instant messages or similar short messages sent to the assistant, text received from players in multiplayer gaming environments , and text passed in message flows.
- Информация местоположения, поступающая из датчиков или основанных на местоположении систем. Примеры включают в себя глобальную систему определения местоположения (GPS) и технологию с использованием GPS (A-GPS) на мобильных телефонах. В одном варианте осуществления, информация местоположения комбинируется с явным пользовательским вводом. В одном варианте осуществления, система по настоящему изобретению имеет возможность обнаруживать, когда пользователь дома, на основе известной информации адреса и определения текущего местоположения. Таким образом, определенные логические выводы могут быть сделаны о типе информации, которой может интересоваться пользователь, когда находится дома, в противоположность нахождению вне дома, а также о типе служб и действий, которые должны активироваться от имени пользователя в зависимости от того, находится он дома или нет.- Location information coming from sensors or location-based systems. Examples include global positioning system (GPS) and GPS assisted technology (A-GPS) on mobile phones. In one embodiment, location information is combined with explicit user input. In one embodiment, the system of the present invention is able to detect when a user is at home based on known address information and current location determination. Thus, certain inferences can be drawn about the type of information a user might be interested in when at home as opposed to being away from home, and the type of services and actions that should be activated on behalf of a user depending on whether they are at home. or not.
- Информация времени из часов в клиентских устройствах. Она может включать в себя, например, время из телефонов или других клиентских устройств, указывающее местное время и часовой пояс. Помимо этого, время может быть использовано в контексте пользовательских запросов, например, чтобы интерпретировать такие фразы, как "через час" и "сегодня вечером".- Time information from clocks in client devices. It may include, for example, the time from phones or other client devices indicating the local time and time zone. In addition, time can be used in the context of user queries, for example, to interpret phrases such as "in an hour" and "tonight".
- Данные компаса, акселерометра, гироскопа и/или по скорости движения, а также другие данные датчиков из мобильных или карманных устройств либо встроенных систем, к примеру, автомобильных систем управления. Они также могут включать в себя данные определения положения устройства из пультов дистанционного управления для устройств и игровых приставок.- Compass, accelerometer, gyroscope and/or driving speed data and other sensor data from mobile or handheld devices or embedded systems such as automotive control systems. They may also include device position determination data from remote controls for devices and game consoles.
- Щелчок (клик) и выбор пункта меню и другие события из графического пользовательского интерфейса (GUI) на любом устройстве, имеющем GUI. Дополнительные примеры включают в себя касания сенсорного экрана.- Click (click) and menu item selection and other events from the graphical user interface (GUI) on any device that has a GUI. Additional examples include touch screen touches.
- События из датчиков и других управляемых данными триггеров, таких как будильники, календарные оповещения, триггеры изменения цен, триггеры местоположения, проталкивание уведомления в устройство с серверов и т.п.- Events from sensors and other data-driven triggers such as alarms, calendar alerts, price change triggers, location triggers, push notifications to the device from servers, etc.
[0097] Ввод в вариантах осуществления, описанных в данном документе, также включает в себя контекст предыстории пользовательского взаимодействия, включающей в себя предысторию диалогов и запросов.[0097] Input in the embodiments described herein also includes a user interaction history context, including a history of dialogs and prompts.
[0098] Примеры различных типов входных данных/информации, к которым может осуществляться доступ и/или которые могут использоваться посредством интеллектуального автоматизированного помощника 1002, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0098] Examples of various types of input/information that may be accessed and/or used by intelligent automated assistant 1002 may include, but are not limited to, one or more of the following (or a combination of the foregoing):
- Текстовый вывод, отправленный непосредственно в устройство вывода и/или пользовательский интерфейс устройства.- Text output sent directly to the output device and/or device user interface.
- Текст и графика, отправляемые пользователю по электронной почте.- Text and graphics sent to the user via email.
- Текст и графика, отправляемые пользователю с помощью службы обмена сообщениями.- Text and graphics sent to the user via the messaging service.
- Речевой вывод, может включать в себя одно или более из следующего (или комбинации вышеозначенного):- Speech output may include one or more of the following (or combinations of the above):
-- Синтезированная речь.- Synthesized speech.
-- Сэмплированная речь.- Sampled speech.
-- Записанные сообщения.-- Recorded messages.
- Графический макет информации с фотографиями, большим объемом текста, видео, звуков и гиперссылок. Например, содержимое, подготовленное в web-обозревателе.- Graphical information layout with photos, lots of text, videos, sounds and hyperlinks. For example, content rendered in a web browser.
- Вывод актуатора, чтобы управлять физическими действиями в устройстве, такими как инструктирование ему включаться или выключаться, издавать звук, изменять цвет, вибрировать, управлять освещением и т.п.- An actuator pin to control physical actions in the device, such as instructing it to turn on or off, make a sound, change color, vibrate, control lights, etc.
- Активация других приложений в устройстве, к примеру, вызов картографического приложения, голосовой набор номера телефона, отправка почтового или мгновенного сообщения, воспроизведение с носителей, внесение записей в календарях, диспетчерах задач и приложениях работы с заметками, а также в других приложениях.- Activate other applications on the device, such as calling a mapping application, voice dialing a phone number, sending a mail or instant message, playing media, making entries in calendars, task managers and note-taking applications, and other applications.
- Вывод актуатора, чтобы управлять физическими действиями для устройств, присоединенных или управляемых посредством устройства, такими как работа с удаленной камерой, управление инвалидным креслом, воспроизведение музыки на удаленных динамиках, воспроизведение видео на удаленных дисплеях и т.п.- Actuator pin to control physical actions for devices connected to or controlled by the device, such as remote camera operation, wheelchair control, music playback on remote speakers, video playback on remote displays, etc.
[0099] Можно принимать во внимание, что интеллектуальный автоматизированный помощник 1002 по Фиг.1 является только одним примером из широкого диапазона вариантов осуществления системы на основе интеллектуального автоматизированного помощника, которые могут быть реализованы. Другие варианты осуществления системы на основе интеллектуального автоматизированного помощника (не показаны) могут включать в себя дополнительные, меньше и/или другие компоненты/признаки по сравнению с тем, что проиллюстрировано, например, в примерном варианте осуществления системы на основе интеллектуального автоматизированного помощника по Фиг.1.[0099] It may be appreciated that the intelligent
Пользовательское взаимодействиеUser interaction
[0100] Ссылаясь теперь на Фиг.2, показан пример взаимодействия между пользователем и, по меньшей мере, одним вариантом осуществления интеллектуального автоматизированного помощника 1002. Пример по Фиг.2 допускает то, что пользователь говорит с интеллектуальным автоматизированным помощником 1002 с использованием устройства 1206 ввода, которое может быть механизмом речевого ввода, и вывод является графическим макетом в устройство 1207 вывода, которое может быть экраном с возможностью прокрутки. Экран 101A разговора показывает разговорный пользовательский интерфейс, демонстрирующий то, что произнес пользователь 101B ("Мне бы хотелось романтичное место с итальянской едой около моего офиса"), и ответ помощника 1002, который является сводкой его заключений 101C ("Хорошо, я нашел итальянские рестораны, которые, судя по обзорам, являются романтичными, недалеко от Вашей работы:") и набор результатов 101D (показаны первые три из списка ресторанов). В этом примере, пользователь щелкает первый результат в списке, и результат автоматически открывается, чтобы раскрывать дополнительную информацию о ресторане, показанном на информационном экране 101E. Информационный экран 101E и экран 101A разговора могут отображаться на одном устройстве вывода, таком как сенсорный экран или другое устройство отображения; примеры, проиллюстрированные на Фиг.2, являются двумя различными состояниями вывода для идентичного устройства вывода.[0100] Referring now to FIG. 2, an example of an interaction between a user and at least one embodiment of an intelligent
[0101] В одном варианте осуществления, информационный экран 101E показывает информацию, собранную и комбинированную из множества служб, включающую в себя, например, любое или все из следующего:[0101] In one embodiment, information screen 101E shows information collected and combined from a variety of services, including, for example, any or all of the following:
- адреса и географические местоположения организаций;- addresses and geographic locations of organizations;
- расстояние от текущего местоположения пользователя;- distance from the user's current location;
- обзоры из множества источников.- Reviews from many sources.
[0102] В одном варианте осуществления, информационный экран 101E также включает в себя некоторые примеры служб, которые помощник 1002 может предлагать от имени пользователя, включающие в себя:[0102] In one embodiment, information screen 101E also includes some examples of services that assistant 1002 can offer on behalf of a user, including:
- набор номера телефона, чтобы позвонить в организацию ("вызов");- dialing a telephone number to call the organization ("call");
- запоминание этого ресторана для последующего использования ("сохранить");- remembering this restaurant for later use ("save");
- отправку почтового сообщения кому-либо с указаниями, как добраться, и информацией об этом ресторане ("совместно использовать");- sending an email message to someone with directions on how to get there and information about this restaurant ("share");
- показ местоположения и указаний, как добраться до этого ресторана, на карте ("показать на карте");- showing the location and directions on how to get to this restaurant on the map ("show on the map");
- сохранение личных заметок об этом ресторане ("мои заметки").- saving personal notes about this restaurant ("my notes").
[0103] Как показано в примере по Фиг.2, в одном варианте осуществления, помощник 1002 включает в себя интеллектуальные средства, помимо простых приложений управления базами данных, такие как, например:[0103] As shown in the example of Figure 2, in one embodiment,
- обработка формулировки намерения на естественном языке 101B, а не просто ключевых слов;- processing the statement of intent in natural language 101B, and not just keywords;
- логический вывод семантического намерения из этого языкового ввода, к примеру, интерпретация "места с итальянской едой" как "итальянские рестораны";- the inference of semantic intent from this language input, for example, the interpretation of "Italian food places" as "Italian restaurants";
- операционализация семантического намерения в стратегию использования онлайновых служб и выполнение этой стратегии от имени пользователя (например, операционализация желания романтичного места в стратегию проверки онлайновых обзорных web-узлов на предмет обзоров, которые описывают место как "романтичное").- operationalizing a semantic intent into a strategy for using online services and executing that strategy on behalf of the user (eg, operationalizing a desire for a romantic place into a strategy for checking online review websites for reviews that describe the place as "romantic").
Компоненты интеллектуального автоматизированного помощникаIntelligent Automated Assistant Components
[0104] Согласно различным вариантам осуществления, интеллектуальный автоматизированный помощник 1002 может включать в себя множество различных типов компонентов, устройств, модулей, процессов, системы и т.п., которые, например, могут быть реализованы и/или конкретизированы через использование аппаратных средств и/или комбинации аппаратных средств и программного обеспечения. Например, как проиллюстрировано в примерном варианте осуществления по Фиг.1, помощник 1002 может включать в себя одно или более из следующих типов систем, компонентов, устройств, процессов и т.п. (или комбинаций вышеозначенного):[0104] According to various embodiments, intelligent
- одна или более активных онтологий 1050;- one or more
- компонент(ы) 1094 активного извлечения ввода (может включать в себя клиентскую часть 1094a и серверную часть 1094b);- component(s) 1094 active input extraction (may include a
- компонент(ы) 1052 кратковременного персонального запоминающего устройства (может включать в себя главную версию 1052b и кэш 1052a);- component(s) 1052 short-term personal storage device (may include a
- компонент(ы) 1054 долговременного персонального запоминающего устройства (может включать в себя главную версию 1052b и кэш 1052a);- long-term personal storage component(s) 1054 (may include a
- компонент(ы) 1056 моделей предметных областей;- component(s) 1056 domain models;
- компонент(ы) 1058 словаря (может включать в себя полный словарь 1058b и поднабор 1058a);- dictionary component(s) 1058 (may include a
- компонент(ы) 1060 модуля(ей) распознавания языковых конструкций (может включать в себя полную библиотеку 1060b и поднабор 1560a);- component(s) 1060 of the language construct recognition module(s) (may include a complete library 1060b and a subset 1560a);
- компонент(ы) 1070 языкового интерпретатора;- component(s) 1070 language interpreter;
- база(ы) 1072 данных объектов предметной области;- base(s) 1072 data objects of the subject area;
- компонент(ы) 1080 процессора потока диалогов;- component(s) 1080 of the processor flow of dialogs;
- компонент(ы) 1082 оркестровки служб;- component(s) 1082 orchestration services;
- компонент(ы) 1084 служб;- component(s) 1084 services;
- компонент(ы) 1086 моделей потока задач;- component(s) 1086 task flow models;
- компонент(ы) 1087 моделей потока диалогов;- component(s) 1087 dialog flow models;
- компонент(ы) 1088 моделей служб;- component(s) 1088 service models;
- компонент(ы) 1090 процессора вывода.- component(s) 1090 output processor.
[0105] Как описано в связи с Фиг.7, в определенных клиент-серверных вариантах осуществления, некоторые или все эти компоненты могут быть распределены между клиентом 1304 и сервером 1340.[0105] As described in connection with FIG. 7, in certain client/server embodiments, some or all of these components may be distributed between
[0106] В целях иллюстрации, далее более подробно описывается, по меньшей мере, часть различных типов компонентов конкретного примерного варианта осуществления интеллектуального автоматизированного помощника 1002 в отношении примерного варианта осуществления интеллектуального автоматизированного помощника 1002 по Фиг.1.[0106] For purposes of illustration, at least a portion of the various types of components of a particular exemplary embodiment of an intelligent
Активные онтологии 1050
[0107] Активные онтологии 1050 служат в качестве унифицирующей инфраструктуры, которая интегрирует модели, компоненты и/или данные из других частей вариантов осуществления интеллектуальных автоматизированных помощников 1002. В области техники информатики, онтологии предоставляют структуры для представления данных и знаний, такие как классы/типы, отношения, атрибуты/свойства и их конкретизация в экземплярах. Онтологии используются, например, чтобы компоновать модели данных и знаний. В некоторых вариантах осуществления интеллектуальной автоматизированной системы 1002, онтологии являются частью инфраструктуры моделирования, в которой можно компоновать модели, к примеру, модели предметных областей.[0107]
[0108] В контексте настоящего изобретения "активная онтология" 1050 также может служить в качестве среды выполнения, в которой различные обрабатывающие элементы размещаются онтологическим способом (например, при наличии различных атрибутов и отношений с другими обрабатывающими элементами). Эти обрабатывающие элементы выполняют, по меньшей мере, некоторые задачи интеллектуального автоматизированного помощника 1002. Может предоставляться любое число активных онтологий 1050.[0108] In the context of the present invention, the "active ontology" 1050 can also serve as a runtime environment in which various processing elements are hosted in an ontological manner (eg, having different attributes and relationships with other processing elements). These processing elements perform at least some of the tasks of the intelligent
[0109] По меньшей мере, в одном варианте осуществления, активные онтологии 1050 могут быть выполнены с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0109] In at least one embodiment,
• Выполнение функций среды моделирования и разработки, интегрирующей модели и данные из различных компонентов моделей и данных, включающих в себя, но не только:• Performing the functions of a modeling and development environment that integrates models and data from various model and data components, including, but not limited to:
- модели 1056 предметных областей- models of 1056 subject areas
- словарь 1058-
- базы 1072 данных объектов предметной области-
- модели 1086 потока задач- 1086 task flow models
- модели 1087 потока диалогов- 1087 Dialog Flow Models
- модели 1088 характеристик служб-
• Выполнение функций среды моделирования данных, в которой могут работать инструментальные средства редактирования на основе онтологии, чтобы разрабатывать новые модели, структуры данных, схемы и представления базы данных.• Performing the functions of a data modeling environment in which ontology-based editing tools can run to develop new models, data structures, schemas, and database views.
• Выполнение функций среды выполнения вживую, конкретизирующей значения для элементов моделей предметной области 1056, задач 1086 и/или диалогов 1087, модулей распознавания языковых конструкций и/или словаря 1058, и конкретную для пользователя информацию, к примеру, находящуюся в кратковременном персональном запоминающем устройстве 1052, долговременном персональном запоминающем устройстве 1054 и/или в результатах оркестровки 1182 служб. Например, некоторые узлы активной онтологии могут соответствовать концептам предметной области, таким как ресторан и его свойство "название ресторана". В ходе выполнения вживую, эти узлы активной онтологии могут быть конкретизированы с помощью идентификационных данных конкретного объекта ресторана и его названия, а также того, как его название соответствует словам при произнесении ввода на естественном языке. Таким образом, в этом варианте осуществления, активная онтология служит как в качестве среды моделирования, указывающей концепт, что рестораны являются объектами с идентификационными данными, которые имеют названия, так и для сохранения динамических связей этих моделирующих узлов с данными из баз данных объектов и грамматического анализа естественного языка.• Live execution of runtime functions specifying values for elements of
• Предоставление возможности связи и координации между компонентами и обрабатывающими элементами интеллектуального автоматизированного помощника, такими как, например, одно или более из следующего (или комбинации вышеозначенного):• Enabling communication and coordination between components and processing elements of an intelligent automated assistant, such as, for example, one or more of the following (or combinations of the above):
- компонент(ы) 1094 активного извлечения ввода- component(s) 1094 active input extraction
- компонент(ы) 1070 языкового интерпретатора- component(s) 1070 language interpreter
- компонент(ы) 1080 процессора потока диалогов- component(s) 1080 of the dialog flow processor
- компонент(ы) 1082 оркестровки служб- service orchestration component(s) 1082
- компонент(ы) 1084 служб- component(s) 1084 services
[0110] В одном варианте осуществления, по меньшей мере, часть функций, операций, действий и/или других признаков активных онтологий 1050, описанных в данном документе, могут быть реализованы, по меньшей мере, частично, с использованием различных способов и аппаратных систем, описанных в заявке на патент (США), порядковый номер 11/518292, озаглавленной "Method and Apparatus for Building the Intelligent Automated Assistant", поданной 8 сентября 2006 года.[0110] In one embodiment, at least a portion of the functions, operations, actions, and/or other features of the
[0111] По меньшей мере, в одном варианте осуществления, данный экземпляр активной онтологии 1050 может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством активных онтологий 1050, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0111] In at least one embodiment, a given
- статические данные, которые доступны из одного или более компонентов интеллектуального автоматизированного помощника 1002;- static data that is available from one or more components of the intelligent
- данные, которые динамически конкретизируются в расчете на пользовательский сеанс, например, но не только, поддержание состояния конкретных для пользователя вводов и выводов, передаваемых между компонентами интеллектуального автоматизированного помощника 1002, содержимое кратковременного персонального запоминающего устройства, логические выводы, сделанные из предыдущих состояний пользовательского сеанса, и т.п.- data that is dynamically instantiated per user session, such as, but not limited to, maintaining the state of user-specific inputs and outputs passed between components of the intelligent
[0112] Таким образом, активные онтологии 1050 используются для того, чтобы унифицировать элементы различных компонентов в интеллектуальном автоматизированном помощнике 1002. Активная онтология 1050 дает возможность автору, проектировщику или разработчику системы интегрировать компоненты, так что элементы одного компонента идентифицируются с помощью элементов других компонентов. Автор, проектировщик или разработчик системы тем самым может комбинировать и интегрировать компоненты более простым образом.[0112] Thus,
[0113] Ссылаясь теперь на Фиг.8, показан пример фрагмента активной онтологии 1050 согласно одному варианту осуществления. Этот пример имеет намерение помогать иллюстрировать некоторые из различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством активных онтологий 1050.[0113] Referring now to FIG. 8, an example of a fragment of an
[0114] Активная онтология 1050 на Фиг.8 включает в себя представления ресторана и мероприятия с приемом пищи. В этом примере, ресторан является концептом 1610 с такими свойствами, как его название 1612, предлагаемые кухни 1615 и его местоположение 1613, который, в свою очередь, может моделироваться в качестве структурного узла со свойствами для фактического адреса 1614. Концепт мероприятия с приемом пищи может моделироваться в качестве узла 1616, включающего в себя званый ужин 1617 в ресторане (который имеет количество 1619 участников) и период 1618 времени.[0114] The
- Активные онтологии могут включать в себя и/или ссылаться на модели 1056 предметных областей. Например, Фиг.8 иллюстрирует модель 1622 предметной области ужинов в ресторанах, связанную с концептом 1610 ресторана и концептом 1616 мероприятия с приемом пищи. В этом случае, активная онтология 1050 включает в себя модель 1622 предметной области ужинов в ресторанах; в частности, по меньшей мере, два узла активной онтологии 1050, а именно, ресторан 1610 и мероприятие 1616 с приемом пищи, также включаются и/или указываются ссылкой в модели 1622 предметной области ужинов в ресторанах. Эта модель предметной области представляет, в числе прочего, такую идею, что званый ужин в ресторане заключает в себе мероприятие с приемом пищи, которое происходит в ресторанах. Узлы активной онтологии ресторан 1610 и мероприятие 1616 с приемом пищи также включаются и/или указываются ссылкой в других компонентах интеллектуального автоматизированного помощника, показанных посредством пунктирных линий на Фиг.8.- Active ontologies may include and/or refer to
- Активные онтологии могут включать в себя и/или ссылаться на модели 1086 потока задач. Например, Фиг.8 иллюстрирует модель 1630 потока задач организации мероприятий, которая моделирует организацию мероприятий независимо от предметных областей, применяемых к зависящему от предметной области виду мероприятия: мероприятию 1616 с приемом пищи. Здесь, активная онтология 1050 включает в себя общую модель 1630 потока задач организации мероприятий, которая содержит узлы, представляющие мероприятия и другие концепты, участвующие в их организации. Активная онтология 1050 также включает в себя узел мероприятия 1616 с приемом пищи, который является конкретным видом мероприятия. В этом примере, мероприятие 1616 с приемом пищи включается или указывается ссылкой в модели 1622 предметной области и в модели 1630 потока задач, и обе эти модели включаются и/или указываются ссылкой в активной онтологии 1050. С другой стороны, мероприятие 1616 с приемом пищи является примером того, как активные онтологии могут унифицировать элементы различных компонентов, включенных и/или указываемых ссылкой в других компонентах интеллектуального автоматизированного помощника, показанных посредством пунктирных линий на Фиг.8.- Active ontologies may include and/or refer to
- Активные онтологии могут включать в себя и/или ссылаться на модели 1087 потока диалогов. Например, Фиг.8 иллюстрирует модель 1642 потока диалогов для получения значений ограничений, требуемых для транзакции, конкретизированной в количестве участников званого вечера в виде ограничения, как представлено в концепте 1619. С другой стороны, активная онтология 1050 предоставляет инфраструктуру для связывания и унификации различных компонентов, к примеру, модели 1087 потока диалогов. В этом случае, модель 1642 потока диалогов имеет общий концепт ограничения, которое конкретизируется в этом конкретном примере как количество 1619 участников званого вечера в виде узла активной онтологии. Эта конкретная модель 1642 потока диалогов работает при абстракции ограничений, независимых от предметной области. Активная онтология 1050 представляет свойство 1619 количества участников званого вечера узла 1617 званого вечера, который связан с узлом 1616 мероприятия с приемом пищи. В этом варианте осуществления, интеллектуальный автоматизированный помощник 1002 использует активную онтологию 1050, чтобы унифицировать концепт ограничения в модели 1642 потока диалогов со свойством количества 1619 участников званого вечера в качестве части кластера узлов, представляющих концепт 1616 мероприятия с приемом пищи, который является частью модели 1622 предметной области для ужинов в ресторанах.- Active ontologies may include and/or refer to
- Активные онтологии могут включать в себя и/или ссылаться на модели 1088 служб. Например, Фиг.8 иллюстрирует модель службы 1672 резервирования ресторана, ассоциированной с этапом потока диалогов для получения значений, требуемых для этой службы, чтобы выполнять транзакцию. В этом случае, модель 1672 служб для службы резервирования ресторана указывает, что резервирование требует значения для количества 1619 участников званого вечера (количества людей, сидящих за столиком, который нужно зарезервировать). Количество 1619 участников званого вечера в виде концепта, которое является частью активной онтологии 1050, также соединяется или связывается с общей моделью 1642 потока диалогов для запроса пользователя относительно ограничений для транзакции; в этом случае, количество участников званого вечера является требуемым ограничением для модели 1642 потока диалогов.- Active ontologies may include and/or refer to
- Активные онтологии могут включать в себя и/или ссылаться на базы 1072 данных объектов предметной области. Например, Фиг.8 иллюстрирует базу данных объектов предметной области ресторанов 1652, ассоциированных с узлом 1610 ресторана в активной онтологии 1050. Активная онтология 1050 представляет общий концепт 1610 ресторана, который может быть использован посредством различных компонентов интеллектуального автоматизированного помощника 1002, и он конкретизируется посредством данных о конкретных ресторанах в базе 1652 данных ресторанов.- Active ontologies may include and/or refer to
- Активные онтологии могут включать в себя и/или ссылаться на словарные базы 1058 данных. Например, Фиг.8 иллюстрирует словарную базу 1662 данных кухонь, к примеру, итальянскую, французскую и т.п., и слов, ассоциированных с каждой кухней, к примеру, "французская", "континентальная", "провинциальная" и т.п. Активная онтология 1050 включает в себя узел 1610 ресторана, который связан с узлом 1615 предлагаемых кухонь, который ассоциирован с представлением кухонь в базе 1662 данных кухонь. Конкретная запись в базе 1662 данных для кухни, к примеру, "французская", тем самым связана через активную онтологию 1050 в качестве экземпляра концепта 1615 предлагаемых кухонь.- Active ontologies may include and/or refer to
- Активные онтологии могут включать в себя и/или ссылаться на любую базу данных, которая может преобразовываться в концепты или другие представления в онтологии 1050. Базы 1072 данных объектов предметной области и словарные базы 1058 данных являются просто двумя примерами того, как активная онтология 1050 может интегрировать базы данных друг с другом и с другими компонентами автоматизированного помощника 1002. Активные онтологии дают возможность автору, проектировщику или разработчику системы указывать нетривиальное преобразование между представлениями в базе данных и представлениями в онтологии 1050. Например, схема базы данных для базы 1652 данных ресторанов может представлять ресторан в качестве таблицы из строк и чисел или в качестве проекции от большей базы данных организаций или любого другого представления, подходящего для базы 1652 данных. В этой примерной активной онтологии 1050, ресторан 1610 является узлом концепта со свойствами и отношениями, организованными отлично от таблиц базы данных. В этом примере, узлы онтологии 1050 ассоциированы с элементами схем базы данных. Интеграция базы данных и онтологии 1050 предоставляет унифицированное представление для интерпретации и воздействия на конкретные записи данных в базах данных с точки зрения больших наборов моделей и данных в активной онтологии 1050. Например, слово "французская" может быть записью в базе 1662 данных кухонь. Поскольку в этом примере база 1662 данных интегрируется в активной онтологии 1050, это же слово "французская" также имеет интерпретацию как возможная предлагаемая кухня в ресторане, которая включается в организацию мероприятий с приемом пищи, и эта кухня служит в качестве ограничения, которое следует использовать при использовании служб резервирования ресторанов и т.д. Активные онтологии тем самым могут интегрировать базы данных в среду моделирования и выполнения, чтобы взаимодействовать с другими компонентами автоматизированного помощника 1002.- Active ontologies can include and/or refer to any database that can be mapped to concepts or other representations in the
[0115] Как описано выше, активная онтология 1050 дает возможность автору, проектировщику или разработчику системы интегрировать компоненты; таким образом, в примере по Фиг.8, элементы компонента, такие как ограничение в модели 1642 потока диалогов могут быть идентифицированы с помощью элементов других компонентов, таких как обязательный параметр службы 1672 резервирования ресторана.[0115] As described above, the
[0116] Активные онтологии 1050 могут быть осуществлены в качестве, например, конфигураций моделей, баз данных и компонентов, в которых взаимосвязи между моделями, базами данных и компонентами являются любым из следующего:[0116]
- отношение включения и/или импликация;- inclusion relation and/or implication;
- взаимосвязь со ссылками и/или указателями;- relationship with links and/or pointers;
- взаимодействие по API, как внутренним относительно программы, так и между программами.- interaction via API, both internal relative to the program, and between programs.
[0117] Например, ссылаясь теперь на Фиг.9, показан пример альтернативного варианта осуществления системы 1002 на основе интеллектуального автоматизированного помощника, в которой компоненты моделей 1056 предметных областей, словаря 1058, модулей 1060 распознавания языковых конструкций, кратковременного персонального запоминающего устройства 1052 и долговременного персонального запоминающего устройства 1054 организуются в рамках общего контейнера, ассоциированного с активной онтологией 1050, а другие компоненты, такие как компонент 1094 активного извлечения ввода, языковой интерпретатор 1070 и процессор 1080 потока диалогов, ассоциированы с активной онтологией 1050 через взаимосвязи API. [0117] For example, with reference now to FIG. 9, an example of an alternative implementation of an intelligent
Компонент(ы) 1094 активного извлечения вводаComponent(s) 1094 active input extraction
[0118] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода (который, как описано выше, может быть реализован в автономной конфигурации или в конфигурации, включающей в себя как серверные, так и клиентские компоненты) может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0118] In at least one embodiment, active input extraction component(s) 1094 (which, as described above, may be implemented in a stand-alone configuration or in a configuration that includes both server and client components) may be configured to perform and/or implement various types of functions, operations, actions and/or other features, such as, for example, one or more of the following (or combinations of the above):
• Извлечение, упрощение и/или обработка ввода от пользователя либо из среды пользователя и/или информации относительно его потребности(ей) или запроса(ов). Например, если пользователь стремится найти ресторан, модуль извлечения ввода может получать информацию относительно ограничений или предпочтений пользователя по местоположению, времени, кухне, цене и т.д.• Extraction, simplification and/or processing of input from the user or from the environment of the user and/or information regarding his need(s) or request(s). For example, if the user is searching for a restaurant, the input retrieval module may obtain information regarding the user's restrictions or preferences for location, time, cuisine, price, and so on.
• Упрощение различных видов ввода из различных источников, таких как, например, одно или более из следующего (или комбинации вышеозначенного):• Facilitation of various types of input from various sources, such as, for example, one or more of the following (or combinations of the above):
- ввод с клавиатур или из любого другого устройства ввода, которое формирует текст,- input from keyboards or from any other input device that forms text,
- ввод с клавиатур в пользовательских интерфейсах, которые предлагают динамические рекомендованные заполнения частичного ввода,- keyboard input in user interfaces that offer dynamic recommended partial input completions,
- ввод из систем голосового или речевого ввода,- input from voice or speech input systems,
- ввод из графических пользовательских интерфейсов (GUI), в которых пользователи щелкают, выбирают или иным образом непосредственно манипулируют графическими объектами, чтобы указывать варианты выбора,- input from graphical user interfaces (GUIs) in which users click, select or otherwise directly manipulate graphical objects to indicate selection options,
- ввод из других приложений, которые формируют текст и отправляют его в автоматизированный помощник, включающих в себя электронную почту, обмен текстовыми сообщениями или другие платформы текстовой связи.- input from other applications that generate text and send it to an automated assistant, including email, text messaging, or other text communication platforms.
[0119] Посредством выполнения активного извлечения ввода помощник 1002 имеет возможность разрешать неоднозначность намерения на ранней фазе обработки ввода. Например, в варианте осуществления, в котором ввод предоставляется посредством речи, сигнал может отправляться на сервер 1340, на котором извлекаются слова, и выполняется семантическая интерпретация. Результаты такой семантической интерпретации затем могут быть использованы для того, чтобы управлять активным извлечением ввода, которое может предлагать пользователю альтернативные варианты слов, из которых следует выбирать на основе степени их семантического соответствия, а также фонетического соответствия.[0119] By performing active input extraction,
[0120] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода активно, автоматически и динамически направляет пользователя в направлении вводов, на которые могут влиять одна или более служб, предлагаемых посредством вариантов осуществления помощника 1002. Ссылаясь теперь на Фиг.10, показана блок-схема последовательности операций, иллюстрирующая способ работы для компонентов 1094 активного извлечения ввода согласно одному варианту осуществления.[0120] In at least one embodiment, active input retrieval component(s) 1094 actively, automatically, and dynamically directs the user towards inputs that can be influenced by one or more services offered by assistant 1002 embodiments. Referring now to 10 is a flowchart illustrating a method of operation for active
[0121] Процедура начинается на этапе 20. На этапе 21, помощник 1002 может предлагать интерфейсы на одном или более входных каналов. Например, пользовательский интерфейс может предлагать пользователю варианты говорить или печатать, или прикасаться на любой стадии разговорного взаимодействия. На этапе 22, пользователь выбирает входной канал посредством инициирования ввода в одной модальности, к примеру, нажатия кнопки, чтобы начинать запись речи или вызывать интерфейс для ввода с клавиатуры.[0121] The procedure begins at
[0122] По меньшей мере, в одном варианте осуществления, помощник 1002 предлагает рекомендации по умолчанию для выбранной модальности 23. Иными словами, он предлагает варианты 24, которые являются релевантными в текущем контексте, до выполнения пользователем какого-либо ввода в этой модальности. Например, в модальности ввода текста, помощник 1002 может предлагать список общих слов, которые должны начинать текстовые запросы или команды, такие как, например, одно или более из следующего (или комбинации вышеозначенного): императивные глаголы (например, найти, купить, зарезервировать, получить, позвонить, проверить, составить расписание и т.п.), существительные (например, рестораны, фильмы, мероприятия, организации и т.п.) или варианты в стиле пунктов меню с названиями предметных областей дискурса (например, погода, спортивные состязания, новости и т.п.)[0122] In at least one embodiment,
[0123] Если пользователь выбирает один из вариантов по умолчанию на этапе 25, и задано предпочтение для автозаполнения 30, процедура может сразу возвращаться. Это является аналогичным операции традиционного выбора пункта меню.[0123] If the user selects one of the default options at
[0124] Тем не менее, начальный вариант может приниматься в качестве частичного ввода, или пользователь может начать осуществлять частичный ввод 26. В любой точке ввода, по меньшей мере, в одном варианте осуществления пользователь может выбирать указывать, что частичный ввод закончен 22, что приводит к возврату процедуры.[0124] However, the initial option may be received as a partial input, or the user may begin the partial input 26. At any point in the input, in at least one embodiment, the user may choose to indicate that the partial input has ended 22, which causes the procedure to return.
[0125] На этапе 28, последний ввод, выбранный или введенный, добавляется к кумулятивному вводу.[0125] In
[0126] На этапе 29, система рекомендует следующие возможные вводы, которые являются релевантными, с учетом текущего ввода и других источников ограничений на то, что составляет релевантный и/или значимый ввод.[0126] At step 29, the system recommends the next possible inputs that are relevant, given the current input and other sources of constraints on what constitutes a relevant and/or meaningful input.
[0127] По меньшей мере, в одном варианте осуществления, источники ограничений на пользовательский ввод (например, которые используются на этапах 23 и 29) представляют собой одну или более из различных моделей и источников данных, которые могут быть включены в помощник 1002, что может включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0127] In at least one embodiment, the sources of user input constraints (eg, those used in
- Словарь 1058. Например, могут быть рекомендованы слова или фразы, которые совпадают с текущим вводом. По меньшей мере, в одном варианте осуществления, словарь может быть ассоциирован с любым или одним или более узлов активных онтологий, моделей предметных областей, моделей задач, моделей диалогов и/или моделей служб.-
- Модели 1056 предметных областей, которые могут ограничивать вводы, которые могут конкретизировать или иным образом быть согласованными с моделью предметной области. Например, по меньшей мере, в одном варианте осуществления, модели 1056 предметных областей могут быть использованы для того, чтобы рекомендовать концепты, отношения, свойства и/или экземпляры, которые, как предполагается, согласованы с текущим вводом.-
- Модули 1060 распознавания языковых конструкций, которые могут быть использованы для того, чтобы распознавать идиомы, фразы, грамматические конструктивы или другие конструкции в текущем вводе, и могут быть использованы для того, чтобы рекомендовать заполнения, которые заполняют конструкцию.- Language construct recognition modules 1060, which can be used to recognize idioms, phrases, grammatical constructs, or other constructs in the current input, and can be used to recommend completions that complete the construct.
- Базы 1072 данных объектов предметной области, которые могут быть использованы для того, чтобы рекомендовать возможные объекты в предметной области, которые совпадают с вводом (например, названия организаций, названия фильмов, названия мероприятий и т.п.).-
- Кратковременное запоминающее устройство 1052, которое может быть использовано для того, чтобы согласовывать любой предшествующий ввод или часть предшествующего ввода и/или любое другое свойство либо факт о предыстории взаимодействия с пользователем. Например, частичный ввод может сопоставляться с городами, которые пользователь встречает в сеансе, будь то гипотетически (например, упомянуты в запросах) и/или физически (например, как определено из датчиков местоположения).- Short-
- По меньшей мере, в одном варианте осуществления, семантические перефразирования недавних вводов, запроса или результатов могут сопоставляться с текущим вводом. Например, если пользователь ранее выполнил запрос "живая музыка" и получил перечень концертов и затем напечатал "музыка" в среде активного извлечения ввода, рекомендации могут включать в себя "живая музыка" и/или "концерты".- In at least one embodiment, semantic paraphrases of recent inputs, query, or results can be matched against the current input. For example, if the user previously ran a "live music" query and obtained a list of concerts and then typed "music" in the active input retrieval environment, the recommendations could include "live music" and/or "concerts".
- Долговременное персональное запоминающее устройство 1054, которое может быть использовано для того, чтобы рекомендовать совпадающие элементы из долговременного запоминающего устройства. Такие совпадающие элементы могут включать в себя, например, одно или более либо любую комбинацию следующего: объекты предметной области, которые сохранены (например, "любимые" рестораны, фильмы, театры, места проведения мероприятий и т.п.), элементы списка занятий, элементы списка, записи календаре, имена людей в списках контактов/адресных книгах, названия улиц или городов, упомянутые в списках контактов/адресных книгах, и т.п.- Long-term personal storage device 1054, which can be used to recommend matching items from the long-term storage device. Such matched items may include, for example, one or more or any combination of the following: domain objects that are saved (e.g., "favorite" restaurants, movies, theaters, event venues, etc.), activity list items, list items, calendar entries, names of people in contact lists/address books, street or city names mentioned in contact lists/address books, etc.
- Модели 1086 потока задач, которые могут быть использованы для того, чтобы рекомендовать вводы на основе следующих возможных этапов в потоке задач.-
- Модели 1087 потока диалогов, которые могут быть использованы для того, чтобы рекомендовать вводы на основе следующих возможных этапов в потоке диалогов.-
- Модели 1088 характеристик служб, которые могут быть использованы для того, чтобы рекомендовать возможные службы для использования по названию, категории, характеристике или любому другому свойству в модели. Например, пользователь может печатать часть названия предпочтительного обзорного web-узла, и помощник 1002 может рекомендовать команду заполнения для запроса этого обзорного web-узла на предмет обзора.- Service
[0128] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода представляет пользователю разговорный интерфейс, например, интерфейс, в котором пользователь и помощник общаются посредством поочередного произнесения фраз в разговорной манере. Компонент(ы) 1094 активного извлечения ввода может быть выполнен с возможностью осуществлять и/или реализовывать различные типы разговорных интерфейсов.[0128] In at least one embodiment, active input retrieval component(s) 1094 presents a conversational interface to the user, such as an interface in which the user and assistant communicate by alternately speaking phrases in a conversational manner. Active input extraction component(s) 1094 may be configured to implement and/or implement various types of conversational interfaces.
[0129] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода может быть выполнен с возможностью осуществлять и/или реализовывать различные типы разговорных интерфейсов, в которых помощник 1002 использует ответвления разговора, чтобы запрашивать в виде подсказки информацию от пользователя согласно моделям диалогов. Модели диалогов могут представлять процедуру для проведения диалога, такую как, например, последовательность этапов, требуемых для того, чтобы извлекать информацию, необходимую для выполнения службы.[0129] In at least one embodiment, active input retrieval component(s) 1094 may be configured to implement and/or implement various types of conversational interfaces in which
[0130] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода предлагает ограничения и указания пользователю в реальном времени в то время, когда пользователь находится в процессе ввода с клавиатуры, произнесения или иного создания ввода. Например, активное извлечение может направлять пользователя, чтобы печатать вводы текста, которые могут распознаваться посредством варианта осуществления помощника 1002 и/или которые могут обслуживаться посредством одной или более служб, предлагаемых посредством вариантов осуществления помощника 1002. Это является преимуществом по сравнению с пассивным ожиданием ввода без ограничений от пользователя, поскольку это дает возможность сосредоточения усилий пользователя на вводах, которые могут быть полезными, и/или это дает возможность вариантам осуществления помощника 1002 применять свои интерпретации ввода в реальном времени по мере того, как пользователь вводит его.[0130] In at least one embodiment, active input retrieval component(s) 1094 offers real-time constraints and guidance to the user while the user is in the process of typing, speaking, or otherwise generating input. For example, active retrieval may direct a user to type text inputs that may be recognized by the
[0131] По меньшей мере, часть функций, операций, действий и/или других признаков активного извлечения ввода, описанных в данном документе, может быть реализована, по меньшей мере, частично, с использованием различных способов и аппаратных систем, описанных в заявке на патент (США), порядковый номер 11/518292, озаглавленной "Method and Apparatus for Building the Intelligent Automated Assistant", поданной 8 сентября 2006 года.[0131] At least a portion of the functions, operations, actions, and/or other features of actively extracting input described herein may be implemented, at least in part, using various methods and hardware systems described in the patent application. (USA), serial number 11/518292, entitled "Method and Apparatus for Building the Intelligent Automated Assistant", filed September 8, 2006.
[0132] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1094 активного извлечения ввода могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.[0132] According to specific embodiments, multiple instances or sub-processes of active input extraction component(s) 1094 may be simultaneously implemented and/or initiated through the use of one or
[0133] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1094 активного извлечения ввода могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1094 активного извлечения ввода. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1094 активного извлечения ввода, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0133] According to various embodiments, one or more different sub-processes or instances of active input extraction component(s) 1094 may be initiated in response to the detection of one or more conditions or events that satisfy one or more different types of minimum threshold criteria for triggering, by at least one instance of the active input extraction component(s) 1094 . Various examples of conditions or events that may trigger or start the implementation of one or more different sub-processes or instances of active input fetch component(s) 1094 may include, but are not limited to, one or more of the following (or combinations of the foregoing):
- Начало пользовательского сеанса. Например, когда пользовательский сеанс запускает приложение, которое является вариантом осуществления помощника 1002, интерфейс может предлагать возможность для пользователя инициировать ввод, например, посредством нажатия кнопки, чтобы инициировать систему речевого ввода, или щелчка текстового поля, чтобы инициировать сеанс ввода текста.- Starting a user session. For example, when a user session launches an application that is an embodiment of
- Пользовательский ввод обнаружен.- User input detected.
- Когда помощник 1002 явно запрашивает в виде подсказки у пользователя ввод, как тогда, когда он запрашивает ответ на вопрос или предлагает меню из следующих этапов, из которых можно выбирать.- When the
- Когда помощник 1002 помогает пользователю выполнять транзакцию и собирает данные для этой транзакции, например, заполнение формы.- When assistant 1002 assists the user in a transaction and collects data for that transaction, such as filling out a form.
[0134] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1094 активного извлечения ввода может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1094 активного извлечения ввода, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0134] In at least one embodiment, a given instance of active input retrieval component(s) 1094 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. Examples of various types of data that can be accessed by active input fetching component(s) 1094 may include, but are not limited to, one or more of the following (or combinations of the above):
- база данных возможных слов, которые следует использовать в текстовом вводе;- database of possible words that should be used in text input;
- грамматика возможных фраз, которые следует использовать при произнесении текстового ввода;- Grammar of possible phrases that should be used when pronouncing a text input;
- база данных возможных интерпретаций речевого ввода;- database of possible interpretations of speech input;
- база данных предыдущих вводов от пользователя или от других пользователей;- database of previous inputs from the user or from other users;
- данные из любой из различных моделей и источников данных, которые могут быть частью вариантов осуществления помощника 1002, которые могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):- data from any of the various models and data sources that may be part of the
- модели 1056 предметных областей;- models of 1056 subject areas;
- словарь 1058;-
- модули 1060 распознавания языковых конструкций;- modules 1060 recognition of language constructs;
- базы 1072 данных объектов предметной области;-
- кратковременное запоминающее устройство 1052;- short-
- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;
- модели 1086 потока задач;-
- модели 1087 потока диалогов;-
- модели 1088 характеристик служб.-
[0135] Согласно различным вариантам осуществления, компонент 1094 активного извлечения ввода может применять процедуры активного извлечения, например, к одному или более из следующего (или к комбинациям вышеозначенного):[0135] According to various embodiments, active
- печатаемый ввод;- printable input;
- речевой ввод;- speech input;
- ввод из графических пользовательских интерфейсов (GUI), включающий в себя жесты;- input from graphical user interfaces (GUI), including gestures;
- ввод из рекомендаций, предлагаемых в диалоге; и- input from the recommendations offered in the dialog; and
- события из вычислительных и/или очувствленных окружений.- events from computational and/or sensed environments.
Активное извлечение печатаемого вводаActive retrieval of typed input
[0136] Ссылаясь теперь на Фиг.11, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения печатаемого ввода согласно одному варианту осуществления.[0136] Referring now to FIG. 11, a flowchart is shown illustrating a method for actively extracting typed input according to one embodiment.
[0137] Способ начинается 110. Помощник 1002 принимает 111 частичный ввод текста, например, через устройство 1206 ввода. Частичный ввод текста может включать в себя, например, символы, которые напечатаны к этому моменту в поле ввода текста. В любое время пользователь может указывать, что печатаемый ввод закончен 112, к примеру, посредством нажатия клавиши Enter. Если не закончен, формирователь рекомендаций формирует 114 варианты рекомендаций 116. Эти рекомендации могут быть синтаксическими, семантическими и/или другими видами рекомендаций на основе любого из источников информации или ограничений, описанных в данном документе. Если рекомендация выбирается 118, ввод преобразуется 117 так, что он включает в себя выбранную рекомендацию.[0137] The method begins 110.
[0138] По меньшей мере, в одном варианте осуществления, рекомендации могут включать в себя расширения в текущий ввод. Например, рекомендацией для "отдых" может быть "рестораны".[0138] In at least one embodiment, the recommendations may include extensions to the current input. For example, a recommendation for "rest" might be "restaurants".
[0139] По меньшей мере, в одном варианте осуществления, рекомендации могут включать в себя замены частей текущего ввода. Например, рекомендацией для "отдых" может быть "места, чтобы поесть".[0139] In at least one embodiment, the recommendations may include replacing parts of the current input. For example, a recommendation for "rest" might be "places to eat".
[0140] По меньшей мере, в одном варианте осуществления, рекомендации могут включать в себя замену и перефразирование частей текущего ввода. Например, если текущим вводом является "найти рестораны в стиле", рекомендацией может быть "итальянский", и когда рекомендация выбирается, весь ввод может быть перезаписан как "найти итальянские рестораны".[0140] In at least one embodiment, the recommendations may include replacing and rephrasing portions of the current input. For example, if the current input is "find restaurants in style", the recommendation could be "Italian", and when the recommendation is selected, the entire input could be overwritten as "find Italian restaurants".
[0141] По меньшей мере, в одном варианте осуществления, результирующий ввод, который возвращается, аннотируется 119, так что информация о том, какие варианты выбраны на этапе 118, сохраняется вместе с текстовым вводом. Это предоставляет возможность ассоциирования, например, семантических концептов или объектов, лежащих в основе строки, со строкой, когда она возвращается, что повышает точность последующей языковой интерпретации.[0141] In at least one embodiment, the resulting input that is returned is annotated 119 such that information about which options are selected in
[0142] Ссылаясь теперь на Фиг.12-21, показаны снимки экрана, иллюстрирующие некоторые части некоторых процедур для активного извлечения печатаемого ввода согласно одному варианту осуществления. Снимки экрана иллюстрируют пример варианта осуществления помощника 1002, реализованного на смартфоне, таком как iPhone, предлагаемый компанией Apple Inc., Купертино, Калифорния. Ввод предоставляется в такое устройство через сенсорный экран, включающий в себя функциональность экранной клавиатуры. Специалисты в данной области техники должны признавать, что снимки экрана иллюстрируют вариант осуществления, который является просто примерным, и что технологии настоящего изобретения могут быть реализованы в других устройствах и с использованием других макетов и компоновок.[0142] Referring now to FIGS. 12-21, screen shots are shown illustrating some parts of some procedures for actively extracting typed input, according to one embodiment. The screen shots illustrate an exemplary embodiment of assistant 1002 implemented on a smartphone, such as the iPhone, available from Apple Inc. of Cupertino, California. Input is provided to such a device via a touch screen that includes on-screen keyboard functionality. Those skilled in the art should recognize that the screenshots illustrate an embodiment that is merely exemplary, and that the techniques of the present invention may be implemented in other devices and using other layouts and arrangements.
[0143] На Фиг.12, экран 1201 включает в себя высокоуровневый набор рекомендаций 1202, показанный, когда ввод не предоставлен в поле 1203. Это соответствует этапу 23 без ввода по Фиг.10, применяемому к этапу 114 по Фиг.11, когда нет ввода.[0143] In FIG. 12,
[0144] На Фиг.13, экран 1301 иллюстрирует пример использования словаря, чтобы предлагать рекомендованные заполнения 1303 частичного пользовательского ввода 1305, выполненного в поле 1203 с использованием экранной клавиатуры 1304. Эти рекомендованные заполнения 1303 могут быть частью функции 1094 активного извлечения ввода. Пользователь выполняет частичный пользовательский ввод 1305, включающий в себя строку "связь". Компонент 1058 словаря предоставляет преобразование этой строки в три различных вида экземпляров, которые перечисляются как рекомендованные заполнения 1303: фраза "общественные и локальные мероприятия" является категорией предметной области мероприятий; "сводка коммерческой информации" является категорией предметной области поиска местных организаций, и "общественный клуб Jewish" является названием экземпляра местных организаций. Компонент 1058 словаря может предоставлять поиск данных и управление пространствами имен, такими как эти. Пользователь может прикасаться к кнопке 1306 Go, чтобы указывать, что он закончил ввод; это инструктирует помощнику 1002 продолжать с заполненной текстовой строкой в качестве единицы пользовательского ввода.[0144] In FIG. 13,
[0145] На Фиг.14, экран 1401 иллюстрирует пример, в котором рекомендованные семантические заполнения 1303 для частичной строки "wh" 1305 включают в себя полные фразы с печатаемыми параметрами. Эти виды рекомендаций могут обеспечиваться посредством использования одной или более из различных моделей и источников ограничений по вводу, описанных в данном документе. Например, в одном варианте осуществления, показанном на Фиг.14, "что происходит в городе" является активным извлечением параметра положения для предметной области локальных мероприятий; "где находится название организации" является активным извлечением ограничения в виде названия организации для предметной области поиска местных организаций; "что демонстрируется в название места проведения мероприятий" является активным извлечением ограничения в виде названия места проведения мероприятий для предметной области локальных мероприятий; и "что идет в кинотеатре" является активным извлечением ограничения в виде названия кинотеатра для предметной области локальных мероприятий. Эти примеры иллюстрируют, что рекомендованные заполнения формируются посредством моделей, а не просто извлекаются из базы данных ранее введенных запросов.[0145] In FIG. 14,
[0146] На Фиг.15, экран 1501 иллюстрирует продолжение идентичного примера после того, как пользователь вводит дополнительный текст 1305 в поле 1203. Рекомендованные заполнения 1303 обновляются так, что они совпадают с дополнительным текстом 1305. В этом примере, использованы данные из базы 1072 данных объектов предметной области: места проведения мероприятий, название которых начинается с "f". Следует отметить, что это представляет собой значительно меньший и более семантически релевантный набор рекомендаций, чем все слова, которые начинаются с "f". С другой стороны, рекомендации формируются посредством применения модели, в этом случае модели предметной области, которая представляет локальные мероприятия как происходящие в местах проведения мероприятий, которые являются организациями с названиями. Рекомендации активно извлекают вводы, которые должны составлять потенциально значимые записи при использовании службы локальных мероприятий.[0146] In FIG. 15,
[0147] На Фиг.16, экран 1601 иллюстрирует продолжение идентичного примера после того, как пользователь выбрал одно из рекомендованных заполнений 1303. Активное извлечение продолжается посредством подсказки пользователю дополнительно указывать тип требуемой информации, здесь посредством представления определенного числа спецификаторов 1602, из которых пользователь может выбирать. В этом примере, эти спецификаторы формируются посредством моделей предметной области, потока задач и потока диалогов. Предметной областью являются локальные мероприятия, что включает в себя категории мероприятий, которые происходят в указанные даты в указанных местоположениях и имеют названия мероприятий и участников выступления. В этом варианте осуществления, тот факт, что эти пять вариантов предлагаются пользователю, формируется из модели потока диалогов, которая указывает, что пользователей следует запрашивать относительно ограничений, которые они еще не ввели, и из модели служб, которая указывает, что эти пять ограничений являются параметрами для служб предоставления перечня локальных мероприятий, доступных для помощника. Даже выбор предпочтительных фраз, которые следует использовать в качестве спецификаторов, к примеру, "по категориям" и "участвуют", формируется из словарных баз данных по предметной области.[0147] In FIG. 16,
[0148] На Фиг.17, экран 1701 иллюстрирует продолжение идентичного примера после того, как пользователь выбрал один из спецификаторов 1602.[0148] In Fig. 17,
[0149] На Фиг.18, экран 1801 иллюстрирует продолжение идентичного примера, в котором выбранный спецификатор 1602 добавлен в поле 1203, и представляются дополнительные спецификаторы 1602. Пользователь может выбирать один из спецификаторов 1602 и/или предоставлять дополнительный ввод текста через клавиатуру 1304.[0149] In Fig. 18,
[0150] На Фиг.19, экран 1901 иллюстрирует продолжение идентичного примера, в котором выбранный спецификатор 1602 добавлен в поле 1203, и представляются еще дополнительные спецификаторы 1602. В этом примере, ранее введенные ограничения не извлекаются активно избыточно.[0150] In FIG. 19,
[0151] На Фиг.20, экран 2001 иллюстрирует продолжение идентичного примера, в котором пользователь прикасается к кнопке 1306 Go. Ввод пользователя показывается в поле 2002, а сообщение показывается в поле 2003, предоставляя обратную связь пользователю в отношении запроса, выполняемого в ответ на ввод пользователя.[0151] In FIG. 20,
[0152] На Фиг.21, экран 2101 иллюстрирует продолжение идентичного примера, в котором результаты найдены. Сообщение показывается в поле 2102. Результаты 2103, включающие в себя элементы ввода, предоставляют возможность пользователю просматривать более подробную информацию, сохранять идентифицированное мероприятие, покупать билеты, добавлять заметки и т.п.[0152] In FIG. 21,
[0153] На одном экране 2101 и другие отображаемые экраны могут прокручиваться, предоставляя возможность пользователю прокручивать вверх, чтобы видеть экран 2001 или другие ранее представленные экраны, и вносить изменения в запрос при необходимости.[0153] On the
Активное извлечение речевого вводаActive extraction of speech input
[0154] Ссылаясь теперь на Фиг.22, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения ввода для голосового или речевого ввода согласно одному варианту осуществления.[0154] Referring now to FIG. 22, a flowchart is shown illustrating a method for actively extracting input for voice or speech input, according to one embodiment.
[0155] Способ начинается 221. Помощник 1002 принимает 121 голосовой или речевой ввод в форме звукового сигнала. Служба 122 преобразования речи в текст или процессор формирует набор вариантов 124 интерпретаций текста из звукового сигнала. В одном варианте осуществления, служба 122 преобразования речи в текст реализуется с использованием, например, модуля распознавания нюансов, предлагаемого компанией Nuance Communications, Inc., Burlington, MA.[0155] The method begins 221.
[0156] В одном варианте осуществления, помощник 1002 использует статистические языковые модели, чтобы формировать варианты 124 интерпретаций текста для речевого ввода 121.[0156] In one embodiment,
[0157] Помимо этого, в одном варианте осуществления, статистические языковые модели настраиваются, чтобы искать слова, названия и фразы, которые появляются в различных моделях помощника 1002, показанного на Фиг.8. Например, по меньшей мере, в одном варианте осуществления в статистические языковые модели предоставляются слова, названия и фразы из части или всего из следующего: модели 1056 предметных областей (например, слова и фразы, связанные с рестораном и мероприятиями с приемом пищи), модели 1086 потока задач (например, слова и фразы, связанные с организацией мероприятия), модели 1087 потока диалогов (например, слова и фразы, связанные с ограничениями, которые необходимы для того, чтобы собирать вводы для резервирования ресторана), базы 1072 данных объектов предметной области (например, названия ресторанов), словарные базы 1058 данных (например, названия кухонь), модели 1088 служб (например, названия поставщиков служб, такие как OpenTable), и/или любые слова, названия или фразы, ассоциированные с любым узлом активной онтологии 1050.[0157] In addition, in one embodiment, statistical language models are tuned to look for words, titles, and phrases that appear in various models of assistant 1002 shown in FIG. For example, in at least one embodiment, words, names, and phrases from some or all of the following are provided to the statistical language models: domain models 1056 (e.g., words and phrases associated with restaurant and mealtime events),
[0158] В одном варианте осуществления, статистические языковые модели также настраиваются, чтобы искать слова, названия и фразы из долговременного персонального запоминающего устройства 1054. Например, в статистические языковые модели может предоставляться текст из элементов списка занятий, элементов списка, личных заметок, записей календаре, имен людей в списках контактов/адресных книгах, адресов электронной почты, названий улиц или городов, упомянутых в списках контактов/адресных книгах, и т.п.[0158] In one embodiment, the statistical language models are also configured to look up words, titles, and phrases from the long-term personal storage device 1054. For example, text from activity list items, list items, personal notes, calendar entries can be provided to the statistical language models. , names of people in contact lists/address books, e-mail addresses, street or city names mentioned in contact lists/address books, etc.
[0159] Компонент ранжирования анализирует варианты интерпретаций 124 и ранжирует 126 их согласно тому, насколько хорошо они соответствуют синтаксическим и/или семантическим моделям интеллектуального автоматизированного помощника 1002. Могут быть использованы любые источники ограничений на пользовательский ввод. Например, в одном варианте осуществления, помощник 1002 может ранжировать вывод интерпретатора для преобразования речи в текст согласно тому, насколько хорошо выполнен грамматический анализ интерпретаций в синтаксическом и/или семантическом смысле, модели предметной области, модели потока задач и/или модели диалогов и т.п.: он оценивает, насколько хорошо различные комбинации слов в интерпретациях текста 124 соответствуют концептам, отношениям, объектам и свойствам активной онтологии 1050 и ее ассоциированных моделей. Например, если служба 122 преобразования речи в текст формирует два варианта интерпретаций "итальянская еда на обед" и "итальянская обувь на обед", ранжирование посредством семантической релевантности 126 может ранжировать "итальянскую еду на обед" выше, если она лучше совпадает с узлами активной онтологии 1050 помощника 1002 (например, слова "итальянская", "еда" и "обед" совпадают с узлами в онтологии 1050, и они все соединяются посредством взаимосвязей в онтологии 1050, тогда как слово "обувь" не совпадает с онтологией 1050 или совпадает с узлом, который не является частью сети предметной области ужинов в ресторанах).[0159] The ranking component analyzes the interpretation options 124 and ranks 126 them according to how well they match the syntactic and/or semantic models of the intelligent
[0160] В различных вариантах осуществления, алгоритмы или процедуры, используемые посредством помощника 1002 для интерпретации вводов текста, включающие в себя любой вариант осуществления процедуры обработки естественного языка, показанной на Фиг.28, могут быть использованы для того, чтобы ранжировать и количественно оценивать варианты 124 интерпретаций текста, сформированные посредством службы 122 преобразования речи в текст.[0160] In various embodiments, the algorithms or procedures used by the
[0161] В одном варианте осуществления, если компонент ранжирования 126 определяет 128, что интерпретация речи с наивысшим рангом из интерпретаций 124 ранжируется выше указанного порогового значения, интерпретация с наивысшим рангом может быть автоматически выбрана 130. Если ни одна из интерпретаций не ранжируется выше указанного порогового значения, возможные варианты интерпретаций речи 134 представляются 132 пользователю. Пользователь затем может выбирать 136 между отображаемыми вариантами выбора.[0161] In one embodiment, if the ranking component 126 determines 128 that the highest ranked speech interpretation of the interpretations 124 ranks above a specified threshold, the highest ranking interpretation may be automatically selected 130. If none of the interpretations ranks above a specified threshold values, possible interpretations of speech 134 are presented 132 to the user. The user can then choose 136 between the displayed choices.
[0162] В различных вариантах осуществления, пользовательский выбор 136 между отображаемыми вариантами выбора может достигаться посредством любого режима ввода, включающего в себя, например, любой из режимов многомодального ввода, описанного в связи с Фиг.16. Такие режимы ввода включают в себя, без ограничения, активно извлекаемый печатаемый ввод 2610, активно извлекаемый речевой ввод 2620, активно представленный GUI для ввода 2640 и т.п. В одном варианте осуществления, пользователь может выбирать из вариантов 134 интерпретаций, например, посредством прикосновения или произнесения. В случае произнесения возможная интерпретация нового речевого ввода является сильно ограниченной посредством небольшого набора предлагаемых вариантов выбора 134. Например, если предлагается "Вы имели в виду итальянскую еду или итальянскую обувь?", пользователь может просто сказать "еда", и помощник может сопоставлять это с фразой "итальянская еда" и не получать путаницу с другими глобальными интерпретациями ввода.[0162] In various embodiments, user selection 136 between displayed choices may be achieved by any input mode, including, for example, any of the multi-modal input modes described in connection with FIG. Such input modes include, without limitation, actively retrieved typing input 2610, actively retrieved
[0163] Независимо от того, ввод выбирается 130 автоматически или выбирается 136 пользователем, результирующий ввод 138 возвращается. По меньшей мере, в одном варианте осуществления, возвращаемый ввод аннотируется 138, так что информация о том, какие варианты выбраны на этапе 136, сохраняется вместе с текстовым вводом. Это предоставляет возможность ассоциирования, например, семантических концептов или объектов, лежащих в основе строки, со строкой, когда она возвращается, что повышает точность последующей языковой интерпретации. Например, если "итальянская еда" предложена в качестве одного из вариантов 134 интерпретаций на основе семантической интерпретации Кухня=Итальянская еда, то машиночитаемая семантическая интерпретация может отправляться вместе с выбором пользователем строки "итальянская еда" в качестве аннотированного ввода текста 138.[0163] Regardless of whether the input is selected 130 automatically or selected 136 by the user, the resulting input 138 is returned. In at least one embodiment, the returned input is annotated 138 so that information about which options are selected at step 136 is stored along with the text input. This makes it possible to associate, for example, the semantic concepts or objects underlying the string with the string when it is returned, which improves the accuracy of subsequent language interpretation. For example, if "Italian food" is offered as one of the interpretation options 134 based on the semantic interpretation Cuisine=Italian Food, then the machine-readable semantic interpretation may be sent along with the user's selection of the string "Italian food" as the annotated text input 138.
[0164] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста формируются на основе интерпретаций речи, принимаемых в качестве вывода службы 122 преобразования речи в текст.[0164] In at least one embodiment, text interpretation options 124 are generated based on speech interpretations received as output from the speech-to-text service 122.
[0165] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста формируются посредством перефразирования интерпретаций речи с точки зрения их семантического значения. В некоторых вариантах осуществления, может быть несколько перефразирований идентичной интерпретации речи, рекомендующих различный смысл слова или альтернативы омонима. Например, если служба 122 преобразования речи в текст указывает "место для встречи", варианты интерпретаций, представленные пользователю, могут быть перефразированы в качестве "места для встречи (местные организации)" и "места для встречи (рестораны)".[0165] In at least one embodiment, text interpretation options 124 are formed by paraphrasing speech interpretations in terms of their semantic meaning. In some embodiments, there may be multiple paraphrases of an identical interpretation of speech recommending different meanings of the word or homonym alternatives. For example, if the speech-to-text service 122 indicates "meeting place", the interpretations presented to the user can be paraphrased as "meeting place (local organizations)" and "meeting place (restaurants)".
[0166] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста включают в себя рекомендации корректировать подстроки.[0166] In at least one embodiment, text interpretation options 124 include recommendations to correct substrings.
[0167] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста включают в себя рекомендации корректировать подстроки вариантов интерпретаций с использованием синтаксического и семантического анализа, как описано в данном документе.[0167] In at least one embodiment, text interpretation options 124 include recommendations to correct substrings of interpretation options using syntactic and semantic analysis as described herein.
[0168] По меньшей мере, в одном варианте осуществления, когда пользователь выбирает вариант интерпретации, он возвращается.[0168] In at least one embodiment, when the user selects an interpretation option, it is returned.
[0169] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы редактировать интерпретацию до того, как она возвращается.[0169] In at least one embodiment, the user is provided with an interface to edit the interpretation before it is returned.
[0170] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы продолжать дополнительный голосовой ввод до того, как ввод возвращается. Это предоставляет ему возможность инкрементно компоновать произнесение ввода, получая синтаксические и семантические коррекции, рекомендации и указания за одну итерацию.[0170] In at least one embodiment, the user is prompted with an interface to continue additional voice input before the input is returned. This gives him the ability to incrementally compose the utterance of the input, obtaining syntactic and semantic corrections, recommendations, and directions in a single iteration.
[0171] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы переходить непосредственно от 136 к этапу 111 способа активного извлечения печатаемого ввода (описано выше в связи с Фиг.11). Это предоставляет ему возможность перемежать печатаемый и произносимый ввод, получая синтаксические и семантические коррекции, рекомендации и указания на одном этапе.[0171] In at least one embodiment, the user is prompted with an interface to navigate directly from 136 to step 111 of the active type input retrieval method (described above in connection with FIG. 11). This gives him the ability to intersperse typed and spoken input, getting syntactic and semantic corrections, recommendations, and directions in one step.
[0172] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы переходить непосредственно от этапа 111 варианта осуществления активного извлечения печатаемого ввода к варианту осуществления активного извлечения речевого ввода. Это предоставляет ему возможность перемежать печатаемый и произносимый ввод, получая синтаксические и семантические коррекции, рекомендации и указания на одном этапе.[0172] In at least one embodiment, the user is provided with an interface to proceed directly from step 111 of the Active Type Input Extraction embodiment to the Active Voice Input Extraction embodiment. This gives him the ability to intersperse typed and spoken input, getting syntactic and semantic corrections, recommendations, and directions in one step.
Активное извлечение ввода на основе GUIActive GUI based input retrieval
[0173] Ссылаясь теперь на Фиг.23, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения ввода для ввода на основе GUI согласно одному варианту осуществления.[0173] Referring now to FIG. 23, a flowchart is shown illustrating a method for actively extracting input for a GUI-based input according to one embodiment.
[0174] Способ начинается 140. Помощник 1002 представляет 141 графический пользовательский интерфейс (GUI) в устройстве 1207 вывода, который может включать в себя, например, ссылки и кнопки. Пользователь взаимодействует 142, по меньшей мере, с одним GUI-элементом. Данные 144 принимаются и преобразуются 146 в универсальный формат. Преобразованные данные затем возвращаются.[0174] The method begins 140.
[0175] По меньшей мере, в одном варианте осуществления, некоторые элементы GUI формируются динамически из моделей активной онтологии, а не записываются в компьютерную программу. Например, помощник 1002 может предлагать набор ограничений, чтобы направлять службу резервирования ресторана в качестве областей для прикосновения на экране, причем каждая область представляет название ограничения и/или значение. Например, экран может иметь строки динамически сформированного GUI-макета с областями для ограничений по кухне, местоположению и диапазону цен. Если модели активной онтологии изменяются, то GUI-экран должен автоматически изменяться без перепрограммирования.[0175] In at least one embodiment, some GUI elements are generated dynamically from active ontology models rather than written into a computer program. For example,
Активное извлечение ввода рекомендаций по диалогуActively fetching input dialog recommendations
[0176] Фиг.24 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода на уровне потока диалогов согласно одному варианту осуществления. Помощник 1002 рекомендует 151 возможные ответы 152. Пользователь выбирает 154 рекомендованный ответ. Принимаемый ввод преобразуется 154 в универсальный формат. Преобразованные данные затем возвращаются.[0176] FIG. 24 is a flowchart illustrating a method for actively retrieving input at a dialog flow level, according to one embodiment.
[0177] По меньшей мере, в одном варианте осуществления, рекомендации, предлагаемые на этапе 151, предлагаются в качестве последующих этапов в поток диалогов и/или задач.[0177] In at least one embodiment, the recommendations provided in step 151 are offered as subsequent steps in the flow of dialogs and/or tasks.
[0178] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы уточнять запрос, например, с использованием параметров из модели предметной области и/или задач. Например, может быть предложено изменять допущенное местоположение или время запроса.[0178] In at least one embodiment, the recommendations offer options to refine the query, for example, using parameters from the domain model and/or tasks. For example, you may be prompted to change the allowed location or time of the request.
[0179] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы выбирать между неоднозначными альтернативными интерпретациями, предоставленными посредством процедуры или компонента языковой интерпретации.[0179] In at least one embodiment, the recommendations offer options to choose between ambiguous alternative interpretations provided by a language interpretation procedure or component.
[0180] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы выбирать между неоднозначными альтернативными интерпретациями, предоставленными посредством процедуры или компонента языковой интерпретации.[0180] In at least one embodiment, the recommendations offer options to choose between ambiguous alternative interpretations provided by a language interpretation procedure or component.
[0181] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы выбирать между следующими этапами в ассоциированной с потоком обработке модели 1087 потока диалогов. Например, модель 1087 потока диалогов может рекомендовать, чтобы после сбора ограничений для одной предметной области (например, ужина в ресторане) помощник 1002 рекомендовал другие связанные предметные области (например, ближайший фильм).[0181] In at least one embodiment, the recommendations offer options to choose between the following steps in the flow-associated processing of the
Активный мониторинг релевантных событийActive monitoring of relevant events
[0182] По меньшей мере, в одном варианте осуществления, асинхронные события могут обрабатываться в качестве вводов аналогично другим модальностям активного извлекаемого ввода. Таким образом, такие события могут предоставляться в качестве вводов в помощник 1002. После интерпретации, такие события могут обрабатываться способом, аналогичным любому другому вводу.[0182] In at least one embodiment, asynchronous events can be processed as inputs in a manner similar to other active fetchable input modalities. Thus, such events may be provided as inputs to
[0183] Например, изменение статуса рейса может инициировать отправку оповещающего уведомления пользователю. Если рейс указывается как запаздывающий, помощник 1002 может продолжать диалог посредством представления альтернативных рейсов, формирования других рекомендаций и т.п. на основе обнаруженного события.[0183] For example, a change in the status of a flight may trigger an alert notification to be sent to the user. If a flight is indicated as being late,
[0184] Такие события могут иметь любой тип. Например, помощник 1002 может обнаруживать то, что пользователь просто вернулся домой или отклонился (от указанного маршрута), или то, что курс акций достигает порогового значения, или то, что начинается телешоу, которое интересно пользователю, или то, что интересующий музыкант совершает турне в данном районе. В любом из этих случаев, помощник 1002 может продолжать диалог практически идентично тому, как если сам пользователь инициирует запрос. В одном варианте осуществления, события могут быть основаны даже на данных, предоставляемых из других устройств, например, чтобы сказать пользователю, когда коллега вернулся с обеда (устройство коллеги может передавать такое событие в устройство пользователя, и в этот момент времени помощник 1002, установленный в устройстве пользователя, реагирует соответствующим образом).[0184] Such events can be of any type. For example,
[0185] В одном варианте осуществления, события могут быть уведомлениями или оповещениями из календаря, часов, приложения работы с напоминаниями или со списком занятий. Например, оповещение из приложения для работы с календарем относительно даты ужина может инициировать диалог с помощником 1002 относительно встречи на ужине в ресторане. Диалог может продолжаться, как если пользователь только что произнес или напечатал информацию относительно предстоящего ужина в ресторане, к примеру, "ужин на двоих в Сан-Франциско".[0185] In one embodiment, the events may be notifications or alerts from a calendar, clock, reminder application, or activity list. For example, an alert from a calendar application regarding a dinner date may initiate a dialogue with
[0186] В одном варианте осуществления, контекст возможного триггера 162 по событиям может включать в себя информацию о людях, местах, временах и другие данные. Эти данные могут быть использованы в качестве части ввода в помощник 1002, который следует использовать на различных этапах обработки.[0186] In one embodiment, the context of the possible event trigger 162 may include information about people, places, times, and other data. This data may be used as part of the input to
[0187] В одном варианте осуществления, эти данные из контекста триггера 162 по событиям могут быть использованы для того, чтобы разрешать неоднозначность речевых вводов или вводов текста от пользователя. Например, если оповещение относительно календарного мероприятия включает в себя имя человека, приглашенного на мероприятие, эта информация может помогать разрешать неоднозначность ввода, который может сопоставлять несколько человек с идентичным или аналогичным именем.[0187] In one embodiment, this data from the context of the event trigger 162 can be used to disambiguate speech inputs or text inputs from the user. For example, if an alert regarding a calendar event includes the name of a person invited to the event, this information can help disambiguate input that may match multiple people with the same or similar name.
[0188] Ссылаясь теперь на Фиг.25, показана блок-схема последовательности операций, иллюстрирующая способ для активного мониторинга релевантных событий согласно одному варианту осуществления. В этом примере, события триггера по событиям являются наборами ввода 162. Помощник 1002 отслеживает на предмет 161 таких событий. Обнаруженные события могут фильтроваться и сортироваться 164 для семантической релевантности с использованием моделей, данных и информации, доступной из других компонентов в интеллектуальном автоматизированном помощнике 1002. Например, для события, которое сообщает изменение в статусе рейса, может предоставляться более высокая релевантность, если записи кратковременного или долговременного запоминающего устройства для пользователя указывают, что пользователь находится на этом рейсе и/или выполняет запрос о нем в помощник 1002. Эта сортировка и фильтрация затем может представлять только главные события для обзора пользователем, который затем может выбирать одно или более из них и воздействовать на них.[0188] Referring now to FIG. 25, a flowchart is shown illustrating a method for actively monitoring relevant events according to one embodiment. In this example, the event trigger events are input sets 162.
[0189] Данные событий преобразуются 166 в универсальный формат ввода и возвращаются.[0189] The event data is converted 166 to the universal input format and returned.
[0190] По меньшей мере, в одном варианте осуществления, помощник 1002 может заранее предлагать службы, ассоциированные с событиями, которые рекомендованы для внимания пользователя. Например, если оповещение по статусу рейса указывает, что рейс может быть отменен, помощник 1002 может рекомендовать пользователю поток задач для повторного планирования маршрута или заказа отеля.[0190] In at least one embodiment,
Пример компонента(ов) извлечения вводаExample of input fetch component(s)
[0191] Следующий пример имеет намерение помогать иллюстрировать некоторые из различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) 1094 активного извлечения ввода.[0191] The following example is intended to help illustrate some of the various types of functions, operations, actions, and/or other features that can be provided by active input retrieval component(s) 1094.
Пример: Заполнение команды (что пользователь может сказать помощнику 1002?)Example: Completing a command (what can the user say to
[0192] Пользователю отображается поле ввода текста с общей инструкцией, чтобы ввести "Чем хотите заняться?" В зависимости от контекста и пользовательского ввода, предоставляется любой из нескольких ответов системы. Примеры показаны ниже.[0192] The user is presented with a text input field with a general instruction to enter "What do you want to do?" Depending on the context and user input, any of several system responses are provided. Examples are shown below.
Случай: Нулевой вводCase: Zero input
- Заказать столик, комнату, место, ...
- Заказать еду, цветы, ...
- Купить билет, книгу, DVD, ...
- Составить расписание для встречи, мероприятия, ...
- Напомнить о занятии, ...
- Пояснить результаты- Find restaurants, hotels, movies
- Book a table, room, place, ...
- Order food, flowers, ...
- Buy ticket, book, DVD, ...
- Make a schedule for a meeting, event,...
- Remind about the lesson, ...
- Explain results
Случай: Ввод первого словаCase: Entering the first word
F|In an empty dialog context, if the user types the first letter of any command, it is recommended. For example,
F|
-- Find restaurants, hotels, movies
-
Случай: Ввод ключевого словаCase: Entering a keyword
Re|In an empty dialog context, if the user types the first two letters of any keyword, it is recommended, as is the command. For example,
Re|
- Найти рестораны по местоположению, кухне
-- Remind about the lesson, ...
- Find restaurants by location, cuisine
-
Случай: Подсказка для аргументовCase: Hint for Arguments
Например,
Find_ | (Найти)The user has entered or selected a "command" verb and nothing else.
For example,
find_ | (Find)
- отели по местоположению, доступности, ...
- фильмы по местоположению, жанру, ...
- название места- restaurants by location, cuisine
- hotels by location, accessibility, ...
- movies by location, genre, ...
- place name
Случай: Рекомендация критериевCase: Recommendation criteria
Find restaurants_ | (Найти рестораны)The user has already entered enough to set the task and domain, and is now prompted as a prompt for order restrictions.
Find restaurants_ | (Find restaurants)
- около дома, офиса, название места
- название ресторана с названием
-- in the city, postal code
- near home, office, place name
- the name of the restaurant with the name
-
Случай: Добавление критериевCase: Adding Criteria
Find restaurants in_ | (Найти рестораны в)The user said "in" and is now prompted for location hints
Find restaurants in_ | (Find restaurants in)
- Пало-Альто, Калифорния
- Менло-Парк, Калифорния- city, postal code
- Palo Alto, California
- Menlo Park, California
Find restaurants near_ | (Найти рестораны около)The user said "about" and is now prompted as a hint for locations
Find restaurants near_ | (Find restaurants nearby)
- моей работы
- Пало-Альто, Калифорния
- Менло-Парк, Калифорния- of my house
- my work
- Palo Alto, California
- Menlo Park, California
Случай: Добавление местоположения или других ограниченийCase: Adding location or other restrictions
- с доступностью сегодня вечером, завтра, ...
- описанные как романтичные, с хорошим обслуживанием- offering a type of food or cuisine
- with availability tonight, tomorrow, ...
- described as romantic, with good service
- завтра
- в 19:00
- в 21:00
- в другое время или дату- tonight
- tomorrow
- at 19:00
- at 21:00
- other time or date
Случай: Начало с ограничения, неизвестной задачи или предметной областиCase: Starting with a constraint, unknown task or domain
ский вводUser-
input
- отели по местоположению, доступности, ...
- фильмы по местоположению, жанру, ...
-- restaurants by location, cuisine, ...
- hotels by location, accessibility, ...
- movies by location, genre, ...
-
- мероприятия по местоположению, ...
- клубы по местоположению- movies by location, genre, ...
- location activities,...
- clubs by location
Пример: Заполнение названияExample: Filling in the title
[0193] Здесь, пользователь напечатал некоторый текст без подтверждения какой-либо из команд, или он просто дополняет команду с названием объекта. Система может пытаться заполнять названия в зависимости от контекста. Она также разрешает неоднозначность предметной области.[0193] Here, the user has typed some text without confirming any of the commands, or he simply completes the command with the name of the object. The system may try to fill in the names depending on the context. It also resolves domain ambiguity.
Случай: слова без контекстаCase: words without context
- Ill Forgotten Gains (фильм)- Il Fornaio (restaurant)
- Ill Forgotten Gains (film)
- рестораны- movies
- restaurants
Случай: название с контекстомCase: title with context
-- Il Fornaio (restaurant)
-
- Римские каникулы (фильм)- romantic
- Roman Holiday (film)
Пример: Выбор значений из набораExample: Selecting values from a set
[0194] Здесь, пользователь отвечает на системный запрос, чтобы вводить значение для конкретного параметра, такого как местоположение, время, кухня или жанр. Пользователь может либо выбирать из списка, либо вводить значение. По мере того, как он печатает, совпадающие элементы из списка показываются как варианты. Примеры показаны ниже.[0194] Here, the user responds to a system request to enter a value for a specific parameter such as location, time, cuisine, or genre. The user can either select from a list or enter a value. As it prints, matching items from the list are shown as options. Examples are shown below.
Случай: выбор valueclassCase: valueclass selection
- мороженое
- хот-доги- hamburgers
- ice cream
- hot dogs
- хот-доги
- острый соус- hamburgers
- hot dogs
- spicy sauce
- сегодня вечером
- в пятницу вечером- today
- tonight
- Friday night
Пример: Многократное использование предыдущих командExample: Reusing Previous Commands
[0195] Предыдущие запросы также являются вариантами, которые следует заполнять в интерфейсе автозаполнения. Они могут просто сопоставляться как строки (когда поле ввода является пустым, и нет известных ограничений), или они могут рекомендоваться как релевантные в определенных ситуациях.[0195] The previous requests are also options to be filled in the autocomplete interface. They may simply match as strings (when the input field is empty and there are no known restrictions), or they may be recommended as relevant in certain situations.
Случай: заполнение предыдущих запросовCase: filling previous requests
- фильмы с итальянскими актерами в главной роли (недавний запрос)- Italian restaurants (regular filling)
- films starring Italian actors (recent request)
- купить книгу "Naked lunch"- eateries offering dinners at marin (recent request)
- buy the book "Naked lunch"
Пример: Извлечение элементов персонального запоминающего устройстваExample: Retrieving Personal Storage Items
[0196] Помощник 1002 может запоминать определенные мероприятия и/или объекты в персональном запоминающем устройстве, ассоциированном с пользователем. Автозаполнение может быть выполнено на основе таких запомненных элементов. Примеры приведены ниже.[0196]
Случай: заполнение по мероприятиям и объектам в персональном запоминающем устройствеCase: filling by events and objects in a personal storage device
- фильмы с названием "Something about Mary"- Lunch with Mary on Saturday (from My Events)
- movies titled "Something about Mary"
- купить книгу "Naked lunch" (из My Todos (Мои занятия))- Lunch with Mary on Saturday (from My Events)
- buy the book "Naked lunch" (from My Todos (My classes))
Активное извлечение многомодального вводаActive retrieval of multimodal input
[0197] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода может обрабатывать ввод из множества модальностей ввода. По меньшей мере, одна модальность может быть реализована с процедурой активного извлечения ввода, которая пользуется преимуществами конкретных видов вводов и способов для выбора из предлагаемых вариантов. Как описано в данном документе, это могут быть варианты осуществления процедур для активного извлечения ввода для ввода текста, речевого ввода, ввода на основе GUI, ввода в контексте диалога и/или ввода, являющегося результатом триггеров по событиям.[0197] In at least one embodiment, active input extraction component(s) 1094 can process input from multiple input modalities. At least one modality may be implemented with an active input retrieval procedure that takes advantage of specific input types and methods to select from the options provided. As described herein, these may be embodiments of procedures for actively retrieving input for text input, speech input, GUI-based input, dialog-context input, and/or input resulting from event triggers.
[0198] По меньшей мере, в одном варианте осуществления, для одного экземпляра интеллектуального автоматизированного помощника 1002, может быть поддержка одного или более (или любой комбинации) из печатаемого ввода, речевого ввода, GUI-ввода, диалогового ввода и/или ввода мероприятий.[0198] In at least one embodiment, for one instance of the intelligent
[0199] Ссылаясь теперь на Фиг.26, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения многомодального ввода согласно одному варианту осуществления. Способ начинается 100. Вводы могут быть приняты одновременно из одной или более либо любой комбинации модальностей ввода в любой последовательности. Таким образом, способ включает в себя активное извлечение печатаемого ввода 2610, речевого ввода 2620, ввода 2640 на основе GUI, ввода 2650 в контексте диалога и/или ввода 2660, являющегося результатом триггеров по событиям. Любые или все из этих источников ввода унифицируются в унифицированный формат 2690 ввода и возвращаются. Унифицированный формат 2690 ввода предоставляет возможность разработки и работы других компонентов интеллектуального автоматизированного помощника 1002 независимо от конкретной модальности ввода.[0199] Referring now to FIG. 26, a flowchart is shown illustrating a method for actively retrieving a multi-modal input according to one embodiment. The method begins 100. Inputs may be received simultaneously from one or more or any combination of input modalities in any order. Thus, the method includes actively retrieving typed input 2610,
[0200] Рекомендация активных указаний для нескольких модальностей и уровней предоставляет ограничение и указания по вводу за рамками ограничений и указаний, доступных для изолированных модальностей. Например, виды рекомендаций, предлагаемых для того, чтобы выбирать между этапами речи, текста и диалога, являются независимыми, так что их комбинация является значительным усовершенствованием по сравнению с добавлением технологий активного извлечения в отдельные модальности или уровни.[0200] Recommending active guidelines for multiple modalities and levels provides restriction and input guidelines beyond the restrictions and guidelines available for isolated modalities. For example, the kinds of recommendations offered for choosing between speech, text, and dialogue stages are independent, so that their combination is a significant improvement over adding active extraction technologies to separate modalities or levels.
[0201] Комбинирование нескольких источников ограничений, как описано в данном документе (синтаксический/лингвистический, словарь, базы данных объектов, модели предметных областей, модели задач, модели служб и т.п.), и нескольких мест, в которых эти ограничения могут активно применяться (речь, текст, GUI, диалог и асинхронные события), предоставляет новый уровень функциональности для человеко-машинного взаимодействия.[0201] A combination of multiple sources of constraints as described herein (syntactic/linguistic, vocabulary, object databases, domain models, task models, service models, etc.) and multiple places where these constraints can be active apply (speech, text, GUI, dialog, and asynchronous events) provides a new level of functionality for human-machine interaction.
Компонент(ы) 1056 моделей предметных областейComponent(s) 1056 domain models
[0202] Компонент(ы) моделей 1056 предметных областей включает в себя представления концептов, объектов, отношений, свойств и экземпляров предметной области. Например, модель 1622 предметной области ужинов в ресторанах может включать в себя концепт ресторана в качестве организации с названием и адресом и телефонным номером, концепт мероприятия с приемом пищи с количеством участников званого вечера, а также дату и время, ассоциированные с рестораном.[0202] The component(s) of
[0203] По меньшей мере, в одном варианте осуществления, компонент(ы) 1056 моделей предметных областей помощника 1002 может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0203] In at least one embodiment, the domain model component(s) 1056 of the
- Компонент(ы) 1056 модели предметной области может быть использован посредством автоматизированного помощника 1002 для нескольких процессов, включающих в себя: извлечение ввода 100, интерпретацию естественного языка 200, координацию для служб 400 и формирование вывода 600.- The domain model component(s) 1056 can be used by the
- Компонент(ы) 1056 модели предметной области может предоставлять списки слов, которые могут совпадать с концептом предметной области или объектом, к примеру, названия ресторанов, которые могут использоваться для активного извлечения ввода 100 и обработки естественного языка 200.- The domain model component(s) 1056 may provide lists of words that may match a domain concept or object, such as restaurant names, that may be used for
- Компонент(ы) 1056 модели предметной области может классифицировать варианты слов в процессах, например, чтобы определять то, что слово является названием ресторана.- Component(s) 1056 of the domain model can classify the variants of words in the processes, for example, to determine that the word is the name of a restaurant.
- Компонент(ы) 1056 модели предметной области может показывать взаимосвязь между частичной информацией для интерпретации естественного языка, например, что кухня может быть ассоциирована с коммерческими организациями (например, "местная мексиканская еда" может быть интерпретировано как "найти рестораны со стилем= мексиканский", и этот логический вывод является возможным вследствие информации в модели 1056 предметной области).- Component(s) 1056 of the domain model can show the relationship between partial information for natural language interpretation, e.g. that a cuisine can be associated with commercial organizations (e.g. "local Mexican food" can be interpreted as "find restaurants with style=Mexican" , and this inference is possible due to the information in the domain model 1056).
- Компонент(ы) 1056 модели предметной области может организовывать информацию о службах, используемых в оркестровке 1082 служб, например, что конкретная web-служба может предоставлять обзоры ресторанов.- Component(s) 1056 domain model can organize information about the services used in
- Компонент(ы) 1056 модели предметной области может предоставлять информацию для формирования перефразирований на естественном языке и другого форматирования вывода, например, посредством предоставления канонических способов описания концептов, отношений, свойств и экземпляров.The domain model component(s) 1056 can provide information for generating natural language paraphrases and other output formatting, for example, by providing canonical ways of describing concepts, relationships, properties, and instances.
[0204] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1056 моделей предметных областей могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1056 моделей предметных областей могут быть выполнены, реализованы и/или инициированы посредством одного или более следующих типов систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинаций вышеозначенного):[0204] According to specific embodiments, multiple instances or sub-processes of domain model component(s) 1056 may be simultaneously implemented and/or initiated through the use of one or
- Компонент(ы) 1056 моделей предметных областей может быть реализован как структуры данных, которые представляют концепты, отношения, свойства и экземпляры. Эти структуры данных могут быть сохранены в запоминающем устройстве, файлах или базах данных.- Component(s) 1056 domain models can be implemented as data structures that represent concepts, relationships, properties and instances. These data structures may be stored in storage, files, or databases.
- Доступ к компоненту(ам) 1056 модели предметной области может быть реализован через прямые API, сетевые API, интерфейсы запросов к базе данных и т.п.- Access to the component(s) 1056 of the domain model can be implemented through direct APIs, network APIs, database query interfaces, and the like.
- Создание и сопровождение компонента(ов) 1056 моделей предметных областей может осуществляться, например, через прямое редактирование файлов, транзакции базы данных и/или с помощью инструментальных средств редактирования моделей предметной области.- Creation and maintenance of component(s) 1056 domain models can be done, for example, through direct file editing, database transactions and/or using tools for editing domain models.
- Компонент(ы) 1056 моделей предметных областей может быть реализован как часть или в ассоциации с активными онтологиями 1050, которые комбинируют модели с конкретизациями моделей для серверов и пользователей.The domain model component(s) 1056 may be implemented as part of or in association with
[0205] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1056 моделей предметных областей могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1056 моделей предметных областей. Например, инициирование или начало реализации одного или более различных подпроцессов, или экземпляры компонента(ов) 1056 моделей предметных областей может быть инициировано, когда требуется информация модели предметной области, в том числе в ходе извлечения ввода, интерпретации ввода, идентификации задач и предметных областей, обработки естественного языка, оркестровки служб и/или форматирования вывода для пользователей.[0205] According to various embodiments, one or more different sub-processes or instances of domain model component(s) 1056 may be triggered in response to the detection of one or more conditions or events that satisfy one or more different types of minimum threshold criteria for triggering, by at least one instance of the component(s) 1056 domain models. For example, initiating or starting implementation of one or more different sub-processes, or instances of domain model component(s) 1056 may be triggered when domain model information is required, including during input retrieval, input interpretation, task and domain identification, natural language processing, service orchestration, and/or output formatting for users.
[0206] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1056 моделей предметных областей может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Например, данные из компонента(ов) 1056 модели предметной области могут быть ассоциированы с другими компонентами моделирования на основе моделей, включающими в себя словарь 1058, модули 1060 распознавания языковых конструкций, модели 1087 потока диалогов, модели 1086 потока задач, модели 1088 характеристик служб, базы 1072 данных объектов предметной области и т.п. Например, организации в базах 1072 данных объектов предметной области, которые классифицируются как рестораны, могут быть известными посредством идентификаторов типов, которые поддерживаются в компонентах модели предметной области ужинов в ресторанах.[0206] In at least one embodiment, a given instance of domain model component(s) 1056 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. For example, data from domain model component(s) 1056 can be associated with other model-based modeling components, including
Пример компонента(ов) моделей предметных областейExample component(s) of domain models
[0207] Ссылаясь теперь на Фиг.27, показан набор снимков экрана, иллюстрирующих пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) 1056 моделей предметных областей согласно одному варианту осуществления.[0207] Referring now to FIG. 27, a set of screenshots is shown illustrating an example of various types of functions, operations, actions, and/or other features that can be provided by domain model component(s) 1056 according to one embodiment.
[0208] По меньшей мере, в одном варианте осуществления, компонент(ы) 1056 моделей предметных областей является унифицирующим представлением данных, которое обеспечивает представление информации, показанной на экранах 103A и 103B, о ресторане, которая комбинирует данные из нескольких различных источников данных и служб и которая включает в себя, например: название, адрес, категории организаций, телефонный номер, идентификатор для сохранения в долговременное персональное запоминающее устройство, идентификатор для совместного использования по электронной почте, обзоры из нескольких источников, картографические координаты, личные заметки и т.п.[0208] In at least one embodiment, domain model component(s) 1056 is a unifying data view that provides a view of the information shown on
Компонент(ы) 1070 языкового интерпретатораComponent(s) 1070 language interpreter
[0209] По меньшей мере, в одном варианте осуществления, компонент(ы) 1070 языкового интерпретатора помощника 1002 может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0209] In at least one embodiment, the language interpreter component(s) 1070 of the
• Анализ пользовательского ввода и идентификация набора результатов грамматического анализа.• Parsing user input and identifying a set of grammar analysis results.
- Пользовательский ввод может включать в себя любую информацию от пользователя и из контекста его устройства, которая может способствовать пониманию намерения пользователя, которая может включать в себя, например, одно или более из следующего (или комбинации вышеозначенного): последовательности слов, идентификационные данные жестов или GUI-элементов, участвующих в извлечении ввода, текущий контекст диалога, текущее приложение устройства и его текущие объекты данных и/или любые другие персональные динамические данные, полученные о пользователе, такие как местоположение, время и т.п. Например, в одном варианте осуществления, пользовательский ввод имеет форму универсального аннотированного формата 2690 ввода, являющегося результатом 1094 активного извлечения ввода.- The user input may include any information from the user and from the context of their device that may assist in understanding the user's intent, which may include, for example, one or more of the following (or a combination of the above): word sequences, gesture identities, or GUI elements involved in retrieving input, the current dialog context, the current device application and its current data objects, and/or any other personal dynamic data obtained about the user, such as location, time, etc. For example, in one embodiment, the user input is in the form of a generic annotated
- Результаты грамматического анализа являются ассоциированиями данных в пользовательском вводе с концептами, взаимосвязями, свойствами, экземплярами и/или другими узлами и/или структурами данных в моделях, базах данных и/или других представлениях намерения и контекста пользователя. Ассоциирования результатов грамматического анализа могут быть сложными преобразованиями из наборов и последовательностей слов, сигналов и других элементов пользовательского ввода в один или более ассоциированных концептов, отношений, свойств, экземпляров, других узлов и/или структур данных, описанных в данном документе.- Parsing results are associations of data in user input with concepts, relationships, properties, instances, and/or other nodes and/or data structures in models, databases, and/or other representations of user intent and context. Parsing result associations can be complex transformations from sets and sequences of words, signals, and other user input elements into one or more of the associated concepts, relationships, properties, instances, other nodes, and/or data structures described herein.
• Анализ пользовательского ввода и идентификация набора результатов синтаксического анализа, которые являются результатами грамматического анализа, которые ассоциируют данные в пользовательском вводе со структурами, которые представляют синтаксические части речи, выражения и фразы, включающие в себя многословные названия, структуру предложений и/или другие структуры грамматического графа. Результаты синтаксического анализа описываются в элементе 212 процедуры обработки естественного языка, описанной в связи с Фиг.28.• Parsing user input and identifying a set of parsing results, which are grammar analysis results that associate data in user input with structures that represent syntactic parts of speech, expressions, and phrases, including wordy names, sentence structure, and/or other grammatical structures. graph. The parsing results are described in
• Анализ пользовательского ввода и идентификация набора результатов семантического анализа, которые являются результатами грамматического анализа, которые ассоциируют данные в пользовательском вводе со структурами, которые представляют концепты, взаимосвязи, свойства, объекты, величины, суждения и/или другие представления значения и намерения пользователя. В одном варианте осуществления, эти представления значения и намерения представляются посредством наборов и/или элементов, и/или экземпляров моделей или баз данных, и/или узлов в онтологиях, как описано в элементе 220 процедуры обработки естественного языка, описанной в связи с Фиг.28.• Parsing user input and identifying a set of semantic analysis results, which are grammatical analysis results that associate the data in the user input with structures that represent concepts, relationships, properties, objects, quantities, judgments, and/or other representations of the user's meaning and intent. In one embodiment, these representations of meaning and intent are represented by sets and/or elements and/or instances of models or databases and/or nodes in ontologies, as described in
• Разрешение неоднозначности между альтернативными результатами синтаксического или семантического анализа, как описано в элементе 230 процедуры обработки естественного языка, описанной в связи с Фиг.28.• Disambiguation between alternative results of syntactic or semantic analysis, as described in
• Определение того, является или нет частично печатаемый ввод синтаксически и/или семантически значимым в процедуре автозаполнения, к примеру, в процедуре, описанной в связи с Фиг.11.• Determining whether or not a partially typed input is syntactically and/or semantically meaningful in an autocomplete routine, such as the routine described in connection with FIG.
• Помощь в формировании рекомендованных заполнений 114 в процедуре автозаполнения, к примеру, в процедуре, описанной в связи с Фиг.11.• Assistance in generating recommended
• Определение того, являются или нет интерпретации произносимого ввода синтаксически и/или семантически значимыми в процедуре речевого ввода, к примеру, в процедуре, описанной в связи с Фиг.22.• Determining whether or not interpretations of spoken input are syntactically and/or semantically meaningful in a speech input procedure, eg, in the procedure described in connection with FIG.
[0210] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1070 языкового интерпретатора могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.[0210] According to specific embodiments, multiple instances or subprocesses of language interpreter component(s) 1070 may be simultaneously implemented and/or initiated through the use of one or
[0211] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1070 языкового интерпретатора могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1070 языкового интерпретатора. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1070 языкового интерпретатора, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0211] According to various embodiments, one or more different subprocesses or instances of language interpreter component(s) 1070 may be initiated in response to the detection of one or more conditions or events that satisfy one or more different types of minimum threshold criteria for triggering at least least one instance of the component(s) 1070 language interpreter. Various examples of conditions or events that may trigger or begin implementation of one or more different subprocesses or instances of language interpreter component(s) 1070 may include, but are not limited to, one or more of the following (or combinations of the foregoing):
• при извлечении ввода, включающем в себя, но не только:• when extracting input, including but not limited to:
- рекомендацию возможных заполнений печатаемого ввода 114 (Фиг.11);- the recommendation of possible fillings of the printed input 114 (Fig.11);
- ранжирование интерпретаций речи 126 (Фиг.22);- ranking speech interpretations 126 (FIG. 22);
- при рекомендации неоднозначностей как рекомендованных ответов в диалоге 152 (Фиг.24);- when recommending ambiguities as recommended answers in dialogue 152 (Fig.24);
• когда результат извлечения ввода доступен, в том числе, когда ввод извлекается посредством любого режима активного извлечения 100 многомодального ввода.• when an input retrieval result is available, including when an input is retrievable via any of the multimodal input
[0212] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1070 языкового интерпретатора может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части такой информации базы данных доступ может осуществляться через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) языкового интерпретатора, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0212] In at least one embodiment, a given instance of language interpreter component(s) 1070 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of such database information may be accessed through communication with one or more local and/or remote storage devices. Examples of various types of data that can be accessed by the language interpreter component(s) may include, but are not limited to, one or more of the following (or combinations of the above):
- модели 1056 предметных областей;- models of 1056 subject areas;
- словарь 1058;-
- базы 1072 данных объектов предметной области;-
- кратковременное запоминающее устройство 1052;- short-
- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;
- модели 1086 потока задач;-
- модели 1087 потока диалогов;-
- модели 1088 характеристик служб.-
[0213] Также ссылаясь теперь на Фиг.29, показан снимок экрана, иллюстрирующий обработку естественного языка согласно одному варианту осуществления. Пользователь предоставляет (через голос или текст) языковой ввод 2902, состоящий из фразы "кто играет в эти выходные в filmore". Эта фраза отражается пользователю на экране 2901. Компонент(ы) 1070 языкового интерпретатора покомпонентно обрабатывает ввод 2902 и формирует результат грамматического анализа. Результат грамматического анализа ассоциирует этот ввод с запросом, чтобы показывать локальные мероприятия, которые назначены на любой из предстоящих выходных дней в любом месте проведения мероприятий, название которого совпадает с "filmore". Перефразирование результатов грамматического анализа показано как 2903 на экране 2901.[0213] Also referring now to FIG. 29, a screenshot is shown illustrating natural language processing according to one embodiment. The user provides (via voice or text) a
[0214] Также ссылаясь теперь на Фиг.28, показана блок-схема последовательности операций способа, иллюстрирующая пример способа для обработки естественного языка согласно одному варианту осуществления.[0214] Also referring now to FIG. 28, a flowchart is shown illustrating an example of a method for natural language processing according to one embodiment.
[0215] Способ начинается 200. Принимается языковой ввод 202, такой как строка "Кто играет в эти выходные в filmore" в примере по Фиг.29. В одном варианте осуществления, ввод расширяется посредством текущей контекстной информации, такой как текущее местоположение пользователя и местное время. При сопоставлении 210 слов/фраз, компонент(ы) 1070 языкового интерпретатора находит ассоциирования между пользовательским вводом и концептами. В этом примере, ассоциирования находятся между строкой "играет" и концептом перечней в местах проведения мероприятий; строкой "в эти выходные" (вместе с текущим местным временем пользователя) и конкретизацией аппроксимированного периода времени, который представляет предстоящие выходные; и строкой "filmore" с названием места проведения мероприятий. Сопоставление 210 слов/фраз может использовать данные, например, из модулей 1060 распознавания языковых конструкций, словарной базы 1058 данных, активной онтологии 1050, кратковременного персонального запоминающего устройства 1052 и долговременного персонального запоминающего устройства 1054.[0215] The method starts 200. Language input 202 is received, such as the string "Who's playing filmore this weekend" in the example of FIG. In one embodiment, the input is expanded with current contextual information such as the user's current location and local time. When matching 210 words/phrases, language interpreter component(s) 1070 finds associations between user input and concepts. In this example, the associations are between the string "plays" and the concept of listings in venues; the string "this weekend" (together with the user's current local time) and a specification of an approximate time period that represents the coming weekend; and the string "filmore" with the name of the venue. Word/
[0216] Компонент(ы) 1070 языкового интерпретатора формирует варианты 212 синтаксического анализа, которые включают в себя выбранный результат грамматического анализа, но также могут включать в себя другие результаты грамматического анализа. Например, другие результаты грамматического анализа могут включать в себя результаты, при которых "играет" ассоциировано с другими предметными областями, к примеру, играми, или с категорией мероприятия, такого как спортивные соревнования.[0216] The language interpreter component(s) 1070 generates
[0217] Кратко- и/или долговременное запоминающее устройство 1052, 1054 также может быть использовано посредством компонента(ов) 1070 языкового интерпретатора при формировании вариантов 212 синтаксического анализа. Таким образом, ввод, который предоставлен ранее в идентичном сеансе, и/или известная информация о пользователе могут быть использованы для того, чтобы повышать производительность, уменьшать неоднозначность и усиливать разговорный характер взаимодействия. Данные из активной онтологии 1050, моделей 1056 предметных областей и моделей 1086 потока задач также могут быть использованы для того, чтобы реализовывать основанное на обосновании рассуждение при определении допустимых вариантов 212 синтаксического анализа.[0217] Short-term and/or long-
[0218] При семантическом согласовании 220, компонент(ы) 1070 языкового интерпретатора рассматривает комбинации возможных результатов грамматического анализа согласно тому, насколько хорошо они соответствуют семантическим моделям, к примеру, моделям предметных областей и базам данных. В этом случае, грамматический анализ включает в себя ассоциирования (1) "играет" (слово в пользовательском вводе) в качестве "локального мероприятия в месте проведения мероприятий" (часть модели 1056 предметной области, представленной посредством кластера узлов в активной онтологии 1050) и (2) "filmore" (другое слово во вводе) в качестве совпадения с названием объекта в базе 1072 данных объектов предметной области для мест проведения локальных мероприятий, которое представляется посредством элемента модели предметной области и узла активной онтологии (название места проведения мероприятий).[0218] In
[0219] Семантическое согласование 220 может использовать данные, например, из активной онтологии 1050, кратковременного персонального запоминающего устройства 1052 и долговременного персонального запоминающего устройства 1054. Например, семантическое согласование 220 может использовать данные из предыдущих ссылок на места проведения мероприятий или локальные мероприятия в диалоге (из кратковременного персонального запоминающего устройства 1052) или любимые места проведения мероприятий (из долговременного персонального запоминающего устройства 1054).[0219]
[0220] Набор вариантов результатов (или потенциальных результатов) семантического анализа формируется 222.[0220] A set of variants of the results (or potential results) of the semantic analysis is formed 222.
[0221] На этапе 230 разрешения неоднозначности, компонент(ы) 1070 языкового интерпретатора взвешивает основанную на обосновании интенсивность вариантов 222 результатов семантического анализа. В этом примере, комбинация грамматического анализа "играет" в качестве "локального мероприятия в месте проведения мероприятий" и совпадения "filmore" в качестве названия места проведения мероприятий является более строгим совпадением с моделью предметной области, чем альтернативные комбинации, в которых, например, "играет" ассоциировано с моделью предметной области для спортивных состязаний, но нет ассоциирования в предметной области спортивных состязаний для "filmore".[0221] At the
[0222] Разрешение неоднозначности 230 может использовать данные, например, из структуры активной онтологии 1050. По меньшей мере, в одном варианте осуществления, соединения между узлами в активной онтологии предоставляют основанную на обосновании поддержку для разрешения неоднозначности между вариантами 222 результатов семантического анализа. Например, в одном варианте осуществления, если три узла активной онтологии семантически совпадают и все соединяются в активной онтологии 1050, это указывает более высокую основанную на обосновании интенсивность семантического анализа, чем когда эти совпадающие узлы не соединены или соединены посредством более длинных путей соединений в активной онтологии 1050. Например, в одном варианте осуществления семантического согласования 220, для грамматического анализа, который совпадает как с "локальное мероприятие в месте проведения мероприятий", так и с "название места проведения мероприятий", предоставляется расширенная основанная на обосновании поддержка, поскольку комбинированные представления этих аспектов намерения пользователя соединяются посредством ссылок и/или отношений в активной онтологии 1050: в этом случае, узел локального мероприятия соединяется с узлом места проведения мероприятий, который соединяется с узлом названия места проведения мероприятий, который соединяется с названием объекта в базе данных названий мест проведения мероприятий.[0222]
[0223] По меньшей мере, в одном варианте осуществления, соединения между узлами в активной онтологии, которые предоставляют основанную на обосновании поддержку для разрешения неоднозначности между вариантами 222 результатов семантического анализа, являются направленными дугами, формирующими решетку логического вывода, в которой совпадающие узлы представляют обоснование для узлов, с которыми они соединяются посредством направленных дуг.[0223] In at least one embodiment, the connections between nodes in the active ontology that provide justification-based support for resolving ambiguities between semantic analysis results
[0224] На этапе 232, компонент(ы) 1070 языкового интерпретатора сортирует и выбирает 232 главные варианты семантического анализа в качестве представления намерения 290 пользователя.[0224] At
База(ы) 1072 данных объектов предметной областиDatabase(s) of 1072 domain object data
[0225] По меньшей мере, в одном варианте осуществления, база(ы) 1072 данных объектов предметной области может быть выполнена с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0225] In at least one embodiment, the domain object database(s) 1072 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
• Сохранение данных об объектах предметной области. Объекты предметной области являются сущностями в мире или в вычислительном окружении, которые могут моделироваться в моделях предметных областей. Примеры могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):• Saving data about the objects of the subject area. Domain objects are entities in the world or in a computing environment that can be modeled in domain models. Examples may include, but are not limited to, one or more of the following (or combinations of the above):
- организации любого вида;- organizations of any kind;
- фильмы, видео, песни и/или другие музыкальные продукты и/или любые другие развлекательные продукты с названием;- films, videos, songs and/or other musical products and/or any other entertainment products with a title;
- продукты любого вида;- products of any kind;
- мероприятия;- activity;
- записи в календаре;- entries in the calendar;
- города, штаты, страны, окрестности и/или другие географические, геополитические и/или геопространственные точки или области;- cities, states, countries, neighborhoods and/or other geographic, geopolitical and/or geospatial points or areas;
- места с названием, к примеру, достопримечательности, аэропорты и т.п.;- places with a name, for example, attractions, airports, etc.;
• Предоставление служб работы с базами данных для этих баз данных, включающих в себя, но не только, простые и сложные запросы, транзакции, триггерные события и т.п.• Provision of database services for these databases, including, but not limited to, simple and complex queries, transactions, trigger events, and the like.
[0226] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов базы 1072 данных объектов предметной области могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности базы 1072 данных объектов предметной области могут быть выполнены, реализованы и/или инициированы посредством программного обеспечения баз данных и/или аппаратных средств, постоянно размещающихся на клиенте(ах) 1304 и/или на сервере(ах) 1340.[0226] In particular embodiments, multiple instances or subprocesses of the
[0227] Одним примером базы 1072 данных объектов предметной области, который может быть использован в связи с настоящим изобретением согласно одному варианту осуществления, является база данных одной или более организаций, сохраняющая, например, их названия и местоположения. База данных может быть использована, например, для того, чтобы искать слова, содержащиеся во входном запросе, на предмет совпадающих организаций, и/или искать местоположение организации, название которой известно. Специалисты в данной области техники должны признавать, что множество других компоновок и реализаций являются возможными.[0227] One example of a
Компонент(ы) 1058 словаряDictionary component(s) 1058
[0228] По меньшей мере, в одном варианте осуществления, компонент(ы) 1058 словаря может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0228] In at least one embodiment, dictionary component(s) 1058 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- Предоставление баз данных, ассоциирующих слова и строки с концептами, свойствами, отношениями или экземплярами моделей предметных областей или моделей задач;- Providing databases that associate words and strings with concepts, properties, relationships, or instances of domain models or task models;
- Словарь из компонентов словаря может быть использован посредством автоматизированного помощника 1002 для нескольких процессов, включающих в себя, например: извлечение ввода, интерпретацию естественного языка и формирование вывода.- A dictionary of dictionary components can be used by the
[0229] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1058 словаря могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1058 словаря могут быть реализованы как структуры данных, которые ассоциируют строки с названиями концептов, отношений, свойств и экземпляров. Эти структуры данных могут быть сохранены в запоминающем устройстве, файлах или базах данных. Доступ к компоненту(ам) 1058 словаря может быть реализован через прямые API, сетевые API и/или интерфейсы запросов к базе данных. Создание и сопровождение компонента(ов) 1058 словаря может осуществляться через прямое редактирование файлов, транзакции базы данных или с помощью инструментальных средств редактирования моделей предметной области. Компонент(ы) 1058 словаря может быть реализован как часть или в ассоциации с активными онтологиями 1050. Специалисты в данной области техники должны признавать, что множество других компоновок и реализаций являются возможными.[0229] According to specific embodiments, multiple instances or sub-processes of dictionary component(s) 1058 may be simultaneously implemented and/or initiated through the use of one or
[0230] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1058 словаря могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1058 словаря. В одном варианте осуществления, доступ к компоненту(ам) 1058 словаря осуществляется каждый раз, когда запрашивается словарная информация, в том числе, например, в ходе извлечения ввода, интерпретации ввода и форматирования вывода для пользователей. Специалисты в данной области техники должны признавать, что другие условия или мероприятия могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1058 словаря.[0230] According to various embodiments, one or more different sub-processes or instances of dictionary component(s) 1058 may be initiated in response to the detection of one or more conditions or events that satisfy one or more different types of minimum threshold criteria for triggering at least , one instance of the dictionary component(s) 1058 . In one embodiment, dictionary component(s) 1058 are accessed each time dictionary information is requested, including, for example, during input retrieval, input interpretation, and output formatting for users. Those skilled in the art will recognize that other conditions or activities may trigger or begin the implementation of one or more different sub-processes or instances of dictionary component(s) 1058.
[0231] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента 1058 словаря может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. В одном варианте осуществления, компонент 1058 словаря может осуществлять доступ к данным из внешних баз данных, например, из хранилища данных или словаря.[0231] In at least one embodiment, a given
Компонент(ы) 1060 модуля распознавания языковых конструкцийComponent(s) 1060 of the language construct recognition module
[0232] По меньшей мере, в одном варианте осуществления, компонент 1060 модуля распознавания языковых конструкций может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, поиск конструкций в языковом или речевом вводе, которые указывают грамматические, идиоматические и/или другие составные объекты маркеров ввода. Эти конструкции соответствуют, например, одному или более из следующего (или комбинациям вышеозначенного): слова, названия, фразы, данные, параметры, команды и/или сигналы речевых актов.[0232] In at least one embodiment, the language construct recognition module component 1060 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, searching for constructs in a language or speech input that indicate grammatical, idiomatic, and/or other compound objects of input markers. These constructs correspond, for example, to one or more of the following (or combinations of the above): words, names, phrases, data, parameters, commands, and/or speech act cues.
[0233] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1060 модуля распознавания конструкций могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1060 модуля распознавания языковых конструкций могут быть выполнены, реализованы и/или инициированы посредством одного или более файлов, баз данных и/или программ, содержащих выражения на языке сопоставления с конструкцией. По меньшей мере, в одном варианте осуществления, компонент(ы) 1060 модуля распознавания языковых конструкций представляется декларативно, а не в качестве программного кода; это предоставляет возможность их создания и поддержания посредством редакторов и других инструментальных средств, отличных от инструментальных средств программирования. Примеры декларативных представлений могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного): регулярные выражения, правила сопоставления с конструкцией, грамматики естественного языка, грамматические анализаторы на основе конечных автоматов и/или других моделей грамматического анализа.[0233] According to specific embodiments, multiple instances or sub-processes of component(s) 1060 of the design recognition module may be simultaneously implemented and/or initiated through the use of one or
[0234] Специалисты в данной области техники должны признавать, что другие типы систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинации вышеозначенного) могут использоваться для реализации компонента(ов) 1060 модуля распознавания языковых конструкций.[0234] Those skilled in the art will recognize that other types of systems, components, systems, devices, procedures, processes, and the like. (or combinations of the above) may be used to implement component(s) 1060 of the language construct recognition module.
[0235] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1060 модуля распознавания языковых конструкций могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1060 модуля распознавания языковых конструкций. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1060 модуля распознавания языковых конструкций, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0235] According to various embodiments, one or more different sub-processes or instances of the component(s) 1060 of the language construct recognition module can be initiated in response to the detection of one or more conditions or events that satisfy one or more different types of minimum threshold criteria for triggering, at least one instance of component(s) 1060 of the language construct recognition module. Various examples of conditions or events that may trigger or begin the implementation of one or more different sub-processes or instances of the language construct recognizer component(s) 1060 may include, but are not limited to, one or more of the following (or combinations of the foregoing):
- в ходе активного извлечения ввода, при котором структура модулей распознавания языковых конструкций может ограничивать и направлять ввод от пользователя;- in the course of active input extraction, in which the structure of the recognition modules of language constructs can limit and direct input from the user;
- в ходе обработки естественного языка, при которой модули распознавания языковых конструкций помогают интерпретировать ввод в качестве языка;- during natural language processing, in which the recognition modules of language constructs help interpret the input as a language;
- в ходе идентификации задач и диалогов, при которой модули распознавания языковых конструкций могут помогать идентифицировать задачи, диалоги и/или этапы.- in the course of task and dialog identification, in which language construct recognition modules can help identify tasks, dialogs and/or steps.
[0236] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1060 модуля распознавания языковых конструкций может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента 1060 модуля распознавания языковых конструкций, могут включать в себя, но не только, данные из любой из моделей, различных моделей и источников данных, которые могут быть частью вариантов осуществления помощника 1002, которые могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0236] In at least one embodiment, a given instance of component(s) 1060 of a language construct recognition module can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. Examples of various types of data that may be accessed by the language construct recognition module component 1060 may include, but are not limited to, data from any of the models, various models, and data sources that may be part of the
- модели 1056 предметных областей;- models of 1056 subject areas;
- словарь 1058;-
- базы 1072 данных объектов предметной области;-
- кратковременное запоминающее устройство 1052;- short-
- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;
- модели 1086 потока задач;-
- модели 1087 потока диалогов;-
- модели 1088 характеристик служб.-
[0237] В одном варианте осуществления, доступ данных из других частей вариантов осуществления помощника 1002 может быть координирован посредством активных онтологий 1050.[0237] In one embodiment, data access from other parts of the
[0238] Снова ссылаясь на Фиг.14, показан пример некоторых различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) 1060 модуля распознавания языковых конструкций. Фиг.14 иллюстрирует языковые конструкции, которые может распознавать компонент(ы) 1060 модуля распознавания языковых конструкций. Например, идиома "что происходит" (в городе) может быть ассоциирована с задачей организации мероприятий и предметной областью локальных мероприятий.[0238] Referring again to FIG. 14, an example of some of the different types of functions, operations, actions, and/or other features that can be provided by language construct recognition module component(s) 1060 is shown. 14 illustrates the language constructs that component(s) 1060 of the language construct recognizer can recognize. For example, the idiom "what's going on" (in the city) can be associated with the task of organizing events and the subject area of local events.
Компонент(ы) 1080 процессора потока диалоговDialog flow processor component(s) 1080
[0239] По меньшей мере, в одном варианте осуществления, компонент(ы) 1080 процессора потока диалогов может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0239] In at least one embodiment, the dialog flow processor component(s) 1080 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- С учетом представления намерения 290 пользователя из языковой интерпретации 200, идентификация задачи, выполнение которой требует пользователь, и/или проблемы, разрешение которой требует пользователь. Например, задача может состоять в том, чтобы найти ресторан.- Given the representation of the user's intent 290 from the
- Для данной проблемы или задачи, с учетом представления намерения 290 пользователя, идентификация параметров для задачи или проблемы. Например, пользователь может искать рекомендованный ресторан, который подает итальянскую еду около дома пользователя. Такие ограничения, как то, что ресторан должен быть рекомендованным, подача итальянской еды и около дома, являются параметрами для задачи нахождения ресторана.- For a given problem or task, given the representation of the user's
- С учетом интерпретации задачи и текущего диалога с пользователем, к примеру, который может быть представлен в персональном кратковременном запоминающем устройстве 1052, выбор надлежащей модели потока диалогов и определение этапа в модели потока, соответствующего текущему состоянию.- Given the interpretation of the task and the current dialogue with the user, for example, which can be represented in the personal short-
[0240] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1080 процессора потока диалогов могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.[0240] According to specific embodiments, multiple instances or subprocesses of the dialog flow processor component(s) 1080 may be simultaneously implemented and/or initiated through the use of one or
[0241] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1080 процессора потока диалогов может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1080 процессора потока диалогов, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0241] In at least one embodiment, a given instance of dialog flow processor component(s) 1080 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. Examples of various types of data that can be accessed by the dialog flow processor component(s) 1080 may include, but are not limited to, one or more of the following (or combinations of the above):
- модели 1086 потока задач;-
- модели 1056 предметных областей;- models of 1056 subject areas;
- модели 1087 потока диалогов.-
[0242] Ссылаясь теперь на Фиг.30 и 31, показаны снимки экрана, иллюстрирующие пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) процессора потока диалогов согласно одному варианту осуществления.[0242] Referring now to FIGS. 30 and 31, screen shots are shown illustrating an example of various types of functions, operations, actions, and/or other features that may be provided by the dialog flow processor component(s) according to one embodiment.
[0243] Как показано на экране 3001, пользователь запрашивает резервирование ужина посредством предоставления речевого ввода или ввода текста "Заказать мне столик для ужина". Помощник 1002 формирует строку 3003 с подсказкой, запрашивающую, чтобы пользователь указал время и количество участников званого вечера.[0243] As shown in
[0244] После того, как эти параметры предоставлены, показывается экран 3101. Помощник 1002 выводит диалоговое окно 3102, указывающее то, что результаты представляются и строку 3103 с подсказкой, запрашивающую пользователя щелкать время. Перечни 3104 также отображаются.[0244] After these parameters are provided, a
[0245] В одном варианте осуществления, такой диалог реализуется следующим образом. В компонент(ы) 1080 процессора потока диалогов предоставляется представление намерения пользователя из компонента 1070 языкового интерпретатора, и он определяет то, что надлежащий ответ заключается в том, чтобы запрашивать у пользователя информацию, требуемую для того, чтобы выполнять следующий этап в потоке задач. В этом случае, предметной областью являются рестораны, задача заключается в резервировании, и этап диалога заключается в том, чтобы запрашивать у пользователя информацию, требуемую для того, чтобы выполнять следующий этап в потоке задач. Этот этап диалога иллюстрируется посредством строки 3003 с подсказкой на экране 3001.[0245] In one embodiment, such a dialogue is implemented as follows. The dialog flow processor component(s) 1080 is provided with a representation of the user's intent from the
[0246] Также ссылаясь теперь на Фиг.32, показана блок-схема последовательности операций, иллюстрирующая способ работы для компонента(ов) 1080 процессора потока диалогов согласно одному варианту осуществления. Блок-схема последовательности операций способа по Фиг.32 описывается в связи с примером, показанным на Фиг.30 и 31.[0246] Also referring now to FIG. 32, a flowchart is shown illustrating a method of operation for the dialog flow processor component(s) 1080 according to one embodiment. The flowchart of the method of FIG. 32 is described in connection with the example shown in FIGS. 30 and 31.
[0247] Способ начинается 200. Представление намерения 290 пользователя принимается. Как описано в связи с Фиг.28, в одном варианте осуществления, представление намерения 290 пользователя является набором вариантов семантического анализа. Для примера, показанного на Фиг.30 и 31, предметной областью являются рестораны, глаголом является "заказать", ассоциированный с резервированием ресторана, и параметром времени является вечер текущего дня.[0247] The method begins 200. A representation of the user's
[0248] На этапе 310, компонент(ы) 1080 процессора потока диалогов определяет то, поддерживается или нет эта интерпретация намерения пользователя достаточно строго, чтобы продолжать, и/или поддерживается она или нет лучше альтернативных неоднозначных вариантов семантического анализа. В текущем примере, интерпретация поддерживается строго без конкурирующих неоднозначных вариантов семантического анализа. С другой стороны, если имеются конкурирующие неоднозначности или достаточная неопределенность, то этап 322 выполняется для того, чтобы задавать этап потока диалогов, так что фаза выполнения инструктирует диалогу выводить строку с подсказкой для получения дополнительной информации от пользователя.[0248] At block 310, the dialog flow processor component(s) 1080 determines whether or not this interpretation of user intent is supported strictly enough to continue and/or is supported or not better than alternative ambiguous semantic parsing options. In the current example, the interpretation is strictly supported without competing ambiguous semantic parsing options. On the other hand, if there are competing ambiguities or sufficient ambiguity, then step 322 is executed to set the dialog flow stage such that the execution phase instructs the dialog to output a prompt string to obtain additional information from the user.
[0249] На этапе 312, компонент(ы) 1080 процессора потока диалогов определяет предпочтительную интерпретацию семантического анализа с другой информацией, чтобы определять задачу, которую следует выполнять, и ее параметры. Информация может быть получена, например, из моделей 1056 предметных областей, моделей 1086 потока задач и/или моделей 1087 потока диалогов либо любой комбинации вышеозначенного. В текущем примере, задача идентифицируется в качестве резервирования, которое заключает в себе как нахождение места, которое доступно для резервирования и свободно, так и осуществление транзакции, чтобы зарезервировать столик. Параметры задачи являются временным ограничением вместе с другими, которые логически выводятся на этапе 312.[0249] At 312, the dialog flow processor component(s) 1080 determines the preferred interpretation of the semantic analysis with other information to determine the task to be performed and its parameters. Information can be obtained, for example, from
[0250] На этапе 320, обращаются в модель потока задач с тем, чтобы определять надлежащий следующий этап. Информация может быть получена, например, из моделей 1056 предметных областей, моделей 1086 потока задач и/или моделей 1087 потока диалогов либо любой комбинации вышеозначенного. В примере, определяется то, что в этом потоке задач следующий этап заключается в том, чтобы извлекать пропущенные параметры для поиска доступности ресторанов, приводя к строке 3003 с подсказкой, проиллюстрированной на Фиг.30, запрашивающей количество участников званого вечера и время для резервирования.[0250] At 320, the task flow model is consulted to determine the appropriate next step. Information can be obtained, for example, from
[0251] Как описано выше, Фиг.31 иллюстрирует экран 3101, который показывается как включающий в себя элемент 3102 диалога, который представляется после того, как пользователь отвечает на запрос относительно количества участников званого вечера и времени резервирования. В одном варианте осуществления, экран 3101 представляется как результат другой итерации через процедуру автоматизированного вызова и ответа, как описано в связи с Фиг.33, которая приводит к другому вызову процедуры диалогов и потоков, проиллюстрированной на Фиг.32. В этой конкретизации процедуры диалогов и потоков, после приема пользовательских предпочтений компонент(ы) 1080 процессора потока диалогов определяет другой этап потока задач на этапе 320: осуществить поиск доступности. Когда запрос 390 составляется, он включает в себя параметры задачи, достаточные для компонента 1080 процессора потока диалогов и компонента(ов) 1082 оркестровки служб, чтобы координироваться для службы заказов ресторана.[0251] As described above, FIG. 31 illustrates a
Компонент(ы) 1087 моделей потока диалоговComponent(s) 1087 Dialog Flow Models
[0252] По меньшей мере, в одном варианте осуществления, компонент(ы) 1087 моделей потока диалогов может быть выполнен с возможностью предоставлять модели потока диалогов, которые представляют этапы, которые предпринимаются в конкретном виде разговора между пользователем и интеллектуальным автоматизированным помощником 1002. Например, поток диалогов для обобщенной задачи выполнения транзакции включает в себя этапы для получения необходимых данных для транзакции и подтверждения параметров транзакции до ее совершения.[0252] In at least one embodiment, the component(s) 1087 of the dialog flow models can be configured to provide dialog flow models that represent the steps that are taken in a particular type of conversation between the user and the intelligent
Компонент(ы) 1086 моделей потока задачComponent(s) 1086 task flow models
[0253] По меньшей мере, в одном варианте осуществления, компонент(ы) 1086 моделей потока задач может быть выполнен с возможностью предоставлять модели потока задач, которые представляют этапы, которые предпринимаются, чтобы разрешать проблему или удовлетворять потребность. Например, поток задач для резервирования ужина заключает в себе нахождение требуемого ресторана, проверку доступности и выполнение транзакции, чтобы получать резервирование на конкретное время в ресторане.[0253] In at least one embodiment, taskflow model component(s) 1086 can be configured to provide taskflow models that represent steps that are taken to resolve a problem or satisfy a need. For example, the task flow for a dinner reservation involves finding a desired restaurant, checking availability, and executing a transaction to get a reservation for a specific time at the restaurant.
[0254] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1086 моделей потока задач могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1086 моделей потока задач могут быть реализованы как программы, конечные автоматы или другие способы идентификации надлежащего этапа на блок-схеме.[0254] According to specific embodiments, multiple instances or sub-processes of component(s) 1086 of task flow models can be simultaneously implemented and/or initiated through the use of one or
[0255] По меньшей мере, в одном варианте осуществления, компонент(ы) 1086 моделей потока задач может использовать инфраструктуру моделирования задач, называемых обобщенными задачами. Обобщенные задачи являются абстракциями, которые моделируют этапы в задаче и их требуемые вводы и сформированные выводы без зависимости от предметных областей. Например, обобщенная задача для транзакций может включать в себя этапы для сбора данных, требуемых для транзакции, выполнения транзакций и вывода результатов транзакции - и все это безотносительно конкретной предметной области транзакции или службы для ее реализации. Она может быть конкретизирована для предметной области, такой как совершение покупок, но она является независимой от предметной области совершения покупок и может с равным успехом применяться к предметным областям резервирования, составления расписания и т.п.[0255] In at least one embodiment, task flow model component(s) 1086 may use a task modeling framework called generic tasks. Generic tasks are abstractions that model the steps in a task and their required inputs and generated outputs without being dependent on subject areas. For example, a general task for transactions may include steps for collecting the data required for a transaction, executing transactions, and outputting the results of the transaction, all without regard to the specific domain of the transaction or the service to implement it. It can be specific to a domain such as shopping, but it is independent of the shopping domain and can be applied equally well to the domains of reservations, scheduling, and the like.
[0256] По меньшей мере, часть функций, операций, действий и/или других признаков, ассоциированных с компонентом(ами) 1086 моделей потока задач и/или процедурой(ами), описанной в данном документе, может быть реализована, по меньшей мере, частично, с использованием концептов, признаков, компонентов, процессов и/или других аспектов, раскрытых в данном документе в связи с инфраструктурой моделирования обобщенных задач.[0256] At least a portion of the functions, operations, actions, and/or other features associated with the component(s) 1086 of the task flow models and/or the procedure(s) described herein can be implemented at least in part, using the concepts, features, components, processes, and/or other aspects disclosed herein in connection with the Generic Task Modeling Framework.
[0257] Дополнительно, по меньшей мере, часть функций, операций, действий и/или других признаков, ассоциированных с компонентом(ами) 1086 моделей потока задач и/или процедурой(ами), описанной в данном документе, может быть реализована, по меньшей мере, частично, с использованием концептов, признаков, компонентов, процессов и/или других аспектов, связанных с задачами выбора с ограничениями, как описано в данном документе. Например, один вариант осуществления обобщенных задач может быть реализован с использованием модели задач выбора с ограничениями.[0257] Additionally, at least a portion of the functions, operations, actions, and/or other features associated with the component(s) 1086 of the task flow models and/or the procedure(s) described herein may be implemented at least at least in part, using concepts, features, components, processes, and/or other aspects associated with constrained selection tasks as described herein. For example, one embodiment of generalized tasks may be implemented using a constrained selection task model.
[0258] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1086 моделей потока задач может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1086 моделей потока задач, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0258] In at least one embodiment, a given instance of taskflow model component(s) 1086 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. Examples of various types of data that can be accessed by taskflow model component(s) 1086 may include, but are not limited to, one or more of the following (or combinations of the above):
- модели 1056 предметных областей;- models of 1056 subject areas;
- словарь 1058;-
- базы 1072 данных объектов предметной области;-
- кратковременное запоминающее устройство 1052;- short-
- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;
- модели 1087 потока диалогов;-
- модели 1088 характеристик служб.-
[0259] Ссылаясь теперь на Фиг.34, показана блок-схема последовательности операций способа, иллюстрирующая пример потока задач для задачи 351 выбора с ограничениями согласно одному варианту осуществления.[0259] Referring now to FIG. 34, a flowchart is shown illustrating an example task flow for constrained selection task 351 according to one embodiment.
[0260] Выбор с ограничениями является видом обобщенной задачи, в которой цель состоит в том, чтобы выбирать некоторый элемент из набора элементов в мире на основе набора ограничений. Например, задача 351 выбора с ограничениями может быть конкретизирована для предметной области ресторанов. Задача 351 выбора с ограничениями начинается посредством запрашивания критериев и ограничений от пользователя 352. Например, пользователь может интересоваться азиатской едой и может желать место, чтобы поесть, около своего офиса.[0260] Constrained selection is a kind of generalized problem in which the goal is to select some element from a set of elements in the world based on a set of constraints. For example, constrained selection task 351 may be specific to the restaurant domain. The constrained selection task 351 begins by requesting criteria and constraints from the
[0261] На этапе 353, помощник 1002 представляет элементы, которые удовлетворяют установленным критериям и ограничениям для пользователя, чтобы просматривать их. В этом примере, это может быть список ресторанов и их свойств, который может быть использован для того, чтобы выбирать из них.[0261] At
[0262] На этапе 354, пользователю дается возможность уточнять критерии и ограничения. Например, пользователь может уточнять запрос посредством высказывания "около моего офиса". Система затем должна представлять новый набор результатов на этапе 353.[0262] At step 354, the user is given the opportunity to refine the criteria and restrictions. For example, the user may qualify the query by saying "near my office". The system must then present a new result set at
[0263] Также ссылаясь теперь на Фиг.35, показан пример экрана 3501, включающего в себя список 3502 элементов, представленных посредством задачи 351 выбора с ограничениями согласно одному варианту осуществления.[0263] Also referring now to FIG. 35, an example of a
[0264] На этапе 355, пользователь может выбирать из совпадающих элементов. Затем может быть обеспечена доступность любого числа дальнейших задач 359, таких как, например, заказ 356, напоминание 357 или совместное использование 358. В различных вариантах осуществления, дальнейшие задачи 359 могут заключать в себе взаимодействие со службами на основе web-технологий и/или с функциональностью, локальной для устройства (к примеру, установка назначенной встречи по календарю, телефонный вызов, отправка почтового или текстового сообщения, установка будильника и т.п.).[0264] At block 355, the user can select from matching items. Any number of further tasks 359 may then be made available, such as, for example, order 356, reminder 357, or
[0265] В примере по Фиг.35, пользователь может выбирать элемент в списке 3502, чтобы видеть дополнительные сведения и выполнять дополнительные действия. Также ссылаясь теперь на Фиг.36, показан пример экрана 3601 после того, как пользователь выбрал элемент из списка 3502. Дополнительная информация и варианты, соответствующие дальнейшим задачам 359 относительно выбранного пункта, отображаются.[0265] In the example of Fig.35, the user can select an item in the
[0266] В различных вариантах осуществления, этапы потока могут предлагаться пользователю в любой из нескольких модальностей ввода, включающих в себя, но не только, любую комбинацию явных диалоговых строк с подсказкой и GUI-ссылок.[0266] In various embodiments, the flow steps may be presented to the user in any of several input modalities, including, but not limited to, any combination of explicit dialog prompts and GUI links.
Компонент(ы) 1084 службComponent(s) 1084 services
[0267] Компонент(ы) 1084 служб представляет набор служб, которые интеллектуальный автоматизированный помощник 1002 может вызывать от имени пользователя. Любая служба, которая может вызываться, может быть предложена в компоненте 1084 служб.[0267] The service component(s) 1084 represents a set of services that the intelligent automated assistant 1002 can invoke on behalf of the user. Any service that can be called can be offered in the
[0268] По меньшей мере, в одном варианте осуществления, компонент(ы) 1084 служб может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0268] In at least one embodiment, service component(s) 1084 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- Предоставление функций по API, которые обычно должны предоставляться посредством пользовательского web-интерфейса, в службу. Например, обзорный web-узел может предоставлять API служб, который автоматически возвращает обзоры данного объекта при вызове посредством программы. API предлагает для интеллектуального автоматизированного помощника 1002 службы, которые человек в противном случае должен получать посредством работы с пользовательским интерфейсом web-узла.- Exposing API functions that would normally be exposed via a web user interface to a service. For example, an overview web site may provide a service API that automatically returns overviews of a given object when called by a program. The API offers services to the intelligent automated assistant 1002 that a person would otherwise need to receive through the user interface of a web site.
- Предоставление функций по API, которые обычно должны предоставляться посредством пользовательского интерфейса, в приложение. Например, приложение для работы с календарем может предоставлять API служб, который автоматически возвращает записи календаре при вызове посредством программы. API предлагает для интеллектуального автоматизированного помощника 1002 службы, которые человек в противном случае должен получать посредством работы с пользовательским интерфейсом приложения. В одном варианте осуществления, помощник 1002 имеет возможность инициировать и управлять любым числом различных функций, доступных в устройстве. Например, если помощник 1002 устанавливается на смартфоне, персональном цифровом устройстве, планшетном компьютере или другом устройстве, помощник 1002 может выполнять такие функции, как: инициирование приложений, совершение звонков, отправка электронных писем и/или текстовых сообщений, добавление календарных мероприятий, установка будильников и т.п. В одном варианте осуществления, такие функции активируются с использованием компонента(ов) 1084 служб.- Exposing API functions that would normally be provided through a user interface to an application. For example, a calendar application might provide a service API that automatically returns calendar entries when called by the program. The API offers services to the intelligent automated assistant 1002 that a person would otherwise receive by interacting with the application's user interface. In one embodiment,
- Предоставление служб, которые в данный момент не реализуются в пользовательском интерфейсе, но которые доступны через API, в помощник в больших задачах. Например, в одном варианте осуществления, API для приема фактического адреса и возврата машиночитаемых геокоординат может быть использован посредством помощника 1002 в качестве компонента 1084 служб, даже если он не имеет прямого пользовательского интерфейса на основе web-технологий или в устройстве.- Providing services that are not currently implemented in the user interface, but which are available through the API, as a helper in large tasks. For example, in one embodiment, an API for receiving a physical address and returning machine-readable geo-coordinates can be used by
[0269] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1084 служб могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента 1084 служб могут быть выполнены, реализованы и/или инициированы посредством одной или более следующих типов систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинаций вышеозначенного):[0269] According to specific embodiments, multiple instances or subprocesses of service component(s) 1084 may be simultaneously implemented and/or initiated through the use of one or
- реализация API, представленного посредством службы, локально или удаленно либо в любой комбинации;- the implementation of the API exposed by the service, locally or remotely, or any combination;
- импликация базы данных в автоматизированном помощнике 1002 или службы работы с базами данных, доступной для помощника 1002.- implication of a database in the
[0270] Например, web-узел, который предлагает пользователям интерфейс для просмотра фильмов, может быть использован посредством варианта осуществления интеллектуального автоматизированного помощника 1002 в качестве копии базы данных, используемой посредством web-узла. Компонент(ы) 1084 служб затем должен предлагать внутренний API для данных, как если они предоставляются по сетевому API, даже если данные сохраняются локально.[0270] For example, a web site that offers users an interface for watching movies can be used by an embodiment of the intelligent automated assistant 1002 as a copy of the database used by the web site. The service component(s) 1084 must then offer an internal API for the data as if it were provided over a network API, even if the data is stored locally.
[0271] В качестве другого примера, компонент(ы) 1084 служб для интеллектуального автоматизированного помощника 1002, который помогает с выбором ресторана и организацией мероприятия с приемом пищи, может включать в себя любые или все из следующего набора служб, которые доступны от третьих сторон по сети:[0271] As another example, the service component(s) 1084 for an intelligent
- набор служб предоставления перечня ресторанов, которые перечисляют рестораны, совпадающие по названию, местоположению или другим ограничениям;- a set of restaurant listing services that list restaurants that match by name, location, or other restrictions;
- набор служб составления рейтинга ресторанов, которые возвращают ранжирование для ресторанов с названием;- a set of restaurant rating services that return a ranking for restaurants with a name;
- набор служб обзора ресторанов, которые возвращают написанные обзоры для ресторанов с названием;- a set of restaurant review services that return written reviews for named restaurants;
- служба геокодирования, чтобы находить рестораны на карте;- geocoding service to find restaurants on the map;
- служба резервирования, которая обеспечивает программируемое резервирование столиков в ресторанах.- a reservation service that provides programmable table reservations in restaurants.
Компонент(ы) 1082 оркестровки службService orchestration component(s) 1082
[0272] Компонент(ы) 1082 оркестровки служб интеллектуального автоматизированного помощника 1002 выполняет процедуру оркестровки служб.[0272] The service orchestration component(s) 1082 of the intelligent
[0273] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0273] In at least one embodiment, service orchestration component(s) 1082 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- Динамическое и автоматическое определение того, какие службы могут удовлетворять запросу пользователя и/или указываемой предметной области(ям) и задаче(ам);- Dynamic and automatic determination of which services can satisfy the user's request and/or specified subject area(s) and task(s);
- Динамический и автоматический вызов несколько служб, в любой комбинации параллельного и последовательного упорядочения;- Dynamic and automatic calling of multiple services, in any combination of parallel and sequential ordering;
- Динамическое и автоматическое преобразование параметров и ограничений задачи, чтобы удовлетворять требованиям по вводу API служб;- Dynamic and automatic transformation of task parameters and constraints to meet the requirements for the input of API services;
- Динамическое и автоматическое отслеживание и сбор результатов из нескольких служб;- Dynamic and automatic tracking and collection of results from multiple services;
- Динамическое и автоматическое объединение данных с результатами предоставления служб из различных служб в унифицированную модель результатов;- Dynamic and automatic integration of data with the results of the provision of services from various services into a unified results model;
- Оркестровка множеством служб, чтобы удовлетворять ограничениям запроса;- Orchestration by multiple services to satisfy request constraints;
- Оркестровка множеством служб, чтобы аннотировать существующий набор результатов со вспомогательной информацией;- Orchestration by multiple services to annotate an existing result set with ancillary information;
- Вывод результата вызова множества служб в универсальном, независимом от службы представлении, которое унифицирует результаты из различных служб (например, как результат вызова нескольких служб ресторана, которые возвращают списки ресторанов, объединяют данные, по меньшей мере, по одному ресторану из нескольких служб, удаляя избыточность).- Displaying the result of a call to multiple services in a generic, service-independent view that unifies results from different services (e.g., as the result of calling multiple restaurant services that return lists of restaurants, combine data for at least one restaurant from multiple services, removing redundancy).
[0274] Например, в некоторых случаях может быть несколько способов выполнять конкретную задачу. Например, пользовательский ввод, к примеру, "напомнить мне выехать на встречу в город в 14:00" указывает действие, которое может быть выполнено, по меньшей мере, тремя способами: установить будильник; создать календарное мероприятие; или вызвать диспетчер списка занятий. В одном варианте осуществления, компонент 1082 оркестровки служб выполняет определение в отношении того, какой способ лучше всего подходит для запроса.[0274] For example, in some cases there may be multiple ways to perform a particular task. For example, a user input such as "remind me to leave for a meeting in town at 2:00 pm" indicates an action that can be performed in at least three ways: set an alarm; create a calendar event; or call the activity list manager. In one embodiment, the
[0275] Компонент(ы) 1082 оркестровки служб также может выполнять определения в отношении того, какую комбинацию из нескольких служб лучше всего активировать, чтобы выполнять данную общую задачу. Например, чтобы находить и резервировать столик для ужина, компонент(ы) 1082 оркестровки служб должен выполнять определения в отношении того, какие службы следует вызывать, чтобы выполнять такие функции, как поиск в обзорах, получение доступности и выполнение резервирования. Определение того, какие службы следует использовать, может зависеть от любого числа различных факторов. Например, по меньшей мере, в одном варианте осуществления, информация о надежности, способности службы обрабатывать определенные типы запросов, обратная связь с пользователем и т.п. могут быть использованы в качестве факторов при определении того, какую службу(и) надлежит активировать.[0275] The service orchestration component(s) 1082 can also make determinations as to which combination of multiple services is best activated to perform a given overall task. For example, in order to find and reserve a table for dinner, service orchestration component(s) 1082 must make determinations as to which services to call to perform functions such as looking up reviews, getting availability, and making reservations. Determining which services to use can depend on any number of different factors. For example, in at least one embodiment, information about reliability, the ability of a service to handle certain types of requests, user feedback, and the like. can be used as factors in determining which service(s) to activate.
[0276] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1082 оркестровки служб могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.[0276] According to specific embodiments, multiple instances or subprocesses of service orchestration component(s) 1082 may be simultaneously implemented and/or initiated through the use of one or more processors and/or other combinations of hardware and/or hardware and software.
[0277] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1082 оркестровки служб может использовать явные модели 1088 характеристик служб, чтобы представлять характеристики и другие свойства внешних служб, и рассуждать насчет этих характеристик и свойств при достижении признаков компонента(ов) 1082 оркестровки служб. Это предоставляет преимущества по сравнению с программированием вручную набора служб, которые могут включать в себя, например, одно или более из следующего (или комбинации вышеозначенного):[0277] In at least one embodiment, a given instance of service orchestration component(s) 1082 may use explicit service
- простота разработки;- ease of development;
- устойчивость и надежность при выполнении;- stability and reliability in execution;
- возможность динамически добавлять и удалять службы без повреждения кода;- the ability to dynamically add and remove services without damaging the code;
- возможность реализовывать общие алгоритмы оптимизации распределенных запросов, которые управляются посредством свойств и характеристик, а не жестко кодируются для конкретных служб или API.- the ability to implement general algorithms for optimizing distributed queries that are controlled through properties and characteristics, rather than being hard-coded for specific services or APIs.
[0278] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1082 оркестровки служб может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1082 оркестровки служб, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0278] In at least one embodiment, a given instance of service orchestration component(s) 1082 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. Examples of various types of data that can be accessed by service orchestration component(s) 1082 may include, but are not limited to, one or more of the following (or combinations of the above):
- конкретизации моделей предметных областей;- concretization of models of subject areas;
- варианты синтаксического и семантического анализа ввода на естественном языке;- options for syntactic and semantic analysis of input in natural language;
- конкретизации моделей задач (со значениями для параметров);- specification of task models (with values for parameters);
- модели потока диалогов и задач и/или выбранные этапы в них;- models of the flow of dialogues and tasks and / or selected stages in them;
- модели 1088 характеристик служб;-
- любая другая информация, доступная в активной онтологии 1050.- any other information available in the
[0279] Ссылаясь теперь на Фиг.37, показан пример процедуры для выполнения процедуры оркестровки служб согласно одному варианту осуществления.[0279] Referring now to FIG. 37, an example of a procedure for performing a service orchestration procedure according to one embodiment is shown.
[0280] В этом конкретном примере, предполагается, что один пользователь заинтересован в нахождении хорошего места для ужина в ресторане и контактирует с интеллектуальным автоматизированным помощником 1002 в форме разговора, чтобы помогать предоставлять эти службы.[0280] In this particular example, it is assumed that one user is interested in finding a good place to dine in a restaurant and contacts the intelligent automated assistant 1002 in the form of a conversation to help provide these services.
[0281] Рассмотрим задачу нахождения ресторанов, которые имеют высокое качество, хорошие отзывы в обзорах, расположены около конкретного местоположения, доступны для резервирования в конкретное время и предлагают конкретный вид еды. Эти параметры предметной области и задачи предоставляются в качестве ввода 390.[0281] Consider the problem of finding restaurants that are of high quality, have good reviews, are located near a particular location, are available for reservation at a particular time, and offer a particular type of food. These domain and task parameters are provided as
[0282] Способ начинается 400. На этапе 402, определяется то, может или нет данный запрос требовать какие-либо службы. В некоторых случаях, делегирование службам может не требоваться, например, если помощник 1002 имеет возможность выполнять требуемую задачу самостоятельно. Например, в одном варианте осуществления, помощник 1002 может иметь возможность отвечать на фактический вопрос без активации делегирования службам. Соответственно, если запрос не требует служб, то автономный этап потока выполняется на этапе 403, и его результат 490 возвращается. Например, если запрос по задаче состоит в том, чтобы запрашивать информацию о самом автоматизированном помощнике 1002, то ответ диалога может обрабатываться без активации внешних служб.[0282] The method begins 400. At block 402, it is determined whether or not a given request may require any services. In some cases, delegation to services may not be required, for example, if
[0283] Если на этапе 402 определяется то, что требуется делегирование службам, компонент(ы) 1082 оркестровки служб переходит к этапу 404. На этапе 404, компонент(ы) 1082 оркестровки служб может сопоставлять требования задачи с декларативными описаниями характеристик и свойств служб в моделях 1088 характеристик служб. По меньшей мере, один поставщик служб, который может поддерживать конкретизированную операцию, предоставляет декларативные, качественные метаданные, детализирующие, например, одно или более из следующего (или комбинации вышеозначенного):[0283] If at block 402 it is determined that delegation to services is required, the service orchestration component(s) 1082 proceeds to block 404. At
- поля данных, которые возвращаются с результатами;- data fields that are returned with the results;
- какие классы параметров поставщик служб (как статически известно) поддерживает;- what parameter classes the service provider (as statically known) supports;
- функции управления политиками для параметров, которые поставщик служб может поддерживать после динамической проверки значений параметров;- policy management functions for parameters that a service provider can support after dynamic checking of parameter values;
- рейтинг производительности, задающий то, как работает служба (например, реляционная DB, web-служба, хранение в трех экземплярах, полнотекстовый индекс или некоторая комбинация вышеозначенного);- a performance rating that specifies how the service works (eg, relational DB, web service, triplicate, full-text index, or some combination of the above);
- рейтинги качества свойств, статически задающие ожидаемое качество значений свойств, возвращаемых с объектом с результатом;- property quality ratings that statically set the expected quality of property values returned with the result object;
- рейтинг общего качества результатов, которые предположительно может возвращать служба.- a rating of the overall quality of the results that the service can presumably return.
[0284] Например, при рассмотрении классов параметров, которые может поддерживать служба, модель служб может указывать, что службы 1, 2, 3 и 4 могут предоставлять рестораны, которые расположены около конкретного местоположения (параметр), службы 2 и 3 могут фильтровать или ранжировать рестораны по качеству (другой параметр), службы 3, 4 и 5 могут возвращать обзоры для ресторанов (возвращается поле данных), служба 6 может перечислять типы питания, предлагаемые посредством ресторанов (возвращается поле данных), и служба 7 может проверять доступность ресторанов в конкретные временные диапазоны (параметр). Службы 8-99 предлагают характеристики, которые не требуются для этой конкретной предметной области и задачи.[0284] For example, when considering the parameter classes that a service may support, the service model may indicate that
[0285] С использованием этих декларативных, качественных метаданных, задачи, параметров задачи и другой информации, доступной из среды выполнения помощника, компонент(ы) 1082 оркестровки служб определяет 404 оптимальный набор поставщиков служб, который следует активировать. Оптимальный набор поставщиков служб может поддерживать один или более параметров задачи (возвращая результаты, которые удовлетворяют одному или более параметрам), а также рассматривает рейтинг производительности, по меньшей мере, одного поставщика служб и рейтинг общего качества, по меньшей мере, одного поставщика служб.[0285] Using this declarative, qualitative metadata, task, task parameters, and other information available from the helper runtime, service orchestration component(s) 1082 determines 404 the optimal set of service providers to activate. The optimal set of service providers may support one or more task parameters (returning results that satisfy one or more parameters) and also consider the performance rating of at least one service provider and the overall quality rating of at least one service provider.
[0286] Результатом этапа 404 является динамически сформированный список служб, которые следует вызывать для этого конкретного пользователя, и запрос.[0286] The result of
[0287] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб рассматривает надежность служб, а также их способность отвечать на конкретные информационные запросы.[0287] In at least one embodiment, service orchestration component(s) 1082 considers the reliability of services as well as their ability to respond to specific information requests.
[0288] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб противостоит ненадежности посредством вызова перекрывающихся или избыточных служб.[0288] In at least one embodiment, service orchestration component(s) 1082 counters unreliability by calling overlapping or redundant services.
[0289] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб рассматривает персональную информацию о пользователе (из компонента кратковременного персонального запоминающего устройства), чтобы выбирать службы. Например, пользователь может предпочитать некоторые службы составления рейтингов перед другими.[0289] In at least one embodiment, the service orchestration component(s) 1082 considers personal information about the user (from the personal short-term memory component) to select services. For example, a user may prefer some rating services over others.
[0290] На этапе 450, компонент(ы) 1082 оркестровки служб динамически и автоматически активирует несколько служб от имени пользователя. По меньшей мере, в одном варианте осуществления, они вызываются динамически при ответе на запрос пользователя. Согласно конкретным вариантам осуществления, одновременно могут вызываться несколько экземпляров или подпроцессов служб. По меньшей мере, в одном варианте осуществления, они вызываются по сети с использованием API или по сети с использованием API web-служб, или по Интернету с использованием API web-служб, или по любой комбинации вышеозначенного.[0290] At 450, the service orchestration component(s) 1082 dynamically and automatically activates multiple services on behalf of the user. In at least one embodiment, they are called dynamically in response to a user request. In particular embodiments, multiple service instances or sub-processes may be invoked at the same time. In at least one embodiment, they are called over the network using the API, or over the network using the Web Services API, or over the Internet using the Web Services API, or any combination of the foregoing.
[0291] По меньшей мере, в одном варианте осуществления, частота, с которой вызываются службы, программно ограничивается и/или управляется.[0291] In at least one embodiment, the frequency with which services are called is programmatically limited and/or controlled.
[0292] Также ссылаясь теперь на Фиг.38, показан пример процедуры 450 активации служб согласно одному варианту осуществления. Активация служб используется, например, чтобы получать дополнительную информацию или выполнять задачи посредством использования внешних служб. В одном варианте осуществления, параметры запроса преобразуются надлежащим образом для API службы. После того, как результаты принимаются из службы, результаты преобразуются в представление результатов для представления пользователю в помощнике 1002.[0292] Also referring now to FIG. 38, an example of a service activation procedure 450 according to one embodiment is shown. Service activation is used, for example, to obtain additional information or perform tasks through the use of external services. In one embodiment, the request parameters are translated appropriately for the service API. After the results are received from the service, the results are converted into a results view for presentation to the user in
[0293] По меньшей мере, в одном варианте осуществления, службы, активируемые посредством процедуры 450 активации служб, могут быть web-службой, приложением, запущенным на устройстве, функцией операционной системы и т.п.[0293] In at least one embodiment, the services activated by the service activation procedure 450 may be a web service, an application running on a device, an operating system function, or the like.
[0294] Предоставляется представление 390 запроса, включающее в себя, например, параметры задачи и т.п. По меньшей мере, для одной службы, доступной из моделей 1088 характеристик служб, процедура 450 активации служб выполняет этапы преобразования 452, вызова 454 и преобразования 456 вывода.[0294] A
[0295] На этапе 452 преобразования текущие параметры задачи из представления 390 запроса преобразуются в форму, которая может быть использована посредством, по меньшей мере, одной службы. Параметры для служб, которые могут быть предложены в качестве API или баз данных, могут отличаться от представления данных, используемого в запросах по задачам, а также, по меньшей мере, друг от друга. Соответственно, цель этапа 452 состоит в том, чтобы преобразовывать, по меньшей мере, один параметр задачи в один или более соответствующих форматов и значений, по меньшей мере, в одной вызываемой службе.[0295] At transform step 452, the current task parameters from the
[0296] Например, названия организаций, к примеру, ресторанов могут варьироваться согласно службам, которые рассматривают такие организации. Соответственно, этап 452 должен заключать в себе преобразование любых названий в формы, которые наилучшим образом подходят, по меньшей мере, для одной службы.[0296] For example, the names of organizations, for example, restaurants, may vary according to the services that consider such organizations. Accordingly, step 452 should include converting any names to forms that are best suited for at least one service.
[0297] В качестве другого примера, местоположения известны при различных уровнях точности и с использованием различных единиц и условных обозначений согласно службам. Служба 1 может, может требовать почтовых индексов, служба 2 - GPS-координат, а служба 3 - фактических почтовых адресов.[0297] As another example, locations are known at different levels of accuracy and using different units and conventions according to the services.
[0298] Служба вызывается 454 по API, и ее данные собираются. По меньшей мере, в одном варианте осуществления, результаты кэшируются. По меньшей мере, в одном варианте осуществления, службы, которые не возвращаются в пределах указанной производительности уровня (например, как указано в соглашении об уровне обслуживания, или SLA), отбрасываются.[0298] The service is called 454 by the API and its data is collected. In at least one embodiment, the results are cached. In at least one embodiment, services that do not return within the specified tier performance (eg, as specified in a service level agreement, or SLA) are discarded.
[0299] На этапе 456 преобразования вывода, данные, возвращаемые посредством службы, преобразуются обратно в унифицированное представление 490 результата. Этот этап может включать в себя рассмотрение различных форматов, единиц и т.д.[0299] At
[0300] На этапе 412, результаты из нескольких служб проверяются на достоверность и объединяются. В одном варианте осуществления, если проверенные результаты собираются, функция управления политиками равенства (заданная для каждой предметной области) затем вызывается попарно для одного или более результатов, чтобы определять то, какие результаты представляют идентичные концепты в реальном мире. Когда обнаруживается пара равных результатов, набор функций управления политиками свойств (также заданный для каждой предметной области) используется для того, чтобы объединять значения свойств в объединенный результат. Функция управления политиками свойств может использовать рейтинги качества свойств из моделей характеристик служб, параметров задачи, контекста предметной области и/или долговременного персонального запоминающего устройства 1054, чтобы определять оптимальную стратегию объединения.[0300] At 412, results from multiple services are validated and combined. In one embodiment, if validated results are collected, the equality policy management function (defined for each subject area) is then called in pairs on one or more results to determine which results represent identical concepts in the real world. When a pair of equal results is found, a set of property policy management functions (also defined for each subject area) is used to combine the property values into a combined result. The feature policy function may use the feature quality ratings from the service performance models, task parameters, domain context, and/or long-term personal storage 1054 to determine the optimal aggregation strategy.
[0301] Например, списки ресторанов от различных поставщиков ресторанов могут быть объединены, а дублирования удалены. По меньшей мере, в одном варианте осуществления, критерии для идентификации дублирований могут включать в себя нечеткое совпадение названий, нечеткое совпадение местоположений, нечеткое совпадение с несколькими свойствами объектов предметной области, такими как название, местоположение, телефонный номер и/или адрес web-узла и/или любая комбинация вышеозначенного.[0301] For example, restaurant listings from different restaurant providers can be combined and duplications removed. In at least one embodiment, criteria for identifying duplications may include fuzzy name matching, fuzzy location matching, fuzzy matching with multiple domain object properties such as name, location, telephone number, and/or web site address, and /or any combination of the above.
[0302] На этапе 414, результаты сортируются и обрезаются, чтобы возвращать список результатов требуемой длины.[0302] At
[0303] По меньшей мере, в одном варианте осуществления, контур ослабления запроса также применяется. Если на этапе 416 компонент(ы) 1082 оркестровки служб определяет то, что текущий список результатов не является достаточным (например, он имеет меньше требуемого числа совпадающих элементов), то параметры задачи могут ослабляться 420, чтобы обеспечивать большее число результатов. Например, если число ресторанов требуемого типа, найденных в пределах N миль от целевого местоположения, является слишком маленьким, то ослабление должно запускать запрос снова с поиском в области, превышающей N миль, и/или с ослаблением некоторого другого параметра поиска.[0303] In at least one embodiment, a request attenuation loop is also applied. If, at step 416, the service orchestration component(s) 1082 determines that the current list of results is not sufficient (eg, it has fewer than the required number of matches), then the task parameters may be relaxed 420 to provide more results. For example, if the number of restaurants of the required type found within N miles of the target location is too small, then the relaxation should run the query again with a search in an area greater than N miles and/or with some other search parameter weakened.
[0304] По меньшей мере, в одном варианте осуществления, способ оркестровки служб применяется во втором проходе, чтобы "аннотировать" результаты со вспомогательными данными, которые являются полезными для задачи.[0304] In at least one embodiment, the service orchestration method is applied in the second pass to "annotate" the results with ancillary data that is useful to the task.
[0305] На этапе 418, компонент(ы) 1082 оркестровки служб определяет то, требуется или нет аннотация. Оно может требоваться, если, например, задача может требовать плана с результатами на карте, но первичные службы не возвращают геокоординаты, требуемые для преобразования.[0305] At
[0306] На этапе 422, снова обращаются к модели 1088 характеристик служб с тем, чтобы находить службы, которые могут возвращать требуемую дополнительную информацию. В одном варианте осуществления, процесс аннотирования определяет то, могут или нет дополнительные или лучшие данные быть аннотированы в объединенном результате. Он осуществляет это посредством делегирования в функцию управления политиками свойств (заданную для каждой предметной области), по меньшей мере, одного свойства, по меньшей мере, одного объединенного результата. Функция управления политиками свойств может использовать объединенное значение свойства и рейтинг качества свойств, рейтинги качества свойств одного или более других поставщиков служб, контекст предметной области и/или пользовательский профиль, чтобы определять то, могут или нет быть получены лучшие данные. Если определено, что один или более поставщиков служб могут аннотировать одно или более свойств для объединенного результата, активируется функция затрат, чтобы определять оптимальный набор поставщиков служб, который следует аннотировать.[0306] At
[0307] По меньшей мере, один поставщик служб в оптимальном наборе аннотированных поставщиков служб затем активируется 450 со списком объединенных результатов, чтобы получать результаты 424. Изменения, внесенные, по меньшей мере, в один объединенный результат посредством, по меньшей мере, одного поставщика служб, отслеживаются во время этого процесса, и изменения затем объединяются с использованием процесса функции управления политиками свойств, идентичного используемому на этапе 412. Их результаты объединяются 426 в существующий набор результатов.[0307] At least one service provider in the optimal set of annotated service providers is then activated 450 with a list of combined results to obtain
[0308] Результирующие данные сортируются 428 и унифицируются в универсальное представление 490.[0308] The resulting data is sorted 428 and unified into a
[0309] Можно принимать во внимание, что одно преимущество способов и систем, описанных выше относительно компонента(ов) 1082 оркестровки служб, состоит в том, что они могут преимущественно применяться и/или использоваться в различных областях техники, отличных от областей техники, которые, в частности, связаны с интеллектуальными автоматизированными помощниками. Примеры таких других областей техники, в которых аспекты и/или признаки процедур оркестровки служб, включают в себя, например, одно или более из следующего:[0309] It can be appreciated that one advantage of the methods and systems described above with respect to the service orchestration component(s) 1082 is that they can be advantageously applied and/or used in various technical fields other than those that are , in particular, are associated with intelligent automated assistants. Examples of such other arts in which aspects and/or features of service orchestration procedures include, for example, one or more of the following:
- динамические "смешения" на web-узлах и в web-приложениях и службах;- dynamic "blends" in web sites and web applications and services;
- оптимизация распределенных запросов к базе данных;- optimization of distributed queries to the database;
- динамическая конфигурация сервис-ориентированной архитектуры.- dynamic configuration of service-oriented architecture.
Компонент(ы) 1088 моделей характеристик службComponent(s) 1088 service characteristics models
[0310] По меньшей мере, в одном варианте осуществления, компонент(ы) 1088 моделей характеристик служб может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0310] In at least one embodiment, the component(s) 1088 of the service characteristics models can be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- Предоставление машиночитаемой информации о характеристиках служб, чтобы выполнять определенные классы вычислений;- Providing machine-readable information about the characteristics of services in order to perform certain classes of calculations;
- Предоставление машиночитаемой информации о характеристиках служб, чтобы отвечать на определенные классы запросов;- Providing machine-readable information about the characteristics of services in order to respond to certain classes of requests;
- Предоставление машиночитаемой информации о том, какие классы транзакций предоставляются посредством различных служб;- Providing machine-readable information about what classes of transactions are provided through various services;
- Предоставление машиночитаемой информации о параметрах для API, представленных посредством различных служб;- Providing machine-readable parameter information for APIs exposed through various services;
- Предоставление машиночитаемой информации о параметрах, которые могут быть использованы в запросах к базе данных для баз данных, предоставляемых посредством различных служб.- Providing machine-readable information about parameters that can be used in database queries for databases provided through various services.
Компонент(ы) 1090 процессора выводаOutput processor component(s) 1090
[0311] По меньшей мере, в одном варианте осуществления, компонент(ы) 1090 процессора вывода может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0311] In at least one embodiment, output processor component(s) 1090 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- Форматирование выходных данных, которые представляются в универсальной внутренней структуре данных, в формы и макеты, которые подготавливают их надлежащим образом для различных модальностей. Выходные данные могут включать в себя, например, общение на естественном языке между интеллектуальным автоматизированным помощником и пользователем; данные об объектах предметной области, к примеру, свойства ресторанов, фильмов, продуктов и т.п.; результаты с зависящими от предметной области данными из информационных служб, к примеру, прогнозы погоды, проверки статуса рейса, цены и т.п.; и/или интерактивные ссылки и кнопки, которые предоставляют возможность пользователю реагировать посредством прямого взаимодействия с представлением вывода.- Formatting the output data, which is presented in a universal internal data structure, into forms and layouts that prepare them appropriately for different modalities. The output may include, for example, natural language communication between the intelligent automated assistant and the user; data about objects in the subject area, for example, properties of restaurants, films, products, etc.; results with domain-specific data from information services, such as weather forecasts, flight status checks, prices, etc.; and/or clickable links and buttons that enable the user to respond through direct interaction with the output view.
- Подготовка выходных данных для модальностей, которые могут включать в себя, например, любую комбинацию следующего: графические пользовательские интерфейсы; текстовые сообщения; почтовые сообщения; звуки; анимации; и/или речевой вывод.- Preparing output for modalities, which may include, for example, any combination of the following: graphical user interfaces; text messages; postal messages; sounds; animations; and/or speech output.
- Динамическая подготовка данных для различных механизмов отображения на основе графического пользовательского интерфейса на основе запроса. Например, использование различных макетов и форматов обработки вывода в зависимости от того, какой web-обозреватель и/или устройство используется.- Dynamic data preparation for various display engines based on query based GUI. For example, using different layouts and output processing formats depending on which web browser and/or device is being used.
- Динамическая подготовка выходных данных в различных голосах в форме речевого сигнала.- Dynamic preparation of output data in various voices in the form of a speech signal.
- Динамическая подготовка к указанным модальностям на основе пользовательских предпочтений.- Dynamic preparation for specified modalities based on user preferences.
- Динамическая подготовка вывода с использованием конкретных для пользователя "оболочек", которые настраивают оформление и функциональность.- Dynamic output preparation using user-specific "skins" that customize appearance and functionality.
- Отправка в модальность потока выходных пакетов, показывающих промежуточное состояние, обратную связь или результаты по всем фазам взаимодействия с помощником 1002.- Sending output packets to the stream modality showing intermediate status, feedback or results for all phases of interaction with
[0312] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1090 процессора вывода могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1090 процессора вывода могут быть выполнены, реализованы и/или инициированы посредством одной или более следующих типов систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинаций вышеозначенного):[0312] According to specific embodiments, multiple instances or subprocesses of output processor component(s) 1090 may be simultaneously implemented and/or initiated through the use of one or
- программные модули в клиенте или сервере варианта осуществления интеллектуального автоматизированного помощника;- program modules in the client or server of an embodiment of an intelligent automated assistant;
- удаленно вызываемые службы;- remotely called services;
- использование сочетания шаблонов и процедурного кода.- using a combination of templates and procedural code.
[0313] Ссылаясь теперь на Фиг.39, показана блок-схема последовательности операций способа, иллюстрирующая пример процедуры многофазного вывода согласно одному варианту осуществления. Процедура многофазного вывода включает в себя этапы 702 обработки в автоматизированном помощнике 1002 и этапы 704 многофазного вывода.[0313] Referring now to FIG. 39, a flowchart illustrating an example of a multi-phase output procedure according to one embodiment is shown. The multi-phase output procedure includes processing
[0314] На этапе 710, получается произнесение речевого ввода, и компонент преобразования речи в текст (к примеру, компонент, описанный в связи с Фиг.22) интерпретирует речь, чтобы формировать набор вариантов 712 интерпретации речи. В одном варианте осуществления, компонент преобразования речи в текст реализуется с использованием, например, модуля распознавания нюансов, предлагаемого компанией Nuance Communications, Inc., Burlington, MA. Варианты 712 интерпретации речи могут быть показаны пользователю на 730, например, в перефразированной форме. Например, интерфейс может показывать альтернативы "Вы сказали?", перечисляющие несколько возможных альтернативных текстовых интерпретаций одного сэмпла звука речи.[0314] In
[0315] По меньшей мере, в одном варианте осуществления, предоставляется пользовательский интерфейс, чтобы давать возможность пользователю прерываться и выбирать из вариантов интерпретации речи.[0315] In at least one embodiment, a user interface is provided to allow the user to interrupt and select from speech interpretation options.
[0316] На этапе 714, варианты 712 интерпретации речи отправляются в языковой интерпретатор 1070, который может формировать представления намерения 716 пользователя, по меньшей мере, для одного варианта 712 интерпретации речи. На этапе 732, перефразирования этих представлений намерения 716 пользователя формируются и представляются пользователю. (См. связанный этап 132 процедуры 120 на Фиг.22).[0316] At
[0317] По меньшей мере, в одном варианте осуществления, пользовательский интерфейс предоставляет возможность пользователю прерываться и выбирать из перефразирований интерпретаций 732 на естественном языке.[0317] In at least one embodiment, the user interface allows the user to interrupt and select from paraphrases of natural language interpretations 732.
[0318] На этапе 718, выполняется анализ задач и диалогов. На этапе 734, интерпретации задачи и предметной области представляются пользователю с использованием алгоритма перефразирования намерения.[0318] At 718, task and dialog analysis is performed. At block 734, the task and domain interpretations are presented to the user using the intent rephrasing algorithm.
[0319] Также ссылаясь теперь на Фиг.40, показан снимок экрана, иллюстрирующий пример обработки вывода согласно одному варианту осуществления. Экран 4001 включает в себя отражение 4002 речевого ввода пользователя, сформированного посредством этапа 730. Экран 4001 дополнительно включает в себя перефразирование 4003 намерения пользователя, сформированного посредством этапа 734. В одном варианте осуществления, как проиллюстрировано в примере по Фиг.40, для ключевых слов, таких как "мероприятия", используется специальное форматирование/выделение, которое может быть использовано для того, чтобы упрощать обучение пользователя для взаимодействия с интеллектуальным автоматизированным помощником 1002. Например, посредством визуального наблюдения форматирования отображаемого текста, пользователь может легко идентифицировать и интерпретировать обратно, что интеллектуальный автоматизированный помощник распознает ключевые слова, такие как "мероприятия", "в следующую среду", "Сан-Франциско" и т.п.[0319] Also referring now to FIG. 40, a screenshot is shown illustrating an example of output processing according to one embodiment.
[0320] Возвращаясь к Фиг.39, по мере того, как запросы координируются 720 для служб, и результаты динамически собираются, промежуточные результаты могут отображаться в форме хода 736 выполнения в реальном времени. Например, может возвращаться список ресторанов, и затем их обзоры могут динамически заполняться по мере того, как поступают результаты из служб обзоров. Службы могут включать в себя службы на основе web-технологий и/или службы, которые осуществляют доступ к информации, сохраненной локально в устройстве, и/или из любого другого источника.[0320] Referring back to FIG. 39, as requests are coordinated 720 for services and results are dynamically collected, intermediate results may be displayed in the form of real-
[0321] Универсальное представление ответа 722 формируется и форматируется 724 для надлежащей модальности вывода. После того, как конечное форматирование вывода завершается, другой вид перефразирования может предлагаться на этапе 738. На этой фазе весь набор результатов может анализироваться и сравниваться с начальным запросом. Затем может предлагаться сводка результатов или ответ на вопрос.[0321] A
[0322] Также ссылаясь на Фиг.41, показан другой пример обработки вывода согласно одному варианту осуществления. Экран 4101 иллюстрирует перефразирование 4102 интерпретации текста, сформированной посредством этапа 732, ход 4103 выполнения в реальном времени, сформированный посредством этапа 736, и перефразированную сводку 7104, сформированную посредством этапа 738. Также включены подробные результаты 4105.[0322] Also referring to FIG. 41, another example of output processing according to one embodiment is shown.
[0323] В одном варианте осуществления, помощник 1002 допускает формирование вывода в нескольких режимах. Ссылаясь теперь на Фиг.42, показана блок-схема последовательности операций способа, иллюстрирующая пример обработки многомодального вывода согласно одному варианту осуществления.[0323] In one embodiment,
[0324] Способ начинается на этапе 600. Процессор 1090 вывода принимает универсальное представление ответа 490 и форматирует 612 ответ согласно устройству и модальности, которая является надлежащей и применимой. Этап 612 может включать в себя информацию из устройства и моделей 610 модальности и/или моделей 614 данных предметной области.[0324] The method begins at 600. The
[0325] После того, как ответ 490 отформатирован 612, любое число различных механизмов вывода может быть использовано в любой комбинации. Примеры, проиллюстрированные на Фиг.42, включают в себя:[0325] Once the
- Формирование 620 вывода текстовых сообщений, который отправляется 630 в канал текстовых сообщений;-
- Формирование 622 вывода электронной почты, который отправляется 632 в качестве почтового сообщения;- Formation 622 e-mail output, which is sent 632 as a mail message;
- Формирование 624 GUI-вывода, который отправляется 634 в устройство или web-обозреватель для подготовки;-
- Формирование 626 речевого вывода, который отправляется 636 в модуль формирования речи.-
[0326] Специалисты в данной области техники должны признавать, что может быть использовано множество других механизмов вывода.[0326] Those skilled in the art will recognize that many other inference mechanisms may be used.
[0327] В одном варианте осуществления, содержимое выходных сообщений, сформированных посредством процедуры 700 многофазного вывода, приспосабливается к режиму обработки 600 многомодального вывода. Например, если модальностью вывода является речь 626, язык, используемый для того, чтобы перефразировать пользовательский ввод 730, интерпретации 732 текста, интерпретации 734 задачи и предметной области, ход 736 выполнения и/или сводки 738 результатов, может быть более или менее многословным или использовать предложения, которые проще обнаруживать в звуковой форме, чем в письменной форме. В одном варианте осуществления, язык приспосабливается на этапах процедуры 700 многофазного вывода; в других вариантах осуществления, процедура 700 многофазного вывода приводит к промежуточному результату, который дополнительно уточняется в конкретный язык посредством обработки 600 многомодального вывода.[0327] In one embodiment, the content of the output messages generated by the
Компонент(ы) 1052 кратковременного персональногоComponent(s) 1052 short-term personal
запоминающего устройстваstorage device
[0328] По меньшей мере, в одном варианте осуществления, компонент 1052 кратковременного персонального запоминающего устройства может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0328] In at least one embodiment, short-term
- Хранение предыстории недавнего диалога между вариантом осуществления помощника и пользователем, включающей в себя предысторию пользовательских вводов и их интерпретаций;- Storing a history of the recent dialogue between the assistant embodiment and the user, including a history of user inputs and their interpretations;
- Хранение предыстории недавних выборов пользователем в GUI, к примеру, какие элементы открыты или изучены, по каким телефонным номерам звонили, какие элементы преобразованы, какие анонсы фильмов воспроизведены, и т.п.;- Storing a history of recent selections by the user in the GUI, such as which items are open or explored, which phone numbers have been called, which items have been converted, which movie previews have been played, etc.;
- Сохранение предыстории диалога и пользовательского взаимодействия в базе данных на клиенте, сервере в конкретном для пользователя сеансе или в состоянии клиентского сеанса, таком как куки-файл web-обозревателя или RAM, используемое посредством клиента;- Storing a history of dialogue and user interaction in a database on the client, server in a user-specific session or client session state such as a web browser cookie or RAM used by the client;
- Сохранение списка недавних пользовательских запросов;- Save a list of recent user requests;
- Сохранение последовательности результатов недавних пользовательских запросов;- Saving the sequence of results of recent user queries;
- Сохранение предыстории последовательности щелчков UI-событий, включающих в себя нажатия кнопок, прикосновения, жесты, триггеры с активацией голосом и/или любой другой пользовательский ввод.- Saving a history of click sequences of UI events, including button presses, touches, gestures, voice-activated triggers, and/or any other user input.
- Сохранение данных датчиков устройств (таких как местоположение, время, позиционная ориентация, движение, уровень освещенности, уровень звука и т.п.), которые могут быть коррелированы со взаимодействиями с помощником.- Storage of device sensor data (such as location, time, positional orientation, movement, light level, sound level, etc.) that can be correlated with interactions with the assistant.
[0329] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1052 кратковременного персонального запоминающего устройства могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.[0329] According to specific embodiments, multiple instances or sub-processes of short-term personal storage component(s) 1052 may be simultaneously implemented and/or initiated through the use of one or
[0330] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1052 кратковременного персонального запоминающего устройства могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1052 кратковременного персонального запоминающего устройства. Например, компонент(ы) 1052 кратковременного персонального запоминающего устройства может активироваться, когда существует пользовательский сеанс с вариантом осуществления помощника 1002, по меньшей мере, в одной форме ввода или действие пользователем, или ответ посредством системы.[0330] According to various embodiments, one or more different sub-processes or instances of the short-term personal storage component(s) 1052 may be initiated in response to the detection of one or more conditions or events that satisfy one or more different types of minimum threshold criteria for triggering, at least one instance of the short-term personal storage component(s) 1052. For example, the short-term personal storage component(s) 1052 may be activated when there is a user session with an embodiment of assistant 1002 in at least one form of input or user action or response by the system.
[0331] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1052 кратковременного персонального запоминающего устройства может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Например, компонент(ы) 1052 кратковременного персонального запоминающего устройства может осуществлять доступ к данным из компонента(ов) 1054 долговременного персонального запоминающего устройства (например, чтобы получать пользовательские идентификационные данные и персональные настройки) и/или к данным из локального устройства относительно времени и местоположения, которые могут быть включены в записи кратковременного запоминающего устройства.[0331] In at least one embodiment, a given instance of short-term personal storage component(s) 1052 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. For example, the short-term personal storage component(s) 1052 may access data from the long-term personal storage component(s) 1054 (eg, to obtain user identities and personal settings) and/or data from the local device regarding time and location. , which can be included in short-term memory entries.
[0332] Ссылаясь теперь на Фиг.43A и 43B, показаны снимки экрана, иллюстрирующие пример использования компонента(ов) 1052 кратковременного персонального запоминающего устройства, чтобы поддерживать диалоговый контекст при изменении местоположения, согласно одному варианту осуществления. В этом примере, пользователь спросил относительно местной погоды, а затем произносит просто "в Нью-Йорке". Экран 4301 показывает начальный ответ, включающий в себя местную погоду. Когда пользователь говорит "в Нью-Йорке", помощник 1002 использует компонента(а) 1052 кратковременного персонального запоминающего устройства, чтобы осуществлять доступ к диалоговому контексту и тем самым определять то, что текущей предметной областью являются прогнозы погоды. Это предоставляет возможность помощнику 1002 интерпретировать новое произнесение "в Нью-Йорке" как означающее "каков прогноз погоды в Нью-Йорке в предстоящий вторник?". Экран 4302 показывает надлежащий ответ, включающий в себя прогнозы погоды для Нью-Йорка.[0332] Referring now to FIGS. 43A and 43B, screen shots are shown illustrating an example of using short-term personal storage component(s) 1052 to maintain conversational context when changing location, according to one embodiment. In this example, the user asked about the local weather and then simply says "in New York".
[0333] В примере Фиг.43A и 43B, в кратковременном запоминающем устройстве сохранены не только слова ввода "Послезавтра будет дождь?", но и семантическая интерпретация системой ввода в качестве предметной области погоды и параметра времени, заданного как послезавтра.[0333] In the example of Figs. 43A and 43B, not only the input words "Will it rain the day after tomorrow?" are stored in the short-term memory, but also the semantic interpretation of the input system as the weather domain and the time parameter set as the day after tomorrow.
Компонент(ы) 1054 долговременного персональногоComponent(s) 1054 long-term personal
запоминающего устройстваstorage device
[0334] По меньшей мере, в одном варианте осуществления, компонент 1054 долговременного персонального запоминающего устройства может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0334] In at least one embodiment, the long-term personal storage device component 1054 can be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- Постоянное сохранение персональной информации и данных о пользователе, включающих в себя, например, его предпочтения, идентификационные данные, аутентификационные учетные данные, учетные записи, адреса и т.п.;- Permanent storage of personal information and data about the user, including, for example, his preferences, identification data, authentication credentials, accounts, addresses, etc.;
- Сохранение информации, которую пользователь собрал посредством использования варианта осуществления помощника 1002, такой как эквивалент закладок, избранного, выборок и т.п.;- Saving the information that the user has collected through the use of the implementation of the
- Постоянное сохранение сохраненных списков коммерческих организаций, включающих в себя рестораны, отели, магазины, театры и другие места проведения мероприятий. В одном варианте осуществления, компонент(ы) 1054 долговременного персонального запоминающего устройства сохраняет больше, чем просто названия или URL-адреса, а также сохраняет информацию, достаточную для того, чтобы вызывать полный перечень по объектам, включающий в себя телефонные номера, местоположения на карте, фотографии и т.п.;- Permanent storage of saved lists of commercial organizations, including restaurants, hotels, shops, theaters and other venues. In one embodiment, the long-term personal storage component(s) 1054 stores more than just names or URLs, and also stores information sufficient to call up a complete list of objects, including phone numbers, locations on a map , photographs, etc.;
- Постоянное сохранение сохраненных фильмов, видео, музыки, шоу и других элементов развлечения;- Permanent preservation of saved movies, videos, music, shows and other entertainment elements;
- Постоянное сохранение персонального календаря(и), списка(ков) занятий, напоминаний и оповещений, баз данных контактов, списков из социальных сетей пользователя и т.п.;- Permanent saving of personal calendar(s), list(s) of activities, reminders and alerts, contact databases, lists from the user's social networks, etc.;
- Постоянное сохранение списков покупок и списков пожеланий для продуктов и служб, полученных купонов и дисконтных кодов и т.п.;- Permanent storage of shopping lists and wish lists for products and services, received coupons and discount codes, etc.;
- Постоянное сохранение предыстории и квитанций по транзакциям, включающим в себя резервирование, покупки, билеты на мероприятия и т.п.- Permanent storage of history and receipts for transactions, including reservations, purchases, event tickets, etc.
[0335] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1054 долговременного персонального запоминающего устройства могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1054 долговременного персонального запоминающего устройства могут быть выполнены, реализованы и/или инициированы с использованием одной или более баз данных и/или файлов на (или ассоциированных) клиентах 1304 и/или серверах 1340 и/или постоянно размещающихся в устройствах хранения данных.[0335] According to specific embodiments, multiple instances or subprocesses of long-term personal storage component(s) 1054 may be simultaneously implemented and/or initiated through the use of one or
[0336] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1054 долговременного персонального запоминающего устройства могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1054 долговременного персонального запоминающего устройства. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1054 долговременного персонального запоминающего устройства, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0336] According to various embodiments, one or more different sub-processes or instances of the long-term personal storage component(s) 1054 may be initiated in response to the detection of one or more conditions or events that satisfy one or more different types of minimum threshold criteria for triggering, at least one instance of the long-term personal storage component(s) 1054. Various examples of conditions or events that may trigger or begin the implementation of one or more different subprocesses or instances of persistent personal storage component(s) 1054 may include, but are not limited to, one or more of the following (or combinations of the foregoing):
- Записи долговременного персонального запоминающего устройства могут быть обнаружены в качестве побочного эффекта взаимодействия пользователя с вариантом осуществления помощника 1002. Любой вид взаимодействия с помощником может формировать добавления в долговременное персональное запоминающее устройство, включающие в себя просмотр, поиск, нахождение, совершение покупок, составление расписаний, приобретение, резервирование, обмен данными с другими людьми через помощник.- Long-term personal storage entries can be discovered as a side effect of user interaction with the
- Долговременное персональное запоминающее устройство также может наполняться как следствие регистрации пользователей в учетной записи или службе, обеспечения помощнику 1002 доступа к учетным записям в других службах, использования помощником 1002 службы на клиентском устройстве с доступом к другим базам данных персональной информации, таким как календари, списки занятий, списки контактов и т.п.- Long-term personal storage may also be populated as a result of registering users to an account or service, allowing assistant 1002 to access accounts in other services, using
[0337] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1054 долговременного персонального запоминающего устройства может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств, которые могут находиться, например, на клиенте(ах) 1304 и/или сервере(ах) 1340. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1054 долговременного персонального запоминающего устройства, могут включать в себя, но не только, данные из других баз данных персональной информации, таких как списки контактов или списки друзей, календари, списки занятий, другие диспетчеры списков, диспетчеры персональных счетов и кошельков, предоставляемые посредством внешних служб 1360, и т.п.[0337] In at least one embodiment, a given instance of long-term personal storage component(s) 1054 can access and/or use information from one or more associated databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices, which may be located, for example, on the client(s) 1304 and/or server(s) 1340. Examples of the various types of data that can be accessed by the long-term personal storage component(s) 1054 may include, but are not limited to, data from other personal information databases such as contact lists or lists. friends, calendars, activity lists, other list managers, personal account and wallet managers provided through external 1360 services, and the like.
[0338] Ссылаясь теперь на Фиг.44A-44C, показаны снимки экрана, иллюстрирующие пример использования компонента(ов) 1054 долговременного персонального запоминающего устройства, согласно одному варианту осуществления. В примере, предоставляется признак (с названием "My Stuff (Мои материалы)"), который включает в себя доступ к сохраненным объектам, таким как рестораны, фильмы и организации, которые находятся через интерактивные сеансы с вариантом осуществления помощника 1002. На экране 4401 по Фиг.44A, пользователь нашел ресторан. Пользователь прикасается к Save to My Stuff (Сохранить в Мои материалы) 4402, который сохраняет информацию о ресторане в компоненте(ах) 1054 долговременного персонального запоминающего устройства.[0338] Referring now to FIGS. 44A-44C, screen shots are shown illustrating an example of using a long-term personal storage device component(s) 1054, according to one embodiment. In the example, a feature (titled "My Stuff") is provided that includes access to stored objects such as restaurants, movies, and organizations that are found through interactive sessions with the
[0339] Экран 4403 по Фиг.44B иллюстрирует пользовательский доступ к My Stuff (Мои материалы). В одном варианте осуществления, пользователь может выбирать из категорий, чтобы переходить к требуемому элементу.[0339]
[0340] Экран 4404 по Фиг.44C иллюстрирует категорию My Restaurant (Мои рестораны), включающую в себя элементы, ранее сохраненные в My Stuff (Мои материалы).[0340] The
Процедура автоматизированного вызова и ответаAutomated call and answer procedure
[0341] Ссылаясь теперь на Фиг.33, показана блок-схема последовательности операций способа, иллюстрирующая процедуру автоматического вызова и ответа согласно одному варианту осуществления. Процедура по Фиг.33 может быть реализована в связи с одним или более вариантов осуществления интеллектуального автоматизированного помощника 1002. Можно принимать во внимание, что интеллектуальный автоматизированный помощник 1002, как проиллюстрировано на Фиг.1, является просто одним примером из широкого диапазона вариантов осуществления системы на основе интеллектуального автоматизированного помощника, которые могут быть реализованы. Другие варианты осуществления систем на основе интеллектуального автоматизированного помощника (не показаны) могут включать в себя дополнительные, меньше и/или другие компоненты/признаки по сравнению с тем, что проиллюстрировано, например, в примерном интеллектуальном автоматизированном помощнике 1002, показанном на Фиг.1.[0341] Referring now to FIG. 33, a flowchart is shown illustrating an automatic call and response procedure according to one embodiment. The procedure of FIG. 33 may be implemented in connection with one or more embodiments of the intelligent
[0342] По меньшей мере, в одном варианте осуществления, процедура автоматизированного вызова и ответа по Фиг.33 может быть выполнена с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0342] In at least one embodiment, the automated call and response procedure of FIG. 33 may be configured to perform and/or implement various types of functions, operations, actions, and/or other features, such as, for example, one or more of the following (or a combination of the above):
- Процедура автоматизированного вызова и ответа по Фиг.33 может предоставлять контур потока управления интерфейсом для разговорного интерфейса между пользователем и интеллектуальным автоматизированным помощником 1002. По меньшей мере, одна итерация процедуры автоматизированного вызова и ответа может служить в качестве ответвления в разговоре. Разговорный интерфейс является интерфейсом, в котором пользователь и помощник 1002 общаются посредством поочередного произнесения фраз в разговорной манере.- The automated call and answer procedure of FIG. 33 may provide an interface control flow loop for the conversational interface between the user and the intelligent
- Процедура автоматизированного вызова и ответа по Фиг.33 может предоставлять исполнительный поток управления для интеллектуального автоматизированного помощника 1002. Иными словами, процедура управляет сбором ввода, обработкой ввода, формированием вывода и представлением вывода пользователю.- The automated call and response procedure of FIG. 33 may provide an execution flow of control for the intelligent
- Процедура автоматизированного вызова и ответа по Фиг.33 может координировать связь между компонентами интеллектуального автоматизированного помощника 1002. Иными словами, она может направлять то, где вывод одного компонента подается в другой, и где может происходить общий ввод из окружения и действие на окружение.- The automated call and response procedure of Fig. 33 can coordinate communication between the components of the intelligent
[0343] По меньшей мере, в некоторых вариантах осуществления части процедуры автоматизированного вызова и ответа также могут быть реализованы в других устройствах и/или системах компьютерной сети.[0343] In at least some embodiments, portions of the automated call and response procedure may also be implemented in other devices and/or computer network systems.
[0344] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов процедуры автоматизированного вызова и ответа могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. По меньшей мере, в одном варианте осуществления, одна или более или выбранные части процедуры автоматизированного вызова и ответа могут быть реализованы в одном или более клиенте(ов) 1304, в одном или более сервере(ов) 1340 и/или в комбинации вышеозначенного.[0344] According to specific embodiments, multiple instances or sub-processes of an automated call and response procedure may be simultaneously implemented and/or initiated through the use of one or
[0345] Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности процедуры автоматизированного вызова и ответа могут быть выполнены, реализованы и/или инициированы посредством программных компонентов, сетевых служб, баз данных и т.п. или любой комбинации вышеозначенного.[0345] For example, in at least some embodiments, various aspects, features, and/or functionality of an automated call and response procedure may be performed, implemented, and/or initiated by software components, network services, databases, and the like. or any combination of the above.
[0346] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров процедуры автоматизированного вызова и ответа могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов критериев (таких как, например минимальные пороговые критерии) для инициирования, по меньшей мере, одного экземпляра процедуры автоматизированного вызова и ответа. Примеры различных типов условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров процедуры автоматизированного вызова и ответа, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0346] According to various embodiments, one or more different sub-processes or instances of an automated call and response procedure may be initiated in response to the detection of one or more conditions or events that satisfy one or more different types of criteria (such as, for example, minimum threshold criteria) to initiate at least one instance of the automated call and response procedure. Examples of various types of conditions or events that may trigger or begin the implementation of one or more different subprocesses or instances of an automated call and response procedure may include, but are not limited to, one or more of the following (or combinations of the foregoing):
• пользовательский сеанс с экземпляром интеллектуального автоматизированного помощника 1002, такой как, например, но не только, одно или более из следующего:• a user session with an instance of the intelligent
- запуск приложения для мобильных устройств, например, приложения для мобильных устройств, которое является реализацией варианта осуществления интеллектуального автоматизированного помощника 1002;- launching an application for mobile devices, for example, an application for mobile devices, which is an implementation of an embodiment of an intelligent
- запуск компьютерного приложения, например, приложения, которое является реализацией варианта осуществления интеллектуального автоматизированного помощника 1002;- launching a computer application, for example, an application that is an implementation of an embodiment of an intelligent
- нажатие специальной кнопки на мобильном устройстве, к примеру, "кнопки речевого ввода";- pressing a special button on a mobile device, for example, "speech input buttons";
- кнопка на периферийном устройстве, присоединенном к компьютеру или мобильному устройству, такому как гарнитура, телефонная трубка или базовая станция, навигационная GPS-система, бытовой прибор, пульт дистанционного управления или любое другое устройство с кнопкой, которая может быть ассоциирована с активацией помощи;- a button on a peripheral device connected to a computer or mobile device, such as a headset, handset or base station, GPS navigation system, household appliance, remote control or any other device with a button that can be associated with the activation of assistance;
- запуск web-сеанса из web-обозревателя для web-узла, реализующего интеллектуальный автоматизированный помощник 1002;- launching a web session from a web browser to a web site implementing intelligent
- начало взаимодействия из существующего сеанса web-обозревателя для web-узла, реализующего интеллектуальный автоматизированный помощник 1002, при котором, например, запрашивается служба интеллектуального автоматизированного помощника 1002;- starting an interaction from an existing web browser session for a web site implementing the intelligent
- отправка почтового (e-mail) сообщения на сервер 1426 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;- sending a mail (e-mail) message to the modality server 1426, which mediates communication with an embodiment of the intelligent
- отправка текстового сообщения на сервер 1426 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;- sending a text message to the server 1426 modality, which mediates communication with an embodiment of the intelligent
- осуществление телефонного вызова с сервером 1434 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;- making a phone call with a modality server 1434 that mediates communication with an embodiment of the intelligent
- отправка события, такого как оповещение или уведомление, в приложение, которое предоставляет вариант осуществления интеллектуального автоматизированного помощника 1002.- sending an event, such as an alert or notification, to an application that provides an embodiment of an intelligent
• когда устройство, которое предоставляет интеллектуальный автоматизированный помощник 1002, включается и/или запускается.• when the device that provides the intelligent automated assistant 1002 turns on and/or starts.
[0347] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров процедуры автоматизированного вызова и ответа могут быть инициированы и/или реализованы вручную, автоматически, статически, динамически, одновременно и/или как комбинации вышеозначенного. Дополнительно, различные экземпляры и/или варианты осуществления процедуры автоматизированного вызова и ответа могут быть инициированы в один или более различных временных интервалов (например, в течение конкретного временного интервала, с регулярными периодическими интервалами, с нерегулярными периодическими интервалами, по требованию и т.п.).[0347] According to various embodiments, one or more different subprocesses or instances of an automated call and response procedure may be initiated and/or implemented manually, automatically, statically, dynamically, simultaneously, and/or combinations of the above. Additionally, various instances and/or embodiments of the automated call and response procedure may be initiated at one or more different time slots (e.g., during a specific time slot, at regular periodic intervals, at irregular periodic intervals, on demand, etc. ).
[0348] По меньшей мере, в одном варианте осуществления, данный экземпляр процедуры автоматизированного вызова и ответа может использовать и/или формировать различные специальные типы данных и/или другие типы информации при выполнении конкретных задач и/или операций. Они могут включать в себя, например, входные данные/информацию и/или выходные данные/информацию. Например, по меньшей мере, в одном варианте осуществления, по меньшей мере, один экземпляр процедуры автоматизированного вызова и ответа может осуществлять доступ, обрабатывать и/или иным образом использовать информацию из одного или более различных типов источников, таких как, например, одна или более баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Дополнительно, по меньшей мере, один экземпляр процедуры автоматизированного вызова и ответа может формировать один или более различных типов выходных данных/информации, которые, например, могут быть сохранены в локальном запоминающем устройстве и/или удаленных запоминающих устройствах.[0348] In at least one embodiment, a given instance of an automated call and response procedure may use and/or generate various special types of data and/or other types of information when performing specific tasks and/or operations. They may include, for example, input data/information and/or output data/information. For example, in at least one embodiment, at least one instance of an automated call and response procedure may access, process, and/or otherwise use information from one or more different types of sources, such as, for example, one or more databases. In at least one embodiment, at least a portion of the database information may be accessed through communication with one or more local and/or remote storage devices. Additionally, at least one instance of the automated call and response procedure may generate one or more different types of output data/information, which, for example, may be stored in local storage and/or remote storage devices.
[0349] По меньшей мере, в одном варианте осуществления, начальная конфигурация данного экземпляра процедуры автоматизированного вызова и ответа может быть выполнена с использованием одного или более различных типов параметров инициализации. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части параметров инициализации может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. По меньшей мере, в одном варианте осуществления, по меньшей мере, часть параметров инициализации, предоставляемых в экземпляр процедуры автоматизированного вызова и ответа, может соответствовать и/или может извлекаться из входных данных/информации.[0349] In at least one embodiment, the initial configuration of a given automated call and response procedure instance may be performed using one or more different types of initialization parameters. In at least one embodiment, at least a portion of the initialization parameters may be accessed via communication with one or more local and/or remote storage devices. In at least one embodiment, at least a portion of the initialization parameters provided to the automated call and response procedure instance may correspond to and/or may be derived from input data/information.
[0350] В конкретном примере по Фиг.33, предполагается, что один пользователь осуществляет доступ к экземпляру интеллектуального автоматизированного помощника 1002 по сети из клиентского приложения с характеристиками речевого ввода. Пользователь интересуется нахождением хорошего места для ужина в ресторане и контактирует с интеллектуальным автоматизированным помощником 1002 в форме разговора, чтобы помогать предоставлять эти службы.[0350] In the specific example of FIG. 33, it is assumed that one user is accessing an instance of the intelligent automated assistant 1002 over the network from a client application with speech input characteristics. The user is interested in finding a good place to dine in a restaurant and contacts the intelligent automated assistant 1002 in the form of a conversation to help provide these services.
[0351] На этапе 100, пользователь запрашивается в виде подсказки вводить запрос. Пользовательский интерфейс клиента предлагает несколько режимов ввода, как описано в связи с Фиг.26. Они могут включать в себя, например:[0351] At
- интерфейс для печатаемого ввода, который может активировать процедуру активного извлечения печатаемого ввода, как проиллюстрировано на Фиг.11;- an interface for typing input, which can activate the active retrieval of typing input procedure, as illustrated in Fig.11;
- интерфейс для речевого ввода, который может активировать процедуру активного извлечения речевого ввода, как проиллюстрировано на Фиг.22.- an interface for speech input, which can activate the procedure for active extraction of speech input, as illustrated in Fig.22.
- интерфейс для выбора вводов из меню, который может активировать активное извлечение ввода на основе GUI, как проиллюстрировано на Фиг.23.- an interface for selecting inputs from a menu, which can activate active GUI-based input retrieval, as illustrated in FIG.
[0352] Специалисты в данной области техники должны признавать, что могут предоставляться другие режимы ввода.[0352] Those skilled in the art will recognize that other input modes may be provided.
[0353] В одном варианте осуществления, этап 100 может включать в себя представление вариантов, оставшихся от предыдущего разговора с помощником 1002, например, с использованием технологий, описанных в процедуре активного извлечения ввода рекомендаций по диалогу, описанной в связи с Фиг.24.[0353] In one embodiment, step 100 may include presenting options left over from a previous conversation with
[0354] Например, посредством одного из способов активного извлечения ввода на этапе 100, пользователь может сказать помощнику 1002: "Где я могу найти хорошую итальянскую еду в округе?" Например, пользователь, возможно, произносит это в компонент речевого ввода. Вариант осуществления компонента 1094 активного извлечения ввода вызывает службу преобразования речи в текст, запрашивает у пользователя подтверждение и затем представляет подтвержденный пользовательский ввод в качестве универсального аннотированного формата 2690 ввода.[0354] For example, through one of the active input retrieval methods at
[0355] Вариант осуществления компонента 1070 языкового интерпретатора затем вызывается на этапе 200, как описано в связи с Фиг.29. Компонент 1070 языкового интерпретатора грамматически анализирует текстовый ввод и формирует список возможных интерпретаций намерения 290 пользователя. В одном грамматическом анализе слово "итальянский" ассоциировано с ресторанами в итальянском стиле; "хороший" ассоциирован со свойством рекомендации ресторанов; и "в округе" ассоциирован с параметром положения, описывающим расстояние из показания глобального датчика (например, местоположение пользователя, предоставленное посредством GPS на мобильном устройстве).[0355] An embodiment of the
[0356] На этапе 300, представление намерения 290 пользователя передается в процессор 1080 потока диалогов, который реализует вариант осуществления процедуры анализа диалогов и потоков, как описано в связи с Фиг.32. Процессор 1080 потока диалогов определяет то, какая интерпретация намерения является наиболее вероятной, преобразует эту интерпретацию в экземпляры моделей предметных областей и параметры модели задач и определяет следующий этап потока в потоке диалогов. В текущем примере, модель предметной области ресторанов конкретизируется с помощью задачи выбора с ограничениями, чтобы находить ресторан посредством ограничений (стиль кухни, уровень рекомендации и ограничения близости). Модель потока диалогов указывает, что следующий этап заключается в том, чтобы получать несколько примеров ресторанов, удовлетворяющих этим ограничениям, и представлять их пользователю.[0356] At 300, a representation of the user's
[0357] На этапе 400, вариант осуществления процедуры 400 оркестровки потоков и служб активируется через компонент 1082 оркестровки служб. Он активирует набор служб 1084 от имени запроса пользователя, чтобы находить ресторан. В одном варианте осуществления, эти службы 1084 вносят некоторые данные в общий результат. Их данные объединяются, и результирующий список ресторанов представляется в универсальной, независимой от службы форме.[0357] At 400, an embodiment of the flow and
[0358] На этапе 500, процессор 1092 вывода формирует сводку диалога результатов, к примеру: "Я нашел несколько рекомендованных итальянских ресторанов недалеко". Процессор 1092 вывода комбинирует эту сводку с данными результатов вывода и затем отправляет комбинацию в модуль, который форматирует вывод для конкретного мобильного устройства пользователя на этапе 600.[0358] At
[0359] На этапе 700, этот конкретный для устройства выходной пакет отправляется в мобильное устройство, и клиентское программное обеспечение в устройстве подготавливает его на экране (или другом устройстве вывода) мобильного устройства.[0359] At
[0360] Пользователь просматривает это представление и решает изучить различные варианты. Если пользователь закончил 790, способ завершается. Если пользователь не закончил 490, другая итерация контура инициируется посредством возвращения на этап 100.[0360] The user views this view and decides to explore the various options. If the user has completed 790, the method ends. If the user has not completed 490, another loop iteration is initiated by returning to step 100.
[0361] Процедура автоматического вызова и ответа может применяться, например, к запросу пользователя "как насчет мексиканской еды?". Такой ввод может быть извлечен на этапе 100. На этапе 200, ввод интерпретируется как рестораны в мексиканском стиле и комбинируется с другим состоянием (хранимым в кратковременном персональном запоминающем устройстве 1052), чтобы поддерживать интерпретацию идентичного намерения, как и в прошлый раз, с одним изменением в параметре стиля ресторана. На этапе 300, это обновленное намерение формирует уточнение запроса, которое предоставляется в компонент(ы) 1082 оркестровки служб на этапе 400.[0361] The automatic call and answer procedure may be applied, for example, to the user's request "how about Mexican food?". Such an input can be retrieved at
[0362] На этапе 400 обновленный запрос координируется для нескольких служб 1084, приводя к новому набору ресторанов, который обобщается в диалоге на этапе 500, форматируется для устройства на 600 и отправляется по сети, чтобы показывать новую информацию на мобильном устройстве пользователя на этапе 700.[0362] At
[0363] В этом случае, пользователь находит понравившийся ресторан, показывает его на карте и отправляет указания, как добраться, другу.[0363] In this case, the user finds a restaurant they like, shows it on a map, and sends directions to a friend.
[0364] Специалисты в данной области техники должны признавать, что различные варианты осуществления процедуры автоматизированного вызова и ответа (не показаны) могут включать в себя дополнительные признаки и/или операции по сравнению с тем, что проиллюстрировано в конкретном варианте осуществления по Фиг.33, и/или могут опускать, по меньшей мере, часть признаков и/или операций процедуры автоматизированного вызова и ответа, проиллюстрированной в конкретном варианте осуществления по Фиг.33.[0364] Those skilled in the art will recognize that various embodiments of the automated call and response procedure (not shown) may include additional features and/or operations compared to what is illustrated in the specific embodiment of FIG. 33, and/or may omit at least a portion of the features and/or operations of the automated call and response procedure illustrated in the specific embodiment of FIG.
Выбор с ограничениямиChoice with restrictions
[0365] В одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 использует выбор с ограничениями при своих взаимодействиях с пользователем, с тем чтобы эффективнее идентифицировать и представлять элементы, которые с большой вероятностью должны представлять интерес для пользователя.[0365] In one embodiment, the intelligent automated assistant 1002 uses constrained selection in its user interactions to more effectively identify and present items that are likely to be of interest to the user.
[0366] Выбор с ограничениями является видом обобщенной задачи. Обобщенные задачи являются абстракциями, которые характеризуют виды объектов предметной области, вводы, выводы и поток управления, которые являются общими для класса задач. Задача выбора с ограничениями выполняется посредством выбора элементов из набора вариантов выбора объектов предметной области (к примеру, ресторанов) на основе ограничений выбора (к примеру, требуемой кухни или местоположения). В одном варианте осуществления, помощник 1002 помогает пользователю изучить пространство возможных вариантов выбора, с извлечением ограничений и предпочтений пользователя, представлением вариантов выбора и рекомендацией действий, которые следует выполнять для этих вариантов выбора, к примеру, резервировать, покупать, запоминать или совместно использовать их. Задача выполнена, когда пользователь выбирает один или более элементов, для которых следует выполнять действие.[0366] Constrained selection is a kind of generalized problem. Generalized tasks are abstractions that characterize the types of domain objects, inputs, outputs, and control flow that are common to a class of tasks. The constrained selection task is performed by selecting items from a set of domain object selections (eg, restaurants) based on selection constraints (eg, desired cuisine or location). In one embodiment,
[0367] Выбор с ограничениями является полезным во многих контекстах: например, выбор фильма для просмотра, ресторана для ужина, отеля на ночь, места для покупки книги и т.п. В общем, выбор с ограничениями является полезным, когда известна категория, и требуется выбирать экземпляр категории с некоторыми требуемыми свойствами.[0367] Constrained choice is useful in many contexts: for example, choosing a movie to watch, a restaurant for dinner, a hotel for the night, a place to buy a book, and the like. In general, constrained selection is useful when a category is known and it is desired to select an instance of a category with some required properties.
[0368] Одним традиционным подходом к выбору с ограничениями является служба работы с каталогами. Пользователь выбирает категорию, и система предлагает список вариантов выбора. В локальном каталоге можно ограничивать каталог местоположением, таким как город. Например, в службе "желтых страниц", пользователи выбирают книгу для города и затем ищут категорию, и книга показывает один или более элементов для этой категории. Основная проблема при использовании службы работы с каталогами состоит в том, что число возможно релевантных вариантов выбора является большим (например, рестораны в данном городе).[0368] One traditional approach to restricted selection is a directory service. The user selects a category and the system offers a list of choices. In a local directory, you can restrict the directory to a location, such as a city. For example, in a yellow pages service, users select a book for a city and then search for a category, and the book displays one or more items for that category. The main problem with using a directory service is that the number of possibly relevant choices is large (eg, restaurants in a given city).
[0369] Другим традиционным подходом является приложение управления базами данных, которое предоставляет способ формировать набор вариантов выбора посредством извлечения запроса от пользователя, извлечения совпадающих элементов и представления элементов некоторым способом, который выделяет характерные признаки. Пользователь просматривает строки и столбцы набора результатов, возможно сортируя результаты или изменяя запрос до тех пор, пока он не находит несколько подходящих вариантов. Проблема при использовании службы работы с базами данных состоит в том, что она может требовать, чтобы пользователь операционализировал свою человеческую потребность в качестве формального запроса и использовал абстрактные машины для сортировки, фильтрации и просмотра, чтобы изучить результирующие данные. Это затруднительно для большинства людей, даже с помощью графических пользовательских интерфейсов.[0369] Another conventional approach is a database management application that provides a way to generate a set of choices by extracting a request from a user, extracting matching items, and presenting the items in some way that highlights features. The user walks through the rows and columns of the result set, possibly sorting the results or modifying the query, until the user finds multiple matches. A problem with using a database service is that it may require the user to operationalize their human need as a formal query and use abstract sorting, filtering, and viewing machines to examine the resulting data. This is difficult for most people, even with graphical user interfaces.
[0370] Третьим традиционным подходом является открытый поиск, к примеру, "локальный поиск". Поиск прост в выполнении, но существует несколько проблем с поисковыми службами, что затрудняет людям осуществление задачи выбора с ограничениями. В частности:[0370] A third traditional approach is open search, eg "local search". The search is easy to perform, but there are several problems with search services that make it difficult for people to perform the task of selecting with restrictions. In particular:
- Аналогично поиску по каталогам, пользователь не может просто вводить категорию и рассматривать один или более возможных вариантов выбора, а должен сужать список.- Similar to a directory search, the user cannot simply enter a category and view one or more possible choices, but must narrow down the list.
- Если пользователь может сужать выбор посредством ограничений, непонятно, какие ограничения могут быть использованы (например, "можно поискать места, которые находятся на расстоянии, которое можно пройти пешком, или открыты допоздна?")- If the user can narrow down the selection through restrictions, it is not clear what restrictions can be used (e.g. "can I look for places that are within walking distance or open late?")
- Неясно, как указывать ограничения состояния (например, указана кухня или тип ресторана и каковы возможные значения?)- It's not clear how to specify state constraints (e.g. is a cuisine or restaurant type specified and what are the possible values?)
- Конфликт нескольких предпочтений; обычно нет объективно "лучшего" ответа на данный случай (например, мне нужно место, которое близко расположено и является дешевым, предлагающее деликатесы с превосходным обслуживанием, и которое открыто до полуночи).- Conflict of several preferences; there is usually no objectively "best" answer for this case (for example, I want a place that is close and cheap, offers gourmet food with excellent service, and is open until midnight).
- Предпочтения являются относительными, и они зависят от того, что доступно. Например, если пользователь может добиваться столика в ресторане с очень высоким рейтингом, он может выбирать его, даже если он является дорогим. Тем не менее, в общем, пользователь предпочитает менее дорогие варианты.- Preferences are relative and they depend on what is available. For example, if a user can seek a table in a restaurant with a very high rating, he can choose it even if it is expensive. However, in general, the user prefers the less expensive options.
[0371] В различных вариантах осуществления, помощник 1002 по настоящему изобретению помогает упрощать задачу выбора с ограничениями. В различных вариантах осуществления, помощник 1002 использует службы работы с базами данных и поисковые службы, а также другую функциональность, чтобы сокращать усилия со стороны пользователя на выражение того, что он ищет, с учетом того, что доступно, и выбор удовлетворительного решения.[0371] In various embodiments, the
[0372] В различных вариантах осуществления, помощник 1002 помогает упрощать выбор с ограничениями для людей любым из ряда различных способов.[0372] In various embodiments,
[0373] Например, в одном варианте осуществления, помощник 1002 может операционализировать свойства в ограничения. Пользователь указывает то, что он хочет, с точки зрения свойств желаемого результата. Помощник 1002 операционализирует этот ввод в формальные ограничения. Например, вместо высказывания "найти один или более ресторанов менее чем в 2 милях от центра Пало-Альто, кухня которого включает в себя итальянскую еду", пользователь может просто сказать "итальянские рестораны в Пало-Альто". Помощник 1002 также может операционализировать качества, запрашиваемые пользователем, которые не являются параметрами для базы данных. Например, если пользователь запрашивает романтичные рестораны, система может операционализировать это в качестве текстового поиска или ограничения в виде совпадения тегов. Таким образом, помощник 1002 помогает преодолевать некоторые проблемы, которые пользователи в противном случае могут иметь в ходе выбора с ограничениями. Пользователю проще представлять себе и описывать удовлетворительное решение, чем описывать условия, которые должны отличать подходящие решения от неподходящих решений.[0373] For example, in one embodiment,
[0374] В одном варианте осуществления, помощник 1002 может предлагать полезные критерии выбора, и пользователь должен только сообщать, какие критерии являются важными в настоящее время. Например, помощник 1002 может запрашивать: "что из этого имеет значение: цена (дешевле лучше), местоположение (ближе лучше), рейтинг (с более высоким рейтингом лучше)?" Помощник 1002 также может рекомендовать критерии, которые могут требовать конкретных значений; например: "Вы можете сказать, какую кухню Вы предпочитаете или какое блюдо Вы предпочитаете".[0374] In one embodiment,
[0375] В одном варианте осуществления, помощник 1002 может помогать пользователю принимать решение между вариантами выбора, которые расходятся по ряду конкурирующих критериев (таких как цена, качество, доступность и удобство).[0375] In one embodiment,
[0376] Посредством предоставления таких указаний помощник 1002 может помогать пользователям при принятии многопараметрических решений любым из нескольких способов:[0376] By providing such guidance,
- Один заключается в том, чтобы уменьшать размерность пространства, комбинируя необработанные данные, к примеру, рейтинги из нескольких источников в составной количественный показатель "рекомендации". Составной количественный показатель может принимать во внимание знания проблемной области об источниках данных (например, рейтинги Zagat могут предоставлять более точные прогнозы качества, чем Yelp).- One is to reduce the dimension of the space by combining raw data, eg ratings from multiple sources, into a composite "recommendations" score. A composite score may take into account domain knowledge of data sources (for example, Zagat ratings may provide better quality predictions than Yelp).
- Другой подход заключается в том, чтобы сосредотачиваться на поднаборе критериев, превращая проблему "каковы все возможные критерии для рассмотрения и как они комбинируются?" в выбор самых важных критериев в данном случае (например, "какой из них является более важным, цена или близость?").- Another approach is to focus on a subset of criteria, turning the problem "what are all the possible criteria to consider and how do they combine?" in choosing the most important criteria in this case (for example, "which one is more important, price or proximity?").
- Еще один способ упрощать принятие решений заключается в том, чтобы допускать значения по умолчанию и порядки предпочтений (например, все сущности равнозначны, с более высоким рейтингом, а также ближе и дешевле лучше). Система также может запоминать предыдущие ответы пользователей, которые указывают их значения по умолчанию и предпочтения.- Another way to simplify decision making is to allow for defaults and orders of preference (e.g. all entities are equal, higher ranked, and closer and cheaper is better). The system can also remember previous user responses that indicate their defaults and preferences.
- В-четвертых, система может предлагать характерные свойства элементов в наборе вариантов выбора, которые не упомянуты в исходном запросе. Например, пользователь, возможно, запрашивает локальную итальянскую еду. Система может предлагать набор вариантов выбора ресторанов и с ними, списком популярных тегов, используемых посредством рецензентов, или ключевую фразу из путеводителя (например, "прелестное местечко для свидания" "отличные макароны"). Это может позволять людям выбирать конкретный элемент и выполнять задачу. Исследования показывают, что большинство людей принимает решения посредством оценки конкретных экземпляров вместо выбора критериев и рационального подтверждения того из них, который появляется первым. Они также показывают то, что люди узнают о признаках из конкретных случаев. Например, при выборе автомобилей, покупатели могут не обращать внимания на навигационные системы до тех пор, пока они не видят, что некоторые автомобили имеют их (и впоследствии навигационная система может становиться важным критерием). Помощник 1002 может представлять характерные свойства перечисленных элементов, которые помогают людям выбирать победителя или которые рекомендуют размерность, вдоль которой можно оптимизировать.- Fourth, the system may suggest characteristic properties of items in the selection set that are not mentioned in the original query. For example, the user may be requesting local Italian food. The system may offer a set of restaurant choices with and with them, a list of popular tags used by reviewers, or a key phrase from a guidebook (eg, "nice place to date" "great pasta"). This may allow people to select a specific item and complete a task. Research shows that most people make decisions by evaluating specific instances instead of selecting criteria and rationally confirming which one comes first. They also show what people learn about the symptoms from specific cases. For example, when choosing cars, buyers may not pay attention to navigation systems until they see that some cars have them (and subsequently the navigation system can become an important criterion).
Концептуальная модель данныхConceptual data model
[0377] В одном варианте осуществления, помощник 1002 предлагает помощь с задачей выбора с ограничениями посредством упрощения концептуальной модели данных. Концептуальная модель данных является абстракцией, представляемой пользователям в интерфейсе помощника 1002. Чтобы преодолевать психологические проблемы, описанные выше, в одном варианте осуществления помощник 1002 предоставляет модель, которая дает возможность пользователям описывать то, что они хотят, с точки зрения нескольких легко распознаваемых и запоминаемых свойств подходящих вариантов выбора, а не выражений ограничения. Таким образом, свойства могут быть простыми при составлении в запросах на естественном языке (например, прилагательные, модифицирующие маркеры ключевых слов) и могут распознаваться в строках с подсказкой ("Вы также можете предпочесть рекомендованные рестораны..."). В одном варианте осуществления, используется модель данных, которая дает возможность помощнику 1002 определять интересующую предметную область (например, рестораны в сравнении с отелями) и общий подход к указанию того, что может быть конкретизировано с помощью зависящих от предметной области свойств.[0377] In one embodiment,
[0378] В одном варианте осуществления, концептуальная модель данных, используемая посредством помощника 1002, включает в себя класс выбора. Это представление пространства сущностей, из которых можно выбирать. Например, в приложении "найти ресторан", класс выбора является классом ресторанов. Класс выбора может быть абстрактным и иметь подклассы, такие как "занятия в пункте назначения". В одном варианте осуществления, концептуальная модель данных допускает то, что в данной ситуации решения проблемы, пользователь заинтересован в выборе из одного класса выбора. Это допущение упрощает взаимодействие и также дает возможность помощнику 1002 объявлять свои границы компетентности ("Я знаю о ресторанах, отелях и фильмах" в противоположность "Я знаю о жизни в городе").[0378] In one embodiment, the conceptual data model used by
[0379] С учетом класса выбора, в одном варианте осуществления модель данных, представленная пользователю для задачи выбора с ограничениями, включает в себя, например: элементы; признаки элементов; критерии выбора; и ограничения.[0379] Considering the selection class, in one embodiment, the data model presented to the user for a constrained selection task includes, for example: elements; signs of elements; Criterias of choice; and restrictions.
[0380] Элементы являются экземплярами класса выбора.[0380] Elements are instances of the selection class.
[0381] Признаки элементов являются свойствами, атрибутами или вычисленными значениями, которые могут быть представлены и/или ассоциированы, по меньшей мере, с одним элементом. Например, название и телефонный номер ресторана являются признаками элементов. Признаки могут быть внутренними (название или кухня ресторана) или реляционными (например, расстояние от текущего интересующего местоположения). Они могут быть статическими (например, название ресторана) или динамическими (рейтинг). Они могут быть составными значениями, вычисленными из других данных (например, количественный показатель "соотношения цены и качества"). Признаки элементов являются абстракциями для пользователя, выполняемыми посредством средства моделирования предметной области; они не должны соответствовать базовым данным из внутренних интерфейсных служб.[0381] Element features are properties, attributes, or computed values that can be represented and/or associated with at least one element. For example, the name and phone number of a restaurant are feature elements. Features can be internal (the name or cuisine of a restaurant) or relational (such as distance from the current location of interest). They can be static (like the name of a restaurant) or dynamic (like a rating). They may be composite values calculated from other data (for example, a "value for money" score). Element attributes are abstractions to the user, performed by the domain modeler; they do not have to match the underlying data from the internal front-end services.
[0382] Критерии выбора являются признаками элементов, которые могут быть использованы для того, чтобы сравнивать значение или релевантность элементов. Иными словами, это способы сообщать то, какие элементы являются предпочтительными. Критерии выбора моделируются в качестве признаков самих элементов, независимо от того, являются они внутренними свойствами или вычисляются. Например, близость (заданная как расстояние от интересующего местоположения) является критерием выбора. Местоположение в пространстве и времени является свойством, а не критерием выбора, и оно используется вместе с интересующим местоположением для того, чтобы вычислять расстояние от интересующего местоположения.[0382] Selection criteria are features of elements that can be used to compare the value or relevance of elements. In other words, they are ways of communicating which elements are preferred. The selection criteria are modeled as features of the elements themselves, whether they are internal properties or computed. For example, proximity (defined as distance from the location of interest) is a selection criterion. Location in space and time is a property, not a selection criterion, and is used in conjunction with the location of interest to calculate the distance from the location of interest.
[0383] Критерии выбора могут иметь присущий порядок предпочтений. Иными словами, значения любого конкретного критерия могут быть использованы для того, чтобы выстраивать элементы в порядке согласно критерию наилучшего соответствия. Например, критерий близости имеет такое присущее предпочтение, что ближе лучше. Местоположение, с другой стороны, не имеет присущего значения предпочтения. Это ограничение дает возможность системе делать допущения по умолчанию и направлять выбор, если пользователь только упоминает критерий. Например, пользовательский интерфейс может предлагать "сортировать по рейтингу" и допускать, что с более высоким рейтингом лучше.[0383] The selection criteria may have an inherent order of preference. In other words, the values of any particular criterion can be used to arrange the elements in order according to the best fit criterion. For example, the closeness criterion has such an inherent preference that closer is better. Location, on the other hand, has no inherent preference value. This restriction allows the system to make default assumptions and guide selections if the user only mentions a criterion. For example, the user interface might suggest "sort by rating" and assume that higher rating is better.
[0384] Один или более критериев выбора также являются признаками элементов; это признаки, связанные с выбором из возможных элементов. Тем не менее, признаки элементов не обязательно связаны с предпочтением (например, названия и телефонные номера ресторанов обычно нерелевантны для выбора из них).[0384] One or more selection criteria are also feature elements; these are signs associated with the choice of possible elements. However, item features are not necessarily associated with preference (for example, restaurant names and phone numbers are usually irrelevant for selection).
[0385] По меньшей мере, в одном варианте осуществления, ограничения являются ограничениями на требуемые значения критериев выбора. Формально, ограничения могут представляться как членство в наборе (например, тип кухни включает в себя итальянскую), совпадения с конструкцией (например, текст обзора ресторана включает в себя "романтичный"), нечеткие неравенства (например, расстояние меньше нескольких миль), качественные пороговые значения (например, с высоким рейтингом) или более сложные функции (например, хорошее соотношение цены и качества). Чтобы в достаточной степени упрощать ситуацию для обычных людей, эта модель данных сокращает, по меньшей мере, одно или более ограничений до символьных значений, которые могут сопоставляться как слова. Время и расстояние могут исключаться из этого сокращения. В одном варианте осуществления, операторы и пороговые значения, используемые для реализации ограничений, скрываются от пользователя. Например, ограничение на критерии выбора, называемое "кухней", может представляться как символьное значение, к примеру, "итальянская" или "китайская". Ограничение на рейтинг - это "рекомендован" (двоичный выбор). Для времени и расстояния, в одном варианте осуществления помощник 1002 использует собственные представления, которые обрабатывают диапазон вводов и значений ограничений. Например, расстояние может быть "расстоянием, которое можно пройти пешком", и время может быть "сегодня вечером"; в одном варианте осуществления, помощник 1002 использует специальную обработку, чтобы сопоставлять такой ввод с более точными данными.[0385] In at least one embodiment, the constraints are constraints on the desired selection criteria values. Formally, constraints can be represented as set membership (e.g. cuisine type includes Italian), construct matches (e.g. restaurant review text includes "romantic"), fuzzy inequalities (e.g. distance less than a few miles), quality thresholds values (for example, highly rated) or more advanced features (for example, good value for money). In order to simplify things sufficiently for ordinary people, this data model reduces at least one or more restrictions to character values that can be matched as words. Time and distance may be excluded from this reduction. In one embodiment, the operators and thresholds used to enforce the restrictions are hidden from the user. For example, a selection constraint called "cuisine" can be represented as a character value, such as "Italian" or "Chinese". The rating limit is "recommended" (binary choice). For time and distance, in one embodiment,
[0386] По меньшей мере, в одном варианте осуществления, некоторые ограничения могут быть обязательными ограничениями. Это означает то, что задача просто не может быть выполнена без этих данных. Например, трудно выбирать ресторан без некоторого понятия требуемого местоположения, даже если известно название.[0386] In at least one embodiment, some restrictions may be mandatory restrictions. This means that the task simply cannot be completed without this data. For example, it is difficult to select a restaurant without some notion of the desired location, even if the name is known.
[0387] Чтобы подвести итог, предметная область моделируется в качестве классов выбора с признаками элементов, которые являются важными для пользователей. Некоторые функции используются для того, чтобы выбирать и заказывать элементы, предлагаемые пользователю - эти признаки называются критериями выбора. Ограничения являются символьными ограничениями на критерии выбора, которые сужают набор элементов до элементов, которые совпадают.[0387] To summarize, the subject area is modeled as selection classes with feature elements that are important to users. Some functions are used to select and order items that are offered to the user - these characteristics are called selection criteria. Constraints are symbolic constraints on selection criteria that narrow down a set of elements to elements that match.
[0388] Зачастую, несколько критериев могут конкурировать, и ограничения могут совпадать частично. Модель данных сокращает задачу выбора от задачи оптимизации (нахождения наилучшего решения) до задачи сопоставления (нахождения элементов, которые хорошо подходят для набора заданных критериев и совпадают с набором символьных ограничений). Алгоритмы для выбора критериев и ограничений и определения упорядочения описываются в следующем разделе.[0388] Often, several criteria may compete, and restrictions may overlap. The data model reduces the selection problem from an optimization problem (finding the best solution) to a matching problem (finding elements that fit well with a set of given criteria and match a set of symbolic constraints). Algorithms for selecting criteria and constraints and determining ordering are described in the next section.
Технология для выбора с ограничениямиTechnology for choice with limitations
[0389] В одном варианте осуществления, помощник 1002 выполняет выбор с ограничениями посредством рассмотрения в качестве ввода упорядоченного списка критериев с неявными или явными ограничениями, по меньшей мере, на один и формирования набора вариантов элементов с характерными признаками. В вычислительном отношении задача выбора может характеризоваться как вложенный поиск: во-первых, идентификация класса выбора, затем идентификация важных критериев выбора, затем указание ограничений (границ допустимых решений) и выполнение поиска в экземплярах в порядке наилучшего приближения, чтобы находить приемлемые элементы.[0389] In one embodiment,
[0390] Ссылаясь теперь на Фиг.45, показан пример абстрактной модели 4500 для задачи выбора с ограничениями в качестве вложенного поиска. В примере, помощник 1002 идентифицирует 4505 вызов выбора для всех типов локального поиска 4501. Идентифицированный класс является рестораном. В наборе всех ресторанов 4502, помощник 1002 выбирает 4506 критерии. В примере, критерий идентифицируется в качестве расстояния. В наборе ресторанов в PA 4503, помощник 1002 указывает 4507 ограничения для поиска. В примере, идентифицированное ограничение является "итальянской кухней". В наборе итальянских ресторанов в PA 4504, помощник 4508 выбирает элементы для представления пользователю.[0390] Referring now to FIG. 45, an example of an
[0391] В одном варианте осуществления, такой вложенный поиск - это то, что помощник 1002 выполняет, когда он имеет релевантные входные данные, а не поток для извлечения данных и представления результатов. В одном варианте осуществления, такой поток управления управляется через диалог между помощником 1002 и пользователем, который работает посредством других процедур, таких как модели потока диалогов и задач. Выбор с ограничениями предлагает инфраструктуру для компоновки моделей потока диалогов и задач на этом уровне абстракции (т.е. подходящую для задач выбора с ограничениями независимо от предметной области).[0391] In one embodiment, such a nested lookup is what
[0392] Ссылаясь теперь на Фиг.46, показан пример диалога 4600, чтобы помогать направлять пользователя через процесс поиска, так что релевантные входные данные могут быть получены.[0392] Referring now to FIG. 46, an
[0393] В примерном диалоге 4600, первый этап состоит в указании пользователем того, что он ищет, т.е. класса выбора. Например, пользователь может осуществлять это посредством высказывания "ужин в Пало-Альто". Это дает возможность помощнику 1002 логически выводить 4601 задачу и предметную область.[0393] In the
[0394] После того, как помощник 1002 понял привязку задачи и предметной области (класс выбора=рестораны), следующий этап заключается в том, чтобы понимать, какие критерии выбора являются важными для этого пользователя, например, посредством запрашивания 4603 критериев и/или ограничений. В вышеприведенном примере, "в Пало-Альто" указывает интересующее местоположение. В контексте ресторанов система может интерпретировать местоположение в качестве ограничения близости (технически, ограничения на критерий близости). Помощник 1002 поясняет, что необходимо, принимает ввод. Если существует достаточно информации, чтобы ограничивать набор вариантов выбора до обоснованного размера, то помощник 1002 перефразирует ввод и представляет 4605 один или более ресторанов, которые удовлетворяют ограничению близости, отсортированных в некотором полезном порядке. Пользователь затем может выбирать 4607 из этого списка или уточнять 4606 критерии и ограничения. Помощник 1002 рассуждает насчет уже указанных ограничений и использует зависящие от предметной области знания для того, чтобы рекомендовать другие критерии, которые могут помогать, также с запросом ограничений на эти критерии. Например, помощник 1002 может рассуждать, что при рекомендации ресторанов на расстоянии, которое можно пройти пешком от отеля, полезными критериями для запроса должны быть доступность столика и кухня.[0394] Once the
[0395] Задача выбора с ограничениями выполнена, когда пользователь выбирает 4607 экземпляр класса выбора. В одном варианте осуществления, дополнительные дальнейшие задачи 4602 обеспечиваются посредством помощника 1002. Таким образом, помощник 1002 может предлагать службы, которые указывают выбор при предоставлении некоторого другого значения. Примеры 4608 - это заказ ресторана, установка напоминания на календаре и/или совместное использование выбора с другими посредством отправки приглашения. Например, заказ ресторана однозначно указывает, что он выбран; другие варианты могут заключаться в том, чтобы помещать ресторан в календарь или отправлять в приглашении с указаниями, как добраться, друзьям.[0395] The constrained selection task is completed when the user selects 4607 an instance of the selection class. In one embodiment, additional
[0396] Ссылаясь теперь на Фиг.47, показана блок-схема последовательности операций, иллюстрирующая способ выбора с ограничениями согласно одному варианту осуществления. В одном варианте осуществления, помощник 1002 работает приспосабливающимся способом с перемежающейся инициативой, разрешая пользователю переходить к внутреннему контуру, например, посредством указания задачи, предметной области, критериев и ограничений по одному или более за раз во вводе.[0396] Referring now to FIG. 47, a flowchart illustrating a restricted selection method according to one embodiment is shown. In one embodiment,
[0397] Способ начинается 4701. Ввод принимается 4702 от пользователя согласно любому из режимов, описанных в данном документе. Если, на основе ввода, задача неизвестна, помощник 1002 запрашивает 4705 прояснение ввода от пользователя.[0397] The method begins 4701. Input is received 4702 from the user according to any of the modes described herein. If, based on the input, the task is unknown, the assistant 1002 requests 4705 to clarify the input from the user.
[0398] На этапе 4717, помощник 1002 определяет то, предоставляет или нет пользователь дополнительный ввод. Если да, помощник 1002 возвращается к этапу 4702. В противном случае, способ завершается 4799.[0398] At
[0399] Если на этапе 4703 задача известна, помощник 1002 определяет 4704 то, является или нет задачей выбор с ограничениями. Если нет, помощник 1002 переходит 4706 к указанному потоку задач.[0399] If at step 4703 the task is known,
[0400] Если на этапе 4704 задачей является выбор с ограничениями, помощник 1002 определяет 4707, может или нет класс выбора быть определен. Если нет, помощник 1002 предлагает 4708 выбор известных классов выбора и возвращается к этапу 4717.[0400] If at
[0401] Если на этапе 4707 класс выбора может быть определен, помощник 1002 определяет 4709, могут или нет быть определены все обязательные ограничения. Если нет, помощник 1002 запрашивает в виде подсказки 4710 запрошенную информацию и возвращается к этапу 4717.[0401] If at
[0402] Если на этапе 4709 все требуемые константы могут быть определены, помощник 1002 определяет 4711, могут или нет быть найдены какие-либо элементы результатов, с учетом ограничений. Если нет элементов, которые удовлетворяют ограничениям, помощник 1002 предлагает 4712 способы ослаблять ограничения. Например, помощник 1002 может ослаблять ограничения от наименьшего до наибольшего приоритета с использованием алгоритма фильтрации/сортировки. В одном варианте осуществления, если существуют элементы, которые удовлетворяют некоторым ограничениям, то помощник 1002 может перефразировать ситуацию (вывод, например: "Я не могу найти рекомендованные греческие рестораны, которые осуществляют доставку по воскресеньям в Сан-Карлосе. Тем не менее, я нашел 3 греческих ресторана и 7 рекомендованных ресторанов в Сан-Карлосе".). В одном варианте осуществления, если нет элементов, которые совпадают с любыми ограничениями, то помощник 1002 может перефразировать эту ситуацию и запрашивать в виде подсказки различные ограничения (вывод, например: "Извините, я не могу найти рестораны в Anytown, Техас. Вы можете выбрать другое местоположение".). Помощник 1002 возвращается к этапу 4717.[0402] If at
[0403] Если на этапе 4711 элементы результата могут быть найдены, помощник 1002 предлагает 4713 список элементов. В одном варианте осуществления, помощник 1002 перефразирует текущие заданные критерии и ограничения (вывод, например, "Вот несколько рекомендованных итальянских ресторанов в Сан-Хосе". (рекомендовано=да, кухня=итальянская, близость=<в Сан-Хосе>)). В одном варианте осуществления, помощник 1002 представляет отсортированный, разбитый на страницы список элементов, которые удовлетворяют известным ограничениям. Если элемент показывает только некоторые ограничения, такое условие может быть показано как часть отображения элементов. В одном варианте осуществления, помощник 1002 предлагает пользователю способы выбирать элемент, например, посредством инициирования другой задачи для этого элемента, такой как заказ, напоминание, составление расписания или совместное использование. В одном варианте осуществления, для любого данного элемента, помощник 1002 представляет признаки элементов, которые являются характерными для выборки экземпляров класса выбора. В одном варианте осуществления, помощник 1002 показывает то, как элемент удовлетворяет ограничению; например, рейтинг Zagat в 5 удовлетворяет ограничению "рекомендовано=да", а "на расстоянии в 1 милю" удовлетворяет ограничению "на расстоянии, которое можно пройти пешком от адреса". В одном варианте осуществления, помощник 1002 дает возможность пользователю выполнять детализацию для получения дополнительных подробностей для элемента, что приводит к отображению большего числа признаков элементов.[0403] If at
[0404] Помощник 1002 определяет 4714, выбирает или нет пользователь элемент. Если пользователь выбирает элемент, задача выполнена. Любая дальнейшая задача выполняется 4715, если имеется, и способ завершается 4799.[0404]
[0405] Если на этапе 4714 пользователь не выбирает элемент, помощник 1002 предлагает 4716 пользователю способы выбирать другие критерии и ограничения и возвращается к этапу 4717. Например, с учетом текущих заданных критериев и ограничений, помощник 1002 может предлагать критерии, которые с наибольшей вероятностью должны ограничивать набор вариантов выбора до требуемого размера. Если пользователь выбирает значение ограничения, то значение ограничения добавляется к ранее определенным ограничениям, когда этапы 4703-4713 повторяются.[0405] If at
[0406] Поскольку один или более критериев могут иметь присущее значение предпочтения, выбор критериев может добавлять информацию в запрос. Например, предоставление возможности пользователю указывать, что положительные обзоры ценятся, дает возможность помощнику 1002 сортировать по этому критерию. Эта информация может быть принята во внимание, когда этапы 4703-4713 повторяются.[0406] Since one or more criteria may have an inherent preference value, the selection of criteria may add information to the query. For example, allowing the user to indicate that positive reviews are appreciated allows
[0407] В одном варианте осуществления, помощник 1002 дает возможность пользователю повышать значимость критерия, который уже указан, так что он должен иметь более высокий порядок приоритета. Например, если пользователь запрашивает быстрые, дешевые, наиболее рекомендуемые рестораны в пределах одного квартала от своего местоположения, помощник 1002 может запрашивать, чтобы пользователь выбрал то, какой из этих критериев является более важным. Эта информация может быть принята во внимание, когда этапы 4703-4713 повторяются.[0407] In one embodiment,
[0408] В одном варианте осуществления, пользователь может предоставлять дополнительный ввод в любой момент в то время, когда выполняется способ по Фиг.47. В одном варианте осуществления, помощник 1002 проверяет периодически или непрерывно на предмет такого ввода и, в ответ, переходит назад к этапу 4703, чтобы обрабатывать его.[0408] In one embodiment, the user may provide additional input at any time while the method of FIG. 47 is being performed. In one embodiment,
[0409] В одном варианте осуществления, при выводе элемента или списка элементов, помощник 1002 указывает в представлении элементов признаки, которые использованы для того, чтобы выбирать и упорядочивать их. Например, если пользователь запрашивает близлежащие итальянские рестораны, такие признаки элементов для расстояния и кухни могут быть показаны в представлении элемента. Это может включать в себя выделение совпадений, а также перечень критериев выбора, которые вовлечены в представление элемента.[0409] In one embodiment, when displaying an element or a list of elements,
Примерные предметные областиSample subject areas
[0410] Таблица 1 предоставляет пример предметных областей выбора с ограничениями, которые могут обрабатываться посредством помощника 1002 согласно различным вариантам осуществления.[0410] Table 1 provides an example of restricted selection subject areas that can be handled by
Фильтрация и сортировка результатовFiltering and sorting results
[0411] В одном варианте осуществления, при представлении элементов, которые удовлетворяют текущим заданным критериям и ограничениям, может использоваться технология фильтрации/сортировки. В одном варианте осуществления ограничения выбора могут служить в качестве параметров фильтрации и сортировки для базовых служб. Таким образом, любой критерий выбора может быть использован для того, чтобы определять то, какие элементы находятся в списке, и вычислять порядок, в котором можно разбивать их на страницы и показывать. Порядок сортировки для этой задачи сродни рангу релевантности при поиске. Например, близость является критерием с символьными значениями ограничений, к примеру, "на расстоянии, которое можно проехать на машине" и общим понятием сортировки по расстоянию. Ограничение "расстояние, которое можно проехать на машине" может быть использовано для того, чтобы выбирать группу вариантов элементов. В этой группе ближе расположенные элементы могут сортироваться выше в списке.[0411] In one embodiment, when presenting items that satisfy the currently defined criteria and constraints, a filtering/sorting technique may be used. In one embodiment, the selection constraints may serve as filtering and sorting options for the underlying services. Thus, any selection criteria can be used to determine which items are in the list and calculate the order in which to paginate and display them. The sort order for this task is akin to search relevance rank. For example, proximity is a criterion with symbolic constraint values, such as "driving distance" and the general concept of sorting by distance. The "distance that can be driven by car" constraint can be used to select a group of feature options. Within this group, closer elements may be sorted higher in the list.
[0412] В одном варианте осуществления, ограничения выбора и ассоциированная фильтрация и сортировка находятся на дискретных "уровнях", которые являются функциями как от базовых данных, так и от ввода пользователя. Например, близость группируется на уровни, такие как "расстояние, которое можно пройти пешком", "расстояние, которое можно проехать на такси", "расстояние, которое можно проехать на машине". При сортировке один или более элементов на расстоянии, которое можно пройти пешком, трактуются, как если они находятся на одном расстоянии. Ввод от пользователя может вступать в действие в способе, которым он указывает ограничение. Если пользователь вводит, например, "в Пало-Альто", то один или более элементов в границах города Пало-Альто являются идеальными совпадениями и являются эквивалентными. Если пользователь вводит "около железнодорожного вокзала на University Avenue", то совпадение должно зависеть от расстояния от этого адреса, при этом степень совпадения зависит от класса выбора (например, "около" для ресторанов отличается от "около" для отелей). Даже в пределах ограничения, которое может указываться с непрерывным значением, может применяться дискретность. Это может быть важным для операций сортировки, так что несколько критериев могут участвовать в определении упорядочения по критерию наилучшего соответствия.[0412] In one embodiment, the selection constraints and associated filtering and sorting are at discrete "levels" that are functions of both underlying data and user input. For example, proximity is grouped into levels such as "walking distance", "taxi driving distance", "driving distance". When sorting, one or more items within walking distance are treated as if they are the same distance. Input from the user can take effect in the way that he specifies the constraint. If the user enters, for example, "in Palo Alto", then one or more elements within the boundaries of the city of Palo Alto are perfect matches and are equivalent. If the user enters "near the train station on University Avenue", then the match should depend on the distance from that address, with the degree of match depending on the selection class (for example, "about" for restaurants is different from "about" for hotels). Even within the limit, which may be specified with a continuous value, discreteness may apply. This may be important for sorting operations, so that several criteria may be involved in determining the best fit ordering.
[0413] В одном варианте осуществления, список элементов (элементов, которые считаются "совпадающими" или "достаточно хорошими") может быть меньше или больше числа элементов, показанных на одной "странице" вывода. В общем, элементам на первой странице уделяется наибольшее внимание, но концептуально существует более длинный список, и разбиение на страницы является просто функцией от форм-фактора носителя вывода. Это означает, например, что если пользователю предлагается способ сортировать или просматривать элементы по некоторому критерию, то именно полный набор элементов (на несколько страниц) сортируется или просматривается.[0413] In one embodiment, the list of elements (elements that are considered "matching" or "good enough") may be less than or greater than the number of elements shown on one "page" of output. In general, the elements on the first page receive the most attention, but conceptually there is a longer list, and pagination is simply a function of the form factor of the output medium. This means, for example, that if the user is offered a way to sort or view items by some criterion, then it is the full set of items (multiple pages) that is sorted or viewed.
[0414] В одном варианте осуществления, для критериев выбора существует упорядочение по приоритету. Иными словами, некоторые критерии могут иметь большее значение, чем другие, при фильтрации и сортировке. В одном варианте осуществления, этим критериям, выбранным пользователем, предоставляется более высокий приоритет, чем другим, и предусмотрено упорядочение по умолчанию по одному или более критериев. Это обеспечивает возможность общей лексикографической сортировки. Допущение заключается в том, что существует значимый априорный приоритет. Например, если пользователь не указывает иное, для ресторана может быть важнее быть ближе, чем быть недорогим. В одном варианте осуществления, упорядочение по априорному приоритету зависит от предметной области. Модель предоставляет возможность конкретным для пользователя предпочтений переопределять значения по умолчанию предметной области, если это требуется.[0414] In one embodiment, the selection criteria are ordered by priority. In other words, some criteria may matter more than others when filtering and sorting. In one embodiment, these user-selected criteria are given higher priority than others and are ordered by default by one or more criteria. This provides a general lexicographic sorting capability. The assumption is that there is a meaningful a priori priority. For example, unless the user specifies otherwise, it may be more important for a restaurant to be closer than it is to be inexpensive. In one embodiment, ordering by a priori priority is domain dependent. The model provides the ability for user-specific preferences to override domain defaults if desired.
[0415] Поскольку значения ограничений могут представлять несколько внутренних типов данных, существуют различные способы согласования ограничений, и они могут быть конкретными для ограничения. Например, в одном варианте осуществления:[0415] Because constraint values can represent multiple internal data types, there are various ways to negotiate constraints, and they can be specific to a constraint. For example, in one embodiment:
- Двоичные ограничения совпадают как одно или более или ни одно. Например, то, имеет ресторан тип "быстрого питания", может быть истиной или нет.- Binary constraints match as one or more or none. For example, whether a restaurant has the type "fast food" may or may not be true.
- Ограничения членства в наборе совпадают как одно или более или ни одно на основе значения свойства. Например, кухня=греческая означает, что набор кухонь для ресторана включает в себя греческую.- Set membership constraints match as one or more or none based on the value of the property. For example, cuisine=Greek means that the set of cuisines for the restaurant includes Greek.
- Ограничения перечисления совпадают при пороговом значении. Например, критерий рейтинга может иметь значения ограничений "с рейтингом", "с высоким рейтингом" или "с самым высоким рейтингом". Ограничение как "с высоким рейтингом" также совпадает "с самым высоким рейтингом".- Enumeration limits match at threshold. For example, a rating criterion can have constraint values of "rated", "highly rated", or "highest rated". Restriction as "highly rated" is also the same as "highest rated".
- Числовые ограничения совпадают при пороговом значении, которое может быть конкретным критерием. Например, "открыт допоздна" может быть критерием, и пользователь может запрашивать места, открытые после 22:00. Этот вид ограничения может немного выходить за рамки задачи выбора с ограничениями, поскольку это не символьное значение ограничения. Тем не менее, в одном варианте осуществления, помощник 1002 распознает несколько случаев числовых ограничений, таких как эти, и преобразует их в пороговые значения с символьными ограничениями (например, "рестораны в Пало-Альто открытые сейчас"->"вот 2 ресторана в Пало-Альто, которые открыты допоздна").- Numeric limits match at a threshold value, which can be a specific criterion. For example, "open late" can be a criterion, and the user can request places that are open after 22:00. This kind of constraint may be a little out of the scope of the constrained selection problem, since it is not a character value of the constraint. However, in one embodiment,
- Местоположение и время обрабатывается специальным образом. Ограничение на близость может быть интересующим местоположением, указываемым с некоторой степенью детализации, которое определяет совпадение. Если пользователь указывает город, то совпадение на уровне города является надлежащим; почтовый индекс может обеспечивать радиус. Помощник 1002 также может понимать местоположения, которые находятся "около" других интересующих местоположений, также на основе специальной обработки. Время является релевантным в качестве значения ограничения критериев, которые имеют пороговое значение на основе вызова службы, такой как доступность столика или рейсы в пределах данного диапазона времени.- Location and time is handled in a special way. The proximity constraint may be a location of interest specified in some granularity that determines a match. If the user specifies a city, then a city-level match is appropriate; a zip code may provide a radius.
[0416] В одном варианте осуществления, ограничения могут моделироваться так, что существует одно пороговое значение для выбора и небольшой набор дискретных значений для сортировки. Например, критерий доступности по цене может моделироваться в качестве примерно двоичного ограничения, если доступные по цене рестораны - это все рестораны ниже некоторого порогового диапазона цен. Когда данные подтверждают несколько дискретных уровней для выбора, ограничения могут моделироваться с использованием градиента совпадения. В одном варианте осуществления могут предоставляться два уровня соответствия (к примеру, строгое и нестрогое соответствие); тем не менее, специалисты в данной области техники должны признавать, что в других вариантах осуществления, может предоставляться любое число уровней соответствия. Например, близость может согласовываться с нечеткой границей, так что сущности, которые расположены около интересующего местоположения, могут совпадать нестрого. Практическое последствие строгого или нестрогого соответствия заключается в алгоритме фильтрации/сортировки, как описано ниже.[0416] In one embodiment, constraints may be modeled such that there is one threshold value for selection and a small set of discrete values for sorting. For example, an affordability criterion can be modeled as a roughly binary constraint if affordable restaurants are all restaurants below some threshold price range. When the data confirms multiple discrete levels to choose from, constraints can be modeled using a matching gradient. In one embodiment, two levels of matching (eg, strong and loose matching) may be provided; however, those skilled in the art will recognize that, in other embodiments, any number of levels of conformance may be provided. For example, proximity may be consistent with a fuzzy boundary, such that entities that are near the location of interest may not be strictly aligned. The practical consequence of a strict or non-strict match is the filter/sort algorithm, as described below.
[0417] По меньшей мере, для одного критерия подход к совпадению и пороговым значениям по умолчанию может устанавливаться, если релевантно. Пользователь может иметь возможность просто произносить название ограничения, символьное значение ограничения или точное выражение ограничения, если оно обрабатывается специально (к примеру, время и местоположение).[0417] For at least one criterion, a match approach and default thresholds may be set, if relevant. The user may be able to simply speak the name of the constraint, the character value of the constraint, or the exact expression of the constraint if it is handled specifically (eg, time and location).
[0418] Идеальная ситуация для выбора с ограничениями возникает, когда пользователь указывает ограничения, которые приводят к короткому списку вариантов, один или более которых удовлетворяет ограничениям. Пользователь затем выбирает из победителей на основе признаков элементов. Во многих случаях, тем не менее, проблема имеет чрезмерные или не имеет достаточных ограничений. Когда она имеет чрезмерные ограничения, существует мало или вообще не существует элементов, которые удовлетворяют ограничениям. Когда она не имеет достаточных ограничений, существует столько вариантов, что анализ списка не целесообразен. В одном варианте осуществления, общая модель выбора с ограничениями настоящего изобретения имеет возможность обрабатывать несколько ограничений с надежным совпадением и обычно формировать что-либо, из чего можно выбирать. Затем пользователь может предпочесть уточнять свои критерии и ограничения или просто выполнять задачу с "достаточно хорошим" решением.[0418] An ideal situation for constrained selection occurs when the user specifies constraints that result in a short list of choices, one or more of which satisfies the constraints. The user then selects from the winners based on the features of the items. In many cases, however, the problem is overly or not sufficiently constrained. When it is overly constrained, there are few or no elements that satisfy the constraints. When it is not sufficiently constrained, there are so many options that list analysis is not worthwhile. In one embodiment, the general constrained selection model of the present invention has the ability to handle multiple constraints with a strong match, and typically generate something from which to select. The user may then choose to refine their criteria and constraints, or simply perform the task with a "good enough" solution.
СпособWay
[0419] В одном варианте осуществления, используется следующий способ для фильтрации и сортировки результатов:[0419] In one embodiment, the following method is used to filter and sort the results:
1. С учетом упорядоченного списка критериев выбора, выбранных пользователем, определение ограничений, по меньшей мере, на один.1. Given an ordered list of selection criteria selected by the user, define constraints on at least one.
a. Если пользователь указал значение ограничения, использование его. Например, если пользователь произнес "греческая еда", ограничением является кухня=греческая. Если пользователь произнес "Сан-Франциско", ограничением является "В городе Сан-Франциско". Если пользователь произнес "к югу от рынка", то ограничением является "В окрестностях SoMa".a. If the user specified a limit value, use it. For example, if the user said "Greek food", the constraint is cuisine=Greek. If the user said "San Francisco", the restriction is "In the City of San Francisco". If the user said "south of the market", then the restriction is "In the vicinity of SoMa".
b. В противном случае, использование зависящего от предметной области и критериев значения по умолчанию. Например, если пользователь произнес "столик в каком-нибудь тайском заведении", то он указывает, что критерий доступности является релевантным, но он не указал значение ограничения. Значениями ограничений по умолчанию для доступности могут быть некоторый диапазон времен и дат, к примеру, сегодня вечером и количество участников званого вечера по умолчанию в 2.b. Otherwise, use the domain and criteria dependent default. For example, if the user said "a table in some Thai establishment", then he indicates that the availability criterion is relevant, but he did not indicate the value of the restriction. The default constraint values for availability can be a range of times and dates, such as tonight and the default number of party attendees of 2.
2. Выбор минимума из N результатов посредством указанных ограничений.2. Selecting the minimum of N results through the specified constraints.
a. Попытка получить N результатов в строгом соответствии.a. Trying to get N results in a strict match.
b. Если она завершается неудачно, попытка ослаблять ограничения в обратном порядке приоритета. Иными словами, совпадение на строгом уровне для одного или более критериев, за исключением последнего, который может совпадать на нестрогом уровне. Если нет нестрогого совпадения для этого ограничения, то попытка использования нестрогих совпадений вверх по линии от наименьшего до наибольшего приоритета.b. If it fails, attempt to relax constraints in reverse order of precedence. In other words, a strict match for one or more criteria, except for the last one, which may match at a non-strict level. If there is no non-strict match for this constraint, then attempt to use non-strict matches up the line from lowest to highest priority.
c. Затем повторение контура, разрешающего ошибку при совпадении ограничений, от наименьшего до наибольшего приоритета.c. Then iteration of the loop, resolving the error when the constraints match, from the lowest to the highest priority.
3. После получения минимального набора вариантов выбора лексикографическая сортировка по одному или более критериев (которые могут включать в себя указываемые пользователем критерии, а также другие критерии) в порядке приоритета.3. After receiving the minimum set of choices, lexicographic sorting by one or more criteria (which may include user-specified criteria as well as other criteria) in order of priority.
a. Рассмотрение набора указываемых пользователем критериев в качестве наибольшего приоритета, затем одного или более оставшихся критериев в их априорном приоритете. Например, если априорный приоритет - это (доступность, кухня, близость, рейтинг), и пользователь дает ограничения на близость и кухню, то приоритет сортировки - это (кухня, близость, доступность, рейтинг).a. Considering a set of user-specified criteria as the highest priority, then one or more remaining criteria in their a priori priority. For example, if the prior priority is (accessibility, cuisine, proximity, rating) and the user gives restrictions on proximity and cuisine, then the sort priority is (cuisine, proximity, accessibility, rating).
b. Сортировка для критериев с использованием дискретных уровней соответствия (строгое, нестрогое, нет) с использованием подхода, идентичного подходу при ослаблении ограничений, в этот раз с применением полного списка критериев.b. Sorting for criteria using discrete matching levels (strong, loose, none) using an identical approach to constraint relaxation, this time using the full list of criteria.
i. Если набор вариантов выбора получен без ослабления ограничений, то один или более из набора вариантов выбора могут "связываться" в сортировке, поскольку они представляют собой одно или более совпадений на строгих уровнях. Далее, следующие критерии в списке приоритетов могут вступать в силу, чтобы сортировать их. Например, если пользователь говорит, что кухня = итальянская, близость = В Сан-Франциско, и приоритет сортировки - это (кухня, близость, доступность, рейтинг), то одно или более мест в списке имеют равные значения совпадения для кухни и близости. Таким образом, список должен сортироваться по доступности (места с доступными столиками появляются первыми). Внутри доступных мест, места с наивысшим рейтингом должны быть наверху.i. If a set of choices is obtained without relaxing the constraints, then one or more of the set of choices can be "linked" in the sort because they represent one or more matches at strict levels. Next, the next criteria in the priority list may come into effect to sort them. For example, if the user says cuisine = Italian, proximity = In San Francisco, and the sort priority is (cuisine, proximity, availability, rating), then one or more places in the list have equal match values for cuisine and proximity. Thus, the list should be sorted by availability (seats with available tables appear first). Within the available seats, the highest ranked seats should be at the top.
ii. Если набор вариантов выбора получен посредством ослабления ограничений, то один или более полностью совпадающих элементов располагаются наверху списка, а за ними частично совпадающие элементы. В совпадающей группе они сортируются посредством оставшихся критериев, как и в частично совпадающей группе. Например, если имеется только два итальянских ресторана в Сан-Франциско, то доступный показывается сначала, а затем недоступный. После этого показываются оставшиеся рестораны в Сан-Франциско, отсортированные по доступности и рейтингу.ii. If a set of choices is obtained by loosening constraints, then one or more fully matching elements are placed at the top of the list, followed by partially matching elements. In the matching group, they are sorted by the remaining criteria, as in the partial matching group. For example, if there are only two Italian restaurants in San Francisco, then the available one is shown first and then the unavailable one. After that, the remaining restaurants in San Francisco are shown, sorted by availability and rating.
Упорядочение по приоритетуOrder by priority
[0420] Технологии, описанные в данном документе, обеспечивают сверхнадежность помощника 1002, несмотря на частично указываемые ограничения и неполные данные. В одном варианте осуществления, помощник 1002 использует эти технологии, чтобы формировать пользовательский список элементов в порядке по критерию наилучшего соответствия, т.е. согласно релевантности.[0420] The technologies described herein provide
[0421] В одном варианте осуществления, такая сортировка по релевантности основана на упорядочении по априорному приоритету. Иными словами, из сущностей, которые важны относительно предметной области, набор критериев выбирается и размещается в порядке значимости. Если одна или более сущностей совпадают, критерии выше по порядку приоритета могут быть более релевантными для выбора с ограничениями из элементов, чем ниже по порядку. Помощник 1002 может работать на основе любого числа критериев. Помимо этого, критерии могут быть модифицированы во времени без нарушения существующих режимов поведения.[0421] In one embodiment, such relevancy sorting is based on ordering by a priori priority. In other words, from the entities that are important in relation to the subject area, a set of criteria is selected and placed in order of importance. If one or more entities match, criteria higher in order of precedence may be more relevant for constrained selection from elements than those lower in order.
[0422] В одном варианте осуществления, порядок приоритета для критериев может настраиваться с зависящими от предметной области параметрами, поскольку способ, которым взаимодействуют критерии, может зависеть от класса выбора. Например, при выборе отелей, доступность и цена могут быть доминирующими ограничениями, тогда как для ресторанов, кухня и близость могут быть более важными.[0422] In one embodiment, the order of precedence for the criteria may be configured with domain-specific parameters, since the way in which the criteria interact may depend on the selection class. For example, when choosing hotels, availability and price may be the dominant constraints, while for restaurants, food and proximity may be more important.
[0423] В одном варианте осуществления, пользователь может переопределять упорядочение по критериям по умолчанию в диалоге. Это дает возможность системе направлять пользователя, когда поиск имеет чрезмерные ограничения, посредством использования упорядочения, чтобы определять то, какие ограничения должны ослабляться. Например, если пользователь задает ограничения на кухню, близость, рекомендацию и блюдо, и нет полностью совпадающих элементов, пользователь может сказать, что блюдо важнее уровня рекомендации, и изменить сочетание, так что желательные соответствия блюд сортируются первыми.[0423] In one embodiment, the user can override the default criteria ordering in the dialog. This allows the system to guide the user when the search is overly restrictive by using ordering to determine which restrictions should be relaxed. For example, if the user sets restrictions on cuisine, proximity, recommendation, and dish, and there are no exact matches, the user can say that the dish is more important than the recommendation level, and change the combination so that desired dish matches are sorted first.
[0424] В одном варианте осуществления, когда порядок приоритета определяется, указываемые пользователем ограничения имеют приоритет по сравнению с другими. Например, в одном варианте осуществления, близость является обязательным ограничением и тем самым всегда указывается и дополнительно имеет приоритет над другими невыбранными ограничениями. Следовательно, не обязательно быть ограничением с наибольшим приоритетом для сильного доминирования. Кроме того, многие критерии могут не совпадать как один или более, если ограничение не задается пользователем, и таким образом, приоритет этих критериев имеет значение только в выбираемых пользователем критериях. Например, когда пользователь указывает кухню, он важен для них, а в противном случае нерелевантен для сортировки элементов.[0424] In one embodiment, when the order of precedence is determined, user-specified restrictions take precedence over others. For example, in one embodiment, proximity is a mandatory constraint and thus is always specified and additionally takes precedence over other unselected constraints. Therefore, it is not necessary to be the highest priority constraint for strong dominance. In addition, many criteria may not match as one or more if the constraint is not specified by the user, and thus the precedence of these criteria only matters in user-selected criteria. For example, when a user specifies a kitchen, it is important to them and otherwise irrelevant for sorting items.
[0425] Например, ниже приводится парадигма сортировки по вариантам приоритета для предметной области ресторанов:[0425] For example, the following is a paradigm for sorting by priority options for the restaurant domain:
1. кухня* (не поддающийся сортировке, если значение ограничения не задано),1. kitchen* (unsortable if limit value is not set),
2. доступность* (поддающийся сортировке с использованием значения ограничения по умолчанию, например, времени)2. Availability* (sortable using a default constraint value such as time)
3. рекомендованный3. recommended
4. близость* (значение ограничения всегда задается),4. proximity* (restriction value is always set),
5. доступность по цене5. affordability
6. возможность доставки6. delivery capability
7. блюдо (не поддающийся сортировке, если значение ограничения, например, ключевое слово не задано),7. dish (not sortable if the constraint value, e.g. keyword, is not set),
8. ключевые слова (не поддающийся сортировке, если значение ограничения, например, ключевое слово не задано),8. keywords (unsortable if the constraint value, e.g. keyword is not set),
9. название ресторана9. restaurant name
[0426] Ниже приводится пример объяснения схемы для вышеуказанной парадигмы сортировки:[0426] The following is an example schema explanation for the above sorting paradigm:
- Если пользователь указывает кухню, он хочет запомнить ее.- If the user specifies a kitchen, he wants to remember it.
- Если одна или более сущностей совпадают, сортировать по уровню рейтинга (наибольший приоритет для критериев может быть использован для того, чтобы сортировать без ограничения).- If one or more entities match, sort by rating level (highest priority for criteria can be used to sort without limit).
- По меньшей мере, в одном варианте осуществления, близость может быть важнее большинства сущностей. Тем не менее, поскольку она совпадает на дискретных уровнях (в городе, в пределах радиуса для прохождения пешком и т.п.), и она всегда указывается, то большую часть времени, большинство совпадающих элементов могут "привязываться" по близости.- In at least one embodiment, proximity may be more important than most entities. However, since it matches at discrete levels (in a city, within a walking radius, etc.) and it is always indicated, most of the time, most of the matching elements can "pin" by proximity.
- Доступность (определенная посредством поиска на web-узле, таком как, например, open-table.com) является ценным критерием сортировки и может быть основана на значении по умолчанию для сортировки, если не указывается. Если пользователь указывает время для заказа, то только доступные места могут быть в списке, и сортировка может быть основана на рекомендации.- Accessibility (determined by searching a web site such as open-table.com) is a valuable sorting criterion and can be based on a default sorting value if not specified. If the user specifies a time to order, then only the available seats can be listed and the sorting can be based on a recommendation.
- Если пользователь говорит, что ему нужны наиболее рекомендуемые места, то он может сортировать вышеуказанную близость и доступность, и эти критерии могут ослабляться перед рекомендацией. Допущение заключается в том, что если кто-то ищет хорошее место, он может быть готов поехать немного дальше, и это важнее доступности столика по умолчанию. Если конкретное время для доступности указывается, и пользователь запрашивает рекомендованные места, то места, которые как рекомендованы, так и доступны, могут идти первыми, и рекомендация может ослабляться до нестрогого соответствия до того, как доступность перестает совпадать как один или более.- If the user says that he wants the most recommended places, then he can sort the above proximity and accessibility, and these criteria can be relaxed before the recommendation. The assumption is that if someone is looking for a good seat, they may be willing to travel a little further, and this is more important than the availability of a table by default. If a specific time for availability is specified and the user requests recommended places, then places that are both recommended and available may come first, and the recommendation may be relaxed to a loose match before availability no longer matches as one or more.
- Оставшиеся ограничения за исключением названия являются одним или более на основе неполных данных или совпадения. Так что они представляют собой эвристику нестрогой сортировки по умолчанию, а когда они указываются - совпадение типа "один или более или ни один".- The remaining restrictions except for the name are one or more based on incomplete data or a match. So they are the default non-strict sorting heuristic, and when specified, a one-or-more-or-none match.
- Название может быть использовано в качестве ограничения, чтобы обрабатывать случай, в котором упоминается ресторан по названию, например, найти один или более ресторанов Hobee около Пало-Альто. В этом случае, один или более элементов могут совпадать с названием и могут сортироваться по близости (другое указанное ограничение в этом примере).- The name can be used as a constraint to handle a case that mentions a restaurant by name, such as finding one or more Hobee restaurants near Palo Alto. In this case, one or more elements may match the title and may be sorted by proximity (another specified limitation in this example).
Моделирование предметной области: преобразование критериев выбора в базовые данныеDomain Modeling: Converting Selection Criteria to Basic Data
[0427] Может быть желательным проводить различие между данными, которые доступны для вычисления посредством помощника 1002, и данными, используемыми для осуществления выбора. В одном варианте осуществления, помощник 1002 использует модель данных, которая уменьшает сложность для пользователя посредством свертывания одного или более видов данных, используемых для того, чтобы различать элементы, в простую модель критериев выбора. Внутренне, эти данные могут принимать несколько форм. Экземпляры класса выбора могут иметь внутренние свойства и атрибуты (к примеру, кухня ресторана), могут сравниваться вдоль размерностей (к примеру, расстояние от некоторого местоположения) и могут быть обнаружены посредством некоторого запроса (к примеру, совпадают они или нет с текстовой конструкцией или доступны или нет в данное время). Они также могут быть вычислены из других данных, которые не представляются пользователю в качестве критериев выбора (например, взвешенных комбинаций рейтингов из нескольких источников). Эти данные являются релевантными как "один или более" для задачи, но различия между этими тремя видами данных не являются релевантными для пользователя. Поскольку пользователь мыслит с точки зрения признаков требуемого варианта выбора, а не свойств и размерностей, помощник 1002 операционализирует эти различные критерии в признаки элементов. Помощник 1002 предоставляет дружественную для пользователя модель данных предметной области и преобразует ее в данные, найденные в web-службах.[0427] It may be desirable to distinguish between the data that is available for calculation by
[0428] Одним типом преобразования является изоморфизм из базовых данных в дружественные для пользователя критерии. Например, доступность столиков для резервирования, наблюдаемая пользователем, может быть точно такой же, как предлагает web-узел онлайнового резервирования, к примеру, opentable.com, с использованием идентичной степени детализации для времени и количества участников званого вечера.[0428] One type of transformation is isomorphism from base data to user-friendly criteria. For example, the availability of tables for reservations as observed by the user may be exactly the same as that offered by an online reservation website such as opentable.com, using the same granularity for the time and number of party attendees.
[0429] Другим типом преобразования является нормализация данных из одной или более служб в набор общих значений, возможно с унификацией эквивалентных значений. Например, кухни одного или более ресторанов могут представляться как одна онтология в помощнике 1002 и преобразовываться в различные словари, используемые в различных службах. Эта онтология может быть иерархической и иметь концевые узлы, указывающие на конкретные значения, по меньшей мере, из одной службы. Например, одна служба может иметь значение кухни "китайская", другая - "сычуаньская" и третья - "азиатская". Онтология, используемая посредством помощника 1002, должна приводить к тому, что ссылки на "китайскую еду" или "сычуаньскую" семантически совпадают с одним или более этих узлов с доверительными уровнями, отражающими степень совпадения.[0429] Another type of transformation is the normalization of data from one or more services into a set of common values, possibly unifying equivalent values. For example, the kitchens of one or more restaurants may be represented as one ontology in
[0430] Нормализация также может вовлекаться при устранении разногласий в точности. Например, местоположение ресторана может предоставляться на уровне улицы в одной службе, но только как город в другом. В одном варианте осуществления, помощник 1002 использует глубокое структурное представление местоположений и времен, которые могут преобразовываться в различные поверхностные значения данных.[0430] Normalization may also be involved in resolving discrepancies in accuracy. For example, the location of a restaurant may be provided at street level in one service, but only as a city in another. In one embodiment,
[0431] В одном варианте осуществления, помощник 1002 использует специальный вид преобразования для открытых спецификаторов (например, романтичный, тихий), которые могут преобразовываться в совпадения при полнотекстовом поиске, теги или другие открыто текстурированные признаки. Название ограничения выбора в этом случае должно быть чем-то вроде "описывается как".[0431] In one embodiment,
[0432] По меньшей мере, в одном варианте осуществления, ограничения могут преобразовываться в упорядочения по практическим предпочтениям. Иными словами, с учетом названия критерия выбора и его значений ограничения, помощник 1002 имеет возможность интерпретировать критерий в качестве упорядочения по возможным элементам. Существует несколько технических проблем, которые следует разрешать при таком преобразовании. Например:[0432] In at least one embodiment, the constraints can be translated into orderings of practical preference. In other words, given the name of the selection criterion and its constraint values,
- Упорядочения по предпочтению могут конфликтовать. Упорядочение, предоставленное посредством одного ограничения, может быть несогласованным или даже обратно коррелированным с упорядочением, предоставленным посредством другого. Например, цена и качество имеют тенденцию быть противоположными. В одном варианте осуществления, помощник 1002 интерпретирует ограничения, выбираемые пользователем, во взвешенном или иным образом комбинированным упорядочении, которое отражает желания пользователя, но является истинным для данных. Например, пользователь может запрашивать "дешевые французские рестораны быстрого питания на расстоянии, которое можно пройти пешком, с высоким рейтингом". Во многих местоположениях вообще может не быть такого ресторана. Тем не менее, в одном варианте осуществления, помощник 1002 может показывать список элементов, который стремится к оптимизации, по меньшей мере, для одного ограничения, и пояснять, почему, по меньшей мере, один элемент перечисляется. Например, одним элементом может быть "французская кухня с высоким рейтингом", а другим "дешевое кафе быстрого питания на расстоянии, которое можно пройти пешком".- Preference orderings may conflict. The ordering provided by one constraint may be inconsistent or even inversely correlated with the ordering provided by another. For example, price and quality tend to be opposite. In one embodiment,
- Данные могут быть использованы или в качестве жестких или мягких ограничений. Например, диапазон цен ресторана может быть важным для его выбора, но может быть затруднительным указывать пороговое значение для верхней цены. Даже такие на вид жесткие ограничения, как кухня, на практике могут быть мягкими ограничениями вследствие частичного совпадения. Поскольку в одном варианте осуществления помощник 1002 использует стратегию моделирования данных, которая стремится сглаживать один или более критериев в символьные значения (к примеру, "дешевый" или "близко"), эти ограничения могут преобразовываться в функцию, которая правильно интерпретирует критерии и порядок без строгости в отношении совпадения с конкретными пороговыми значениями. Для символьных критериев с четкими объективными значениями истинности помощник 1002 может присваивать объективным критериям более высокие весовые коэффициенты, чем другим критериям, и прояснять в пояснении, что он знает о том, что некоторые элементы не совпадают строго с запрашиваемыми критериями.- The data can be used either as hard or soft limits. For example, a restaurant's price range may be important for restaurant selection, but it may be difficult to specify a threshold for the top price. Even seemingly hard constraints, like the kitchen, can actually be soft constraints due to overlap. Because, in one embodiment,
- Элементы могут совпадать с некоторыми, но не с одним или более ограничений, и могут быть показаны элементы "с наилучшим приближением".- Items may match some but not one or more of the constraints, and "best fit" items may be shown.
- В общем, помощник 1002 определяет то, какие признаки элементов являются характерными для предметной области и какие могут служить в качестве критериев выбора и, по меньшей мере, для одного критерия, возможных значений ограничений. Эта информация может предоставляться, например, через рабочие данные и API-вызовы.In general,
Текст перефразирований и строк с подсказкойText of paraphrases and prompt lines
[0433] Как описано выше, в одном варианте осуществления помощник 1002 предоставляет обратную связь, чтобы показывать то, что он понимает намерение пользователя и работает в направлении цели пользователя, посредством формирования перефразирований его текущего понимания. В модели разговорных диалогов настоящего изобретения перефразирование - это то, что помощник 1002 выводит после ввода пользователя в качестве предисловия (например, перефразирование 4003 на Фиг.40) или сводки результатов, которые следует учитывать (например, список 3502 на Фиг.35). Строка с подсказкой является рекомендацией пользователю о том, что он еще может сделать, чтобы уточнить своей запрос или изучить пространство выбора вдоль некоторых размерностей.[0433] As described above, in one embodiment,
[0434] В одном варианте осуществления, цели текста перефразирований и строк с подсказкой включают в себя, например:[0434] In one embodiment, the targets of paraphrase text and clue lines include, for example:
- показать, что помощник 1002 понимает концепты во вводе пользователя, а не только текст;- show that assistant 1002 understands concepts in user input, not just text;
- указать границы понимания 1002 помощника;- indicate the boundaries of
- направить пользователя, чтобы вводить текст, который требуется для предполагаемой задачи;- direct the user to enter the text that is required for the intended task;
- помочь пользователю изучить пространство возможностей при выборе с ограничениями;- help the user to explore the space of possibilities when choosing with restrictions;
- пояснить текущие результаты, полученные из служб, с точки зрения установленных критериев пользователя и допущений помощника 1002 (например, пояснить результаты запросов без достаточных или с чрезмерными ограничениями).- explain the current results obtained from the services in terms of established user criteria and
[0435] Например, следующее перефразирование и строка с подсказкой иллюстрируют несколько из этих целей:[0435] For example, the following paraphrase and clue line illustrates several of these goals:
Пользовательский ввод:User input:
indonesian food in menlo park (индонезийская еда в Менло-Парке)indonesian food in menlo park (Indonesian food in Menlo Park)
Интерпретация системы:System interpretation:
Task=constrainedSelectionTask=constrainedSelection
SelectionClass=restaurantSelectionClass=restaurant
Ограничения:Restrictions:
Location=Menlo Park, CALocation=Menlo Park, CA
Cuisine=Indonesian (известно в онтологии)Cuisine=Indonesian (known in ontology)
Результаты из служб:Services results:
нет строгих соответствийno strict matches
Перефразирование:Paraphrasing:
Sorry, I can’t find any Indonesian restaurants near Menlo Park (Извините, я не могу найти индонезийские рестораны около Менло-Парка).Sorry, I can't find any Indonesian restaurants near Menlo Park .
Строка с подсказкой:Prompt line:
You can try other cuisines or locations (Вы можете попробовать другие кухни или местоположения).You can try other cuisines or locations (You can try other cuisines or locations).
Строка с подсказкой под гипертекстовыми ссылками:Line with hint under hypertext links:
Indonesian (Индонезийская): You can try other food categories such as Chinese or the favorite food item such as steak (Вы можете попробовать другие категории еды, к примеру, китайская, или любимое блюдо, к примеру, стейк). Indonesian : You can try other food categories such as Chinese or the favorite food item such as steak.
Menlo Park (Менло-Парк): Enter the location such as the city, neighborhood, street address or "near" followed by the landmark (Введите местоположение, к примеру, город, окрестности, фактический адрес или "около", после чего достопримечательности). Menlo Park : Enter the location such as the city, neighborhood, street address or "near" followed by the landmark .
Cuisines (Кухни): Enter the food category such as Chinese or Pizza (Введите категорию еды, к примеру, китайская или пицца). Cuisines : Enter the food category such as Chinese or Pizza.
Locations (Местоположения): Enter the location: the city, zip code or "near" followed by the name of the place (Введите местоположение: город, почтовый индекс или "около", после чего название места). Locations : Enter the location: the city, zip code or "near" followed by the name of the place.
[0436] В одном варианте осуществления, помощник 1002 отвечает на пользовательский ввод относительно быстро с перефразированием. Перефразирование затем обновляется после того, как результаты известны. Например, начальный ответ может быть "Поиск индонезийских ресторанов около Менло-Парка...". После того, как результаты получаются, помощник 1002 должен обновлять текст для прочтения "Извините, я не могу найти индонезийские рестораны около Менло-Парка. Вы можете попробовать другие кухни или местоположения". Следует отметить, что определенные элементы выделяются (указывается здесь посредством подчеркивания), указывая, что эти элементы представляют ограничения, которые могут ослабляться или изменяться.[0436] In one embodiment,
[0437] В одном варианте осуществления, специальное форматирование/выделение используется для ключевых слов в перефразировании. Это может быть полезно, чтобы упрощать обучение пользователя для взаимодействия с интеллектуальным автоматизированным помощником 1002 посредством указания пользователю, какие слова являются самыми важными и с большей вероятностью распознаются посредством помощника 1002. Пользователь затем может с большей вероятностью использовать такие слова в будущем.[0437] In one embodiment, special formatting/emphasis is used for keywords in the paraphrase. This may be useful to facilitate user training to interact with the intelligent
[0438] В одном варианте осуществления, перефразирование и строка с подсказкой формируются с использованием любых релевантных контекстных данных. Например, любой из следующих элементов данных может быть использован, по одному или в комбинации:[0438] In one embodiment, the paraphrase and the clue line are generated using any relevant contextual data. For example, any of the following data elements may be used, singly or in combination:
- Грамматический анализ - дерево узлов онтологии, привязанных к совпадающим маркерам ввода, с примечаниями и исключениями. Для каждого узла в грамматическом анализе, это может включать в себя метаданные узла и/или все маркеры во вводе, которые представляют обоснование для значения узла.- Grammatical analysis - a tree of ontology nodes linked to matching input markers, with notes and exceptions. For each node in the parse, this may include the node's metadata and/or any tokens in the input that represent the rationale for the node's value.
- Задача, если известна.- Task, if known.
- Класс выбора.- Choice class.
- Ограничение местоположения независимо от класса выбора.- Location restriction regardless of selection class.
- Какие обязательные параметры являются неизвестными для данного класса выбора (например, местоположение является обязательным ограничением на рестораны).- Which mandatory parameters are unknown for this selection class (eg location is a mandatory constraint on restaurants).
- Название объекта с названием в грамматическом анализе, который является экземпляром класса выбора, если таки существуют (например, конкретное название ресторана или фильма).- The name of an object with a name in grammatical analysis that is an instance of the choice class, if any (for example, the specific name of a restaurant or movie).
- Это дальнейшее уточнение или начало разговора? (Сброс начинает новый разговор).- Is this a further clarification or the beginning of a conversation? (Reset starts a new conversation).
- Какие ограничения при грамматическом анализе связываются со значениями во вводе, который изменил их значения? Другими словами, какие ограничения просто изменены посредством последнего ввода?- What restrictions in grammatical analysis are associated with the values in the input that changed their meanings? In other words, what restrictions are just changed by the last input?
- Класс выбора логически выведен или непосредственно указан?- Is the selection class inferred or directly specified?
- Отсортированы по качеству, релевантности или близости?- Sorted by quality, relevance or proximity?
- Для каждого указываемого ограничения, насколько хорошо оно совпадает?- For each constraint you specify, how well does it match?
- Уточнение введено как текст или щелчком?- Is the specification entered as text or clicked?
[0439] В одном варианте осуществления, алгоритм перефразирования учитывает запрос, модель 1056 предметной области и результаты предоставления служб. Модель 1056 предметной области содержит классы и признаки, включающие в себя метаданные, которые используются для того, чтобы определять то, как формировать текст. Примеры таких метаданных для формирования перефразирования включают в себя:[0439] In one embodiment, the paraphrase algorithm takes into account the request, the
- IsConstraint={true | false}- IsConstraint={true | false}
- IsMultiValued={true | false}- IsMultiValued={true | false}
- ConstraintType={EntityName, Location, Time, Category Constraint, AvailabilityConstraint, BinaryConstraint, SearchQualifier, GuessedQualifier}- ConstraintType={EntityName, Location, Time, Category Constraint, AvailabilityConstraint, BinaryConstraint, SearchQualifier, GuessedQualifier}
- DisplayName=string- DisplayName=string
- DisplayTemplateSingular=string- DisplayTemplateSingular=string
- DisplayTemplatePlural=string- DisplayTemplatePlural=string
- GrammaticalRole={AdjectiveBeforeNoun,Noun,ThatClauseModifer}- GrammaticalRole={AdjectiveBeforeNoun,Noun,ThatClauseModifer}
[0440] Например, грамматический анализ может содержать эти элементы:[0440] For example, a grammatical analysis may contain these elements:
Class: RestaurantClass: Restaurant
IsConstraint=falseIsConstraint=false
DisplayTemplateSingular="restaurant"DisplayTemplateSingular="restaurant"
DisplayTemplatePlural="restaurants"DisplayTemplatePlural="restaurants"
GrammaticalRole=NounGrammaticalRole=Noun
Feature: RestaurantName (пример: "Il Fornaio")Feature: RestaurantName (Example: "Il Fornaio")
IsConstraint=trueIsConstraint=true
IsMultiValued=falseIsMultiValued=false
ConstraintType=EntityNameConstraintType=EntityName
DisplayTemplateSingular="named $1"DisplayTemplateSingular="named $1"
DisplayTemplatePlural="named $1"DisplayTemplatePlural="named $1"
GrammaticalRole=NounGrammaticalRole=Noun
Feature: RestaurantCuisine (пример: "китайская")Feature: Restaurant Cuisine (Example: "Chinese")
IsConstraint=trueIsConstraint=true
IsMultiValued=falseIsMultiValued=false
ConstraintType=CategoryConstraintConstraintType=CategoryConstraint
GrammaticalRole=AdjectiveBeforeNounGrammaticalRole=AdjectiveBeforeNoun
Feature: RestaurantSubtype (пример: "кафе")Feature: RestaurantSubtype (example: "cafe")
IsConstraint=trueIsConstraint=true
IsMultiValued=falseIsMultiValued=false
ConstraintType=CategoryConstraintConstraintType=CategoryConstraint
DisplayTemplateSingular="$1"DisplayTemplateSingular="$1"
DisplayTemplatePlural="$1s"DisplayTemplatePlural="$1s"
GrammaticalRole=NounGrammaticalRole=Noun
Feature: RestaurantQualifiers (пример: "романтичный")Feature: RestaurantQualifiers (example: "romantic")
IsConstraint=trueIsConstraint=true
IsMultiValued=trueIsMultiValued=true
ConstraintType=SearchQualifierConstraintType=SearchQualifier
DisplayTemplateSingular="is described as $1"DisplayTemplateSingular="is described as $1"
DisplayTemplatePlural="are described as $1"DisplayTemplatePlural="are described as $1"
DisplayTemplateCompact="matching $1"DisplayTemplateCompact="matching $1"
GrammaticalRole=NounGrammaticalRole=Noun
Feature: FoodType (пример: "буррито")Feature: FoodType (example: "burrito")
IsConstraint=trueIsConstraint=true
IsMultiValued=falseIsMultiValued=false
ConstraintType=SearchQualifierConstraintType=SearchQualifier
DisplayTemplateSingular="serves $1"DisplayTemplateSingular="serves $1"
DisplayTemplatePlural="serve $1"DisplayTemplatePlural="serve $1"
DisplayTemplateCompact="serving $1"DisplayTemplateCompact="serving $1"
GrammaticalRole=ThatClauseModiferGrammaticalRole=ThatClauseModifer
Feature: IsRecommended (пример: true)Feature: IsRecommended (example: true)
IsConstraint=trueIsConstraint=true
IsMultiValued=falseIsMultiValued=false
ConstraintType=BinaryConstraintConstraintType=BinaryConstraint
DisplayTemplateSingular="recommended"DisplayTemplateSingular="recommended"
DisplayTemplatePlural="recommended"DisplayTemplatePlural="recommended"
GrammaticalRole=AdjectiveBeforeNounGrammaticalRole=AdjectiveBeforeNoun
Feature: RestaurantGuessedQualifiers (пример: "впечатляющий")Feature: RestaurantGuessedQualifiers (example: "impressive")
IsConstraint=trueIsConstraint=true
IsMultiValued=falseIsMultiValued=false
ConstraintType=GuessedQualifierConstraintType=GuessedQualifier
DisplayTemplateSingular="matches $1 in reviews"DisplayTemplateSingular="matches $1 in reviews"
DisplayTemplatePlural="match $1 in reviews"DisplayTemplatePlural="match $1 in reviews"
DisplayTemplateCompact="matching $1"DisplayTemplateCompact="matching $1"
GrammaticalRole=ThatClauseModiferGrammaticalRole=ThatClauseModifer
[0441] В одном варианте осуществления, помощник 1002 имеет возможность обрабатывать несовпадающий ввод. Чтобы обрабатывать такой ввод, модель 1056 предметной области может предусматривать узлы типа GuessedQualifier для каждого класса выбора и правил, которые совпадают с в иных отношениях несовпадающими словами, если они находятся в правильном грамматическом контексте. Иными словами, GuessedQualifiers обрабатываются как разные узлы при грамматическом анализе, которые совпадают, когда существуют слова, которые не найдены в онтологии, но которые находятся в правильном контексте, чтобы указывать то, что они, вероятно, являются спецификаторами класса выбора. Отличие между GuessedQualifiers и SearchQualifiers состоит в том, что вторые сопоставляются со словарем в онтологии. Это различие дает возможность перефразировать то, что помощник 1002 однозначно идентифицировал намерение в SearchQualifiers, и может быть менее устойчивым при отражении GuessedQualifiers.[0441] In one embodiment,
[0442] В одном варианте осуществления, помощник 1002 выполняет следующие этапы при формировании текста перефразирования:[0442] In one embodiment,
1. Если задача является неизвестной, пояснение того, что помощник 1002 может сделать, и запрос в виде подсказки для дополнительного ввода.1. If the task is unknown, an explanation of what
2. Если задачей является задача выбора с ограничениями, и местоположение известно, то пояснение предметных областей, которые помощник 1002 знает, и запрос в виде подсказки для класса выбора.2. If the task is a constrained selection task and the location is known, then an explanation of the subject areas that the
3. Если класс выбора известен, но обязательное ограничение отсутствует, то запрос в виде подсказки для этого ограничения (например, местоположение требуется для выбора с ограничениями ресторанов).3. If the selection class is known, but there is no mandatory constraint, then prompt for that constraint (for example, location is required for restricted restaurant selections).
4. Если ввод содержит EntityName класса выбора, то вывод "поиск"<название>в<местоположении>.4. If the input contains the EntityName of the selection class, then the output is "search"<name>at<location>.
5. Если это начальный запрос в разговоре, то вывод "поиск", после чего сложной именной группы, которая описывает ограничения.5. If this is the initial query in a conversation, then the output is "search", followed by a complex noun phrase that describes the restrictions.
6. Если это этап дальнейшего уточнения в диалоге:6. If this is a stage of further refinement in the dialogue:
a. Если пользователь только что закончил требуемый ввод, то вывод "спасибо" и затем обычное перефразирование. (Это происходит, когда существует обязательное ограничение, которое преобразуется в пользовательский ввод).a. If the user has just completed the required input, then output "thank you" and then the usual paraphrase. (This happens when there is a mandatory constraint that translates to user input).
b. Если пользователь изменяет ограничение, подтверждение этого и затем обычное перефразирование.b. If the user changes the constraint, acknowledge it and then rephrase normally.
c. Если пользователь ввел имя собственное экземпляра класса выбора, его обработка специальным образом.c. If the user has entered a custom name for an instance of the selection class, it is handled in a special way.
d. Если пользователь просто добавляет нераспознанную фразу, то указание того, как она должна свернуться, в качестве поиска. При необходимости ввод может быть координирован для поисковой службы.d. If the user simply adds an unrecognized phrase, then an indication of how it should collapse as a search. If necessary, the input can be coordinated for the search service.
e. Если пользователь просто добавляет обычное ограничение, то вывод "Хорошо" и обычное перефразирование.e. If the user simply adds a normal constraint, then the output is "Good" and the usual paraphrase.
7. Чтобы пояснять результаты, использование идентичного подхода для перефразирования. Тем не менее, когда результаты являются удивительными или неожиданными, то пояснение результатов с использованием знаний о данных и службе. Кроме того, когда запрос имеет чрезмерные или не имеет достаточных ограничений, запрос в виде подсказки для дополнительного ввода.7. To explain the results, use the identical approach for paraphrasing. However, when the results are surprising or unexpected, then explain the results using knowledge of the data and service. Also, when a query has excessive or does not have sufficient constraints, the query is in the form of a hint for additional input.
Грамматика для составления сложных именных группGrammar for making complex noun phrases
[0443] В одном варианте осуществления, при перефразировании 734 запроса в задаче выбора с ограничениями, основой является сложная именная группа вокруг класса выбора, который ссылается на текущие ограничения. Каждое ограничение имеет грамматическую позицию на основе своего типа. Например, в одном варианте осуществления, помощник 1002 может составлять перефразирование, к примеру:[0443] In one embodiment, when rephrasing the query 734 in a constrained selection task, the basis is a complex noun phrase around a selection class that refers to the current constraints. Each constraint has a grammatical position based on its type. For example, in one embodiment,
рекомендованные романтичные итальянские рестораны около Менло-Парк со свободными столиками на двоих , которые предлагают оссобуко и описываются как " тихие "recommended romantic italian restaurants near menlo park free tables for two who offer ossobuco and are described as " quiet "
Грамматика, чтобы составлять это, следующая:The grammar to compose this is as follows:
<paraphraseNounClause>:==<binaryConstraint><searchQualifier><categoryConstraint><itemNoun><locationConstraint><availabiltyCon-straint><adjectivalClauses><paraphraseNounClause>:==<binaryConstraint><searchQualifier><categoryConstraint><itemNoun><locationConstraint><availabiltyCon-straint><adjectivalClauses>
<binaryConstraint>:==одно прилагательное, которое указывает присутствие или отсутствие BinaryConstraint (например, рекомендованный (лучший), доступный по цене (дешевый)) Можно перечислять несколько в одном запросе.<binaryConstraint>:==single adjective that indicates the presence or absence of a BinaryConstraint (eg recommended (best), affordable (cheap)) You can list multiple in a single query.
<searchQualifier>:==слово или слова, которые совпадают с онтологией для спецификатора класса выбора, который должен быть передан в службу поискового механизма. (например, романтичные рестораны, смешные фильмы). Использовать, когда ConstraintType=SearchQualifier.<searchQualifier>:==A word or words that match the ontology for the selection class specifier to be passed to the search engine service. (e.g. romantic restaurants, funny movies). Use when ConstraintType=SearchQualifier.
<categoryConstraint:==прилагательное, которое идентифицирует жанр, кухню или категорию класса выбора (например, китайский ресторан или файл с рейтингом R). Это последнее префиксное прилагательное, поскольку оно является наиболее существенным. Использовать для признаков типа CategoryConstraint и GrammaticalRole=AdjectiveBeforeNoun.<categoryConstraint:==an adjective that identifies a genre, cuisine, or selection class category (such as a Chinese restaurant or an R-rated file). This is the last prefix adjective because it is the most essential. Use for features of type CategoryConstraint and GrammaticalRole=AdjectiveBeforeNoun.
<itemNoun>:==<namedEntityPhrase>|<selectionClass>| <selectionClassSubType>. Находить наиболее конкретный способ отображать существительное.<itemNoun>:==<namedEntityPhrase>|<selectionClass>| <selectionClassSubType>. Find the most specific way to display a noun.
NamedEntity< SubType<ClassNamedEntity<SubType<Class
<selectionClass>:==существительное, которое является обобщенным названием для класса выбора (например, ресторан, фильм, место)<selectionClass>:==noun which is a generic name for a selection class (e.g. restaurant, movie, place)
<selectionClassSubType>:==именная группа, которая является подтипом класса выбора, если он известен (например, закусочная, музей, магазин, бар для класса выбора "местная организация") Использовать для признаков, в которых ConstraintType=CategoryConstraint и GrammaticalRole=AdjectiveBeforeNoun.<selectionClassSubType>:==noun phrase that is a subtype of the selection class, if known (e.g. diner, museum, shop, bar for selection class "local organization") Use for features where ConstraintType=CategoryConstraint and GrammaticalRole=AdjectiveBeforeNoun.
<namedEntityPhrase>:==<entityName> | "the" (<selectionClass> | <selectionClassSubType>)<namedEntityPhrase>:==<entityName> | "the" (<selectionClass> | <selectionClassSubType>)
<entityName>:==имя собственное экземпляра класса выбора (например, "Il Fornaio" "Animal House" "Harry’s Bar")<entityName>:==proper name of the selection class instance (e.g. "Il Fornaio" "Animal House" "Harry's Bar")
<locationConstraint>:==<locationPreposition><locationName><locationConstraint>:==<locationPreposition><locationName>
<locationPreposition>:=="в", "около", "на" и т.п.<locationPreposition>:=="at", "near", "on", etc.
<locationName>:==город, фактический адрес, достопримечательность или что-нибудь для GPS, к примеру "Ваше текущее местоположение"<locationName>:==city, actual address, point of interest, or something for GPS, like "Your current location"
<availabilityConstraint>:==ограничение доступности, выраженное как предложная фраза, которая идет после существительного (например, "со свободными столиками", "с доступными местами", "доступно онлайн"). Она идет сразу после существительного, чтобы придавать ему характерные свойства.<availabilityConstraint>:==an availability constraint, expressed as a prepositional phrase that comes after the noun (eg "with free tables", "with available seats", "available online"). It comes immediately after the noun to give it its characteristic properties.
<adjectivalClauses>:==<modiferVerbPhrase> | "that" <modiferVerbPhrase> "and" <modiferVerbPhrase><adjectivalClauses>:==<modiferVerbPhrase> | "that" <modiferVerbPhrase> "and" <modiferVerbPhrase>
<modiferVerbPhrase>:=глагольная группа, которая выражает ограничение в стиле ключевого слова для поиска на класс выбора (например, рестораны, которые "описываются как тихие", "предлагают мясо после 11", "совпадение с ‘ужасно модный’ в обзорах"; фильмы, которые "содержат насилие", "в главной роли Billy Bob Thornton"). Включать все ограничения в грамматический анализ, для которых GrammaticalRole=ThatClauseModifer, с использованием варианта "that...and", если их больше одного. Использовать DisplayTemplatePlural, чтобы формировать выражения "that", помещая GuessedQualifier последним. Если существует только одно такое ограничение, использовать вариант DisplayTemplateCompact.<modiferVerbPhrase>:=a verb phrase that expresses a search keyword style constraint per class of choice (e.g. restaurants that are "described as quiet", "offer meat after 11", "matching 'terribly trendy' in reviews"; films that "contain violence", "starring Billy Bob Thornton"). Include all constraints in the parsing for which GrammaticalRole=ThatClauseModifer, using the "that...and" variant if there is more than one. Use DisplayTemplatePlural to form "that" expressions by placing a GuessedQualifier last. If there is only one such constraint, use the DisplayTemplateCompact variant.
[0444] Таблица 2 предоставляет несколько примеров перефразирований, которые могут предоставляться в ответ на первый ввод для задачи, согласно одному варианту осуществления.[0444] Table 2 provides several examples of paraphrases that may be provided in response to a first input for a task, according to one embodiment.
Уточнение запроса о местах, чтобы поестьRefine request for places to eat
[0445] Таблица 3 предоставляет несколько примеров перефразирований в ответ на ситуацию, когда намерение пользователя найти место, чтобы поесть, известно, но он не выбрал конкретное место, чтобы поесть. Ему отображается список ресторанов, и он предоставляет уточнения.[0445] Table 3 provides several examples of paraphrases in response to the situation where the user's intention to find a place to eat is known, but he did not choose a specific place to eat. It displays a list of restaurants and provides clarifications.
[0446] Таблица 4 предоставляет несколько примеров сводок результатов, которые предоставляются, как только результаты получены.[0446] Table 4 provides several examples of summaries of results that are provided as soon as the results are received.
результатовNumber
results
[0447] Таблица 5 предоставляет несколько примеров строк с подсказкой, которые предоставляются, когда пользователи щелкают активные ссылки.[0447] Table 5 provides several examples of tooltip strings that are provided when users click active links.
Строки с подсказкой, когда пользователи щелкают активные ссылкиPrompt lines when users click active links
Рекомендация возможных ответов в диалогеSuggestion of possible answers in the dialogue
[0448] В одном варианте осуществления, помощник 1002 предоставляет контекстные рекомендации. Рекомендации - это способ для помощника 1002 предлагать пользователю варианты, чтобы продвигаться от своей текущей ситуации в диалоге. Набор рекомендаций, предлагаемых посредством помощника 1002, зависит от контекста, и число предлагаемых рекомендаций может зависеть от носителя и форм-фактора. Например, в одном варианте осуществления, большинство характерных рекомендаций может предлагаться в соответствии с общепринятой практикой в диалоге, расширенный список рекомендаций ("больше") может предлагаться в меню с возможностью прокрутки, и еще дополнительные рекомендации достижимы посредством ввода с клавиатуры нескольких символов и выбора из вариантов автозаполнения. Специалисты в данной области техники должны признавать, что другие механизмы могут использоваться для предоставления рекомендаций.[0448] In one embodiment,
[0449] В различных вариантах осуществления, могут предоставляться различные типы рекомендаций. Примеры типов рекомендаций включают в себя:[0449] In various embodiments, various types of recommendations may be provided. Examples of recommendation types include:
- варианты, чтобы уточнять запрос, включающие в себя добавление или удаление, или изменение значений ограничений;- options to refine the request, including adding or removing, or changing the values of restrictions;
- варианты, чтобы исправлять или восстанавливаться после некорректных ситуаций, к примеру, "не то, что я имел в виду" или "начать снова" или "поискать в Интернете";- options to correct or recover from incorrect situations, for example, "not what I had in mind" or "start again" or "search the Internet";
- варианты, чтобы разрешать неоднозначность между:- options to resolve ambiguity between:
- интерпретациями речи;- interpretation of speech;
- интерпретациями текста, включающими в себя коррекцию написания и семантическую неоднозначность;- text interpretations, including spelling correction and semantic ambiguity;
- зависящими от контекста командами, к примеру, "показать их на карте" или "отправить указания, как добраться, в мою дату" или "пояснить эти результаты";- context-sensitive commands, such as "show them on the map" or "send directions on my date" or "explain these results";
- рекомендованными рекомендациями по перекрестной продаже, такими как следующие этапы в сценариях организации званых приемов пищи или мероприятий;- recommended cross-selling guidelines, such as next steps in dinner party or event scenarios;
- варианты, чтобы многократно использовать предыдущие команды или их части.- options to reuse previous commands or parts of them.
[0450] В различных вариантах осуществления, контекст, который определяет самые релевантные рекомендации, может извлекаться, например, из следующего:[0450] In various embodiments, the context that determines the most relevant recommendations may be derived, for example, from the following:
• состояние диалога• dialog state
• состояние пользователя, включающее в себя, например:• user state, including, for example:
- статические свойства (название, домашний адрес и т.д.)- static properties (name, home address, etc.)
- динамические свойства (местоположение, время, скорость работы сети)- dynamic properties (location, time, network speed)
• предыстория взаимодействия, включающая в себя, например:• history of interaction, including, for example:
- предысторию запросов- history of requests
- предысторию результатов- history of results
- текст, который введен до этого в автозаполнение.- the text that was previously entered in autocomplete.
[0451] В различных вариантах осуществления, рекомендации могут быть сформированы посредством любого механизма, такого как, например:[0451] In various embodiments, recommendations may be generated through any mechanism, such as, for example:
- перефразирование предметной области, задачи или ограничения на основе модели онтологии;- paraphrasing the subject area, task or constraint based on the ontology model;
- подсказка в автозаполнении на основе текущей предметной области и ограничений;- hint in autocomplete based on the current subject area and restrictions;
- перефразирование неоднозначных альтернативных интерпретаций;- paraphrasing ambiguous alternative interpretations;
- альтернативные интерпретации преобразования речи в текст;- alternative interpretations of speech-to-text conversion;
- авторство вручную на основе специальных условий диалога.- manual authorship based on special dialogue conditions.
[0452] Согласно одному варианту осуществления, рекомендации формируются в качестве операций для команд в некотором состоянии заполнения. Команды являются явными каноническими представлениями запросов, включающими в себя допущения и логические выводы на основе предпринятых интерпретаций для пользовательского ввода. В случаях, когда пользовательский ввод является неполным или неоднозначным, рекомендации являются попыткой помогать пользователю регулировать ввод, чтобы прояснять команду.[0452] According to one embodiment, recommendations are generated as operations for commands in some state of filling. Commands are explicit canonical representations of queries, including assumptions and inferences based on the interpretations made for user input. In cases where user input is incomplete or ambiguous, recommendations are an attempt to help the user adjust the input to clarify the command.
[0453] В одном варианте осуществления, каждая команда является повелительным предложением, имеющим некоторую комбинацию следующего:[0453] In one embodiment, each command is an imperative sentence having some combination of the following:
- командный глагол (императив, к примеру, "найти" или "где");- command verb (imperative, for example, "find" or "where");
- предметная область (класс выбора, к примеру, "рестораны");- subject area (selection class, for example, "restaurants");
- ограничение(я), к примеру, местоположение = Пало-Альто и кухня = итальянская.- constraint(s), e.g. location = Palo Alto and cuisine = Italian.
[0454] Эти части команды (глагол, предметная область, ограничения) соответствуют узлам в онтологии.[0454] These command parts (verb, domain, constraints) correspond to nodes in the ontology.
[0455] Рекомендация, затем, может рассматриваться в качестве операций для команды, таких как ее задание, ее изменение или объявление того, что она является релевантной или нерелевантной. Примеры включают в себя:[0455] The recommendation, then, can be considered as operations for the command, such as setting it, changing it, or declaring that it is relevant or irrelevant. Examples include:
- задание командного глагола или предметной области ("найти рестораны"),- assignment of a command verb or subject area ("find restaurants"),
- изменение командного глагола ("заказать это", "показать это на карте", "сохранить это"),- changing the command verb ("order this", "show this on the map", "save this"),
- изменение предметной области ("поиск ресторана, а не местной организации")- changing the subject area ("search for a restaurant, not a local organization")
- указание того, что ограничение является релевантным ("попробуйте уточнить по кухне"),- an indication that the restriction is relevant ("try to clarify by kitchen"),
- выбор значения для ограничения ("итальянская", "французская" и т.п.)- choice of value for restriction ("Italian", "French", etc.)
- выбор ограничения и значения вместе ("недалеко отсюда", "столики на двоих")- choice of limit and value together ("not far from here", "tables for two")
- указание того, что значение ограничения является неправильным ("не этот Бостон")- an indication that the constraint value is incorrect ("not this Boston")
- указание того, что ограничение не является релевантным ("игнорировать расходы"),- an indication that the restriction is not relevant ("ignore costs"),
- указание намерения изменять значение ограничения ("попробуйте другое местоположение"),- an indication of the intention to change the value of the restriction ("try another location"),
- изменение значения ограничения ("итальянская, а не китайская")- changing the value of the constraint ("Italian, not Chinese")
- добавление к значению ограничения ("также с бассейном")- adding a constraint to the value ("also with a pool")
- привязка значения к сетке ("Лос-Анджелес, не лос-анджелос")- bind value to grid ("Los Angeles, not los angelos")
- инициирование новой команды, многократное использование контекста ([после фильмов] "найти близлежащие рестораны", "отправить указания, как добраться, моему другу"),- initiating a new command, reusing context ([after movies] "find nearby restaurants", "send directions to my friend"),
- инициирование команды, которая является "meta" для контекста ("пояснить эти результаты"),- initiating a command that is "meta" for the context ("explain these results"),
- инициирование новой команды, сброс или игнорирование контекста ("начать снова", "справка с помощью речи"),- initiating a new command, resetting or ignoring the context ("start again", "help with speech"),
[0456] Рекомендация также может заключать в себе некоторую комбинацию вышеуказанного. Например:[0456] The recommendation may also include some combination of the above. For example:
- "фильм Milk (Молоко), а не [рестораны, предлагающие] блюдо молоко"- "the film Milk (Milk), not [restaurants offering] a dish of milk"
- "рестораны, предлагающие пиццу, а не просто пиццерии-забегаловки"- "restaurants offering pizza, not just pizzerias eateries"
- "Место под названием Costco в Маунтин-Вью. Мне не важно, считаете Вы или нет, что это ресторан или местная организация"- "A place called Costco in Mountain View. I don't care if you think it's a restaurant or a local organization."
- "китайский в mountain view" [недавний запрос]- "chinese in mountain view" [recent request]
[0457] В одном варианте осуществления, помощник 1002 включает в себя общий механизм, чтобы поддерживать список рекомендаций, заказываемых посредством релевантности. Формат, в котором предлагается рекомендация, может отличаться в зависимости от текущего контекста, режима и форм-фактора устройства.[0457] In one embodiment,
[0458] В одном варианте осуществления, помощник 1002 определяет то, какие ограничения модифицировать, посредством рассмотрения любых или всех из следующих факторов:[0458] In one embodiment,
- Рассмотрение того, имеет или нет значение ограничение;- Considering whether or not the constraint matters;
- Рассмотрение того, ограничение логически выведено или явно указывается;- Considering whether the constraint is inferred or explicitly stated;
- Рассмотрение его характерных свойств (suggestionIndex).- Consideration of its characteristic properties (suggestionIndex).
[0459] В одном варианте осуществления, помощник 1002 определяет формат вывода для рекомендации. Примеры форматов вывода включают в себя:[0459] In one embodiment,
- изменение предметной области:- changing the subject area:
- если вариант автозаполнения "найти рестораны", то "попробуйте что-нибудь другое"- if the autocomplete option is "find restaurants", then "try something else"
- иначе [логически выведено] "это не поиск ресторанов"- otherwise [inferred] "this is not a restaurant search"
- изменение ограничения в виде названия:- changing the restriction in the form of a name:
- если название логически выведено, предложение альтернативной неоднозначной интерпретации- if the name is logically deduced, suggestion of an alternative ambiguous interpretation
- подстановка в автозаполнение названий объектов из текущих результатов- substitution in autocomplete of the names of objects from the current results
- другое название- other name
- при условии, что это не поиск по названию (удаление ограничения) - возможно, предлагать категорию вместо него- assuming it's not a name search (restriction removed) - maybe suggest a category instead
- "без названия"- "Untitled"
- "не в Беркли"- "not in Berkeley"
- "некоторый другой день"- "some other day"
- не в этом смысле (использовать неоднозначные альтернативы)- not in this sense (use ambiguous alternatives)
- логически выведенная дата: "в любой день, резервирование не нужно"- inferred date: "any day, no reservation needed"
[0460] В одном варианте осуществления, помощник 1002 пытается разрешать неоднозначности через рекомендации. Например, если набор текущих интерпретаций намерения пользователя является слишком неоднозначным 310, то рекомендации являются одним способом запрашивать в виде подсказки получение дополнительной информации 322. В одном варианте осуществления, для задач выбора с ограничениями, помощник 1002 факторизует общие ограничения для неоднозначных интерпретаций намерения 290 и представляет отличия между ними пользователю. Например, если пользовательский ввод включает в себя слово "кафе", и это слово может совпадать с названием ресторана или типом ресторана, то помощник 102 может запрашивать: "Вы имели в виду рестораны с названием ‘кафе’ или кафе-рестораны?"[0460] In one embodiment, assistant 1002 attempts to resolve ambiguities through recommendations. For example, if the set of current user intent interpretations is too ambiguous 310, then recommendations are one way to prompt for
[0461] В одном варианте осуществления, помощник 1002 логически выводит ограничения при определенных ситуациях. Иными словами, для задач выбора с ограничениями не все ограничения обязательно должны явно упоминаться в пользовательском вводе; некоторые могут логически выводиться из другой информации, доступной в активной онтологии 1050, кратковременном запоминающем устройстве 1052 и/или других источниках информации, доступных для помощника 1002. Например:[0461] In one embodiment,
- Логический вывод предметной области или местоположения- Logical inference of subject area or location
- Допущение по умолчанию, такое как местоположение- Default assumption such as location
- Нестрого совпадающее ограничение (местоположение с нечеткими и неявно выраженными характерными свойствами и т.д.)- Loose matching constraint (location with fuzzy and implicit characteristic properties, etc.)
- Неоднозначные критерии (сопоставление со значением ограничения без префикса (название по сравнению с категорией, зачастую неоднозначно))- Ambiguous criteria (comparison with the value of the restriction without a prefix (the name compared to the category, often ambiguous))
[0462] В случаях, если помощник 1002 логически выводит значения ограничений, он также может предлагать эти допущения в качестве рекомендаций для отклонения пользователем. Например, он может сказать пользователю "Я думал, вы имели в виду в округе. Хотите взглянуть на другое местоположение?"[0462] In cases where
[0463] Настоящее изобретение описано с конкретной степенью подробности относительно возможных вариантов осуществления. Специалисты в данной области техники должны принимать во внимание, что изобретение может осуществляться на практике в других вариантах осуществления. Во-первых, присвоение конкретных названий компонентам, написание прописными буквами терминов, атрибутов, структур данных либо любой другой аспект программирования или структурный аспект не является обязательным или значительным, и механизмы, которые реализуют изобретение или его признаки, могут иметь различные названия, форматы или протоколы. Дополнительно, система может быть реализована через комбинацию аппаратных средств и программного обеспечения, как описано, либо полностью в аппаратных элементах или полностью в программных элементах. Кроме того, конкретное разделение функциональности между различными системными компонентами, описанными в данном документе, является просто примерным и не обязательным; функции, выполняемые посредством одного системного компонента, вместо этого могут выполняться посредством нескольких компонентов, и функции, выполняемые посредством нескольких компонентов, вместо этого могут выполняться посредством одного компонента.[0463] The present invention has been described with a specific degree of detail regarding possible embodiments. Those skilled in the art will appreciate that the invention may be practiced in other embodiments. First, the naming of components, the capitalization of terms, attributes, data structures, or any other aspect of programming or structural aspect is optional or significant, and the mechanisms that implement the invention or features thereof may have different names, formats, or protocols. . Additionally, the system may be implemented through a combination of hardware and software as described, either entirely in hardware elements or entirely in software elements. In addition, the specific division of functionality between the various system components described in this document is merely exemplary and not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead be performed by a single component.
[0464] В различных вариантах осуществления, настоящее изобретение может быть реализовано как система или способ для выполнения вышеописанных технологий, отдельно или в любой комбинации. В другом варианте осуществления, настоящее изобретение может быть реализовано как компьютерный программный продукт, содержащий энергонезависимый машиночитаемый носитель хранения данных и компьютерный программный код, кодированный на носителе, для инструктирования процессору в вычислительном устройстве или другом электронном устройстве выполнять вышеописанные технологии.[0464] In various embodiments, the present invention may be implemented as a system or method for performing the above technologies, alone or in any combination. In another embodiment, the present invention may be implemented as a computer program product comprising a non-volatile computer-readable storage medium and computer program code encoded on the medium for causing a processor in a computing device or other electronic device to perform the techniques described above.
[0465] Ссылка в этом подробном описании на "один из вариантов осуществления" или "вариант осуществления" означает, что конкретный признак, структура или характеристика, описанная в связи с вариантом осуществления, включена, по меньшей мере, в один вариант осуществления изобретения. Вхождения фразы "в одном варианте осуществления" в различных местах подробного описания не обязательно ссылаются на идентичный вариант осуществления.[0465] Reference in this detailed description to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with an embodiment is included in at least one embodiment of the invention. The occurrences of the phrase "in one embodiment" in various places in the detailed description do not necessarily refer to an identical embodiment.
[0466] Некоторые части вышеуказанного представляются с точки зрения алгоритмов и символических представлений операций с битами данных в запоминающем устройстве вычислительного устройства. Эти алгоритмические описания и представления являются средством, используемым специалистами в области обработки данных для того, чтобы наиболее эффективно передавать суть своей работы другим специалистам в данной области техники. Алгоритм представлен здесь и, в общем, задуман как непротиворечивая последовательность этапов (инструкций), приводящая к требуемому результату. Этапы - это то, что требует физической обработки физических величин. Обычно, хотя и не обязательно, эти величины принимают форму электрических, магнитных или оптических сигналов, допускающих хранение, передачу, комбинирование, сравнение и иную обработку. Иногда удобно, главным образом по причинам стандартного использования, упоминать эти сигналы как биты, значения, элементы, символы, знаки, термины, числа и т.п. Кроме того, также удобно время от времени упоминать определенные компоновки этапов, требующих физических обработок физических величин, как модули или кодирующие устройства, без потери общности.[0466] Some portions of the foregoing are presented in terms of algorithms and symbolic representations of operations on data bits in the storage device of a computing device. These algorithmic descriptions and representations are a means used by data scientists to most effectively convey the essence of their work to others in the art. The algorithm is presented here and, in general, is conceived as a consistent sequence of steps (instructions) leading to the desired result. Stages - this is what requires the physical processing of physical quantities. Typically, though not necessarily, these quantities take the form of electrical, magnetic, or optical signals capable of being stored, transmitted, combined, compared, and otherwise processed. It is sometimes convenient, mainly for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, and the like. In addition, it is also convenient to refer from time to time to certain arrangements of steps requiring physical processing of physical quantities as modules or encoders without loss of generality.
[0467] Тем не менее, следует принимать во внимание, что все эти и аналогичные термины должны быть ассоциативно связаны с соответствующими физическими величинами и являются просто удобными обозначениями, применяемыми к этим величинам. Если прямо не указано иное, как очевидно из последующего пояснения, следует принимать во внимание, что по всему описанию, пояснения, использующие такие термины, как, "обработка" или "вычисление", или "отображение", или "определение" и т.п., означают действие и процессы компьютерной системы или аналогичного электронного вычислительного модуля и/или устройства, которое обрабатывает и преобразует данные, представленные в качестве физических (электронных) величин в запоминающих устройствах компьютерной системы или регистрах либо в других таких устройствах хранения, передачи или отображения информации.[0467] However, it should be appreciated that all of these and similar terms are to be associated with the corresponding physical quantities and are merely convenient designations applied to these quantities. Unless expressly stated otherwise, as evident from the following explanation, it is to be understood that throughout the description, explanations using terms such as "processing" or "computation" or "display" or "determination", etc. means the operation and processes of a computer system or similar electronic computing module and/or device that processes and converts data represented as physical (electronic) quantities in computer system storage devices or registers or other such storage, transmission or display devices information.
[0468] Конкретные аспекты настоящего изобретения включают в себя этапы и инструкции процесса, описанные в данном документе в форме алгоритма. Следует отметить, что этапы и инструкции процесса настоящего изобретения могут быть осуществлены в программном обеспечении, микропрограммном обеспечении или аппаратных средствах и при осуществлении в программном обеспечении могут загружаться так, что они постоянно размещаются, а также управляются из различных платформ, используемых посредством множества операционных систем.[0468] Specific aspects of the present invention include the steps and process instructions described herein in the form of an algorithm. It should be noted that the steps and instructions of the process of the present invention may be implemented in software, firmware, or hardware and, if implemented in software, may be downloaded such that they are permanently hosted as well as controlled from various platforms used by multiple operating systems.
[0469] Настоящее изобретение также относится к аппаратной системе для выполнения операций в данном документе. Это аппаратная система может быть специально создана в требуемых целях или она может содержать вычислительное устройство общего назначения, избирательно активируемое или реконфигурируемое посредством компьютерной программы, сохраненной в вычислительном устройстве. Такая компьютерная программа может быть сохранена на машиночитаемом носителе хранения данных, таком как, но не только, любой тип диска, включающий в себя гибкие диски, оптические диски, CD-ROM, магнитооптические диски, постоянные запоминающие устройства (ROM), оперативные запоминающие устройства (RAM), EPROM, EEPROM, магнитные или оптические карты, специализированные интегральные схемы (ASIC) или любой тип носителей, подходящих для сохранения электронных инструкций, каждый из которых соединен с компьютерной системной шиной. Дополнительно, упоминаемые в данном документе вычислительные устройства могут включать в себя один процессор или могут быть архитектурами, использующими многопроцессорные схемы для расширения вычислительных возможностей.[0469] The present invention also relates to a hardware system for performing the operations herein. This hardware system may be specifically designed for the desired purpose, or it may comprise a general purpose computing device selectively activated or reconfigured by a computer program stored on the computing device. Such a computer program may be stored on a computer-readable storage medium, such as, but not limited to, any type of disk, including floppy disks, optical disks, CD-ROMs, magneto-optical disks, read-only memory (ROM), random access memory (RAM). RAM), EPROM, EEPROM, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, each connected to a computer system bus. Additionally, the computing devices referred to herein may include a single processor or may be architectures using multiprocessor schemes to expand computing capabilities.
[0470] Алгоритмы и экраны, представленные в данном документе, по сути, не связаны ни с одним конкретным вычислительным устройством, виртуализированной системой или другой аппаратной системой. Различные системы общего назначения также могут быть использованы для программ в соответствии с идеями в данном документе, или может быть удобным конструировать более специализированную аппаратную систему, чтобы осуществлять требуемые этапы способа. Требуемая структура для множества этих систем должна быть очевидной из описания, предусмотренного в данном документе. Помимо этого, настоящее изобретение не описывается в отношении какого-либо конкретного языка программирования. Следует принимать во внимание, что множество языков программирования может быть использовано для того, чтобы реализовывать идеи настоящего изобретения, как описано в данном документе, и все вышеприведенные ссылки на конкретные языки предоставляются для раскрытия сущности и оптимального режима настоящего изобретения.[0470] The algorithms and screens presented herein are not per se associated with any particular computing device, virtualized system, or other hardware system. Various general purpose systems may also be used for programs in accordance with the teachings herein, or it may be convenient to design a more specialized hardware system to carry out the required method steps. The required structure for a variety of these systems should be apparent from the description provided herein. In addition, the present invention is not described in relation to any particular programming language. It should be appreciated that a variety of programming languages may be used to implement the ideas of the present invention as described herein, and all of the above references to specific languages are provided to disclose the spirit and optimum mode of the present invention.
[0471] Соответственно, в различных вариантах осуществления, настоящее изобретение может быть реализовано как программное обеспечение, аппаратные средства и/или другие элементы для управления компьютерной системой, вычислительным устройством или другим электронным устройством либо любой комбинацией или множеством из означенного. Такое электронное устройство может включать в себя, например, процессор, устройство ввода (к примеру, клавиатуру, мышь, сенсорную панель, трекпад, джойстик, шаровой манипулятор, микрофон и/или любую комбинацию вышеозначенного), устройство вывода (к примеру, экран, динамик и т.п.), запоминающее устройство, устройство долговременного хранения данных (к примеру, магнитное устройство хранения данных, оптическое устройство хранения данных и т.п.) и/или сетевые подключения, согласно технологиям, которые известны в данной области техники. Такое электронное устройство может быть портативным или непортативным. Примеры электронных устройств, которые могут использоваться для реализации изобретения, включают в себя: мобильный телефон, персональное цифровое устройство, смартфон, киоск, настольный компьютер, переносной компьютер, планшетный компьютер, потребительское электронное устройство, электронное бытовое устройство; музыкальный проигрыватель; камеру; телевизионный приемник; абонентскую приставку; электронный игровой блок; и т.п. Электронное устройство для реализации настоящего изобретения может использовать любую операционную систему, такую как, например, iOS или MacOS, предлагаемую компанией Apple Inc., Cupertino, Калифорния, либо любую другую операционную систему, которая выполнена с возможностью использования в устройстве.[0471] Accordingly, in various embodiments, the present invention may be implemented as software, hardware, and/or other elements for controlling a computer system, computing device, or other electronic device, or any combination or plurality thereof. Such an electronic device may include, for example, a processor, an input device (e.g., keyboard, mouse, touchpad, trackpad, joystick, trackball, microphone, and/or any combination of the above), an output device (e.g., screen, speaker). and the like), a storage device, a persistent storage device (eg, a magnetic storage device, an optical storage device, and the like), and/or network connections, according to technologies that are known in the art. Such an electronic device may or may not be portable. Examples of electronic devices that can be used to implement the invention include: mobile phone, personal digital assistant, smartphone, kiosk, desktop computer, laptop computer, tablet computer, consumer electronic device, home electronic device; music player; camera; television receiver; subscriber console; electronic game block; etc. An electronic device for implementing the present invention may use any operating system, such as, for example, iOS or MacOS available from Apple Inc., Cupertino, Calif., or any other operating system that is capable of being used on the device.
[0472] Хотя изобретение описано относительно ограниченного числа вариантов осуществления, специалисты в данной области техники с использованием преимущества вышеприведенного описания должны принимать во внимание, что могут быть разработаны другие варианты осуществления, которые не отступают от объема настоящего изобретения, как описано в данном документе. Помимо этого, следует отметить, что язык, используемый в подробном описании, преимущественно выбран для удобочитаемости и изучения и не может быть выбран, чтобы обрисовывать или ограничивать объем изобретения. Соответственно, раскрытие настоящего изобретения имеет намерение быть иллюстративным, а не ограничивающим объем изобретения, который определен в формуле изобретения.[0472] Although the invention has been described with respect to a limited number of embodiments, those skilled in the art, taking advantage of the above description, should appreciate that other embodiments may be devised that do not depart from the scope of the present invention as described herein. In addition, it should be noted that the language used in the detailed description is primarily chosen for readability and learning and cannot be chosen to outline or limit the scope of the invention. Accordingly, the disclosure of the present invention is intended to be illustrative and not restrictive of the scope of the invention as defined in the claims.
Claims (84)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29577410P | 2010-01-18 | 2010-01-18 | |
US61/295,774 | 2010-01-18 | ||
US12/987,982 US9318108B2 (en) | 2010-01-18 | 2011-01-10 | Intelligent automated assistant |
US12/987,982 | 2011-01-10 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015120954A Division RU2653250C2 (en) | 2010-01-18 | 2015-06-02 | Support of context information during interactions between user and voice assistant |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2018112505A RU2018112505A (en) | 2019-10-10 |
RU2018112505A3 RU2018112505A3 (en) | 2021-09-02 |
RU2785950C2 true RU2785950C2 (en) | 2022-12-15 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020103644A1 (en) * | 2001-01-26 | 2002-08-01 | International Business Machines Corporation | Speech auto-completion for portable devices |
US20050288936A1 (en) * | 2001-05-30 | 2005-12-29 | Senis Busayapongchai | Multi-context conversational environment system and method |
US20060069664A1 (en) * | 2004-09-30 | 2006-03-30 | Ling Benjamin C | Method and system for processing queries intiated by users of mobile devices |
US20070050191A1 (en) * | 2005-08-29 | 2007-03-01 | Voicebox Technologies, Inc. | Mobile systems and methods of supporting natural language human-machine interactions |
RU2349970C2 (en) * | 2003-01-09 | 2009-03-20 | Моторола, Инк. | Block of dialogue permission of vocal browser for communication system |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020103644A1 (en) * | 2001-01-26 | 2002-08-01 | International Business Machines Corporation | Speech auto-completion for portable devices |
US20050288936A1 (en) * | 2001-05-30 | 2005-12-29 | Senis Busayapongchai | Multi-context conversational environment system and method |
RU2349970C2 (en) * | 2003-01-09 | 2009-03-20 | Моторола, Инк. | Block of dialogue permission of vocal browser for communication system |
US20060069664A1 (en) * | 2004-09-30 | 2006-03-30 | Ling Benjamin C | Method and system for processing queries intiated by users of mobile devices |
US20070050191A1 (en) * | 2005-08-29 | 2007-03-01 | Voicebox Technologies, Inc. | Mobile systems and methods of supporting natural language human-machine interactions |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11423886B2 (en) | Task flow identification based on user intent | |
KR102369784B1 (en) | Intelligent automated assistant | |
RU2785950C2 (en) | Maintenance of contextual information between user interactions with voice assistant |