RU2785950C2 - Maintenance of contextual information between user interactions with voice assistant - Google Patents

Maintenance of contextual information between user interactions with voice assistant Download PDF

Info

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
Application number
RU2018112505A
Other languages
Russian (ru)
Other versions
RU2018112505A3 (en
RU2018112505A (en
Inventor
Томас Роберт ГРУБЕР
Адам Джон ЧЕЙЕР
Даг КИТТЛОС
Дидье Рене ГУДЗЗОНИ
Кристофер Дин БРИГЕМ
Original Assignee
Эппл Инк.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/987,982 external-priority patent/US9318108B2/en
Application filed by Эппл Инк. filed Critical Эппл Инк.
Publication of RU2018112505A publication Critical patent/RU2018112505A/en
Publication of RU2018112505A3 publication Critical patent/RU2018112505A3/ru
Application granted granted Critical
Publication of RU2785950C2 publication Critical patent/RU2785950C2/en

Links

Images

Abstract

FIELD: computer technology.
SUBSTANCE: invention relates to the field of computer technology for control of user equipment, using speech input. Contextual information related to interaction between a user and user equipment is received; speech input is received from the user through a conversational interface; speech input is processed for determination of a user’s intention associated with speech input, while the user’s intention is associated with a task parameter; and, upon determining that the user’s intention associated with speech input is related to activation of a software application installed in user equipment, the task parameter is changed based on the software application, the software application is activated in user equipment in an external way relatively to a graphic user interface including the conversational interface, while the software application is activated, using the changed task parameter, and a response is issued based on the user’s intention and contextual information.
EFFECT: increase in the accuracy of control of user equipment, using speech input.
24 cl, 5 tbl, 49 dwg

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 Application Serial Number 61/295774 entitled "Intelligent Automated Assistant", Attorney's Statement Number SIRIP003P, filed January 18, 2010, which is incorporated herein by reference.

[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 Application Serial Number 61/186414 entitled "System and Method for Semantic Auto-Completion", filed June 12, 2009, which is incorporated herein by reference.

Область техники, к которой относится изобретение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 serial number 61/295774, entitled "Intelligent Automated Assistant", attorney's statement number SIRIP003P, filed January 18, 2010, the disclosure of which is contained herein by reference;

- заявка на патент (США) порядковый номер 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) serial number 61/186414, entitled "System and Method for Semantic Auto-Completion", filed on June 12, 2009, the disclosure of which is contained herein by reference.

Аппаратная архитектура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 computing device 60 suitable for implementing at least a portion of the features and/or functionality of an intelligent automated assistant disclosed herein. The computing device 60 may be, for example, an end user computer system, a network server or server system, a mobile computing device (e.g., a personal digital device, a mobile phone, a smartphone, a laptop computer, a tablet computer, etc.), a consumer electronic device, music player or any other suitable electronic device, or any combination or part thereof. Computing device 60 may be configured to communicate with other computing devices, such as clients and/or servers, over a communication network, such as the Internet, using known protocols for this communication (wireless or wired).

[0070] В одном варианте осуществления, вычислительное устройство 60 включает в себя центральный процессор (CPU) 62, интерфейсы 68 и шину 67 (к примеру, шину на основе стандарта взаимодействия периферийных компонентов (PCI)). При работе под управлением надлежащего программного обеспечения или микропрограммного обеспечения, CPU 62 может отвечать за реализацию конкретных функций, ассоциированных с функциями специально сконфигурированного вычислительного устройства или машины. Например, по меньшей мере, в одном варианте осуществления, персональное цифровое устройство (PDA) пользователя может быть выполнено с возможностью выступать в качестве системы на основе интеллектуального автоматизированного помощника, использующей CPU 62, запоминающее устройство 61, 65 и интерфейс(ы) 68. По меньшей мере, в одном варианте осуществления, CPU 62 может инструктироваться выполнять одну или более из различных типов функций и/или операций интеллектуального автоматизированного помощника под управлением программных модулей/компонентов, которые, например, могут включать в себя операционную систему и любое надлежащее прикладное программное обеспечение, драйверы и т.п.[0070] In one embodiment, computing device 60 includes a central processing unit (CPU) 62, interfaces 68, and a bus 67 (eg, a Peripheral Component Interconnect (PCI) bus). When running the appropriate software or firmware, the CPU 62 may be responsible for implementing specific functions associated with those of a specially configured computing device or machine. For example, in at least one embodiment, a user's personal digital assistant (PDA) may be configured to act as an intelligent automated assistant system using a CPU 62, storage device 61, 65, and interface(s) 68. in at least one embodiment, the CPU 62 may be instructed to perform one or more of various types of intelligent automated assistant functions and/or operations under the control of software modules/components, which, for example, may include an operating system and any appropriate application software. , drivers, etc.

[0071] CPU 62 может включать в себя один или более процессоров 63, таких как, например, процессор из семейства микропроцессоров Motorola или Intel либо семейства микропроцессоров MIPS. В некоторых вариантах осуществления, процессор(ы) 63 может включать в себя специально разработанные аппаратные средства (например, специализированные интегральные схемы (ASIC), электрически стираемые программируемые постоянные запоминающие устройства (EEPROM), программируемые пользователем вентильные матрицы (FPGA) и т.п.) для управления работой вычислительного устройства 60. В конкретном варианте осуществления, запоминающее устройство 61 (к примеру, энергонезависимое оперативное запоминающее устройство (RAM) и/или постоянное запоминающее устройство (ROM)) также является частью CPU 62. Тем не менее, существует множество различных способов, которыми запоминающее устройство может соединяться с системой. Блок 61 запоминающего устройства может использоваться для множества целей, таких как, например, кэширование и/или сохранение данных, программирование инструкций и т.п.[0071] CPU 62 may include one or more processors 63, such as, for example, a processor from the Motorola or Intel microprocessor family or the MIPS microprocessor family. In some embodiments, processor(s) 63 may include custom designed hardware (e.g., application specific integrated circuits (ASICs), electrically erasable programmable read-only memories (EEPROMs), field programmable gate arrays (FPGAs), and the like. ) to control the operation of the computing device 60. In a specific embodiment, the storage device 61 (for example, non-volatile random access memory (RAM) and/or read only memory (ROM)) is also part of the CPU 62. However, there are many different the ways in which the storage device can be connected to the system. The storage unit 61 may be used for a variety of purposes such as caching and/or storing data, programming instructions, and the like, for example.

[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 interfaces 68 are provided as interface cards (sometimes referred to as "line cards"). In general, they control the sending and receiving of data packets over a computer network and sometimes support other peripherals used with computing device 60. Of the interfaces that may be provided, Ethernet interfaces, frame relay protocol interfaces, cable interfaces, DSL interfaces are provided. , token ring protocol interfaces, etc. In addition, various types of interfaces can be provided, such as, for example, Universal Serial Bus (USB), Serial, Ethernet, FireWire, PCI, Parallel, Radio Frequency (RF), Bluetooth™, Near Field Communication (e.g. using magnetism Near Field), 802.11 (Wi-Fi), Frame Relay, TCP/IP, ISDN, Fast Ethernet interfaces, Gigabit Ethernet interfaces, ATM based interfaces, High Speed Serial Interfaces (HSSI), point of sale terminal interfaces (POS), distributed data transmission interfaces over fiber optic channels (FDDI), etc. In general, such interfaces 68 may include ports suitable for communication with appropriate media. In some cases, they may also include an independent processor and, in some cases, volatile and/or non-volatile storage (eg, RAM).

[0074] Хотя система, показанная на Фиг.3, иллюстрирует одну конкретную архитектуру для вычислительного устройства 60 для реализации технологий изобретения, описанного в данном документе, она никоим образом не является единственной архитектурой устройств, в которой может быть реализована, по меньшей мере, часть признаков и технологий, описанных в данном документе. Например, могут быть использованы архитектуры, имеющие один или любое число процессоров 63, и такие процессоры 63 могут присутствовать в одном устройстве или распределяться между любым числом устройств. В одном варианте осуществления, один процессор 63 обрабатывает обмен данными, а также вычисления при маршрутизации. В различных вариантах осуществления, различные типы признаков и/или функциональностей интеллектуального автоматизированного помощника могут быть реализованы в системе на основе интеллектуального автоматизированного помощника, которая включает в себя клиентское устройство (к примеру, персональное цифровое устройство или смартфон с запущенными клиентским программным обеспечением) и серверную систему(ы) (к примеру, серверную систему, подробнее описанную ниже).[0074] Although the system shown in FIG. 3 illustrates one particular architecture for computing device 60 for implementing the technologies of the invention described herein, it is by no means the only device architecture in which at least a portion of features and technologies described in this document. For example, architectures having one or any number of processors 63 may be used, and such processors 63 may be present in one device or distributed among any number of devices. In one embodiment, one processor 63 handles communications as well as routing calculations. In various embodiments, different types of intelligent automated assistant features and/or functionalities may be implemented in an intelligent automated assistant based system that includes a client device (e.g., a personal digital assistant or smartphone running client software) and a server system. (s) (for example, a server system, described in more detail below).

[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. Computing device 60 includes processor(s) 63 that execute software to implement intelligent automated assistant 1002. Input device 1206 may be of any type suitable for receiving user input, including, for example, a keyboard, touch screen, microphone ( for example, for voice input), mouse, touch pad, trackball, five-button switch, joystick, and/or any combination of the foregoing. Output device 1207 may be a screen, speaker, printer, and/or any combination of the above. The memory device 1210 may be random access memory having a structure and architecture known in the art for use by the processor(s) 63 during software execution. Storage device 1208 may be any magnetic, optical, and/or electrical storage device for storing data in digital form; examples include flash memory, magnetic hard disk, CD-ROM, and the like.

[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 clients 1304 are provided; each client 1304 may run software to implement the client portions of the present invention. In addition, any number of servers 1340 may be provided to process requests received from clients 1304. Clients 1304 and servers 1340 may communicate with each other over an electronic network 1361, such as the Internet. Network 1361 may be implemented using any known network protocols, including, for example, wired and/or wireless protocols.

[0080] Помимо этого, в одном варианте осуществления, серверы 1340 могут вызывать внешние службы 1360 при необходимости, чтобы получать дополнительную информацию или сохранять данные относительно предыдущих взаимодействий с конкретными пользователями. Связь с внешними службами 1360 может осуществляться, например, через сеть 1361. В различных вариантах осуществления, внешние службы 1360 включают в себя службы на основе web-технологий и/или функциональность, связанную или установленную в самом аппаратном устройстве. Например, в варианте осуществления, в котором помощник 1002 реализуется на смартфоне или другом электронном устройстве, помощник 1002 может получать информацию, сохраненную в приложении для работы с календарем ("приложении"), в контактах и/или других источниках.[0080] In addition, in one embodiment, servers 1340 may call external services 1360 as needed to obtain additional information or store data regarding previous interactions with specific users. Communication with external services 1360 may be via network 1361, for example. In various embodiments, external services 1360 include web-based services and/or functionality associated with or installed on the hardware device itself. For example, in an embodiment where assistant 1002 is implemented on a smartphone or other electronic device, assistant 1002 can obtain information stored in a calendar application ("app"), contacts, and/or other sources.

[0081] В различных вариантах осуществления, помощник 1002 может управлять многими признаками и операциями электронного устройства, на котором он устанавливается. Например, помощник 1002 может вызывать внешние службы 1360, которые взаимодействуют с функциональностью и приложениями в устройстве через API или посредством другого средства, чтобы выполнять функции и операции, которые в противном случае могут быть инициированы с использованием традиционного пользовательского интерфейса в устройстве. Такие функции и операции могут включать в себя, например, установку будильника, осуществление телефонного вызова, отправку текстового сообщения или почтового сообщения, добавление календарного мероприятия и т.п. Такие функции и операции могут быть выполнены в качестве дополнительных функций в контексте разговорного диалога между пользователем и помощником 1002. Такие функции и операции могут указываться пользователем в контексте такого диалога, или они могут быть автоматически выполнены на основе контекста диалога. Специалисты в данной области техники должны признавать, что помощник 1002 тем самым может быть использован в качестве механизма управления для инициирования и управления различными операциями на электронном устройстве, который может быть использован в качестве альтернативы традиционным механизмам, таким как кнопки или графические пользовательские интерфейсы.[0081] In various embodiments, assistant 1002 can control many of the features and operations of the electronic device on which it is installed. For example, assistant 1002 may call external services 1360 that interact with functionality and applications on the device via an API 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 assistant 1002. Such functions and operations may be specified by the user in the context of such a dialogue, or they may be automatically performed based on the context of the dialogue. Those skilled in the art will recognize that assistant 1002 can thus be used as a control mechanism for initiating and controlling various operations on an electronic device, which can be used as an alternative to traditional mechanisms such as buttons or graphical user interfaces.

[0082] Например, пользователь может предоставлять ввод в помощник 1002, к примеру, "Мне нужно проснуться завтра в 8:00". После того, как помощник 1002 определяет намерение пользователя с использованием технологий, описанных в данном документе, помощник 1002 может вызывать внешние службы 1340, чтобы взаимодействовать с функцией или приложением будильника в устройстве. Помощник 1002 устанавливает будильник от имени пользователя. Таким образом, пользователь может использовать помощник 1002 в качестве замены традиционных механизмов для установки будильника или выполнения других функций в устройстве. Если запросы пользователя являются неоднозначными или требуют дополнительного прояснения, помощник 1002 может использовать различные технологии, описанные в данном документе, включающие в себя активное извлечение, перефразирование, рекомендации и т.п., чтобы получать необходимую информацию, так что вызываются корректные службы 1340, и предпринимается намеченное действие. В одном варианте осуществления, помощник 1002 может запрашивать в виде подсказки у пользователя подтверждение до вызова службы 1340, чтобы выполнять функцию. В одном варианте осуществления, пользователь может избирательно деактивировать возможность помощника 1002 вызывать конкретные службы 1340 или может деактивировать весь такой вызов служб при необходимости.[0082] For example, the user may provide input to assistant 1002, such as "I need to wake up at 8:00 tomorrow." After assistant 1002 determines the user's intent using the technologies described herein, assistant 1002 can call external services 1340 to interact with an alarm clock feature or application on the device. Helper 1002 sets an alarm on behalf of the user. Thus, the user can use assistant 1002 as a replacement for traditional mechanisms for setting an alarm or performing other functions on the device. If user requests are ambiguous or require further clarification, helper 1002 may use various techniques described herein, including active retrieval, paraphrasing, recommendations, and the like, to obtain the necessary information so that the correct services 1340 are invoked, and the intended action is taken. In one embodiment, assistant 1002 may prompt the user for confirmation prior to calling service 1340 to perform a function. In one embodiment, the user may selectively deactivate the ability of assistant 1002 to invoke specific services 1340, or may deactivate all such invocation of services as needed.

[0083] Система по настоящему изобретению может быть реализована для многих различных типов клиентов 1304 и режимов работы. Фиг.6 является блок-схемой, демонстрирующей архитектуру системы, иллюстрирующую несколько различных типов клиентов и режимов работы. Специалисты в данной области техники должны признавать, что различные типы клиентов 1304 и режимов работы, показанные на Фиг.6, являются просто примерными, и что система по настоящему изобретению может быть реализована с использованием клиентов 1304 и/или режимов работы, отличных от проиллюстрированных. Дополнительно, система может включать в себя любые или все из таких клиентов 1304 и/или режимов работы, по одному или в любой комбинации. Проиллюстрированные примеры включают в себя:[0083] The system of the present invention can be implemented for many different types of clients 1304 and modes of operation. 6 is a block diagram showing the system architecture illustrating several different types of clients and modes of operation. Those skilled in the art will recognize that the various types of clients 1304 and modes of operation shown in FIG. 6 are merely exemplary, and that the system of the present invention may be implemented using clients 1304 and/or modes of operation other than those illustrated. Additionally, the system may include any or all of such clients 1304 and/or modes of operation, one at a time or in any combination. Illustrated examples include:

- Компьютерные устройства с устройствами ввода-вывода и/или датчиками 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 servers 1340 via network 1361. The input and output channels may be of any type, including, for example, visual and/or acoustic channels. For example, in one embodiment, the system of the invention may be implemented using voice communication techniques providing an embodiment of an assistant for the blind in which the equivalent of a web browser is speech-driven and uses speech for output.

- Мобильные устройства с модулями ввода-вывода и датчиками 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 system application 1304D. These include, but are not limited to, car navigation systems, voice control systems, in-car electronic multimedia systems, and the like.

- Сетевые вычислительные устройства, к примеру, маршрутизаторы 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 resident application 1304E.

- Почтовые клиенты 1424, с которыми вариант осуществления помощника соединяется через сервер 1426 модальности по электронной почте. Сервер 1426 модальности по электронной почте выступает в качестве моста связи, например, принимающего ввод от пользователя в качестве почтовых сообщений, отправленных в помощник, и отправляющего вывод из помощника пользователю в качестве ответов.- Mail clients 1424, with which the implementation of the assistant connects through the server 1426 modality by e-mail. The email modality server 1426 acts as a communication bridge, for example, accepting input from the user as emails sent to the helper and sending the output from the helper to the user as responses.

- Клиенты 1428 мгновенного обмена сообщениями, с которыми вариант осуществления помощника соединяется через сервер 1430 модальности по протоколу обмена сообщениями. Сервер 1430 модальности по протоколу обмена сообщениями выступает в качестве моста связи, принимающего ввод от пользователя в качестве сообщений, отправленных в помощник, и отправляющего вывод из помощника пользователю в качестве сообщений в ответ.- Clients 1428 instant messaging, with which the embodiment of the assistant connects through the server 1430 modality protocol messaging. The messaging protocol modality server 1430 acts as a communication bridge, accepting input from the user as messages sent to the helper, and sending output from the helper to the user as messages in response.

- Голосовые телефоны 1432, с которыми вариант осуществления помощника соединяется через сервер 1430 модальности по протоколу "речь-по-IP" (VoIP). Сервер 1430 модальности по VoIP выступает в качестве моста связи, принимающего ввод от пользователя в качестве голоса, произносимого для помощника, и отправляющего вывод из помощника пользователю, например, в качестве синтезированной речи, в ответ.- Voice telephones 1432 to which the assistant's embodiment connects via a voice-over-IP (VoIP) modality server 1430. The VoIP modality server 1430 acts as a communication bridge, receiving input from the user as a voice spoken to the assistant, and sending output from the assistant to the user, such as synthesized speech, in response.

[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, assistant 1002 may act as a participant in conversations . Assistant 1002 may track the conversation and response of people or a group using one or more of the technologies and methods described herein for one-to-one interactions.

[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 client 1304 and a server 1340 are shown that communicate with each other to implement the present invention according to one embodiment. 7 illustrates one possible arrangement by which program modules may be distributed between client 1304 and server 1340. Those skilled in the art should recognize that the illustrated arrangement is merely exemplary, and that such modules may be distributed in many different ways. In addition, any number of clients 1304 and/or servers 1340 may be provided, and modules may be distributed among these clients 1304 and/or servers 1340 in any of a number of different ways.

[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 client 1304 and the server 1340, with the input extraction client side 1094a and the output processing client side 1092a located in the client 1304, and the input extraction server side 1094b and the output processing backend 1092b is located on the server 1340. The following components are located on the server 1340:

- полный словарь 1058b;- complete dictionary 1058b;

- полная библиотека модулей 1060b распознавания языковых конструкций;- a complete library of modules 1060b recognition of language constructs;

- главная (мастер) версия 1052b кратковременного персонального запоминающего устройства;- main (master) version 1052b short-term personal storage device;

- главная версия 1054b долговременного персонального запоминающего устройства.- master version 1054b of the long-term personal storage device.

[0087] В одном варианте осуществления, клиент 1304 локально хранит поднаборы и/или части этих компонентов, чтобы повышать скорость реагирования и уменьшать зависимость от сетевой связи. Такие поднаборы и/или части могут поддерживаться и обновляться согласно известным технологиям управления кэш-памятью. Такие поднаборы и/или части включают в себя, например:[0087] In one embodiment, client 1304 stores subsets and/or portions of these components locally to increase responsiveness and reduce reliance on network communication. Such subsets and/or portions may be maintained and updated according to known cache management techniques. Such subsets and/or parts include, for example:

- поднабор словаря 1058a;- vocabulary subset 1058a;

- поднабор библиотеки модулей 1060a распознавания языковых конструкций;- a subset of the library of modules 1060a recognition of language constructs;

- кэш 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 server 1340, including, for example:

- языковой интерпретатор 1070;- language interpreter 1070;

- процессор 1080 потока диалогов;- processor 1080 flow of dialogues;

- процессор 1090 вывода;- output processor 1090;

- базы 1072 данных объектов предметной области;- database 1072 data objects of the subject area;

- модели 1086 потока задач;- task flow models 1086;

- оркестровку 1082 служб;- orchestration of 1082 services;

- модели 1088 характеристик служб.- service characteristics models 1088.

[0089] Каждый из этих компонентов подробнее описывается ниже. Сервер 1340 получает дополнительную информацию посредством взаимодействия с внешними службами 1360 при необходимости.[0089] Each of these components is described in more detail below. Server 1340 obtains additional information through interaction with external services 1360 as needed.

Концептуальная архитектураConceptual architecture

[0090] Ссылаясь теперь на Фиг.1, показана упрощенная блок-схема конкретного примерного варианта осуществления интеллектуального автоматизированного помощника 1002. Как подробнее описано в данном документе, различные варианты осуществления систем на основе интеллектуального автоматизированного помощника могут быть выполнены с возможностью предоставлять различные специальные типы операций, функциональностей и/или признаков, в общем, связанных с технологией на основе интеллектуального автоматизированного помощника. Дополнительно, как подробнее описано в данном документе, многие различные операции, функциональности и/или признаки системы на основе интеллектуального автоматизированного помощника, раскрытой в данном документе, могут предоставлять или обеспечивать различные типы преимуществ и/или выгод для различных объектов, взаимодействующих с системой(ами) на основе интеллектуального автоматизированного помощника. Вариант осуществления, показанный на Фиг.1, может быть реализован с использованием любой из аппаратных архитектур, описанных выше, или с использованием другого типа аппаратной архитектуры.[0090] Referring now to FIG. 1, a simplified block diagram of a specific exemplary embodiment of an intelligent automated assistant 1002 is shown. As described in more detail herein, various embodiments of intelligent automated assistant systems can be configured to provide various special types of operations. , functionalities and/or features generally associated with technology based intelligent automated assistant. Additionally, as described in more detail herein, the many different operations, functionalities, and/or features of the intelligent automated assistant system disclosed herein may provide or provide different types of advantages and/or benefits to various entities interacting with the system(s). ) based on an intelligent automated assistant. The embodiment shown in FIG. 1 may be implemented using any of the hardware architectures described above, or using another type of hardware architecture.

[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, assistant 1002 may be used to initiate, operate, and manage many of the features and applications available on the device.

- предложение персональных рекомендаций для действий, продуктов, услуг, источника развлечения, управления временем или любого другого вида службы предоставления рекомендаций, которая извлекает выгоду из интерактивного диалога на естественном языке и автоматизированного доступа к данным и службам.- 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 automated assistant 1002 may be implemented on one or more client systems, on one or more server systems, and /or combinations of the above.

[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 automated assistants 1002 described herein can automate troubleshooting and problem solving activities. The ability to activate multiple services for a given request also provides more functionality to the user than is achieved by visiting a single Web site, for example, to create a product or service or find an activity.

- Применение персональной информации и персональной предыстории взаимодействия при интерпретации и выполнении пользовательских запросов. В отличие от традиционных поисковых механизмов или служб ответа на вопросы, варианты осуществления, описанные в данном документе, используют информацию из предыстории персонального взаимодействия (например, предыстории диалогов, предыдущих выборов от результатов и т.п.), персонального физического контекста (например, местоположения пользователя и времени) и персональную информацию, собираемую в контексте взаимодействия (например, имя, адреса электронной почты, физические адреса, телефонные номера, номера лицевого счета, предпочтения и т.п.). Использование этих источников информации обеспечивает, например:- 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 assistant 1002 actively directs and restricts input from the user based on identical patterns and information used to interpret their input. For example, assistant 1002 can apply dialog models to recommend next steps in a dialog with the user in which they refine the query; suggest padding for partially typed input based on domain- and context-specific capabilities; or use semantic interpretation to choose from ambiguous interpretations of speech as text or text as intent.

- Явное моделирование и динамическое управление службами при динамической и надежной оркестровке служб. Архитектура описанных вариантов осуществления предоставляет возможность помощнику 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 helper 1002 to interact with many external services, dynamically determine which services can provide information for a particular user request, map user request parameters to different service APIs, invoke multiple services at once, integrate results from multiple services, recover gracefully after errors during the operation of the services and/or effectively support the implementation of the services as their API and characteristics improve.

- Использование активных онтологий в качестве способа и аппаратной системы для компоновки помощников 1002, которые упрощают разработку программного обеспечения и сопровождение данных систем автоматизированного помощника. Активные онтологии являются интеграцией сред моделирования данных и выполнения для помощников. Они предоставляют инфраструктуру, чтобы связывать различные источники моделей и данных (концепты предметной области, потоки задач, словарь, модули распознавания языковых конструкций, диалоговый контекст, персональную информацию пользователя и преобразования из запросов по предметным областям и задачам во внешние службы). Активные онтологии и другие архитектурные нововведения, описанные в данном документе, обеспечивают практичность построения глубокой функциональности в предметных областях, унификации нескольких источников информации и служб и выполнения этого через набор предметных областей.- The use of active ontologies as a method and hardware system for assembling assistants 1002, which simplifies software development and data maintenance of automated assistant systems. Active ontologies are an integration of data modeling and execution environments for helpers. They provide the infrastructure to link different sources of models and data (domain concepts, task flows, vocabulary, language construct recognizers, conversational context, user personal information, and transformations from domain and task queries to external services). The active ontologies and other architectural innovations described in this document provide the practicality of building deep functionality across domains, unifying multiple sources of information and services, and doing so across a set of domains.

[0095] По меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью использовать и/или формировать различные специальные типы данных и/или другие типы информации при выполнении конкретных задач и/или операций. Они могут включать в себя, например, входные данные/информацию и/или выходные данные/информацию. Например, по меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью осуществлять доступ, обрабатывать и/или иным образом использовать информацию из одного или более различных типов источников, таких как, например, одно или более локальных и/или удаленных запоминающих устройств, устройств и/или систем. Дополнительно, по меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью формировать один или более различных типов выходных данных/информации, которые, например, могут быть сохранены в запоминающем устройстве одного или более локальных и/или удаленных устройств и/или систем.[0095] In at least one embodiment, the intelligent automated assistant 1002 may be configured to 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, the intelligent automated assistant 1002 may be configured to access, process, and/or otherwise use information from one or more different types of sources, such as, for example, one or more local and/or or remote storage devices, devices and/or systems. Additionally, in at least one embodiment, the intelligent automated assistant 1002 may be configured to generate one or more different types of output data/information, which, for example, may be stored in the memory of one or more local and/or remote devices. and/or systems.

[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 automated assistant 1002 of FIG. 1 is only one example of a wide range of intelligent automated assistant system embodiments that may be implemented. Other embodiments of the Intelligent Automated Assistant system (not shown) may include additional, fewer, and/or different components/features compared to what is illustrated, for example, in the exemplary embodiment of the Intelligent Automated Assistant system of FIG. one.

Пользовательское взаимодействие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 automated assistant 1002 is shown. The example of FIG. , which may be a speech input engine, and the output is a graphical layout to an output device 1207, which may be a scrollable screen. Conversation screen 101A shows a conversational user interface showing what user 101B said ("I'd like a romantic Italian food place near my office") and helper 1002's response, which is a summary of his findings 101C ("OK, I found Italian restaurants , which, judging by the reviews, are romantic, not far from your work:") and the result set 101D (the first three from the list of restaurants are shown). In this example, the user clicks on the first result in the list and the result automatically opens to reveal more information about the restaurant shown on the information screen 101E. The information screen 101E and the conversation screen 101A may be displayed on the same output device such as a touch screen or other display device; the examples illustrated in FIG. 2 are two different output states for an identical output device.

[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, assistant 1002 includes intelligence beyond simple database management applications, such as, for example:

- обработка формулировки намерения на естественном языке 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 automated assistant 1002 may include many different types of components, devices, modules, processes, systems, and the like, which, for example, may be implemented and/or specified through the use of hardware and /or combinations of hardware and software. For example, as illustrated in the exemplary embodiment of FIG. 1, assistant 1002 may include one or more of the following types of systems, components, devices, processes, and the like. (or combinations of the above):

- одна или более активных онтологий 1050;- one or more active ontologies 1050;

- компонент(ы) 1094 активного извлечения ввода (может включать в себя клиентскую часть 1094a и серверную часть 1094b);- component(s) 1094 active input extraction (may include a client part 1094a and a server part 1094b);

- компонент(ы) 1052 кратковременного персонального запоминающего устройства (может включать в себя главную версию 1052b и кэш 1052a);- component(s) 1052 short-term personal storage device (may include a master version 1052b and cache 1052a);

- компонент(ы) 1054 долговременного персонального запоминающего устройства (может включать в себя главную версию 1052b и кэш 1052a);- long-term personal storage component(s) 1054 (may include a master version 1052b and a cache 1052a);

- компонент(ы) 1056 моделей предметных областей;- component(s) 1056 domain models;

- компонент(ы) 1058 словаря (может включать в себя полный словарь 1058b и поднабор 1058a);- dictionary component(s) 1058 (may include a complete dictionary 1058b and a subset 1058a);

- компонент(ы) 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 client 1304 and server 1340.

[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 automated assistant 1002 will now be described in more detail with respect to the exemplary embodiment of the intelligent automated assistant 1002 of FIG.

Активные онтологии 1050Active ontologies 1050

[0107] Активные онтологии 1050 служат в качестве унифицирующей инфраструктуры, которая интегрирует модели, компоненты и/или данные из других частей вариантов осуществления интеллектуальных автоматизированных помощников 1002. В области техники информатики, онтологии предоставляют структуры для представления данных и знаний, такие как классы/типы, отношения, атрибуты/свойства и их конкретизация в экземплярах. Онтологии используются, например, чтобы компоновать модели данных и знаний. В некоторых вариантах осуществления интеллектуальной автоматизированной системы 1002, онтологии являются частью инфраструктуры моделирования, в которой можно компоновать модели, к примеру, модели предметных областей.[0107] Active ontologies 1050 serve as a unifying infrastructure that integrates models, components, and/or data from other parts of embodiments of intelligent automated assistants 1002. In the field of computer science engineering, ontologies provide structures for representing data and knowledge, such as classes/types , relationships, attributes/properties and their instance instantiation. Ontologies are used, for example, to assemble data and knowledge models. In some embodiments of the intelligent automation system 1002, the ontologies are part of a modeling framework in which models, such as domain models, can be assembled.

[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 automated assistant 1002. Any number of active ontologies 1050 may be provided.

[0109] По меньшей мере, в одном варианте осуществления, активные онтологии 1050 могут быть выполнены с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0109] In at least one embodiment, active ontologies 1050 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 combinations of the above):

• Выполнение функций среды моделирования и разработки, интегрирующей модели и данные из различных компонентов моделей и данных, включающих в себя, но не только:• 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- dictionary 1058

- базы 1072 данных объектов предметной области- database 1072 data objects of the subject area

- модели 1086 потока задач- 1086 task flow models

- модели 1087 потока диалогов- 1087 Dialog Flow Models

- модели 1088 характеристик служб- service characteristics 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 domain models 1056, tasks 1086 and/or dialogs 1087, language construct recognizers and/or vocabulary 1058, and user-specific information, such as stored in short-term personal storage 1052 , long-term personal storage device 1054 and/or in the results of orchestration 1182 services. For example, some active ontology nodes may correspond to domain concepts such as a restaurant and its "restaurant name" property. During live execution, these active ontology nodes can be fleshed out with the identity of the particular restaurant object and its name, and how its name matches words when the natural language input is spoken. Thus, in this embodiment, the active ontology serves both as a modeling environment, specifying the concept that restaurants are objects with identities that have names, and for maintaining the dynamic links of these modeling nodes with data from object databases and parsing. natural language.

• Предоставление возможности связи и координации между компонентами и обрабатывающими элементами интеллектуального автоматизированного помощника, такими как, например, одно или более из следующего (или комбинации вышеозначенного):• 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 active ontologies 1050 described herein may be implemented, at least in part, using various methods and hardware systems, described in U.S. Patent Application Serial No. 11/518292 entitled "Method and Apparatus for Building the Intelligent Automated Assistant" filed September 8, 2006.

[0111] По меньшей мере, в одном варианте осуществления, данный экземпляр активной онтологии 1050 может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством активных онтологий 1050, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):[0111] In at least one embodiment, a given active ontology instance 1050 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 ontologies 1050 may include, but are not limited to, one or more of the following (or combinations of the above):

- статические данные, которые доступны из одного или более компонентов интеллектуального автоматизированного помощника 1002;- static data that is available from one or more components of the intelligent automated assistant 1002;

- данные, которые динамически конкретизируются в расчете на пользовательский сеанс, например, но не только, поддержание состояния конкретных для пользователя вводов и выводов, передаваемых между компонентами интеллектуального автоматизированного помощника 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 automated assistant 1002, contents of a short-term personal storage device, inferences drawn from previous user session states , etc.

[0112] Таким образом, активные онтологии 1050 используются для того, чтобы унифицировать элементы различных компонентов в интеллектуальном автоматизированном помощнике 1002. Активная онтология 1050 дает возможность автору, проектировщику или разработчику системы интегрировать компоненты, так что элементы одного компонента идентифицируются с помощью элементов других компонентов. Автор, проектировщик или разработчик системы тем самым может комбинировать и интегрировать компоненты более простым образом.[0112] Thus, active ontologies 1050 are used to unify elements of various components in an intelligent automated assistant 1002. Active ontology 1050 allows an author, designer, or system developer to integrate components such that elements of one component are identified by elements of other components. The author, designer or system developer can thus combine and integrate components in a simpler manner.

[0113] Ссылаясь теперь на Фиг.8, показан пример фрагмента активной онтологии 1050 согласно одному варианту осуществления. Этот пример имеет намерение помогать иллюстрировать некоторые из различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством активных онтологий 1050.[0113] Referring now to FIG. 8, an example of a fragment of an active ontology 1050 according to one embodiment is shown. This 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 ontologies 1050.

[0114] Активная онтология 1050 на Фиг.8 включает в себя представления ресторана и мероприятия с приемом пищи. В этом примере, ресторан является концептом 1610 с такими свойствами, как его название 1612, предлагаемые кухни 1615 и его местоположение 1613, который, в свою очередь, может моделироваться в качестве структурного узла со свойствами для фактического адреса 1614. Концепт мероприятия с приемом пищи может моделироваться в качестве узла 1616, включающего в себя званый ужин 1617 в ресторане (который имеет количество 1619 участников) и период 1618 времени.[0114] The active ontology 1050 in FIG. 8 includes restaurant views and mealtime events. In this example, a restaurant is a concept 1610 with properties such as its name 1612, cuisines offered 1615, and its location 1613, which in turn can be modeled as a building block with properties for an actual address 1614. A meal event concept can be modeled as a node 1616 including a dinner party 1617 at a restaurant (which has 1619 attendees) and a time period 1618.

- Активные онтологии могут включать в себя и/или ссылаться на модели 1056 предметных областей. Например, Фиг.8 иллюстрирует модель 1622 предметной области ужинов в ресторанах, связанную с концептом 1610 ресторана и концептом 1616 мероприятия с приемом пищи. В этом случае, активная онтология 1050 включает в себя модель 1622 предметной области ужинов в ресторанах; в частности, по меньшей мере, два узла активной онтологии 1050, а именно, ресторан 1610 и мероприятие 1616 с приемом пищи, также включаются и/или указываются ссылкой в модели 1622 предметной области ужинов в ресторанах. Эта модель предметной области представляет, в числе прочего, такую идею, что званый ужин в ресторане заключает в себе мероприятие с приемом пищи, которое происходит в ресторанах. Узлы активной онтологии ресторан 1610 и мероприятие 1616 с приемом пищи также включаются и/или указываются ссылкой в других компонентах интеллектуального автоматизированного помощника, показанных посредством пунктирных линий на Фиг.8.- Active ontologies may include and/or refer to domain models 1056 . For example, FIG. 8 illustrates a restaurant dining domain model 1622 associated with a restaurant concept 1610 and a meal event concept 1616. In this case, the active ontology 1050 includes a restaurant dining domain model 1622; in particular, at least two active ontology nodes 1050, namely restaurant 1610 and meal event 1616, are also included and/or referenced in restaurant dining domain model 1622. This domain model represents, among other things, the idea that a dinner party at a restaurant encompasses a meal event that takes place in restaurants. The active ontology nodes restaurant 1610 and meal event 1616 are also included and/or referenced in other intelligent automated assistant components, shown by dashed lines in FIG.

- Активные онтологии могут включать в себя и/или ссылаться на модели 1086 потока задач. Например, Фиг.8 иллюстрирует модель 1630 потока задач организации мероприятий, которая моделирует организацию мероприятий независимо от предметных областей, применяемых к зависящему от предметной области виду мероприятия: мероприятию 1616 с приемом пищи. Здесь, активная онтология 1050 включает в себя общую модель 1630 потока задач организации мероприятий, которая содержит узлы, представляющие мероприятия и другие концепты, участвующие в их организации. Активная онтология 1050 также включает в себя узел мероприятия 1616 с приемом пищи, который является конкретным видом мероприятия. В этом примере, мероприятие 1616 с приемом пищи включается или указывается ссылкой в модели 1622 предметной области и в модели 1630 потока задач, и обе эти модели включаются и/или указываются ссылкой в активной онтологии 1050. С другой стороны, мероприятие 1616 с приемом пищи является примером того, как активные онтологии могут унифицировать элементы различных компонентов, включенных и/или указываемых ссылкой в других компонентах интеллектуального автоматизированного помощника, показанных посредством пунктирных линий на Фиг.8.- Active ontologies may include and/or refer to task flow models 1086 . For example, FIG. 8 illustrates an event management task flow model 1630 that models event organization regardless of the subject areas applied to a domain-specific event type: a meal event 1616. Here, the active ontology 1050 includes a generic event management taskflow model 1630 that contains nodes representing events and other concepts involved in organizing them. The active ontology 1050 also includes a meal event node 1616, which is a specific kind of event. In this example, meal event 1616 is included or referenced in domain model 1622 and task flow model 1630, and both of these models are included and/or referenced in active ontology 1050. On the other hand, meal event 1616 is an example of how active ontologies can unify the elements of the various components included and/or referenced in other intelligent automated assistant components, shown by the dotted lines in FIG.

- Активные онтологии могут включать в себя и/или ссылаться на модели 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 dialog flow models 1087 . For example, FIG. 8 illustrates a conversation flow model 1642 for obtaining constraint values required for a transaction specified in the number of party members as a constraint, as represented in concept 1619. On the other hand, active ontology 1050 provides a framework for linking and unifying various components , for example, the dialog flow model 1087. In this case, the conversation flow model 1642 has the general concept of a constraint, which is specified in this particular example as the number of party members 1619 as an active ontology node. This particular dialog flow model 1642 operates under the abstraction of domain-independent constraints. The active ontology 1050 represents the party number property 1619 of the party node 1617 that is associated with the meal event node 1616 . In this embodiment, the intelligent automated assistant 1002 uses the active ontology 1050 to unify the constraint concept in the conversation flow model 1642 with the party party number property 1619 as part of a cluster of nodes representing the meal event concept 1616 that is part of the subject matter model 1622. areas for dining in restaurants.

- Активные онтологии могут включать в себя и/или ссылаться на модели 1088 служб. Например, Фиг.8 иллюстрирует модель службы 1672 резервирования ресторана, ассоциированной с этапом потока диалогов для получения значений, требуемых для этой службы, чтобы выполнять транзакцию. В этом случае, модель 1672 служб для службы резервирования ресторана указывает, что резервирование требует значения для количества 1619 участников званого вечера (количества людей, сидящих за столиком, который нужно зарезервировать). Количество 1619 участников званого вечера в виде концепта, которое является частью активной онтологии 1050, также соединяется или связывается с общей моделью 1642 потока диалогов для запроса пользователя относительно ограничений для транзакции; в этом случае, количество участников званого вечера является требуемым ограничением для модели 1642 потока диалогов.- Active ontologies may include and/or refer to service models 1088 . For example, FIG. 8 illustrates a model of a restaurant reservation service 1672 associated with a conversation flow step to obtain the values required for that service to complete a transaction. In this case, the service model 1672 for the restaurant reservation service indicates that the reservation requires a value for the number of party attendees 1619 (the number of people seated at the table to be reserved). The number of party members 1619 as a concept that is part of the active ontology 1050 is also connected or linked to a common conversation flow model 1642 to query the user for restrictions on the transaction; in this case, the number of party members is the required limit for the conversation flow model 1642.

- Активные онтологии могут включать в себя и/или ссылаться на базы 1072 данных объектов предметной области. Например, Фиг.8 иллюстрирует базу данных объектов предметной области ресторанов 1652, ассоциированных с узлом 1610 ресторана в активной онтологии 1050. Активная онтология 1050 представляет общий концепт 1610 ресторана, который может быть использован посредством различных компонентов интеллектуального автоматизированного помощника 1002, и он конкретизируется посредством данных о конкретных ресторанах в базе 1652 данных ресторанов.- Active ontologies may include and/or refer to databases 1072 of domain object data. For example, FIG. 8 illustrates a database of restaurant domain objects 1652 associated with a restaurant node 1610 in an active ontology 1050. The active ontology 1050 represents a general concept 1610 of a restaurant that can be used by various components of an intelligent automated assistant 1002 and is instantiated by data. about specific restaurants in the database of 1652 restaurants.

- Активные онтологии могут включать в себя и/или ссылаться на словарные базы 1058 данных. Например, Фиг.8 иллюстрирует словарную базу 1662 данных кухонь, к примеру, итальянскую, французскую и т.п., и слов, ассоциированных с каждой кухней, к примеру, "французская", "континентальная", "провинциальная" и т.п. Активная онтология 1050 включает в себя узел 1610 ресторана, который связан с узлом 1615 предлагаемых кухонь, который ассоциирован с представлением кухонь в базе 1662 данных кухонь. Конкретная запись в базе 1662 данных для кухни, к примеру, "французская", тем самым связана через активную онтологию 1050 в качестве экземпляра концепта 1615 предлагаемых кухонь.- Active ontologies may include and/or refer to vocabulary databases 1058. For example, FIG. 8 illustrates a vocabulary database 1662 of cuisines, e.g., Italian, French, etc., and words associated with each cuisine, e.g., "French", "continental", "provincial", etc. . The active ontology 1050 includes a restaurant node 1610 that is associated with a cuisine offering node 1615 that is associated with a representation of cuisines in the cuisine database 1662 . A particular entry in the database 1662 for a kitchen, for example, "French", is thus linked through the active ontology 1050 as an instance of the suggested cuisines concept 1615.

- Активные онтологии могут включать в себя и/или ссылаться на любую базу данных, которая может преобразовываться в концепты или другие представления в онтологии 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 ontology 1050. Domain object databases 1072 and vocabulary databases 1058 are just two examples of how an active ontology 1050 can integrate databases with each other and with other components of the automated assistant 1002. Active ontologies allow an author, designer, or system developer to specify a non-trivial mapping between the representations in the database and the representations in the ontology 1050. For example, the database schema for the restaurant database 1652 may represent the restaurant as a table of strings and numbers, or as a projection from a larger organization database, or any other representation suitable for database 1652. In this exemplary active ontology 1050, the restaurant 1610 is a concept node with properties and relationships organized differently from database tables. In this example, ontology nodes 1050 are associated with database schema elements. Database and ontology integration 1050 provides a unified view for interpreting and influencing specific data records in databases in terms of large sets of models and data in active ontology 1050. For example, the word "French" could be an entry in database 1662 of cuisines. Since, in this example, the database 1662 is being integrated into the active ontology 1050, the same word "French" is also interpreted as a possible cuisine in a restaurant that is included in the organization of meals, and this cuisine serves as a constraint to be used when using restaurant reservation services, etc. Active ontologies can thus integrate databases into the modeling and execution environment in order to interact with other components of the automated assistant 1002.

[0115] Как описано выше, активная онтология 1050 дает возможность автору, проектировщику или разработчику системы интегрировать компоненты; таким образом, в примере по Фиг.8, элементы компонента, такие как ограничение в модели 1642 потока диалогов могут быть идентифицированы с помощью элементов других компонентов, таких как обязательный параметр службы 1672 резервирования ресторана.[0115] As described above, the active ontology 1050 allows an author, designer, or system developer to integrate components; thus, in the example of FIG. 8, component elements, such as the constraint in the conversation flow model 1642, can be identified by elements of other components, such as the required parameter of the restaurant reservation service 1672.

[0116] Активные онтологии 1050 могут быть осуществлены в качестве, например, конфигураций моделей, баз данных и компонентов, в которых взаимосвязи между моделями, базами данных и компонентами являются любым из следующего:[0116] Active ontologies 1050 may be implemented as, for example, configurations of models, databases, and components, in which the relationships between models, databases, and components are any of the following:

- отношение включения и/или импликация;- 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 automated assistant system 1002 is shown in which the components of domain models 1056, vocabulary 1058, language construct recognition modules 1060, short-term personal memory 1052, and long-term personal The storage device 1054 is organized within a common container associated with the active ontology 1050, and other components, such as the active input retrieval component 1094, the language interpreter 1070, and the dialog flow processor 1080, are associated with the active ontology 1050 via API relationships.

Компонент(ы) 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, assistant 1002 is able to resolve intent ambiguity early in the input processing phase. For example, in an embodiment in which input is provided via speech, a signal may be sent to a server 1340 where words are extracted and semantic interpretation is performed. The results of this semantic interpretation can then be used to drive active input retrieval, which can offer the user alternative word choices from which to choose based on their degree of semantic match as well as phonetic match.

[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 input extraction components 1094 according to one embodiment.

[0121] Процедура начинается на этапе 20. На этапе 21, помощник 1002 может предлагать интерфейсы на одном или более входных каналов. Например, пользовательский интерфейс может предлагать пользователю варианты говорить или печатать, или прикасаться на любой стадии разговорного взаимодействия. На этапе 22, пользователь выбирает входной канал посредством инициирования ввода в одной модальности, к примеру, нажатия кнопки, чтобы начинать запись речи или вызывать интерфейс для ввода с клавиатуры.[0121] The procedure begins at step 20. At step 21, assistant 1002 may propose interfaces on one or more input channels. For example, the user interface may offer the user options to speak or type or touch at any stage of the conversational interaction. At step 22, the user selects an input channel by initiating input in one modality, such as pressing a button, to start recording speech or invoke an interface for keyboard input.

[0122] По меньшей мере, в одном варианте осуществления, помощник 1002 предлагает рекомендации по умолчанию для выбранной модальности 23. Иными словами, он предлагает варианты 24, которые являются релевантными в текущем контексте, до выполнения пользователем какого-либо ввода в этой модальности. Например, в модальности ввода текста, помощник 1002 может предлагать список общих слов, которые должны начинать текстовые запросы или команды, такие как, например, одно или более из следующего (или комбинации вышеозначенного): императивные глаголы (например, найти, купить, зарезервировать, получить, позвонить, проверить, составить расписание и т.п.), существительные (например, рестораны, фильмы, мероприятия, организации и т.п.) или варианты в стиле пунктов меню с названиями предметных областей дискурса (например, погода, спортивные состязания, новости и т.п.)[0122] In at least one embodiment, assistant 1002 suggests default recommendations for the selected modality 23. In other words, it suggests options 24 that are relevant in the current context before the user makes any input in that modality. For example, in a text entry modality, assistant 1002 may suggest a list of common words that should start text queries or commands, such as, for example, one or more of the following (or a combination of the above): imperative verbs (e.g., find, buy, reserve, get, call, check, schedule, etc.), nouns (e.g. restaurants, movies, events, organizations, etc.) or menu item style variants with names of subject areas of discourse (e.g. weather, sports , news, etc.)

[0123] Если пользователь выбирает один из вариантов по умолчанию на этапе 25, и задано предпочтение для автозаполнения 30, процедура может сразу возвращаться. Это является аналогичным операции традиционного выбора пункта меню.[0123] If the user selects one of the default options at step 25, and a preference for autocomplete 30 is set, the procedure may immediately return. This is similar to the traditional menu item selection operation.

[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 step 28, the last input selected or entered is added to the cumulative input.

[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 steps 23 and 29) are one or more of various models and data sources that may be included in assistant 1002, which may include, but are not limited to, one or more of the following (or combinations of the foregoing):

- Словарь 1058. Например, могут быть рекомендованы слова или фразы, которые совпадают с текущим вводом. По меньшей мере, в одном варианте осуществления, словарь может быть ассоциирован с любым или одним или более узлов активных онтологий, моделей предметных областей, моделей задач, моделей диалогов и/или моделей служб.- Dictionary 1058. For example, words or phrases that match the current input may be recommended. In at least one embodiment, a dictionary may be associated with any or one or more nodes of active ontologies, domain models, task models, dialog models, and/or service models.

- Модели 1056 предметных областей, которые могут ограничивать вводы, которые могут конкретизировать или иным образом быть согласованными с моделью предметной области. Например, по меньшей мере, в одном варианте осуществления, модели 1056 предметных областей могут быть использованы для того, чтобы рекомендовать концепты, отношения, свойства и/или экземпляры, которые, как предполагается, согласованы с текущим вводом.- Domain models 1056, which may restrict inputs that may be instantiated or otherwise consistent with the domain model. For example, in at least one embodiment, the domain models 1056 can be used to recommend concepts, relationships, properties, and/or instances that are expected to match the current input.

- Модули 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 данных объектов предметной области, которые могут быть использованы для того, чтобы рекомендовать возможные объекты в предметной области, которые совпадают с вводом (например, названия организаций, названия фильмов, названия мероприятий и т.п.).- Domain object databases 1072 that can be used to recommend possible domain objects that match the input (eg, organization names, movie titles, event titles, etc.).

- Кратковременное запоминающее устройство 1052, которое может быть использовано для того, чтобы согласовывать любой предшествующий ввод или часть предшествующего ввода и/или любое другое свойство либо факт о предыстории взаимодействия с пользователем. Например, частичный ввод может сопоставляться с городами, которые пользователь встречает в сеансе, будь то гипотетически (например, упомянуты в запросах) и/или физически (например, как определено из датчиков местоположения).- Short-term memory 1052, which can be used to reconcile any previous input or part of the previous input and/or any other property or fact about the user interaction history. For example, partial input can be mapped to cities that the user encounters in the session, whether hypothetically (eg, mentioned in queries) and/or physically (eg, as determined from location sensors).

- По меньшей мере, в одном варианте осуществления, семантические перефразирования недавних вводов, запроса или результатов могут сопоставляться с текущим вводом. Например, если пользователь ранее выполнил запрос "живая музыка" и получил перечень концертов и затем напечатал "музыка" в среде активного извлечения ввода, рекомендации могут включать в себя "живая музыка" и/или "концерты".- 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 потока задач, которые могут быть использованы для того, чтобы рекомендовать вводы на основе следующих возможных этапов в потоке задач.- Task flow models 1086 that can be used to recommend inputs based on the next possible steps in the task flow.

- Модели 1087 потока диалогов, которые могут быть использованы для того, чтобы рекомендовать вводы на основе следующих возможных этапов в потоке диалогов.- Dialog flow models 1087 that can be used to recommend inputs based on the next possible steps in the dialog flow.

- Модели 1088 характеристик служб, которые могут быть использованы для того, чтобы рекомендовать возможные службы для использования по названию, категории, характеристике или любому другому свойству в модели. Например, пользователь может печатать часть названия предпочтительного обзорного web-узла, и помощник 1002 может рекомендовать команду заполнения для запроса этого обзорного web-узла на предмет обзора.- Service characteristic models 1088, which can be used to recommend possible services for use by name, category, characteristic, or any other property in the model. For example, the user may type part of the name of the preferred review web site, and the assistant 1002 may recommend a fill command to query that browse web site for a review.

[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 assistant 1002 uses conversation taps to request, as a prompt, information from user according to dialog models. Dialog models may represent a procedure for conducting a dialog, such as, for example, a sequence of steps required to retrieve information needed to execute a service.

[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 assistant 1002 embodiment and/or that may be served by one or more of the services offered by assistant 1002 embodiments. This is an advantage over passively waiting for input without restrictions from the user, as it allows the user to focus on inputs that may be useful, and/or it allows implementations of the assistant 1002 to apply their real-time interpretations of the input as the user enters it.

[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 more processors 63 and/or other combinations of hardware and/or hardware and software. .

[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 assistant 1002, the interface may offer the ability for the user to initiate input, such as by pressing a button to initiate a speech input system or clicking a text field to initiate a text input session.

- Пользовательский ввод обнаружен.- User input detected.

- Когда помощник 1002 явно запрашивает в виде подсказки у пользователя ввод, как тогда, когда он запрашивает ответ на вопрос или предлагает меню из следующих этапов, из которых можно выбирать.- When the helper 1002 explicitly prompts the user for input, such as when it asks for an answer to a question or offers a menu of next steps from which to choose.

- Когда помощник 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 helper 1002 embodiments, which may include, but is not limited to, one or more of the following (or combinations of the above):

- модели 1056 предметных областей;- models of 1056 subject areas;

- словарь 1058;- dictionary 1058;

- модули 1060 распознавания языковых конструкций;- modules 1060 recognition of language constructs;

- базы 1072 данных объектов предметной области;- database 1072 data objects of the subject area;

- кратковременное запоминающее устройство 1052;- short-term storage device 1052;

- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;

- модели 1086 потока задач;- task flow models 1086;

- модели 1087 потока диалогов;- Dialog flow models 1087;

- модели 1088 характеристик служб.- service characteristics models 1088.

[0135] Согласно различным вариантам осуществления, компонент 1094 активного извлечения ввода может применять процедуры активного извлечения, например, к одному или более из следующего (или к комбинациям вышеозначенного):[0135] According to various embodiments, active input extraction component 1094 may apply active extraction procedures to, for example, one or more of the following (or combinations of the above):

- печатаемый ввод;- 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. Assistant 1002 receives 111 partial text input, such as through an input device 1206. The partial text input may include, for example, the characters that have been typed up to that point in the text input field. At any time, the user may indicate that typing input is complete 112, such as by pressing the Enter key. If not completed, the recommendation generator generates 114 suggestions for recommendations 116. These recommendations may be syntactic, semantic, and/or other types of recommendations based on any of the information sources or constraints described herein. If a recommendation is selected 118, the input is converted 117 to include the selected recommendation.

[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 step 118 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.

[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, screen 1201 includes a high-level recommendation set 1202 shown when no input is provided in field 1203. This corresponds to step 23 without input in FIG. 10 applied to step 114 in FIG. 11 when no input.

[0144] На Фиг.13, экран 1301 иллюстрирует пример использования словаря, чтобы предлагать рекомендованные заполнения 1303 частичного пользовательского ввода 1305, выполненного в поле 1203 с использованием экранной клавиатуры 1304. Эти рекомендованные заполнения 1303 могут быть частью функции 1094 активного извлечения ввода. Пользователь выполняет частичный пользовательский ввод 1305, включающий в себя строку "связь". Компонент 1058 словаря предоставляет преобразование этой строки в три различных вида экземпляров, которые перечисляются как рекомендованные заполнения 1303: фраза "общественные и локальные мероприятия" является категорией предметной области мероприятий; "сводка коммерческой информации" является категорией предметной области поиска местных организаций, и "общественный клуб Jewish" является названием экземпляра местных организаций. Компонент 1058 словаря может предоставлять поиск данных и управление пространствами имен, такими как эти. Пользователь может прикасаться к кнопке 1306 Go, чтобы указывать, что он закончил ввод; это инструктирует помощнику 1002 продолжать с заполненной текстовой строкой в качестве единицы пользовательского ввода.[0144] In FIG. 13, screen 1301 illustrates an example of using a dictionary to suggest recommended paddings 1303 of partial user input 1305 made in field 1203 using on-screen keyboard 1304. These recommended paddings 1303 may be part of active input retrieval function 1094. The user performs partial user input 1305 including the string "link". Dictionary component 1058 provides a mapping of this string to three different kinds of instances, which are listed as recommended populations 1303: the phrase "public and local events" is the events subject area category; "Business summary" is a local organizations search subject area category, and "Jewish community club" is the name of an instance of local organizations. Dictionary component 1058 may provide data lookup and management of namespaces such as these. The user may touch the Go button 1306 to indicate that he has completed input; this instructs assistant 1002 to continue with the filled text string as the unit of user input.

[0145] На Фиг.14, экран 1401 иллюстрирует пример, в котором рекомендованные семантические заполнения 1303 для частичной строки "wh" 1305 включают в себя полные фразы с печатаемыми параметрами. Эти виды рекомендаций могут обеспечиваться посредством использования одной или более из различных моделей и источников ограничений по вводу, описанных в данном документе. Например, в одном варианте осуществления, показанном на Фиг.14, "что происходит в городе" является активным извлечением параметра положения для предметной области локальных мероприятий; "где находится название организации" является активным извлечением ограничения в виде названия организации для предметной области поиска местных организаций; "что демонстрируется в название места проведения мероприятий" является активным извлечением ограничения в виде названия места проведения мероприятий для предметной области локальных мероприятий; и "что идет в кинотеатре" является активным извлечением ограничения в виде названия кинотеатра для предметной области локальных мероприятий. Эти примеры иллюстрируют, что рекомендованные заполнения формируются посредством моделей, а не просто извлекаются из базы данных ранее введенных запросов.[0145] In FIG. 14, screen 1401 illustrates an example in which the recommended semantic completions 1303 for partial string "wh" 1305 include complete phrases with printable options. These kinds of recommendations may be provided through the use of one or more of the various input constraint models and sources described herein. For example, in one embodiment shown in FIG. 14, "what's going on in the city" is actively retrieving the location parameter for the local events domain; "where is the name of the organization" is the active extraction of the restriction in the form of the name of the organization for the subject area of the search for local organizations; "what is shown in the venue name" is the active extraction of the venue name constraint for the local events domain; and "what's on at the cinema" is the active retrieval of the cinema name constraint for the local events domain. These examples illustrate that the recommended populations are generated by models, and not simply retrieved from a database of previously entered queries.

[0146] На Фиг.15, экран 1501 иллюстрирует продолжение идентичного примера после того, как пользователь вводит дополнительный текст 1305 в поле 1203. Рекомендованные заполнения 1303 обновляются так, что они совпадают с дополнительным текстом 1305. В этом примере, использованы данные из базы 1072 данных объектов предметной области: места проведения мероприятий, название которых начинается с "f". Следует отметить, что это представляет собой значительно меньший и более семантически релевантный набор рекомендаций, чем все слова, которые начинаются с "f". С другой стороны, рекомендации формируются посредством применения модели, в этом случае модели предметной области, которая представляет локальные мероприятия как происходящие в местах проведения мероприятий, которые являются организациями с названиями. Рекомендации активно извлекают вводы, которые должны составлять потенциально значимые записи при использовании службы локальных мероприятий.[0146] In FIG. 15, screen 1501 illustrates the continuation of an identical example after the user enters additional text 1305 in field 1203. Recommended paddings 1303 are updated to match additional text 1305. In this example, data from base 1072 is used. data objects of the subject area: venues for events whose name begins with "f". It should be noted that this represents a much smaller and more semantically relevant set of recommendations than all words that begin with "f". On the other hand, recommendations are generated by applying a model, in this case a domain model, that represents local events as taking place in event venues, which are organizations with names. Recommendations actively retrieve inputs that should make up potentially meaningful records when using the Local Events service.

[0147] На Фиг.16, экран 1601 иллюстрирует продолжение идентичного примера после того, как пользователь выбрал одно из рекомендованных заполнений 1303. Активное извлечение продолжается посредством подсказки пользователю дополнительно указывать тип требуемой информации, здесь посредством представления определенного числа спецификаторов 1602, из которых пользователь может выбирать. В этом примере, эти спецификаторы формируются посредством моделей предметной области, потока задач и потока диалогов. Предметной областью являются локальные мероприятия, что включает в себя категории мероприятий, которые происходят в указанные даты в указанных местоположениях и имеют названия мероприятий и участников выступления. В этом варианте осуществления, тот факт, что эти пять вариантов предлагаются пользователю, формируется из модели потока диалогов, которая указывает, что пользователей следует запрашивать относительно ограничений, которые они еще не ввели, и из модели служб, которая указывает, что эти пять ограничений являются параметрами для служб предоставления перечня локальных мероприятий, доступных для помощника. Даже выбор предпочтительных фраз, которые следует использовать в качестве спецификаторов, к примеру, "по категориям" и "участвуют", формируется из словарных баз данных по предметной области.[0147] In FIG. 16, screen 1601 illustrates the continuation of an identical example after the user has selected one of the recommended paddings 1303. Active extraction continues by prompting the user to further indicate the type of information required, here by presenting a certain number of specifiers 1602, from which the user can to choose. In this example, these specifiers are generated by domain models, task flow, and conversation flow. The subject area is local events, which includes categories of events that take place on specified dates in specified locations and have the names of events and speakers. In this embodiment, the fact that these five options are offered to the user is generated from the dialog flow model, which indicates that users should be prompted for restrictions that they have not yet entered, and from the service model, which indicates that the five restrictions are options for services to provide a list of local events available to the assistant. Even the choice of preferred phrases to use as specifiers, such as "by category" and "participate", is generated from domain-specific vocabulary databases.

[0148] На Фиг.17, экран 1701 иллюстрирует продолжение идентичного примера после того, как пользователь выбрал один из спецификаторов 1602.[0148] In Fig. 17, screen 1701 illustrates the continuation of an identical example after the user has selected one of the qualifiers 1602.

[0149] На Фиг.18, экран 1801 иллюстрирует продолжение идентичного примера, в котором выбранный спецификатор 1602 добавлен в поле 1203, и представляются дополнительные спецификаторы 1602. Пользователь может выбирать один из спецификаторов 1602 и/или предоставлять дополнительный ввод текста через клавиатуру 1304.[0149] In Fig. 18, screen 1801 illustrates a continuation of an identical example, in which the selected specifier 1602 is added to field 1203 and additional specifiers 1602 are presented. The user can select one of the specifiers 1602 and/or provide additional text input through the keyboard 1304.

[0150] На Фиг.19, экран 1901 иллюстрирует продолжение идентичного примера, в котором выбранный спецификатор 1602 добавлен в поле 1203, и представляются еще дополнительные спецификаторы 1602. В этом примере, ранее введенные ограничения не извлекаются активно избыточно.[0150] In FIG. 19, screen 1901 illustrates a continuation of the identical example, in which the selected specifier 1602 is added to field 1203, and more additional specifiers 1602 are presented. In this example, previously entered constraints are not actively redundantly extracted.

[0151] На Фиг.20, экран 2001 иллюстрирует продолжение идентичного примера, в котором пользователь прикасается к кнопке 1306 Go. Ввод пользователя показывается в поле 2002, а сообщение показывается в поле 2003, предоставляя обратную связь пользователю в отношении запроса, выполняемого в ответ на ввод пользователя.[0151] In FIG. 20, screen 2001 illustrates a continuation of an identical example in which the user touches the Go button 1306. The user's input is shown in field 2002, and a message is shown in field 2003, providing feedback to the user regarding the query being executed in response to the user's input.

[0152] На Фиг.21, экран 2101 иллюстрирует продолжение идентичного примера, в котором результаты найдены. Сообщение показывается в поле 2102. Результаты 2103, включающие в себя элементы ввода, предоставляют возможность пользователю просматривать более подробную информацию, сохранять идентифицированное мероприятие, покупать билеты, добавлять заметки и т.п.[0152] In FIG. 21, screen 2101 illustrates a continuation of an identical example in which results are found. The message is displayed in field 2102. Results 2103, including input elements, allow the user to view more detailed information, save an identified event, purchase tickets, add notes, and the like.

[0153] На одном экране 2101 и другие отображаемые экраны могут прокручиваться, предоставляя возможность пользователю прокручивать вверх, чтобы видеть экран 2001 или другие ранее представленные экраны, и вносить изменения в запрос при необходимости.[0153] On the same screen 2101 and other displayed screens can be scrolled, allowing the user to scroll up to see the screen 2001 or other previously presented screens, and make changes to the request if necessary.

Активное извлечение речевого ввода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. Assistant 1002 receives 121 voice or speech input in the form of an audio signal. The speech-to-text service 122 or processor generates a set of text interpretations 124 from the audio signal. In one embodiment, the speech-to-text service 122 is implemented using, for example, a nuance recognition module available from Nuance Communications, Inc., Burlington, MA.

[0156] В одном варианте осуществления, помощник 1002 использует статистические языковые модели, чтобы формировать варианты 124 интерпретаций текста для речевого ввода 121.[0156] In one embodiment, assistant 1002 uses statistical language models to generate text interpretations 124 for speech input 121.

[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), models 1086 task flow (e.g., words and phrases associated with organizing an event), dialog flow models 1087 (e.g., words and phrases associated with restrictions that are needed in order to collect inputs for a restaurant reservation), a domain object database 1072 ( for example, restaurant names), vocabulary databases 1058 (for example, kitchen names), service models 1088 (for example, service provider names such as OpenTable), and/or any words, names, or phrases associated with any node of the active ontology 1050.

[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 automated assistant 1002. Any sources of restrictions on user input can be used. For example, in one embodiment, helper 1002 can rank the output of the speech-to-text interpreter according to how well the parsing of the interpretations in the syntactic and/or semantic sense, the domain model, the task flow model, and/or the dialog model, etc., is performed. p.: it evaluates how well the various combinations of words in the interpretations of the text 124 correspond to the concepts, relationships, objects, and properties of the active ontology 1050 and its associated models. For example, if the speech-to-text service 122 generates two interpretations of "Italian food for lunch" and "Italian shoes for lunch", semantic relevance ranking 126 may rank "Italian food for lunch" higher if it better matches active ontology nodes. 1050 helper 1002 (for example, the words "Italian", "food" and "lunch" match nodes in the ontology 1050, and they are all connected through relationships in the ontology 1050, while the word "shoes" does not match the ontology 1050 or matches the node , which is not part of the Dining Out Domain Network).

[0160] В различных вариантах осуществления, алгоритмы или процедуры, используемые посредством помощника 1002 для интерпретации вводов текста, включающие в себя любой вариант осуществления процедуры обработки естественного языка, показанной на Фиг.28, могут быть использованы для того, чтобы ранжировать и количественно оценивать варианты 124 интерпретаций текста, сформированные посредством службы 122 преобразования речи в текст.[0160] In various embodiments, the algorithms or procedures used by the helper 1002 for interpreting text inputs, including any embodiment of the natural language processing procedure shown in FIG. 28, may be used to rank and quantify the options. 124 text interpretations generated by the speech-to-text service 122.

[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 speech input 2620, actively presented GUI input 2640, and the like. In one embodiment, the user may select from interpretation options 134, such as by touch or by speaking. In the case of pronunciation, the possible interpretation of the new speech input is severely limited by the small set of choices 134 offered. phrase "Italian food" and not get confused with other global input interpretations.

[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. Assistant 1002 presents 141 a graphical user interface (GUI) on output device 1207, which may include, for example, links and buttons. The user interacts 142 with at least one GUI element. Data 144 is received and converted 146 to a universal format. The converted data is then returned.

[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, assistant 1002 may suggest a set of restrictions to guide the restaurant reservation service as touch areas on the screen, with each area representing a restriction name and/or value. For example, a screen might have dynamically generated GUI layout lines with areas for cuisine, location, and price range restrictions. If the active ontology models change, then the GUI screen should automatically change without reprogramming.

Активное извлечение ввода рекомендаций по диалогу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. Assistant 1002 recommends 151 possible answers 152. The user selects 154 recommended answers. The input received is converted 154 to a universal format. The converted data is then returned.

[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 dialog flow model 1087. For example, the dialog flow model 1087 may recommend that, after collecting constraints for one subject area (eg, dinner at a restaurant), helper 1002 recommend other related subject areas (eg, a nearby movie).

Активный мониторинг релевантных событий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 helper 1002. Once interpreted, such events may be processed in a manner similar to any other input.

[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, assistant 1002 may continue the conversation by presenting alternative flights, generating other recommendations, and the like. based on the detected event.

[0184] Такие события могут иметь любой тип. Например, помощник 1002 может обнаруживать то, что пользователь просто вернулся домой или отклонился (от указанного маршрута), или то, что курс акций достигает порогового значения, или то, что начинается телешоу, которое интересно пользователю, или то, что интересующий музыкант совершает турне в данном районе. В любом из этих случаев, помощник 1002 может продолжать диалог практически идентично тому, как если сам пользователь инициирует запрос. В одном варианте осуществления, события могут быть основаны даже на данных, предоставляемых из других устройств, например, чтобы сказать пользователю, когда коллега вернулся с обеда (устройство коллеги может передавать такое событие в устройство пользователя, и в этот момент времени помощник 1002, установленный в устройстве пользователя, реагирует соответствующим образом).[0184] Such events can be of any type. For example, assistant 1002 may detect that the user has simply returned home or deviated (from a specified route), or that a stock price is reaching a threshold, or that a TV show of interest to the user is starting, or that a musician of interest is on tour. in this area. In any of these cases, assistant 1002 may continue the conversation in much the same way as if the user himself initiates the request. In one embodiment, the events may even be based on data provided from other devices, for example, to tell the user when a colleague has returned from lunch (the colleague's device may transmit such an event to the user's device, at which point in time assistant 1002 set to user's device responds accordingly).

[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 assistant 1002 regarding a dinner appointment at a restaurant. The conversation can continue as if the user has just spoken or typed information regarding an upcoming dinner at a restaurant, such as "dinner for two in San Francisco".

[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 helper 1002 to be used at various stages of processing.

[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. Helper 1002 monitors for 161 such events. Detected events may be filtered and sorted 164 for semantic relevance using models, data, and information available from other components in the intelligent automated assistant 1002. For example, an event that reports a change in flight status may be given higher relevance if the records are of short duration or long-term memory to the user indicate that the user is on that flight and/or query assistant 1002 about it. This sorting and filtering can then only present the top events for review by the user, who can then select one or more of them and act on them.

[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, assistant 1002 may pre-suggest services associated with events that are recommended for the user's attention. For example, if the flight status alert indicates that the flight may be cancelled, assistant 1002 may recommend a task flow to the user to re-plan an itinerary or book a hotel.

Пример компонента(ов) извлечения ввода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 helper 1002?)

[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

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment При пустом поле и отсутствии диалогового контекста, печатание вопроса или пробела или отсутствие ввода в течение некоторого периода времени.|If the field is empty and there is no dialog context, typing a question or a space, or no input for a period of time.| - Найти рестораны, отели, фильмы
- Заказать столик, комнату, место, ...
- Заказать еду, цветы, ...
- Купить билет, книгу, 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
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.Black text is inserted into the input field. Italic text represents further guidance after the text is pasted.

Случай: Ввод первого словаCase: Entering the first word

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment При пустом диалоговом контексте, если пользователь печатает первую букву какой-либо команды, она рекомендуется. Например,
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
-
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.Black text is inserted into the input field. Italic text represents further guidance after the text is pasted.

Случай: Ввод ключевого словаCase: Entering a keyword

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment При пустом диалоговом контексте, если пользователь печатает первые две буквы какого-либо ключевого слова, оно рекомендуется, как и команда. Например,
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
-
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.Black text is inserted into the input field. Italic text represents further guidance after the text is pasted.

Случай: Подсказка для аргументовCase: Hint for Arguments

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment Пользователь ввел или выбрал "командный" глагол и больше ничего.
Например,
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
Не только предлагается класс выбора, но и выдается совет по вариантам ограничений. Следует отметить, что название места является просто строкой с подсказкой и не должно вставлять текст.Not only is a choice class offered, but advice is given on constraint options. It should be noted that the place name is just a hint string and should not insert text.

Случай: Рекомендация критериевCase: Recommendation criteria

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment Пользователь уже ввел достаточно для того, чтобы устанавливать задачу и предметную область, и теперь запрашивается в виде подсказки на предмет ограничений по порядку.
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
-
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.Black text is inserted into the input field. Italic text represents further guidance after the text is pasted.

Случай: Добавление критериевCase: Adding Criteria

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment Пользователь произнес "в" и теперь запрашивается в виде подсказки на предмет местоположений
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
Пока он не введет следующее слово, рекомендации являются строкой с подсказкой относительно того, что печатать. Места являются городами из персонального запоминающего устройства.Until he enters the next word, the suggestions are a hint string as to what to type. Places are cities from personal storage.
Пользователь произнес "около" и теперь запрашивается в виде подсказки на предмет местоположений
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
Места являются одним или более мест из персонального запоминающего устройства.The locations are one or more locations from a personal storage device.

Случай: Добавление местоположения или других ограниченийCase: Adding location or other restrictions

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment Find restaurants in Palo Alto_ | (Найти рестораны в Пало-Альто)Find restaurants in Palo Alto_ | (Find restaurants in Palo Alto) - предлагающие тип блюд или кухню
- с доступностью сегодня вечером, завтра, ...
- описанные как романтичные, с хорошим обслуживанием
- offering a type of food or cuisine
- with availability tonight, tomorrow, ...
- described as romantic, with good service
Строка с подсказкой для других ограниченийPrompt line for other restrictions
Find restaurants in Palo Alto with availability_ | (Найти рестораны в Пало-Альто с доступностью)Find restaurants in Palo Alto with availability_ | (Find restaurants in Palo Alto with availability) - сегодня вечером
- завтра
- в 19:00
- в 21:00
- в другое время или дату
- tonight
- tomorrow
- at 19:00
- at 21:00
- other time or date
19:00 и 21:00 - это наши рекомендации на основе текущего времени19:00 and 21:00 are our recommendations based on the current time

Случай: Начало с ограничения, неизвестной задачи или предметной областиCase: Starting with a constraint, unknown task or domain

Пользователь-
ский ввод
User-
input
Ответ системыSystem response КомментарийA comment
romantic_ | (романтичный)romantic_ | (romantic) - рестораны по местоположению, кухне, ...
- отели по местоположению, доступности, ...
- фильмы по местоположению, жанру, ...
-
- restaurants by location, cuisine, ...
- hotels by location, accessibility, ...
- movies by location, genre, ...
-
Значение ограничения из онтологии говорит Вам, какие классы выбора следует использовать.The constraint value from the ontology tells you which selection classes to use.
comedy_ | (комедия)comedy_ | (comedy) - фильмы по местоположению, жанру, ...
- мероприятия по местоположению, ...
- клубы по местоположению
- movies by location, genre, ...
- location activities,...
- clubs by location
"Комедия" является значением ограничения для жанра в фильмах, жанра в мероприятиях, а "комедийные клубы" являются категорией локального каталога организаций"Comedy" is a constraint value for genre in movies, genre in events, and "comedy clubs" is a category in the local business directory

Пример: Заполнение названия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

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment il forfor - Il Fornaio (ресторан)
- Ill Forgotten Gains (фильм)
- Il Fornaio (restaurant)
- Ill Forgotten Gains (film)
Может требовать поиска по названию объекта. Следует отметить многословное заполнение. Показ предметной области в качестве рекомендации.May require a search by object name. It should be noted verbose filling. Displaying the subject area as a recommendation.
tom cruise (том круз)tom cruise (tom cruise) - фильмы- movies Может требовать поиска по названию объекта.May require a search by object name. romantic (романтичный)romantic (romantic) - фильмы
- рестораны
- movies
- restaurants
Только на основе онтологииOntology based only

Случай: название с контекстомCase: title with context

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment Find restaurants il for (Найти рестораны il for)Find restaurants il for (Find restaurants il for) - Il Fornaio (ресторан)
-
- Il Fornaio (restaurant)
-
Может требовать поиска по названию объекта. Использует класс выбора и контекст местоположения из текущих и предыдущих запросов, чтобы ограничивать заполнение. Показ предметной области в качестве рекомендации.May require a search by object name. Uses the selection class and location context from current and previous requests to limit padding. Displaying the subject area as a recommendation.
tom cruise (том круз)tom cruise (tom cruise) - фильмы- movies Может требовать поиска по названию объекта.May require a search by object name. Find movies rom (Найти фильмы rom)Find movies rom (Find movies rom) - романтичные
- Римские каникулы (фильм)
- romantic
- Roman Holiday (film)
Только на основе онтологииOntology based only
g-rated (с рейтингом G)g-rated - фильмы- movies

Пример: Выбор значений из набора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

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment Restaurants serving (Рестораны, предлагающие)Restaurants serving (Restaurants offering) - гамбургеры
- мороженое
- хот-доги
- hamburgers
- ice cream
- hot dogs
Пользователь может напечатать что-либо еще и обязательно не должен выбирать из меню.The user can type anything else and does not necessarily need to select from a menu.
Restaurants serving h (Рестораны, предлагающие h)Restaurants serving h (Restaurants serving h) - гамбургеры
- хот-доги
- острый соус
- hamburgers
- hot dogs
- spicy sauce
Movies playing (Фильмы, идущие)Movies playing (Movies going) - сегодня
- сегодня вечером
- в пятницу вечером
- 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

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment ItalItal - итальянские рестораны (обычное заполнение)
- фильмы с итальянскими актерами в главной роли (недавний запрос)
- Italian restaurants (regular filling)
- films starring Italian actors (recent request)
Использование строкового совпадения, чтобы извлекать предыдущие запросы.Using a string match to retrieve previous requests.
Lunch (Обед)Lunch - закусочные, предлагающие обеды в marin (недавний запрос)
- купить книгу "Naked lunch"
- eateries offering dinners at marin (recent request)
- buy the book "Naked lunch"

Пример: Извлечение элементов персонального запоминающего устройстваExample: Retrieving Personal Storage Items

[0196] Помощник 1002 может запоминать определенные мероприятия и/или объекты в персональном запоминающем устройстве, ассоциированном с пользователем. Автозаполнение может быть выполнено на основе таких запомненных элементов. Примеры приведены ниже.[0196] Assistant 1002 may store certain events and/or objects in a personal storage device associated with the user. Autocomplete can be done based on such memorized items. Examples are shown below.

Случай: заполнение по мероприятиям и объектам в персональном запоминающем устройствеCase: filling by events and objects in a personal storage device

Пользовательский вводUser input Ответ системыSystem response КомментарийA comment MaryMary - обед с Mary в субботу (из My Events (Мои мероприятия))
- фильмы с названием "Something about Mary"
- Lunch with Mary on Saturday (from My Events)
- movies titled "Something about Mary"
Lunch (Обед)Lunch - обед с Mary в субботу (из My Events (Мои мероприятия))
- купить книгу "Naked lunch" (из My Todos (Мои занятия))
- Lunch with Mary on Saturday (from My Events)
- buy the book "Naked lunch" (from My Todos (My classes))
Hobhob - Ресторан Hobee в Пало-Альто (из My Restaurants (Мои рестораны))- Hobee Restaurant in Palo Alto (from My Restaurants)

Активное извлечение многомодального ввода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 automated assistant 1002, there may be support for one or more (or any combination) of type input, speech input, GUI input, dialog input, and/or event input.

[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, speech input 2620, GUI-based input 2640, input 2650 in the context of a dialog, and/or input 2660 resulting from event triggers. Any or all of these input sources are unified into a unified input format 2690 and returned. The unified input format 2690 allows the development and operation of other components of the intelligent automated assistant 1002 regardless of the specific input modality.

[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 domain models 1056 includes representations of concepts, objects, relationships, properties, and domain instances. For example, restaurant dining domain model 1622 may include a restaurant concept as an organization with a name and address and a phone number, a meal event concept with the number of party attendees, and a date and time associated with the restaurant.

[0203] По меньшей мере, в одном варианте осуществления, компонент(ы) 1056 моделей предметных областей помощника 1002 может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0203] In at least one embodiment, the domain model component(s) 1056 of the assistant 1002 may be configured to implement 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):

- Компонент(ы) 1056 модели предметной области может быть использован посредством автоматизированного помощника 1002 для нескольких процессов, включающих в себя: извлечение ввода 100, интерпретацию естественного языка 200, координацию для служб 400 и формирование вывода 600.- The domain model component(s) 1056 can be used by the automated assistant 1002 for several processes including: input retrieval 100, natural language interpretation 200, coordination for services 400, and output generation 600.

- Компонент(ы) 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 active input retrieval 100 and natural language processing 200.

- Компонент(ы) 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 orchestration 1082 services, for example, that a particular web service can provide reviews of restaurants.

- Компонент(ы) 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 more processors 63 and/or other combinations of hardware and/or hardware and software . For example, in at least some embodiments, various aspects, features, and/or functionality of domain model component(s) 1056 may be performed, implemented, and/or initiated by one or more of the following types of systems, components, systems, devices, procedures, processes, etc. (or combinations of the above):

- Компонент(ы) 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 active ontologies 1050 that combine models with model instantiations for servers and users.

[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 vocabulary 1058, language construct recognition modules 1060, dialog flow models 1087, task flow models 1086, service characteristics models 1088, a domain object data base 1072, and the like. For example, the organizations in the domain object databases 1072 that are classified as restaurants can be known through type identifiers that are supported in the restaurant dining domain model components.

Пример компонента(ов) моделей предметных областей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 screens 103A and 103B about a restaurant that combines data from several different data sources and services and which includes, for example: name, address, categories of organizations, telephone number, identifier for storing in a long-term personal storage device, identifier for sharing by e-mail, overviews from multiple sources, map coordinates, personal notes, and the like.

Компонент(ы) 1070 языкового интерпретатораComponent(s) 1070 language interpreter

[0209] По меньшей мере, в одном варианте осуществления, компонент(ы) 1070 языкового интерпретатора помощника 1002 может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0209] In at least one embodiment, the language interpreter component(s) 1070 of the assistant 1002 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):

• Анализ пользовательского ввода и идентификация набора результатов грамматического анализа.• 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 input format 2690 resulting from active input retrieval 1094 .

- Результаты грамматического анализа являются ассоциированиями данных в пользовательском вводе с концептами, взаимосвязями, свойствами, экземплярами и/или другими узлами и/или структурами данных в моделях, базах данных и/или других представлениях намерения и контекста пользователя. Ассоциирования результатов грамматического анализа могут быть сложными преобразованиями из наборов и последовательностей слов, сигналов и других элементов пользовательского ввода в один или более ассоциированных концептов, отношений, свойств, экземпляров, других узлов и/или структур данных, описанных в данном документе.- 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 element 212 of the natural language processing procedure described in connection with FIG.

• Анализ пользовательского ввода и идентификация набора результатов семантического анализа, которые являются результатами грамматического анализа, которые ассоциируют данные в пользовательском вводе со структурами, которые представляют концепты, взаимосвязи, свойства, объекты, величины, суждения и/или другие представления значения и намерения пользователя. В одном варианте осуществления, эти представления значения и намерения представляются посредством наборов и/или элементов, и/или экземпляров моделей или баз данных, и/или узлов в онтологиях, как описано в элементе 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 element 220 of the natural language processing procedure described in connection with FIG. 28.

• Разрешение неоднозначности между альтернативными результатами синтаксического или семантического анализа, как описано в элементе 230 процедуры обработки естественного языка, описанной в связи с Фиг.28.• Disambiguation between alternative results of syntactic or semantic analysis, as described in element 230 of the natural language processing procedure described in connection with FIG.

• Определение того, является или нет частично печатаемый ввод синтаксически и/или семантически значимым в процедуре автозаполнения, к примеру, в процедуре, описанной в связи с Фиг.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 paddings 114 in an autocomplete routine, such as the routine described in connection with FIG.

• Определение того, являются или нет интерпретации произносимого ввода синтаксически и/или семантически значимыми в процедуре речевого ввода, к примеру, в процедуре, описанной в связи с Фиг.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 more processors 63 and/or other combinations of hardware and/or hardware and software.

[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 active retrieval 100 modes.

[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;- dictionary 1058;

- базы 1072 данных объектов предметной области;- database 1072 data objects of the subject area;

- кратковременное запоминающее устройство 1052;- short-term storage device 1052;

- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;

- модели 1086 потока задач;- task flow models 1086;

- модели 1087 потока диалогов;- Dialog flow models 1087;

- модели 1088 характеристик служб.- service characteristics models 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 language input 2902 consisting of the phrase "who is playing filmore this weekend". This phrase is displayed to the user on the screen 2901. The language interpreter component(s) 1070 process the input 2902 component by component and generate the result of the grammatical analysis. The parsing result associates this input with a query to show local events that are scheduled for any of the upcoming weekends at any event location that has the same name as "filmore". Paraphrasing the results of the grammar analysis is shown as 2903 on screen 2901.

[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/phrase mapping 210 may use data from, for example, language construct recognition modules 1060, vocabulary database 1058, active ontology 1050, short-term personal storage 1052, and long-term personal storage 1054.

[0216] Компонент(ы) 1070 языкового интерпретатора формирует варианты 212 синтаксического анализа, которые включают в себя выбранный результат грамматического анализа, но также могут включать в себя другие результаты грамматического анализа. Например, другие результаты грамматического анализа могут включать в себя результаты, при которых "играет" ассоциировано с другими предметными областями, к примеру, играми, или с категорией мероприятия, такого как спортивные соревнования.[0216] The language interpreter component(s) 1070 generates parsers 212 that include the selected parse result, but may also include other parse results. For example, other grammatical analysis results may include results in which "plays" is associated with other subject areas, such as games, or with a category of event, such as a sporting event.

[0217] Кратко- и/или долговременное запоминающее устройство 1052, 1054 также может быть использовано посредством компонента(ов) 1070 языкового интерпретатора при формировании вариантов 212 синтаксического анализа. Таким образом, ввод, который предоставлен ранее в идентичном сеансе, и/или известная информация о пользователе могут быть использованы для того, чтобы повышать производительность, уменьшать неоднозначность и усиливать разговорный характер взаимодействия. Данные из активной онтологии 1050, моделей 1056 предметных областей и моделей 1086 потока задач также могут быть использованы для того, чтобы реализовывать основанное на обосновании рассуждение при определении допустимых вариантов 212 синтаксического анализа.[0217] Short-term and/or long-term storage 1052, 1054 can also be used by language interpreter component(s) 1070 in generating parsing options 212. Thus, input that is provided earlier in an identical session and/or known information about the user can be used to improve performance, reduce ambiguity, and enhance the conversational nature of the interaction. Data from the active ontology 1050, domain models 1056, and task flow models 1086 can also be used to implement reasoning based on justification in determining valid parsing options 212.

[0218] При семантическом согласовании 220, компонент(ы) 1070 языкового интерпретатора рассматривает комбинации возможных результатов грамматического анализа согласно тому, насколько хорошо они соответствуют семантическим моделям, к примеру, моделям предметных областей и базам данных. В этом случае, грамматический анализ включает в себя ассоциирования (1) "играет" (слово в пользовательском вводе) в качестве "локального мероприятия в месте проведения мероприятий" (часть модели 1056 предметной области, представленной посредством кластера узлов в активной онтологии 1050) и (2) "filmore" (другое слово во вводе) в качестве совпадения с названием объекта в базе 1072 данных объектов предметной области для мест проведения локальных мероприятий, которое представляется посредством элемента модели предметной области и узла активной онтологии (название места проведения мероприятий).[0218] In semantic negotiation 220, language interpreter component(s) 1070 consider combinations of possible grammatical results according to how well they match semantic models, such as domain models and databases. In this case, the parsing includes associating (1) "plays" (a word in user input) as "local event at the event site" (part of the domain model 1056 represented by the cluster of nodes in the active ontology 1050) and ( 2) "filmore" (another word in the input) as a match to the object name in the local event venue domain object database 1072, which is represented by the domain model element and the active ontology node (venue name).

[0219] Семантическое согласование 220 может использовать данные, например, из активной онтологии 1050, кратковременного персонального запоминающего устройства 1052 и долговременного персонального запоминающего устройства 1054. Например, семантическое согласование 220 может использовать данные из предыдущих ссылок на места проведения мероприятий или локальные мероприятия в диалоге (из кратковременного персонального запоминающего устройства 1052) или любимые места проведения мероприятий (из долговременного персонального запоминающего устройства 1054).[0219] Semantic negotiation 220 may use data from, for example, active ontology 1050, short-term personal storage 1052, and long-term personal storage 1054. For example, semantic negotiation 220 may use data from previous references to venues or local events in the dialog ( from short-term personal storage 1052) or favorite venues (from long-term personal storage 1054).

[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 disambiguation step 230, the language interpreter component(s) 1070 weights the justification-based intensity of the variants 222 of the semantic analysis results. In this example, the combination of parsing "plays" as "local event at the venue" and the match "filmore" as the name of the venue is a stronger match with the domain model than alternative combinations in which, for example, " plays" is associated with the sports domain model, but there is no association in the sports domain model for "filmore".

[0222] Разрешение неоднозначности 230 может использовать данные, например, из структуры активной онтологии 1050. По меньшей мере, в одном варианте осуществления, соединения между узлами в активной онтологии предоставляют основанную на обосновании поддержку для разрешения неоднозначности между вариантами 222 результатов семантического анализа. Например, в одном варианте осуществления, если три узла активной онтологии семантически совпадают и все соединяются в активной онтологии 1050, это указывает более высокую основанную на обосновании интенсивность семантического анализа, чем когда эти совпадающие узлы не соединены или соединены посредством более длинных путей соединений в активной онтологии 1050. Например, в одном варианте осуществления семантического согласования 220, для грамматического анализа, который совпадает как с "локальное мероприятие в месте проведения мероприятий", так и с "название места проведения мероприятий", предоставляется расширенная основанная на обосновании поддержка, поскольку комбинированные представления этих аспектов намерения пользователя соединяются посредством ссылок и/или отношений в активной онтологии 1050: в этом случае, узел локального мероприятия соединяется с узлом места проведения мероприятий, который соединяется с узлом названия места проведения мероприятий, который соединяется с названием объекта в базе данных названий мест проведения мероприятий.[0222] Disambiguation 230 may use data from, for example, the structure of the active ontology 1050. In at least one embodiment, connections between nodes in the active ontology provide justification-based support for disambiguating between variants 222 of semantic analysis results. For example, in one embodiment, if three active ontology nodes semantically match and all connect in the active ontology 1050, this indicates a higher justification-based intensity of semantic analysis than when these matching nodes are not connected or are connected via longer connection paths in the active ontology. 1050. For example, in one embodiment of semantic matching 220, for a grammatical parse that matches both " event location local " and "event location name ", enhanced justification-based support is provided because the combined representations of these aspects of the user's intent are connected via links and/or relationships in the active ontology 1050: in this case, the local event node is connected to the event venue node, which is connected to the venue name node, which is connected to n the name of the object in the database of event venue names.

[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 options 222 are directed arcs forming an inference lattice in which matching nodes represent justification for the nodes to which they are connected by directed arcs.

[0224] На этапе 232, компонент(ы) 1070 языкового интерпретатора сортирует и выбирает 232 главные варианты семантического анализа в качестве представления намерения 290 пользователя.[0224] At step 232, the language interpreter component(s) 1070 sorts and selects 232 major semantic parsers as representing the user's intent 290.

База(ы) 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 domain object database 1072 may be simultaneously implemented and/or initiated through the use of one or more processors 63 and/or other combinations of hardware and/or hardware and software. For example, in at least some embodiments, various aspects, features, and/or functionality of the domain object database 1072 may be performed, implemented, and/or initiated by database software and/or hardware residing on the client( ax) 1304 and/or on the server(s) 1340.

[0227] Одним примером базы 1072 данных объектов предметной области, который может быть использован в связи с настоящим изобретением согласно одному варианту осуществления, является база данных одной или более организаций, сохраняющая, например, их названия и местоположения. База данных может быть использована, например, для того, чтобы искать слова, содержащиеся во входном запросе, на предмет совпадающих организаций, и/или искать местоположение организации, название которой известно. Специалисты в данной области техники должны признавать, что множество других компоновок и реализаций являются возможными.[0227] One example of a domain object database 1072 that can be used in connection with the present invention according to one embodiment is a database of one or more organizations storing, for example, their names and locations. The database can be used, for example, to search the words contained in the input query for matching organizations and/or to look up the location of an organization whose name is known. Those skilled in the art will recognize that many other arrangements and implementations are possible.

Компонент(ы) 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 automated assistant 1002 for several processes including, for example: extracting input, interpreting natural language, and generating output.

[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 more processors 63 and/or other combinations of hardware and/or hardware and software. For example, in at least some embodiments, various aspects, features, and/or functionality of dictionary component(s) 1058 may be implemented as data structures that associate strings with names of concepts, relationships, properties, and instances. These data structures may be stored in storage, files, or databases. Access to dictionary component(s) 1058 may be through direct APIs, web APIs, and/or database query interfaces. The creation and maintenance of vocabulary component(s) 1058 can be done through direct file editing, database transactions, or domain model editing tools. Dictionary component(s) 1058 may be implemented as part of or in association with active ontologies 1050. Those skilled in the art should recognize that many other arrangements and implementations are possible.

[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 dictionary component instance 1058 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. In one embodiment, dictionary component 1058 may access data from external databases, such as a data store or dictionary.

Компонент(ы) 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 more processors 63 and/or other combinations of hardware and/or hardware and software . For example, in at least some embodiments, various aspects, features, and/or functionality of the component(s) 1060 of the language construct recognition module may be executed, implemented, and/or initiated by one or more files, databases, and/or programs, containing expressions in the language of matching with the construction. In at least one embodiment, the component(s) 1060 of the language construct recognition module are represented declaratively, and not as program code; this makes it possible to create and maintain them through editors and other tools other than programming tools. Examples of declarative representations may include, but are not limited to, one or more of the following (or combinations of the foregoing): regular expressions, construct matching rules, natural language grammars, finite automaton parsers, and/or other grammar parsing models.

[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 helper 1002 embodiments that may include, but are not limited to, one or more of the following (or combinations of the foregoing):

- модели 1056 предметных областей;- models of 1056 subject areas;

- словарь 1058;- dictionary 1058;

- базы 1072 данных объектов предметной области;- database 1072 data objects of the subject area;

- кратковременное запоминающее устройство 1052;- short-term storage device 1052;

- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;

- модели 1086 потока задач;- task flow models 1086;

- модели 1087 потока диалогов;- Dialog flow models 1087;

- модели 1088 характеристик служб.- service characteristics models 1088.

[0237] В одном варианте осуществления, доступ данных из других частей вариантов осуществления помощника 1002 может быть координирован посредством активных онтологий 1050.[0237] In one embodiment, data access from other parts of the helper 1002 embodiments can be coordinated through active ontologies 1050.

[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 language interpretation 200, the identification of the task the user requires and/or the problem the user requires to resolve. For example, the task might be to find a restaurant.

- Для данной проблемы или задачи, с учетом представления намерения 290 пользователя, идентификация параметров для задачи или проблемы. Например, пользователь может искать рекомендованный ресторан, который подает итальянскую еду около дома пользователя. Такие ограничения, как то, что ресторан должен быть рекомендованным, подача итальянской еды и около дома, являются параметрами для задачи нахождения ресторана.- For a given problem or task, given the representation of the user's intent 290, the identification of the parameters for the task or problem. For example, the user may search for a recommended restaurant that serves Italian food near the user's home. Restrictions such as that the restaurant must be recommended, serving Italian food, and being near the house are parameters for the restaurant finding problem.

- С учетом интерпретации задачи и текущего диалога с пользователем, к примеру, который может быть представлен в персональном кратковременном запоминающем устройстве 1052, выбор надлежащей модели потока диалогов и определение этапа в модели потока, соответствующего текущему состоянию.- Given the interpretation of the task and the current dialogue with the user, for example, which can be represented in the personal short-term memory 1052, the selection of the appropriate dialogue flow model and the definition of the step in the flow model corresponding to the current state.

[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 more processors 63 and/or other combinations of hardware and/or hardware and software. .

[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 потока задач;- task flow models 1086;

- модели 1056 предметных областей;- models of 1056 subject areas;

- модели 1087 потока диалогов.- Dialog flow models 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 screen 3001, the user requests a dinner reservation by providing voice input or text entry "Reserve me a table for dinner." The assistant 1002 generates a prompt line 3003 asking the user to provide the time and number of party attendees.

[0244] После того, как эти параметры предоставлены, показывается экран 3101. Помощник 1002 выводит диалоговое окно 3102, указывающее то, что результаты представляются и строку 3103 с подсказкой, запрашивающую пользователя щелкать время. Перечни 3104 также отображаются.[0244] After these parameters are provided, a screen 3101 is shown. The assistant 1002 displays a dialog box 3102 indicating that the results are being presented and a prompt line 3103 asking the user to click the time. Listings 3104 are also displayed.

[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 language interpreter component 1070 and determines that the appropriate response is to prompt the user for the information required to perform the next step in the task flow. In this case, the domain is restaurants, the task is to reserve, and the dialog step is to prompt the user for the information required in order to perform the next step in the task flow. This step of the dialog is illustrated by prompt line 3003 on screen 3001.

[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 intent 290 is received. As described in connection with FIG. 28, in one embodiment, the user intent representation 290 is a set of semantic analysis options. For the example shown in FIGS. 30 and 31, the domain is restaurants, the verb is "order" associated with a restaurant reservation, and the time parameter is the evening of the current day.

[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 subject matter models 1056, task flow models 1086, and/or dialog flow models 1087, or any combination of the above. In the current example, the task is identified as a reservation, which includes both finding a seat that is available for reservation and free, and making a transaction to reserve a table. The task parameters are a time constraint along with others that are inferred at block 312.

[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 subject matter models 1056, task flow models 1086, and/or dialog flow models 1087, or any combination of the above. In the example, it is determined that in this task flow, the next step is to extract the missing parameters for finding the availability of restaurants, resulting in prompt line 3003, illustrated in Fig. 30, requesting the number of party attendees and the time to reserve.

[0251] Как описано выше, Фиг.31 иллюстрирует экран 3101, который показывается как включающий в себя элемент 3102 диалога, который представляется после того, как пользователь отвечает на запрос относительно количества участников званого вечера и времени резервирования. В одном варианте осуществления, экран 3101 представляется как результат другой итерации через процедуру автоматизированного вызова и ответа, как описано в связи с Фиг.33, которая приводит к другому вызову процедуры диалогов и потоков, проиллюстрированной на Фиг.32. В этой конкретизации процедуры диалогов и потоков, после приема пользовательских предпочтений компонент(ы) 1080 процессора потока диалогов определяет другой этап потока задач на этапе 320: осуществить поиск доступности. Когда запрос 390 составляется, он включает в себя параметры задачи, достаточные для компонента 1080 процессора потока диалогов и компонента(ов) 1082 оркестровки служб, чтобы координироваться для службы заказов ресторана.[0251] As described above, FIG. 31 illustrates a screen 3101 that is shown as including a dialog element 3102 that is presented after the user responds to a query regarding the number of party attendees and the reservation time. In one embodiment, screen 3101 is presented as the result of another iteration through the automated call and response procedure as described in connection with FIG. 33, which results in another call to the dialogs and flows procedure illustrated in FIG. In this instantiation of the conversations and flows procedure, after receiving user preferences, the dialogue flow processor component(s) 1080 determines another stage of the task flow at block 320: search for availability. When request 390 is composed, it includes task parameters sufficient for the dialog flow processor component 1080 and service orchestration component(s) 1082 to be coordinated for a restaurant ordering service.

Компонент(ы) 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 automated assistant 1002. For example, the flow of dialogs for the generalized task of executing a transaction includes steps for obtaining the necessary data for the transaction and confirming the parameters of the transaction before it is committed.

Компонент(ы) 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 more processors 63 and/or other combinations of hardware and/or hardware and software . For example, in at least some embodiments, various aspects, features, and/or functionality of component(s) 1086 of task flow models may be implemented as programs, state machines, or other means of identifying the appropriate step in a flowchart.

[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;- dictionary 1058;

- базы 1072 данных объектов предметной области;- database 1072 data objects of the subject area;

- кратковременное запоминающее устройство 1052;- short-term storage device 1052;

- долговременное персональное запоминающее устройство 1054;- long-term personal storage device 1054;

- модели 1087 потока диалогов;- Dialog flow models 1087;

- модели 1088 характеристик служб.- service characteristics models 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 user 352. For example, the user may be interested in Asian food and may desire a place to eat near their office.

[0261] На этапе 353, помощник 1002 представляет элементы, которые удовлетворяют установленным критериям и ограничениям для пользователя, чтобы просматривать их. В этом примере, это может быть список ресторанов и их свойств, который может быть использован для того, чтобы выбирать из них.[0261] At step 353, assistant 1002 presents items that meet the established criteria and restrictions for the user to view them. In this example, this could be a list of restaurants and their properties, which could be used to select from.

[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 step 353.

[0263] Также ссылаясь теперь на Фиг.35, показан пример экрана 3501, включающего в себя список 3502 элементов, представленных посредством задачи 351 выбора с ограничениями согласно одному варианту осуществления.[0263] Also referring now to FIG. 35, an example of a screen 3501 is shown including a list 3502 of items presented by a constrained selection task 351 according to one embodiment.

[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 share 358. In various embodiments, further tasks 359 may involve interacting with web-based services and/or functionality local to the device (for example, setting up a calendar appointment, making a phone call, sending an email or text message, setting an alarm, etc.).

[0265] В примере по Фиг.35, пользователь может выбирать элемент в списке 3502, чтобы видеть дополнительные сведения и выполнять дополнительные действия. Также ссылаясь теперь на Фиг.36, показан пример экрана 3601 после того, как пользователь выбрал элемент из списка 3502. Дополнительная информация и варианты, соответствующие дальнейшим задачам 359 относительно выбранного пункта, отображаются.[0265] In the example of Fig.35, the user can select an item in the list 3502 to see additional information and perform additional actions. Also referring now to FIG. 36, an example screen 3601 is shown after the user has selected an item from the list 3502. Additional information and options corresponding to further tasks 359 regarding the selected item are displayed.

[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 service component 1084 .

[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, assistant 1002 has the ability to initiate and control any number of different functions available on the device. For example, if assistant 1002 is installed on a smartphone, personal digital device, tablet computer, or other device, assistant 1002 can perform functions such as: initiating applications, making calls, sending emails and/or text messages, adding calendar events, setting alarms, and etc. In one embodiment, such functions are activated using component(s) 1084 services.

- Предоставление служб, которые в данный момент не реализуются в пользовательском интерфейсе, но которые доступны через 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 helper 1002 as services component 1084, even if it does not have a direct web-based user interface or device.

[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 more processors 63 and/or other combinations of hardware and/or hardware and software. For example, in at least some embodiments, various aspects, features, and/or functionality of the services component 1084 may be performed, implemented, and/or initiated by one or more of the following types of systems, components, systems, devices, procedures, processes, etc. .P. (or combinations of the above):

- реализация API, представленного посредством службы, локально или удаленно либо в любой комбинации;- the implementation of the API exposed by the service, locally or remotely, or any combination;

- импликация базы данных в автоматизированном помощнике 1002 или службы работы с базами данных, доступной для помощника 1002.- implication of a database in the automated assistant 1002 or a database service available to the assistant 1002.

[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 automated assistant 1002 that assists with restaurant selection and catering events may include any or all of the following set of services that are available from third parties through networks:

- набор служб предоставления перечня ресторанов, которые перечисляют рестораны, совпадающие по названию, местоположению или другим ограничениям;- 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 automated assistant 1002 performs the service orchestration procedure.

[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 service orchestration component 1082 makes a determination as to which method is best suited for the request.

[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 characteristic models 1088 to represent characteristics and other properties of external services, and reason about those characteristics and properties when reaching the component attributes( s) 1082 service orchestrations. This provides advantages over manually programming a set of services, which may include, for example, one or more of the following (or combinations of the above):

- простота разработки;- 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 характеристик служб;- service characteristics models 1088;

- любая другая информация, доступная в активной онтологии 1050.- any other information available in the active ontology 1050.

[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 input 390.

[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 helper 1002 has the ability to perform the required task on its own. For example, in one embodiment, assistant 1002 may be able to answer the actual question without activating service delegation. Accordingly, if the request does not require services, then the autonomous flow step is executed at step 403 and its result 490 is returned. For example, if the task request is to request information about the automated assistant 1002 itself, then the dialog response may be processed without activating external services.

[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 block 404, the service orchestration component(s) 1082 may match task requirements with declarative descriptions of the characteristics and properties of services in service characteristics models 1088. At least one service provider that can support a particular operation provides declarative, qualitative metadata detailing, for example, one or more of the following (or a combination of the above):

- поля данных, которые возвращаются с результатами;- 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 services 1, 2, 3, and 4 may provide restaurants that are located near a particular location (parameter), services 2 and 3 may filter or rank restaurants by quality (another parameter), services 3, 4, and 5 can return reviews for restaurants (a data field is returned), service 6 can list the types of meals offered by restaurants (a data field is returned), and service 7 can check the availability of restaurants in specific time ranges (parameter). Services 8-99 offer characteristics that are not required for this particular subject area and task.

[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 step 404 is a dynamically generated list of services that should be called for this particular user and a request.

[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 helper 1002.

[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 request view 390 is provided, including, for example, task parameters and the like. For at least one service available from service characteristic models 1088, service activation procedure 450 performs transform 452, invoke 454, and output transform 456 steps.

[0295] На этапе 452 преобразования текущие параметры задачи из представления 390 запроса преобразуются в форму, которая может быть использована посредством, по меньшей мере, одной службы. Параметры для служб, которые могут быть предложены в качестве API или баз данных, могут отличаться от представления данных, используемого в запросах по задачам, а также, по меньшей мере, друг от друга. Соответственно, цель этапа 452 состоит в том, чтобы преобразовывать, по меньшей мере, один параметр задачи в один или более соответствующих форматов и значений, по меньшей мере, в одной вызываемой службе.[0295] At transform step 452, the current task parameters from the request view 390 are converted to a form that can be used by at least one service. The options for services that can be offered as APIs or databases can be different from the data representation used in task queries, and at least from each other. Accordingly, the goal of step 452 is to convert at least one task parameter to one or more appropriate formats and values in at least one called service.

[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. Service 1 may, may require postal codes, service 2 may require GPS coordinates, and service 3 may require actual postal addresses.

[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 step 456 of the output transformation, the data returned by the service is converted back into a unified representation 490 of the result. This step may include consideration of different formats, units, etc.

[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 step 414, the results are sorted and trimmed to return a list of results of the desired length.

[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 block 418, service orchestration component(s) 1082 determines whether an annotation is required or not. It may be required if, for example, the task may require a plan with map results, but the primary services do not return the geo-coordinates required for the transformation.

[0306] На этапе 422, снова обращаются к модели 1088 характеристик служб с тем, чтобы находить службы, которые могут возвращать требуемую дополнительную информацию. В одном варианте осуществления, процесс аннотирования определяет то, могут или нет дополнительные или лучшие данные быть аннотированы в объединенном результате. Он осуществляет это посредством делегирования в функцию управления политиками свойств (заданную для каждой предметной области), по меньшей мере, одного свойства, по меньшей мере, одного объединенного результата. Функция управления политиками свойств может использовать объединенное значение свойства и рейтинг качества свойств, рейтинги качества свойств одного или более других поставщиков служб, контекст предметной области и/или пользовательский профиль, чтобы определять то, могут или нет быть получены лучшие данные. Если определено, что один или более поставщиков служб могут аннотировать одно или более свойств для объединенного результата, активируется функция затрат, чтобы определять оптимальный набор поставщиков служб, который следует аннотировать.[0306] At block 422, the service characteristics model 1088 is again referred to in order to find services that can return the required additional information. In one embodiment, the annotation process determines whether or not additional or better data can be annotated in the combined result. It does this by delegating to the property policy management function (defined for each domain) at least one property of at least one combined result. The property policy management function may use the combined property value and property quality rating, property quality ratings of one or more other service providers, domain context, and/or user profile to determine whether or not better data can be obtained. If it is determined that one or more service providers can annotate one or more properties for a combined result, the cost function is invoked to determine the optimal set of service providers to annotate.

[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 results 424. Changes made to at least one combined result by at least one service provider , are tracked during this process, and the changes are then merged using a feature policy management function process identical to that used in step 412. Their results are merged 426 into an existing result set.

[0308] Результирующие данные сортируются 428 и унифицируются в универсальное представление 490.[0308] The resulting data is sorted 428 and unified into a universal representation 490.

[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 helper 1002.

[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 more processors 63 and/or other combinations of hardware and/or hardware and software. For example, in at least some embodiments, various aspects, features, and/or functionality of output processor component(s) 1090 may be performed, implemented, and/or initiated by one or more of the following types of systems, components, systems, devices, procedures , processes, etc. (or combinations of the above):

- программные модули в клиенте или сервере варианта осуществления интеллектуального автоматизированного помощника;- 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 steps 702 in the automated assistant 1002 and multi-phase output steps 704.

[0314] На этапе 710, получается произнесение речевого ввода, и компонент преобразования речи в текст (к примеру, компонент, описанный в связи с Фиг.22) интерпретирует речь, чтобы формировать набор вариантов 712 интерпретации речи. В одном варианте осуществления, компонент преобразования речи в текст реализуется с использованием, например, модуля распознавания нюансов, предлагаемого компанией Nuance Communications, Inc., Burlington, MA. Варианты 712 интерпретации речи могут быть показаны пользователю на 730, например, в перефразированной форме. Например, интерфейс может показывать альтернативы "Вы сказали?", перечисляющие несколько возможных альтернативных текстовых интерпретаций одного сэмпла звука речи.[0314] In step 710, the speech input is spoken, and a speech-to-text component (eg, the component described in connection with FIG. 22) interprets the speech to generate a set of speech interpretation options 712. In one embodiment, the speech-to-text component is implemented using, for example, a nuance recognition module available from Nuance Communications, Inc., Burlington, MA. The speech interpretation options 712 may be shown to the user at 730, for example, in paraphrased form. For example, the interface might show "Did you say?" alternatives, listing several possible alternative textual interpretations of a single speech sound sample.

[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 block 714, speech interpretation options 712 are sent to language interpreter 1070, which can generate user intent 716 representations for at least one speech interpretation option 712. At step 732, paraphrasing these representations, user intentions 716 are formed and presented to the user. (See related step 132 of procedure 120 in FIG. 22).

[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. Screen 4001 includes a reflection 4002 of the user's speech input generated by step 730. Screen 4001 further includes paraphrasing 4003 of the user's intent generated by step 734. In one embodiment, as illustrated in the example of FIG. 40, for keywords, such as "activities", special formatting/highlighting is used that can be used to make it easier to teach the user to interact with the intelligent automated assistant 1002. For example, by visually observing the formatting of the displayed text, the user can easily identify and interpret back that the intelligent the automated assistant recognizes keywords such as "events", "next wednesday", "San Francisco", etc.

[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-time execution progress 736 . For example, a list of restaurants could be returned, and then their reviews could be dynamically populated as results come in from the review services. Services may include web-based services and/or services that access information stored locally on the device and/or from any other source.

[0321] Универсальное представление ответа 722 формируется и форматируется 724 для надлежащей модальности вывода. После того, как конечное форматирование вывода завершается, другой вид перефразирования может предлагаться на этапе 738. На этой фазе весь набор результатов может анализироваться и сравниваться с начальным запросом. Затем может предлагаться сводка результатов или ответ на вопрос.[0321] A universal response representation 722 is generated and formatted 724 for the proper output modality. After the final output formatting is completed, another kind of rephrasing may be offered at block 738. At this phase, the entire result set may be parsed and compared with the initial query. A summary of the results or an answer to a question may then be offered.

[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. Screen 4101 illustrates paraphrase 4102 of text interpretation generated by step 732, real-time progress 4103 generated by step 736, and paraphrased summary 7104 generated by step 738. Detailed results 4105 are also included.

[0323] В одном варианте осуществления, помощник 1002 допускает формирование вывода в нескольких режимах. Ссылаясь теперь на Фиг.42, показана блок-схема последовательности операций способа, иллюстрирующая пример обработки многомодального вывода согласно одному варианту осуществления.[0323] In one embodiment, assistant 1002 is capable of generating output in multiple modes. Referring now to FIG. 42, a flowchart illustrating an example of multimodal output processing according to one embodiment is shown.

[0324] Способ начинается на этапе 600. Процессор 1090 вывода принимает универсальное представление ответа 490 и форматирует 612 ответ согласно устройству и модальности, которая является надлежащей и применимой. Этап 612 может включать в себя информацию из устройства и моделей 610 модальности и/или моделей 614 данных предметной области.[0324] The method begins at 600. The output processor 1090 receives the universal representation of the response 490 and formats 612 the response according to the device and modality that is appropriate and applicable. Block 612 may include information from device and modality models 610 and/or domain data models 614.

[0325] После того, как ответ 490 отформатирован 612, любое число различных механизмов вывода может быть использовано в любой комбинации. Примеры, проиллюстрированные на Фиг.42, включают в себя:[0325] Once the response 490 is formatted 612, any number of different output mechanisms can be used in any combination. The examples illustrated in Fig. 42 include:

- Формирование 620 вывода текстовых сообщений, который отправляется 630 в канал текстовых сообщений;- Formation 620 text message output, which is sent 630 to the text message channel;

- Формирование 622 вывода электронной почты, который отправляется 632 в качестве почтового сообщения;- Formation 622 e-mail output, which is sent 632 as a mail message;

- Формирование 624 GUI-вывода, который отправляется 634 в устройство или web-обозреватель для подготовки;- Formation 624 GUI output, which is sent 634 to the device or web browser for preparation;

- Формирование 626 речевого вывода, который отправляется 636 в модуль формирования речи.- Formation 626 speech output, which is sent 636 to the speech generation module.

[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 multi-phase output procedure 700 is adapted to the multi-modal output processing mode 600. For example, if the output modality is speech 626, the language used to paraphrase user input 730, text interpretations 732, task and domain interpretations 734, execution progress 736, and/or results summary 738 may be more or less verbose, or use sentences that are easier to detect in sound form than in written form. In one embodiment, the language is adapted in the steps of the polyphase output procedure 700; in other embodiments, the multi-phase inference procedure 700 produces an intermediate result that is further refined into a particular language by multi-modal inference processing 600 .

Компонент(ы) 1052 кратковременного персональногоComponent(s) 1052 short-term personal

запоминающего устройстваstorage device

[0328] По меньшей мере, в одном варианте осуществления, компонент 1052 кратковременного персонального запоминающего устройства может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):[0328] In at least one embodiment, short-term personal storage component 1052 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):

- Хранение предыстории недавнего диалога между вариантом осуществления помощника и пользователем, включающей в себя предысторию пользовательских вводов и их интерпретаций;- 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 more processors 63 and/or other combinations of hardware and/or hardware and software. security.

[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". Screen 4301 shows an initial response including local weather. When the user says "in New York", the assistant 1002 uses the short-term personal memory component(s) 1052 to access the conversational context and thereby determine that the current subject area is weather forecasts. This allows helper 1002 to interpret the new pronunciation "in New York" to mean "what's the weather forecast for New York this coming Tuesday?". Screen 4302 shows the correct response, including weather forecasts for 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 assistant 1002, such as the equivalent of bookmarks, favourites, selections, etc.;

- Постоянное сохранение сохраненных списков коммерческих организаций, включающих в себя рестораны, отели, магазины, театры и другие места проведения мероприятий. В одном варианте осуществления, компонент(ы) 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 more processors 63 and/or other combinations of hardware and/or hardware and software. security. For example, in at least some embodiments, various aspects, features, and/or functionality of the long-term personal storage component(s) 1054 may be performed, implemented, and/or initiated using one or more databases and/or files on ( or associated) clients 1304 and/or servers 1340 and/or resident in data storage devices.

[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 assistant 1002 embodiment. Any kind of interaction with the assistant can generate additions to the long-term personal storage, including browsing, searching, finding, shopping, scheduling, acquisition, reservation, data exchange with other people through the assistant.

- Долговременное персональное запоминающее устройство также может наполняться как следствие регистрации пользователей в учетной записи или службе, обеспечения помощнику 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 assistant 1002 services on a client device with access to other databases of personal information, such as calendars, lists classes, contact lists, etc.

[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 assistant 1002 embodiment. On screen 4401, 44A, the user has found a restaurant. The user touches Save to My Stuff (Save to My Stuff) 4402, which stores information about the restaurant in the component(s) 1054 long-term personal storage device.

[0339] Экран 4403 по Фиг.44B иллюстрирует пользовательский доступ к My Stuff (Мои материалы). В одном варианте осуществления, пользователь может выбирать из категорий, чтобы переходить к требуемому элементу.[0339] Screen 4403 of Fig. 44B illustrates user access to My Stuff (My Stuff). In one embodiment, the user may select from categories to navigate to the desired item.

[0340] Экран 4404 по Фиг.44C иллюстрирует категорию My Restaurant (Мои рестораны), включающую в себя элементы, ранее сохраненные в My Stuff (Мои материалы).[0340] The screen 4404 of Fig. 44C illustrates the category My Restaurant (My restaurants), which includes items previously saved in My Stuff (My materials).

Процедура автоматизированного вызова и ответа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 automated assistant 1002. It may be appreciated that the intelligent automated assistant 1002, as illustrated in FIG. the basis of an intelligent automated assistant that can be implemented. Other embodiments of systems based on an intelligent automated assistant (not shown) may include additional, smaller, and/or different components/features compared to those illustrated, for example, in the exemplary intelligent automated assistant 1002 shown in FIG.

[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 automated assistant 1002. At least one iteration of the automated call and answer procedure may serve as a fork in the conversation. The conversational interface is an interface in which the user and assistant 1002 communicate by alternately speaking phrases in a conversational manner.

- Процедура автоматизированного вызова и ответа по Фиг.33 может предоставлять исполнительный поток управления для интеллектуального автоматизированного помощника 1002. Иными словами, процедура управляет сбором ввода, обработкой ввода, формированием вывода и представлением вывода пользователю.- The automated call and response procedure of FIG. 33 may provide an execution flow of control for the intelligent automated assistant 1002. In other words, the procedure controls input collection, input processing, output generation, and output presentation to the user.

- Процедура автоматизированного вызова и ответа по Фиг.33 может координировать связь между компонентами интеллектуального автоматизированного помощника 1002. Иными словами, она может направлять то, где вывод одного компонента подается в другой, и где может происходить общий ввод из окружения и действие на окружение.- The automated call and response procedure of Fig. 33 can coordinate communication between the components of the intelligent automated assistant 1002. In other words, it can direct where the output of one component is fed to another, and where general input from the environment and action on the environment can occur.

[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 more processors 63 and/or other combinations of hardware and/or hardware and software. In at least one embodiment, one or more or selected portions of an automated call and response procedure may be implemented in one or more client(s) 1304, one or more server(s) 1340, and/or a combination of the above.

[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 automated assistant 1002, such as, for example, but not limited to, one or more of the following:

- запуск приложения для мобильных устройств, например, приложения для мобильных устройств, которое является реализацией варианта осуществления интеллектуального автоматизированного помощника 1002;- launching an application for mobile devices, for example, an application for mobile devices, which is an implementation of an embodiment of an intelligent automated assistant 1002;

- запуск компьютерного приложения, например, приложения, которое является реализацией варианта осуществления интеллектуального автоматизированного помощника 1002;- launching a computer application, for example, an application that is an implementation of an embodiment of an intelligent automated assistant 1002;

- нажатие специальной кнопки на мобильном устройстве, к примеру, "кнопки речевого ввода";- 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 automated assistant 1002;

- начало взаимодействия из существующего сеанса web-обозревателя для web-узла, реализующего интеллектуальный автоматизированный помощник 1002, при котором, например, запрашивается служба интеллектуального автоматизированного помощника 1002;- starting an interaction from an existing web browser session for a web site implementing the intelligent automated assistant 1002, in which, for example, the service of the intelligent automated assistant 1002 is requested;

- отправка почтового (e-mail) сообщения на сервер 1426 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;- sending a mail (e-mail) message to the modality server 1426, which mediates communication with an embodiment of the intelligent automated assistant 1002;

- отправка текстового сообщения на сервер 1426 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;- sending a text message to the server 1426 modality, which mediates communication with an embodiment of the intelligent automated assistant 1002;

- осуществление телефонного вызова с сервером 1434 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;- making a phone call with a modality server 1434 that mediates communication with an embodiment of the intelligent automated assistant 1002;

- отправка события, такого как оповещение или уведомление, в приложение, которое предоставляет вариант осуществления интеллектуального автоматизированного помощника 1002.- sending an event, such as an alert or notification, to an application that provides an embodiment of an intelligent automated assistant 1002.

• когда устройство, которое предоставляет интеллектуальный автоматизированный помощник 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 step 100, the user is prompted to enter a query. The client user interface offers several input modes, as described in connection with FIG. They may include, for example:

- интерфейс для печатаемого ввода, который может активировать процедуру активного извлечения печатаемого ввода, как проиллюстрировано на Фиг.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 assistant 1002, for example, using the techniques described in the dialog recommendation input active retrieval procedure described in connection with FIG.

[0354] Например, посредством одного из способов активного извлечения ввода на этапе 100, пользователь может сказать помощнику 1002: "Где я могу найти хорошую итальянскую еду в округе?" Например, пользователь, возможно, произносит это в компонент речевого ввода. Вариант осуществления компонента 1094 активного извлечения ввода вызывает службу преобразования речи в текст, запрашивает у пользователя подтверждение и затем представляет подтвержденный пользовательский ввод в качестве универсального аннотированного формата 2690 ввода.[0354] For example, through one of the active input retrieval methods at step 100, the user can tell helper 1002: "Where can I find good Italian food in the area?" For example, the user might say this into a speech input component. An embodiment of the active input extraction component 1094 invokes the speech-to-text service, prompts the user for confirmation, and then presents the confirmed user input as a generic annotated input format 2690.

[0355] Вариант осуществления компонента 1070 языкового интерпретатора затем вызывается на этапе 200, как описано в связи с Фиг.29. Компонент 1070 языкового интерпретатора грамматически анализирует текстовый ввод и формирует список возможных интерпретаций намерения 290 пользователя. В одном грамматическом анализе слово "итальянский" ассоциировано с ресторанами в итальянском стиле; "хороший" ассоциирован со свойством рекомендации ресторанов; и "в округе" ассоциирован с параметром положения, описывающим расстояние из показания глобального датчика (например, местоположение пользователя, предоставленное посредством GPS на мобильном устройстве).[0355] An embodiment of the language interpreter component 1070 is then invoked at step 200, as described in connection with FIG. The language interpreter component 1070 parses the text input grammatically and generates a list of possible interpretations of the user's intent 290. In one grammatical analysis, the word "Italian" is associated with Italian-style restaurants; "good" is associated with the restaurant recommendation feature; and "in the vicinity" is associated with a position parameter describing a distance from a global sensor reading (eg, the user's location provided via GPS on a mobile device).

[0356] На этапе 300, представление намерения 290 пользователя передается в процессор 1080 потока диалогов, который реализует вариант осуществления процедуры анализа диалогов и потоков, как описано в связи с Фиг.32. Процессор 1080 потока диалогов определяет то, какая интерпретация намерения является наиболее вероятной, преобразует эту интерпретацию в экземпляры моделей предметных областей и параметры модели задач и определяет следующий этап потока в потоке диалогов. В текущем примере, модель предметной области ресторанов конкретизируется с помощью задачи выбора с ограничениями, чтобы находить ресторан посредством ограничений (стиль кухни, уровень рекомендации и ограничения близости). Модель потока диалогов указывает, что следующий этап заключается в том, чтобы получать несколько примеров ресторанов, удовлетворяющих этим ограничениям, и представлять их пользователю.[0356] At 300, a representation of the user's intent 290 is passed to the conversation flow processor 1080, which implements an embodiment of the conversation and flow parsing procedure as described in connection with FIG. The conversation flow processor 1080 determines which interpretation of the intent is most likely, converts that interpretation into domain model instances and task model parameters, and determines the next flow step in the conversation flow. In the current example, the restaurant domain model is instantiated with a constrained selection problem to find a restaurant through constraints (cuisine style, recommendation level, and proximity constraints). The conversation flow model indicates that the next step is to get a few examples of restaurants that meet these constraints and present them to the user.

[0357] На этапе 400, вариант осуществления процедуры 400 оркестровки потоков и служб активируется через компонент 1082 оркестровки служб. Он активирует набор служб 1084 от имени запроса пользователя, чтобы находить ресторан. В одном варианте осуществления, эти службы 1084 вносят некоторые данные в общий результат. Их данные объединяются, и результирующий список ресторанов представляется в универсальной, независимой от службы форме.[0357] At 400, an embodiment of the flow and service orchestration procedure 400 is activated via the service orchestration component 1082. It activates service set 1084 on behalf of a user request to find a restaurant. In one embodiment, these services 1084 contribute some data to the overall result. Their data is combined and the resulting list of restaurants is presented in a generic, service-independent form.

[0358] На этапе 500, процессор 1092 вывода формирует сводку диалога результатов, к примеру: "Я нашел несколько рекомендованных итальянских ресторанов недалеко". Процессор 1092 вывода комбинирует эту сводку с данными результатов вывода и затем отправляет комбинацию в модуль, который форматирует вывод для конкретного мобильного устройства пользователя на этапе 600.[0358] At step 500, the output processor 1092 generates a summary of the results dialog, such as: "I found some recommended Italian restaurants nearby." The output processor 1092 combines this summary with the output result data and then sends the combination to a module that formats the output for the user's particular mobile device in step 600.

[0359] На этапе 700, этот конкретный для устройства выходной пакет отправляется в мобильное устройство, и клиентское программное обеспечение в устройстве подготавливает его на экране (или другом устройстве вывода) мобильного устройства.[0359] At step 700, this device-specific output packet is sent to the mobile device, and the client software in the device renders it on the screen (or other output device) of the mobile device.

[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 step 100. At step 200, the input is interpreted as Mexican-style restaurants and combined with another state (stored in short-term personal storage 1052) to maintain the same intent interpretation as last time, with one change in the restaurant style parameter. At block 300, this updated intent generates a request refinement, which is provided to the service orchestration component(s) 1082 at block 400.

[0362] На этапе 400 обновленный запрос координируется для нескольких служб 1084, приводя к новому набору ресторанов, который обобщается в диалоге на этапе 500, форматируется для устройства на 600 и отправляется по сети, чтобы показывать новую информацию на мобильном устройстве пользователя на этапе 700.[0362] At step 400, the updated request is coordinated across multiple services 1084, resulting in a new set of restaurants that is summarized in a dialog at step 500, formatted for the device at 600, and sent over the network to display the new information on the user's mobile device at step 700.

[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, assistant 1002 assists the user in exploring the choice space, extracting the user's constraints and preferences, presenting the choices, and recommending actions to take on those choices, such as reserve, purchase, remember, or share them. The task is completed when the user selects one or more items on which to perform an action.

[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 assistant 1002 of the present invention helps to simplify the task of constrained selection. In various embodiments, assistant 1002 uses database and search services, as well as other functionality, to reduce the effort on the part of the user to express what they are looking for, given what is available, and select a satisfactory solution.

[0372] В различных вариантах осуществления, помощник 1002 помогает упрощать выбор с ограничениями для людей любым из ряда различных способов.[0372] In various embodiments, assistant 1002 helps facilitate restricted selection for humans in any of a number of different ways.

[0373] Например, в одном варианте осуществления, помощник 1002 может операционализировать свойства в ограничения. Пользователь указывает то, что он хочет, с точки зрения свойств желаемого результата. Помощник 1002 операционализирует этот ввод в формальные ограничения. Например, вместо высказывания "найти один или более ресторанов менее чем в 2 милях от центра Пало-Альто, кухня которого включает в себя итальянскую еду", пользователь может просто сказать "итальянские рестораны в Пало-Альто". Помощник 1002 также может операционализировать качества, запрашиваемые пользователем, которые не являются параметрами для базы данных. Например, если пользователь запрашивает романтичные рестораны, система может операционализировать это в качестве текстового поиска или ограничения в виде совпадения тегов. Таким образом, помощник 1002 помогает преодолевать некоторые проблемы, которые пользователи в противном случае могут иметь в ходе выбора с ограничениями. Пользователю проще представлять себе и описывать удовлетворительное решение, чем описывать условия, которые должны отличать подходящие решения от неподходящих решений.[0373] For example, in one embodiment, assistant 1002 may operationalize properties into constraints. The user specifies what he wants in terms of properties of the desired result. Assistant 1002 operationalizes this input into formal constraints. For example, instead of saying "find one or more restaurants less than 2 miles from downtown Palo Alto that serve Italian food", the user could simply say "Italian restaurants in Palo Alto". Helper 1002 may also operationalize user-requested qualities that are not parameters to the database. For example, if a user requests romantic restaurants, the system can operationalize this as a text search or a tag match constraint. Thus, assistant 1002 helps to overcome some of the problems that users may otherwise have during restricted selection. It is easier for the user to imagine and describe a satisfactory solution than to describe the conditions that should distinguish suitable solutions from unsuitable solutions.

[0374] В одном варианте осуществления, помощник 1002 может предлагать полезные критерии выбора, и пользователь должен только сообщать, какие критерии являются важными в настоящее время. Например, помощник 1002 может запрашивать: "что из этого имеет значение: цена (дешевле лучше), местоположение (ближе лучше), рейтинг (с более высоким рейтингом лучше)?" Помощник 1002 также может рекомендовать критерии, которые могут требовать конкретных значений; например: "Вы можете сказать, какую кухню Вы предпочитаете или какое блюдо Вы предпочитаете".[0374] In one embodiment, assistant 1002 may suggest useful selection criteria, and the user need only report which criteria are currently important. For example, helper 1002 may ask: "Which of these matters: price (cheaper is better), location (closer is better), rating (higher rated is better)?" Helper 1002 may also recommend criteria that may require specific values; for example: "You can say which cuisine you prefer or which dish you prefer."

[0375] В одном варианте осуществления, помощник 1002 может помогать пользователю принимать решение между вариантами выбора, которые расходятся по ряду конкурирующих критериев (таких как цена, качество, доступность и удобство).[0375] In one embodiment, assistant 1002 can assist a user in deciding between choices that diverge on a number of competing criteria (such as price, quality, availability, and convenience).

[0376] Посредством предоставления таких указаний помощник 1002 может помогать пользователям при принятии многопараметрических решений любым из нескольких способов:[0376] By providing such guidance, assistant 1002 can assist users in making multivariable decisions in any of several ways:

- Один заключается в том, чтобы уменьшать размерность пространства, комбинируя необработанные данные, к примеру, рейтинги из нескольких источников в составной количественный показатель "рекомендации". Составной количественный показатель может принимать во внимание знания проблемной области об источниках данных (например, рейтинги 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). Helper 1002 can represent characteristic properties of the listed elements that help people choose a winner or that recommend a dimension along which to optimize.

Концептуальная модель данныхConceptual data model

[0377] В одном варианте осуществления, помощник 1002 предлагает помощь с задачей выбора с ограничениями посредством упрощения концептуальной модели данных. Концептуальная модель данных является абстракцией, представляемой пользователям в интерфейсе помощника 1002. Чтобы преодолевать психологические проблемы, описанные выше, в одном варианте осуществления помощник 1002 предоставляет модель, которая дает возможность пользователям описывать то, что они хотят, с точки зрения нескольких легко распознаваемых и запоминаемых свойств подходящих вариантов выбора, а не выражений ограничения. Таким образом, свойства могут быть простыми при составлении в запросах на естественном языке (например, прилагательные, модифицирующие маркеры ключевых слов) и могут распознаваться в строках с подсказкой ("Вы также можете предпочесть рекомендованные рестораны..."). В одном варианте осуществления, используется модель данных, которая дает возможность помощнику 1002 определять интересующую предметную область (например, рестораны в сравнении с отелями) и общий подход к указанию того, что может быть конкретизировано с помощью зависящих от предметной области свойств.[0377] In one embodiment, assistant 1002 offers assistance with a constrained selection task by simplifying the conceptual data model. The conceptual data model is an abstraction presented to users in the interface of helper 1002. To overcome the psychological problems described above, in one embodiment, helper 1002 provides a model that allows users to describe what they want in terms of a few easily recognizable and rememberable properties. appropriate choices, not constraint expressions. Thus, properties can be simple to compose in natural language queries (eg adjectives modifying keyword markers) and can be recognized in prompt strings ("You may also prefer recommended restaurants..."). In one embodiment, a data model is used that allows the helper 1002 to define the domain of interest (eg, restaurants versus hotels) and a general approach for specifying what can be specified with domain-specific properties.

[0378] В одном варианте осуществления, концептуальная модель данных, используемая посредством помощника 1002, включает в себя класс выбора. Это представление пространства сущностей, из которых можно выбирать. Например, в приложении "найти ресторан", класс выбора является классом ресторанов. Класс выбора может быть абстрактным и иметь подклассы, такие как "занятия в пункте назначения". В одном варианте осуществления, концептуальная модель данных допускает то, что в данной ситуации решения проблемы, пользователь заинтересован в выборе из одного класса выбора. Это допущение упрощает взаимодействие и также дает возможность помощнику 1002 объявлять свои границы компетентности ("Я знаю о ресторанах, отелях и фильмах" в противоположность "Я знаю о жизни в городе").[0378] In one embodiment, the conceptual data model used by helper 1002 includes a selection class. It is a representation of the space of entities from which to choose. For example, in a "find a restaurant" application, the selection class is a restaurant class. The choice class can be abstract and have subclasses such as "occupations at the destination". In one embodiment, the conceptual data model assumes that in a given problem solving situation, the user is interested in choosing from one choice class. This assumption simplifies the interaction and also allows helper 1002 to declare its boundaries of competence ("I know about restaurants, hotels and movies" as opposed to "I know about city life").

[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, assistant 1002 uses custom representations that handle a range of inputs and constraint values. For example, the distance may be "walking distance" and the time may be "tonight"; in one embodiment, assistant 1002 uses special processing to match such input with more accurate data.

[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, assistant 1002 performs constrained selection by considering as input an ordered list of criteria with implicit or explicit constraints on at least one and generating a set of feature element options. Computationally, the selection problem can be characterized as a nested search: first, identifying the selection class, then identifying the important selection criteria, then specifying constraints (boundaries of feasible decisions), and performing searches in instances in order of best approximation to find acceptable elements.

[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 abstract model 4500 for a constrained selection task as a nested search is shown. In the example, helper 1002 identifies 4505 a select call for all types of local searches 4501. The identified class is a restaurant. In the set of all restaurants 4502, assistant 1002 selects 4506 criteria. In the example, the criterion is identified as a distance. In the set of restaurants in PA 4503, helper 1002 specifies 4507 search restrictions. In the example, the identified constraint is "Italian cuisine". In the set of Italian restaurants in PA 4504, assistant 4508 selects items to present to the user.

[0391] В одном варианте осуществления, такой вложенный поиск - это то, что помощник 1002 выполняет, когда он имеет релевантные входные данные, а не поток для извлечения данных и представления результатов. В одном варианте осуществления, такой поток управления управляется через диалог между помощником 1002 и пользователем, который работает посредством других процедур, таких как модели потока диалогов и задач. Выбор с ограничениями предлагает инфраструктуру для компоновки моделей потока диалогов и задач на этом уровне абстракции (т.е. подходящую для задач выбора с ограничениями независимо от предметной области).[0391] In one embodiment, such a nested lookup is what helper 1002 performs when it has relevant input, rather than a thread for extracting data and presenting results. In one embodiment, such control flow is controlled through a dialog between the assistant 1002 and the user, which operates through other procedures such as dialog and task flow models. Constrained Choice offers a framework for laying out dialog and task flow models at this level of abstraction (i.e., suitable for constrained choice problems regardless of the domain).

[0392] Ссылаясь теперь на Фиг.46, показан пример диалога 4600, чтобы помогать направлять пользователя через процесс поиска, так что релевантные входные данные могут быть получены.[0392] Referring now to FIG. 46, an example dialog 4600 is shown to help guide the user through the search process so that relevant input can be obtained.

[0393] В примерном диалоге 4600, первый этап состоит в указании пользователем того, что он ищет, т.е. класса выбора. Например, пользователь может осуществлять это посредством высказывания "ужин в Пало-Альто". Это дает возможность помощнику 1002 логически выводить 4601 задачу и предметную область.[0393] In the exemplary dialog 4600, the first step is for the user to indicate what they are looking for, i. choice class. For example, the user may do this by saying "dinner in Palo Alto". This enables the assistant 1002 to infer 4601 the task and subject area.

[0394] После того, как помощник 1002 понял привязку задачи и предметной области (класс выбора=рестораны), следующий этап заключается в том, чтобы понимать, какие критерии выбора являются важными для этого пользователя, например, посредством запрашивания 4603 критериев и/или ограничений. В вышеприведенном примере, "в Пало-Альто" указывает интересующее местоположение. В контексте ресторанов система может интерпретировать местоположение в качестве ограничения близости (технически, ограничения на критерий близости). Помощник 1002 поясняет, что необходимо, принимает ввод. Если существует достаточно информации, чтобы ограничивать набор вариантов выбора до обоснованного размера, то помощник 1002 перефразирует ввод и представляет 4605 один или более ресторанов, которые удовлетворяют ограничению близости, отсортированных в некотором полезном порядке. Пользователь затем может выбирать 4607 из этого списка или уточнять 4606 критерии и ограничения. Помощник 1002 рассуждает насчет уже указанных ограничений и использует зависящие от предметной области знания для того, чтобы рекомендовать другие критерии, которые могут помогать, также с запросом ограничений на эти критерии. Например, помощник 1002 может рассуждать, что при рекомендации ресторанов на расстоянии, которое можно пройти пешком от отеля, полезными критериями для запроса должны быть доступность столика и кухня.[0394] Once the assistant 1002 has understood the task and domain association (selection class=restaurants), the next step is to understand which selection criteria are important to that user, for example, by querying 4603 criteria and/or constraints . In the example above, "in Palo Alto" indicates the location of interest. In the context of restaurants, the system may interpret location as a proximity constraint (technically, proximity criteria constraints). Assistant 1002 explains what is needed, accepts input. If enough information exists to limit the set of choices to a reasonable size, then helper 1002 paraphrases the input and presents 4605 one or more restaurants that satisfy the proximity constraint, sorted in some useful order. The user can then select 4607 from this list or refine 4606 the criteria and constraints. Helper 1002 reasons about the constraints already indicated and uses domain-specific knowledge to recommend other criteria that may help, also requesting constraints on those criteria. For example, assistant 1002 may reason that when recommending restaurants within walking distance of a hotel, table availability and cuisine should be useful criteria for the query.

[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 further tasks 4602 are provided by helper 1002. Thus, helper 1002 can offer services that indicate a choice while providing some other value. Examples 4608 are ordering a restaurant, setting a calendar reminder, and/or sharing a selection with others by sending an invitation. For example, a restaurant order unambiguously indicates that it is selected; other options might be to put the restaurant on your calendar or send it in an invitation with directions to friends.

[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, assistant 1002 operates in an adaptive manner with an intermittent initiative, allowing the user to navigate to the inner loop, for example, by specifying a task, domain, criteria, and constraints one or more at a time in the input.

[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 step 4717, assistant 1002 determines whether or not the user provides additional input. If so, assistant 1002 returns to block 4702. Otherwise, the method ends 4799.

[0399] Если на этапе 4703 задача известна, помощник 1002 определяет 4704 то, является или нет задачей выбор с ограничениями. Если нет, помощник 1002 переходит 4706 к указанному потоку задач.[0399] If at step 4703 the task is known, assistant 1002 determines 4704 whether or not the restricted selection is a task. If not, assistant 1002 proceeds 4706 to the specified task thread.

[0400] Если на этапе 4704 задачей является выбор с ограничениями, помощник 1002 определяет 4707, может или нет класс выбора быть определен. Если нет, помощник 1002 предлагает 4708 выбор известных классов выбора и возвращается к этапу 4717.[0400] If at block 4704 the task is restricted selection, assistant 1002 determines 4707 whether or not a selection class can be determined. If not, helper 1002 proposes 4708 a selection of known selection classes and returns to block 4717.

[0401] Если на этапе 4707 класс выбора может быть определен, помощник 1002 определяет 4709, могут или нет быть определены все обязательные ограничения. Если нет, помощник 1002 запрашивает в виде подсказки 4710 запрошенную информацию и возвращается к этапу 4717.[0401] If at step 4707 the selection class can be determined, assistant 1002 determines 4709 whether or not all mandatory constraints can be determined. If not, assistant 1002 prompts 4710 for the requested information and returns to block 4717.

[0402] Если на этапе 4709 все требуемые константы могут быть определены, помощник 1002 определяет 4711, могут или нет быть найдены какие-либо элементы результатов, с учетом ограничений. Если нет элементов, которые удовлетворяют ограничениям, помощник 1002 предлагает 4712 способы ослаблять ограничения. Например, помощник 1002 может ослаблять ограничения от наименьшего до наибольшего приоритета с использованием алгоритма фильтрации/сортировки. В одном варианте осуществления, если существуют элементы, которые удовлетворяют некоторым ограничениям, то помощник 1002 может перефразировать ситуацию (вывод, например: "Я не могу найти рекомендованные греческие рестораны, которые осуществляют доставку по воскресеньям в Сан-Карлосе. Тем не менее, я нашел 3 греческих ресторана и 7 рекомендованных ресторанов в Сан-Карлосе".). В одном варианте осуществления, если нет элементов, которые совпадают с любыми ограничениями, то помощник 1002 может перефразировать эту ситуацию и запрашивать в виде подсказки различные ограничения (вывод, например: "Извините, я не могу найти рестораны в Anytown, Техас. Вы можете выбрать другое местоположение".). Помощник 1002 возвращается к этапу 4717.[0402] If at step 4709 all required constants can be determined, helper 1002 determines 4711 whether or not any elements of the results can be found, subject to constraints. If there are no elements that satisfy the constraints, helper 1002 suggests 4712 ways to relax the constraints. For example, helper 1002 can relax the lowest to highest priority constraints using a filter/sort algorithm. In one embodiment, if there are items that satisfy some constraints, then helper 1002 can rephrase the situation (output, for example: "I can't find any recommended Greek restaurants that deliver on Sundays in San Carlos. However, I found 3 Greek restaurants and 7 recommended restaurants in San Carlos".). In one embodiment, if there are no items that match any of the restrictions, then helper 1002 can rephrase the situation and prompt for various restrictions (output such as "Sorry, I can't find restaurants in Anytown, Texas. You can choose other location".). Assistant 1002 returns to block 4717.

[0403] Если на этапе 4711 элементы результата могут быть найдены, помощник 1002 предлагает 4713 список элементов. В одном варианте осуществления, помощник 1002 перефразирует текущие заданные критерии и ограничения (вывод, например, "Вот несколько рекомендованных итальянских ресторанов в Сан-Хосе". (рекомендовано=да, кухня=итальянская, близость=<в Сан-Хосе>)). В одном варианте осуществления, помощник 1002 представляет отсортированный, разбитый на страницы список элементов, которые удовлетворяют известным ограничениям. Если элемент показывает только некоторые ограничения, такое условие может быть показано как часть отображения элементов. В одном варианте осуществления, помощник 1002 предлагает пользователю способы выбирать элемент, например, посредством инициирования другой задачи для этого элемента, такой как заказ, напоминание, составление расписания или совместное использование. В одном варианте осуществления, для любого данного элемента, помощник 1002 представляет признаки элементов, которые являются характерными для выборки экземпляров класса выбора. В одном варианте осуществления, помощник 1002 показывает то, как элемент удовлетворяет ограничению; например, рейтинг Zagat в 5 удовлетворяет ограничению "рекомендовано=да", а "на расстоянии в 1 милю" удовлетворяет ограничению "на расстоянии, которое можно пройти пешком от адреса". В одном варианте осуществления, помощник 1002 дает возможность пользователю выполнять детализацию для получения дополнительных подробностей для элемента, что приводит к отображению большего числа признаков элементов.[0403] If at step 4711 the elements of the result can be found, the helper 1002 offers 4713 a list of elements. In one embodiment, assistant 1002 rephrases the currently defined criteria and constraints (output, for example, "Here are some recommended Italian restaurants in San Jose." (recommended=yes, cuisine=Italian, proximity=<in San Jose>)). In one embodiment, helper 1002 presents a sorted, paginated list of items that satisfy known constraints. If an element only shows some restrictions, such a condition may be shown as part of the element display. In one embodiment, assistant 1002 prompts the user for ways to select an item, such as by initiating another task for that item, such as ordering, reminding, scheduling, or sharing. In one embodiment, for any given element, helper 1002 presents element features that are specific to a selection of instances of the selection class. In one embodiment, helper 1002 shows how the element satisfies the constraint; for example, a Zagat rating of 5 satisfies the "recommended=yes" constraint, while "1 mile away" satisfies the "walking distance from the address" constraint. In one embodiment, the assistant 1002 allows the user to drill down for more details on an element, resulting in more element features being displayed.

[0404] Помощник 1002 определяет 4714, выбирает или нет пользователь элемент. Если пользователь выбирает элемент, задача выполнена. Любая дальнейшая задача выполняется 4715, если имеется, и способ завершается 4799.[0404] Helper 1002 determines 4714 whether or not the user selects an item. If the user selects an item, the task is complete. Any further task is performed 4715, if any, and the method ends 4799.

[0405] Если на этапе 4714 пользователь не выбирает элемент, помощник 1002 предлагает 4716 пользователю способы выбирать другие критерии и ограничения и возвращается к этапу 4717. Например, с учетом текущих заданных критериев и ограничений, помощник 1002 может предлагать критерии, которые с наибольшей вероятностью должны ограничивать набор вариантов выбора до требуемого размера. Если пользователь выбирает значение ограничения, то значение ограничения добавляется к ранее определенным ограничениям, когда этапы 4703-4713 повторяются.[0405] If at step 4714 the user does not select an item, assistant 1002 suggests 4716 to the user ways to select other criteria and constraints and returns to step 4717. For example, given the currently specified criteria and constraints, assistant 1002 may suggest criteria that are most likely to limit the set of choices to the required size. If the user selects a constraint value, then the constraint value is added to the previously determined constraints when steps 4703-4713 are repeated.

[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 helper 1002 to sort by that criterion. This information may be taken into account when steps 4703-4713 are repeated.

[0407] В одном варианте осуществления, помощник 1002 дает возможность пользователю повышать значимость критерия, который уже указан, так что он должен иметь более высокий порядок приоритета. Например, если пользователь запрашивает быстрые, дешевые, наиболее рекомендуемые рестораны в пределах одного квартала от своего местоположения, помощник 1002 может запрашивать, чтобы пользователь выбрал то, какой из этих критериев является более важным. Эта информация может быть принята во внимание, когда этапы 4703-4713 повторяются.[0407] In one embodiment, helper 1002 allows the user to boost a criterion that is already specified so that it should have a higher order of precedence. For example, if the user is requesting the fastest, cheapest, most recommended restaurants within one block of their location, assistant 1002 may prompt the user to select which of these criteria is more important. This information may be taken into account when steps 4703-4713 are repeated.

[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, assistant 1002 checks periodically or continuously for such input and, in response, jumps back to block 4703 to process it.

[0409] В одном варианте осуществления, при выводе элемента или списка элементов, помощник 1002 указывает в представлении элементов признаки, которые использованы для того, чтобы выбирать и упорядочивать их. Например, если пользователь запрашивает близлежащие итальянские рестораны, такие признаки элементов для расстояния и кухни могут быть показаны в представлении элемента. Это может включать в себя выделение совпадений, а также перечень критериев выбора, которые вовлечены в представление элемента.[0409] In one embodiment, when displaying an element or a list of elements, helper 1002 indicates in the element view the features that are used to select and order them. For example, if the user queries for nearby Italian restaurants, such item attributes for distance and cuisine can be shown in the item view. This may include hit highlighting as well as a list of selection criteria that are involved in the element representation.

Примерные предметные областиSample subject areas

[0410] Таблица 1 предоставляет пример предметных областей выбора с ограничениями, которые могут обрабатываться посредством помощника 1002 согласно различным вариантам осуществления.[0410] Table 1 provides an example of restricted selection subject areas that can be handled by helper 1002 according to various embodiments.

Таблица 1Table 1 ВыборChoice На основе этих критериевBased on these criteria МестоположениеLocation ЦенаPrice ДоступностьAvailability ТипType of ДвойственностьDuality НазваниеName УслугиServices Специальный поискSpecial Search Общий поискGeneral search РесторанаRestaurant БлизостьProximity Доступность по ценеAffordability Свободные столикиFree tables кухняkitchen рейтинг по путеводителю, обзоруrating by guide, review Название ресторанаRestaurant name доставкаdelivery позиции менюmenu items Ключевые словаKeywords отеляhotel БлизостьProximity Диапазон ценPrice range Доступные комнатыAvailable rooms мотель, отель, B&B, ...motel, hotel, B&B, ... рейтинг по путеводителю, обзоруrating by guide, review Название отеляThe name of the hotel комфортабельностьcomfort Ключевые словаKeywords фильмаmovie Близость кинотеатраThe proximity of the cinema Расписание сеансовSession Schedule жанрgenre рейтинг по обзоруreview rating Название фильмаMovie title актеры и т.д.actors, etc. местной организацииlocal organization БлизостьProximity Категория организацииOrganization category рейтинг по обзоруreview rating Название организацииName of the organization Ключевые словаKeywords Локального мероприятияLocal event Близость места проведения мероприятийProximity to event venue по датеby date Название мероприятияevent title Ключевые словаKeywords концертconcert Близость места проведения мероприятийProximity to event venue по расписанию турнеaccording to tour schedule стиль музыкиmusic style Название группыGroup name Участники группыMembers of the group Ключевые словаKeywords CD, книги, DVD для покупкиCD, books, DVD for purchase диапазон ценprice range онлайн, в магазине и т.д.online, in store, etc. Загрузка, физическийLoading, physical ПопулярностьPopularity Название альбома или песниAlbum or song title Исполнитель, название и т.д.Artist, title, etc. Ключевые словаKeywords

Фильтрация и сортировка результатов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, helper 1002 recognizes multiple instances of numeric restrictions, such as these, and converts them to character-limited thresholds (e.g., "restaurants in Palo Alto are open now"->"here are 2 restaurants in Palo -Alto, which are open until late").

- Местоположение и время обрабатывается специальным образом. Ограничение на близость может быть интересующим местоположением, указываемым с некоторой степенью детализации, которое определяет совпадение. Если пользователь указывает город, то совпадение на уровне города является надлежащим; почтовый индекс может обеспечивать радиус. Помощник 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. Assistant 1002 can also understand locations that are "near" other locations of interest, also based on special processing. Time is relevant as a constraint value of criteria that are thresholded based on a service call, such as table availability or flights within a given time range.

[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 helper 1002 with super-reliability despite partially stated limitations and incomplete data. In one embodiment, helper 1002 uses these technologies to generate a custom list of items in best fit order, i. according to relevance.

[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. Assistant 1002 may operate based on any number of criteria. In addition, the criteria can be modified over time without violating existing behaviors.

[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 assistant 1002 and the data used to make the selection. In one embodiment, assistant 1002 uses a data model that reduces complexity for the user by collapsing one or more kinds of data used to distinguish between elements into a simple selection criteria model. Internally, this data can take several forms. Instances of a choice class can have internal properties and attributes (for example, a restaurant kitchen), can be compared along dimensions (for example, distance from some location), and can be discovered by some query (for example, whether they match or not with a text construct or are available or not at the moment). They may also be calculated from other data that is not presented to the user as selection criteria (for example, weighted combinations of ratings from multiple sources). This data is relevant as "one or more" to the task, but the differences between these three kinds of data are not relevant to the user. Because the user is thinking in terms of features of the desired selection, rather than properties and dimensions, assistant 1002 operationalizes these various criteria into feature features. Helper 1002 provides a user-friendly domain data model and transforms it into data found in web services.

[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 helper 1002 and mapped to different vocabularies used by different services. This ontology may be hierarchical and have leaf nodes pointing to specific values from at least one service. For example, one service might have the cuisine meaning "Chinese", another "Sichuan", and a third "Asian". The ontology used by helper 1002 should result in references to "Chinese food" or "Szechuan food" semantically matching one or more of these nodes, with confidence levels reflecting the degree of match.

[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, assistant 1002 uses a deep structural representation of locations and times that can be converted to various surface data values.

[0431] В одном варианте осуществления, помощник 1002 использует специальный вид преобразования для открытых спецификаторов (например, романтичный, тихий), которые могут преобразовываться в совпадения при полнотекстовом поиске, теги или другие открыто текстурированные признаки. Название ограничения выбора в этом случае должно быть чем-то вроде "описывается как".[0431] In one embodiment, helper 1002 uses a special kind of transformation for open specifiers (eg, romantic, silent) that can be converted to full-text search matches, tags, or other openly textured features. The name of the selection constraint in this case should be something like "described as".

[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, helper 1002 is able to interpret the criterion as an ordering by possible elements. There are several technical issues that need to be addressed with such a conversion. For example:

- Упорядочения по предпочтению могут конфликтовать. Упорядочение, предоставленное посредством одного ограничения, может быть несогласованным или даже обратно коррелированным с упорядочением, предоставленным посредством другого. Например, цена и качество имеют тенденцию быть противоположными. В одном варианте осуществления, помощник 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, assistant 1002 interprets the constraints selected by the user in a weighted or otherwise combined ordering that reflects the user's desires but is true of the data. For example, a user might query "highly rated cheap French fast food restaurants within walking distance". Many locations may not have such a restaurant at all. However, in one embodiment, helper 1002 may show a list of items that seeks to optimize for at least one constraint and explain why at least one item is listed. For example, one element could be "highly rated French cuisine" and another "cheap fast food restaurant within walking distance".

- Данные могут быть использованы или в качестве жестких или мягких ограничений. Например, диапазон цен ресторана может быть важным для его выбора, но может быть затруднительным указывать пороговое значение для верхней цены. Даже такие на вид жесткие ограничения, как кухня, на практике могут быть мягкими ограничениями вследствие частичного совпадения. Поскольку в одном варианте осуществления помощник 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, helper 1002 uses a data modeling strategy that seeks to flatten one or more criteria into symbolic values (eg, "cheap" or "near"), these constraints can be translated into a function that correctly interprets the criteria and order without being strict. with respect to meeting specific thresholds. For symbolic criteria with clear objective truth values, helper 1002 may assign higher weights to the objective criteria than to other criteria and make it clear in the explanation that it knows that some elements do not strictly match the requested criteria.

- Элементы могут совпадать с некоторыми, но не с одним или более ограничений, и могут быть показаны элементы "с наилучшим приближением".- Items may match some but not one or more of the constraints, and "best fit" items may be shown.

- В общем, помощник 1002 определяет то, какие признаки элементов являются характерными для предметной области и какие могут служить в качестве критериев выбора и, по меньшей мере, для одного критерия, возможных значений ограничений. Эта информация может предоставляться, например, через рабочие данные и API-вызовы.In general, assistant 1002 determines which element features are domain specific and which can serve as selection criteria and, for at least one criterion, possible constraint values. This information may be provided, for example, through work data and API calls.

Текст перефразирований и строк с подсказкойText of paraphrases and prompt lines

[0433] Как описано выше, в одном варианте осуществления помощник 1002 предоставляет обратную связь, чтобы показывать то, что он понимает намерение пользователя и работает в направлении цели пользователя, посредством формирования перефразирований его текущего понимания. В модели разговорных диалогов настоящего изобретения перефразирование - это то, что помощник 1002 выводит после ввода пользователя в качестве предисловия (например, перефразирование 4003 на Фиг.40) или сводки результатов, которые следует учитывать (например, список 3502 на Фиг.35). Строка с подсказкой является рекомендацией пользователю о том, что он еще может сделать, чтобы уточнить своей запрос или изучить пространство выбора вдоль некоторых размерностей.[0433] As described above, in one embodiment, assistant 1002 provides feedback to indicate that it understands the user's intent and is working towards the user's goal by generating rephrases of their current understanding. In the conversational dialog model of the present invention, a paraphrase is what assistant 1002 outputs after user input as a preface (eg, paraphrase 4003 in FIG. 40) or a summary of results to consider (eg, list 3502 in FIG. 35). The hint line is a suggestion to the user about what else they can do to refine their query or explore the selection space along some dimensions.

[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 understanding 1002 assistant;

- направить пользователя, чтобы вводить текст, который требуется для предполагаемой задачи;- 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 helper 1002 assumptions (eg, explain query results without sufficient or excessive restrictions).

[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, assistant 1002 responds to user input relatively quickly with paraphrasing. The paraphrase is then updated after the results are known. For example, the initial response might be "Looking for Indonesian restaurants near Menlo Park ...". After the results are in, helper 1002 should update the text to read "Sorry, I can't find Indonesian restaurants near Menlo Park . You can try other cuisines or locations ." It should be noted that certain elements are highlighted (indicated here by underlining), indicating that these elements represent restrictions that may be relaxed or changed.

[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 automated assistant 1002 by indicating to the user which words are most important and more likely to be recognized by the assistant 1002. The user may then be more likely to use such words in the future.

[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 domain model 1056, and the results of providing services. The domain model 1056 contains classes and features, including metadata, that are used to determine how to generate text. Examples of such metadata for generating paraphrases include:

- 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, assistant 1002 has the ability to handle mismatched input. To handle such input, domain model 1056 may provide nodes of type GuessedQualifier for each selection class and rules that match otherwise mismatched words if they are in the correct grammatical context. In other words, GuessedQualifiers are parsed as distinct nodes that match when there are words that are not found in the ontology, but that are in the correct context to indicate that they are likely to be select class specifiers. The difference between GuessedQualifiers and SearchQualifiers is that the latter are mapped to a dictionary in the ontology. This difference makes it possible to paraphrase that helper 1002 has uniquely identified an intent in SearchQualifiers and may be less robust when reflecting GuessedQualifiers.

[0442] В одном варианте осуществления, помощник 1002 выполняет следующие этапы при формировании текста перефразирования:[0442] In one embodiment, assistant 1002 performs the following steps when generating paraphrase text:

1. Если задача является неизвестной, пояснение того, что помощник 1002 может сделать, и запрос в виде подсказки для дополнительного ввода.1. If the task is unknown, an explanation of what helper 1002 can do and a prompt for additional input.

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 assistant 1002 knows and a prompt query for the selection class.

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, assistant 1002 may compose a paraphrase, such as:

рекомендованные романтичные итальянские рестораны около Менло-Парк со свободными столиками на двоих , которые предлагают оссобуко и описываются как " тихие "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.

Таблица 2table 2 Перефразирования в ответ на первый вводParaphrasing in response to the first input ВводInput Начальное перефразированиеInitial paraphrase tie housetie house Извините, я не понимаю "tie house". Я знаю о ресторанах, отелях и других местных организациях, рейсах, погоде и покупке вещей онлайн. Что Вы ищете и где?Sorry, I don't understand "tie house". I know about restaurants, hotels and other local organizations, flights, weather and buying things online. What are you looking for and where? Пало-АльтоPalo Alto Я могу помочь Вам найти рестораны, организации, мероприятия и занятия в Пало-Альто. Что вы ищете?I can help you find restaurants, organizations, events and activities in Palo Alto. What are you looking for? едаfood Ищите место, чтобы поесть? Где? (примеры)Looking for a place to eat? Where? (examples) итальянская едаItalian food Я могу рассказать Вам об итальянских ресторанах в Вашем районе. Где Вы хотите поесть?I can tell you about Italian restaurants in your area. Where do you want to eat? бурритоburrito Я могу помочь Вам найти места, которые предлагают буррито в Вашем районе. Где Вы хотите поесть?I can help you find places that offer burritos in your area. Where do you want to eat? лучшая мексиканская едаbest mexican food Я могу помочь Вам найти хорошие мексиканские рестораны в Вашем районе. Где Вы?I can help you find good Mexican restaurants in your area. Where are you? рестораны Пало-АльтоPalo Alto Restaurants Поиск ресторанов около Пало-Альто.Search for restaurants near Palo Alto. итальянская Пало-АльтоItalian Palo Alto Поиск итальянских ресторанов около Пало-Альто.Search for Italian restaurants near Palo Alto. тайская еда в Менло-ПаркеThai food in Menlo Park Поиск тайских ресторанов около Менло-ПаркаSearch for Thai restaurants near Menlo Park индонезийская еда в Менло-Паркеindonesian food in menlo park Поиск индонезийских ресторанов около Менло-ПаркаSearch for Indonesian restaurants near Menlo Park лучшая мексиканская еда в Пало-Альтоbest mexican food in palo alto Поиск рекомендованных мексиканских ресторанов около Пало-Альто.Search for recommended Mexican restaurants near Palo Alto. кафе быстрого питания Менло-Паркfast food cafe menlo park Поиск ресторанов быстрого питания около Менло-ПаркаSearch for fast food restaurants near Menlo Park здоровая еда в Менло-Паркеhealthy food in menlo park Поиск мест около Менло-Парка, которые предлагают здоровую еду.Search for places near Menlo Park that offer healthy food. дешевый бар в Менло-Паркеcheap bar in menlo park Поиск дешевых баров около Менло-Парка.Search for cheap bars near Menlo Park. бильярдная в Менло-Паркеbilliard room in Menlo Park Поиск бильярдных около Менло-Парка.Search for billiard rooms near Menlo Park. кальянная в Менло-Паркеhookah in Menlo Park Поиск мест около Менло-Парка, описанных как "кальянная".Search for places near Menlo Park described as "hookah". острая еда в sfspicy food in sf Поиск мест около Менло-Парка, которые предлагают острую еду.Search for places near Menlo Park that offer spicy food. гамбургеры в Менло-Паркеburgers in menlo park Поиск мест около Менло-Парка, которые предлагают гамбургеры.Search for places near Menlo Park that offer burgers. заведение, где танцуют танец живота, в sfa place where they dance belly dance in sf Поиск мест около Сан-Франциско, описанных как "с танцем живота".Search for places near San Francisco described as "belly dancing". заведение, где танцуют танец живота, в Менло-Паркеa belly dancer in Menlo Park Поиск мест около Менло-Парка, описанных как "с танцем живота".Search for places near Menlo Park described as "belly dancing". недорогая закусочная в sfcheap eatery in sf Поиск закусочных около Сан-Франциско, описанных как "недорогие".Search for eateries near San Francisco that are described as "inexpensive". tie house Менло-Паркtie house menlo park Поиск мест около Менло-Парка, описанных как "tie house".Search for places near Menlo Park described as "tie house". thai house Пало-Альтоthai house palo alto Поиск Thai House в Пало-АльтоFinding a Thai House in Palo Alto il fornaio Менло-Паркil fornaio menlo park Поиск II Fornaio в Пало-АльтоSearch II Fornaio in Palo Alto il fornao в Менло-Паркеil fornao in Menlo Park Поиск мест около Пало-Альто, описанных как "il fornao".Search for places near Palo Alto described as "il fornao". cliff house в Менло-Паркеcliff house in menlo park Поиск Cliff House в Пало-АльтоFinding the Cliff House in Palo Alto романтичный ресторан в Пало-Альтоromantic restaurant in Palo Alto Поиск романтичных ресторанов в Пало-АльтоFinding Romantic Restaurants in Palo Alto романтичный ресторан в Пало-Альтоromantic restaurant in Palo Alto Поиск романтичных ресторанов в Пало-АльтоFinding Romantic Restaurants in Palo Alto тихий романтичный ресторан в Пало-Альтоquiet romantic restaurant in Palo Alto Поиск романтичных ресторанов в Пало-Альто, описанных как "тихие"Search for romantic restaurants in Palo Alto described as "quiet" тихий романтичный ресторан в Пало-Альтоquiet romantic restaurant in Palo Alto Поиск романтичных ресторанов в Пало-Альто, описанных как "тихие"Search for romantic restaurants in Palo Alto described as "quiet" ужасно модный ресторан в Пало-Альтоterribly trendy restaurant in Palo Alto Поиск ресторанов в Пало-Альто, описанных как "ужасно модные"Search for restaurants in Palo Alto described as "terribly trendy" ужасно модный ресторан в Пало-Альтоterribly trendy restaurant in Palo Alto Поиск ресторанов в Пало-Альто, описанных как "ужасно модные"Search for restaurants in Palo Alto described as "terribly trendy" столик на двоих сегодня вечером в Пало-Альтоtable for two tonight in Palo Alto Проверка доступности на сегодня вечером в ресторанах около Пало-Альто.Check availability for tonight at restaurants near Palo Alto. столик на двоих итальянская еда сегодня вечером в Пало-Альтоtable for two italian food tonight in palo alto Проверка доступности на сегодня вечером в итальянских ресторанах около Пало-Альто.Checking availability for tonight at Italian restaurants near Palo Alto. il fornaio Пало-Альто 18:00 на двоихil fornaio Palo Alto 18:00 for two Проверка доступности для столиков сегодня вечером в Il Fornaio в Пало-Альто.Checking availability for tables tonight at Il Fornaio in Palo Alto. столик на двоих в thai house в PAtable for two in thai house in PA Проверка доступности для столиков сегодня вечером в Thai House в Пало-Альто.Checking availability for tables tonight at Thai House in Palo Alto. доставка пиццы в Менло-Паркеpizza delivery in menlo park мне нужен самый лучший тихий романтичный итальянский ресторан для оссобуко в или около Менло-Паркаi need the best quiet romantic italian restaurant for ossobuco in or near menlo park Хорошо, поиск рекомендованных романтичных итальянских ресторанов около Менло-Парка, которые предлагают оссобуко и описываются как "тихие".Okay, search for recommended romantic Italian restaurants near Menlo Park that offer ossobuco and are described as "quiet". Заказать мне столик на двоих в лучшем тихом романтичном итальянском ресторане для оссобуко в или около Менло-ПаркаBook me a table for two at the best quiet romantic Italian restaurant for ossobuco in or near Menlo Park Хорошо, поиск рекомендованных романтичных итальянских ресторанов около Менло-Парка со свободными столиками на двоих, которые предлагают оссобуко и описываются как "тихие".Okay, search for recommended romantic Italian restaurants near Menlo Park with free tables for two that offer ossobuco and are described as "quiet".

Уточнение запроса о местах, чтобы поесть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.

Таблица 3Table 3 Перефразирования в ответ на уточненияParaphrasing in response to clarifications УточненияClarifications Менло-Парк (было неизвестно)Menlo Park (was unknown) Спасибо, теперь поиск ресторанов в Менло-Парке.Thanks, now searching for restaurants in Menlo Park. самый дешевыйthe cheapest Хорошо, поиск доступных по цене ресторанов около Менло-Парка.Okay, search for affordable restaurants near Menlo Park. китайская (была итальянская)Chinese (was Italian) Хорошо, изменяю кухню на китайскую. Поиск китайских ресторанов около Менло-Парка.Okay, I'm changing the cuisine to Chinese. Search for Chinese restaurants near Menlo Park. пицца (добавление блюда)pizza (add dish) Хорошо, поиск итальянских ресторанов около Менло-Парка, которые предлагают пиццу.Okay, search for Italian restaurants near Menlo Park that offer pizza. Сан-Франциско (было Менло-Парк)San Francisco (was Menlo Park) Хорошо, изменяю местоположение на Сан-Франциско. Поиск итальянских ресторанов около Сан-Франциско, которые предлагают пиццу.Okay, changing location to San Francisco. Search for Italian restaurants near San Francisco that offer pizza. ужасно модныйterribly trendy Хорошо, я поищу в обзорах "ужасно модный".Okay, I'll search the reviews for "terribly trendy." тихий романтичныйquiet romantic Хорошо, поиск романтичных ресторанов в Пало-Альто, описанных как "тихие"Okay, searching for romantic restaurants in Palo Alto described as "quiet" cliff housecliff house Cliff House кажется знакомым. Поищу его в Пало-Альто.Cliff House looks familiar. I'll look for him in Palo Alto.

[0446] Таблица 4 предоставляет несколько примеров сводок результатов, которые предоставляются, как только результаты получены.[0446] Table 4 provides several examples of summaries of results that are provided as soon as the results are received.

Таблица 4Table 4 Сводка результатовSummary of results ВводInput Число
результатов
Number
results
Сводка результатовSummary of results
tie housetie house Нет данныхThere is no data Нет данных (нет вызова служб)No data (no service call) Пало-АльтоPalo Alto Нет данныхThere is no data Нет данных (нет вызова служб)No data (no service call) едаfood Нет данныхThere is no data Нет данных (нет вызова служб)No data (no service call) итальянская едаItalian food Нет данныхThere is no data Нет данных (нет вызова служб)No data (no service call) бурритоburrito Нет данныхThere is no data Нет данных (нет вызова служб)No data (no service call) лучшая мексиканская едаbest mexican food Нет данныхThere is no data Нет данных (нет вызова служб)No data (no service call) рестораны Пало-АльтоPalo Alto Restaurants многоmany Вот несколько рекомендованных ресторанов около Пало-Альто. Вы предпочитаете какой-либо конкретный тип еды? Желаете резервирование?Here are some recommended restaurants near Palo Alto. Do you prefer any particular type of food? Would you like a reservation? итальянская Пало-АльтоItalian Palo Alto несколькоsome Вот несколько итальянских ресторанов около Пало-Альто. Чтобы зарезервировать столик, щелкните доступные времена.Here are some Italian restaurants near Palo Alto. To reserve a table, click available times. тайская еда в Менло-ПаркеThai food in Menlo Park несколькоsome Вот несколько тайских ресторанов около Менло-Парка. Чтобы зарезервировать столик, щелкните доступные времена.Here are some Thai restaurants near Menlo Park. To reserve a table, click available times. индонезийская еда в Менло-Паркеindonesian food in menlo park 00 Извините, я не могу найти индонезийские рестораны около Менло-Парка. Вы можете попробовать другие кухни или местоположения.Sorry I can't find Indonesian restaurants near Menlo Park. You can try other cuisines or locations. лучшая мексиканская еда в Пало-Альтоbest mexican food in palo alto несколькоsome Вот несколько рекомендованных мексиканских ресторанов около Пало-Альто.Here are some recommended Mexican restaurants near Palo Alto. кафе быстрого питания Менло-Паркfast food cafe menlo park несколькоsome Хорошо, вот несколько ресторанов быстрого питания около Менло-Парка.Okay, here are some fast food restaurants near Menlo Park. здоровая еда в Менло-Паркеhealthy food in menlo park несколькоsome Вот несколько мест около Менло-Парка, которые могут подавать здоровую еду, на основе обзоров.Here are a few places near Menlo Park that can serve healthy food, based on reviews. дешевый бар в Менло-Паркеcheap bar in menlo park несколькоsome Вот несколько баров около Менло-Парка. Не вижу ничего конкретного по "дешевому бару". Можете сказать по-другому?Here are a few bars near Menlo Park. I don't see anything specific about "cheap bar". Can you say it differently? бильярдная в Менло-Паркеbilliard room in Menlo Park несколькоsome Вот несколько мест в Менло-Парке, которые описываются как бильярдные. Вы можете добавить другие слова, чтобы описать то, что Вы хотите.Here are a few places in Menlo Park that are described as billiard rooms. You can add other words to describe what you want. кальянная в Менло-Паркеhookah in Menlo Park 00 Я не могу найти места в Менло-Парке, соответствующие "кальянной". Интересуетесь ресторанами, отелями или местными организациями?I can't find places in Menlo Park that match "shisha". Interested in restaurants, hotels or local organizations? острая еда в sfspicy food in sf нестрогое соответствиеloose match Вот несколько мест, чтобы поесть в Сан-Франциско. Я не знаю, какие из них предлагают острую еду. Это может идти под другим названием?Here are some places to eat in San Francisco. I don't know which ones offer spicy food. Could it go under a different name? гамбургеры в Менло-Паркеburgers in menlo park несколькоsome Вы можете найти гамбургеры в этих местах, чтобы поесть, около Менло-Парка.You can find burgers at these places to eat near Menlo Park. заведение, где танцуют танец живота, в sfa place where they dance belly dance in sf несколькоsome Вот несколько мест в Менло-Парке, которые описываются как "с танцем живота". Вы можете добавить другие слова, чтобы описать то, что Вы хотите.Here are a few places in Menlo Park that are described as "belly dancing". You can add other words to describe what you want. заведение, где танцуют танец живота, в Менло-Паркеa belly dancer in Menlo Park 00 Я могу помочь Вам найти рестораны, организации, мероприятия и занятия в Сан-Франциско. Есть еще другие слова для "заведение, где танцуют танец живота"?I can help you find restaurants, organizations, events and activities in San Francisco. Are there any other words for "a place where they dance belly dancing"? недорогая закусочная в sfcheap eatery in sf 00 Я могу помочь Вам найти рестораны, организации, мероприятия и занятия в Сан-Франциско. Есть еще другие слова для "недорогая закусочная"?I can help you find restaurants, organizations, events and activities in San Francisco. Are there any other words for "inexpensive diner"? tie house Менло-Паркtie house menlo park 00 Извините, я не знаю о "tie house" в Менло-Парке. Какие-либо другие названия для него?Sorry, I don't know about the "tie house" in Menlo Park. Any other names for it? thai house Пало-Альтоthai house palo alto 1one Нашел: Ресторан Thai House в Пало-Альто, Калифорния. Хотите зарезервировать столик? Когда и на сколько человек?Found: Thai House restaurant in Palo Alto, California. Would you like to reserve a table? When and for how many people? il fornaio Менло-Паркil fornaio menlo park нестрогое соответствиеloose match В Пало-Альто есть ресторан II Fornaio, который располагается около Менло-Парка.In Palo Alto there is a restaurant II Fornaio, which is located near Menlo Park. il fornao в Менло-Паркеil fornao in Menlo Park соответствие по написаниюcorrespondence in spelling Вы имели в виду II Fornaio в Пало-Альто? Если нет, попробуйте другие слова.Did you mean II Fornaio in Palo Alto? If not, try other words. cliff house в Менло-Паркеcliff house in menlo park 00 Я не смог найти Cliff House в Пало-Альто. Он может идти под другим названием или располагаться в другом городе?I couldn't find Cliff House in Palo Alto. Can it go under a different name or be located in another city? романтичный ресторан в Пало-Альтоromantic restaurant in Palo Alto несколькоsome Вот несколько ресторанов около Пало-Альто, которые описываются в обзорах как романтичные.Here are a few restaurants near Palo Alto that are described as romantic in reviews. романтичный ресторан в Пало-Альтоromantic restaurant in Palo Alto 00 Вот рестораны около Пало-Альто. Поиск в обзорах не нашел ничего, описанного как романтичный. Какие-либо другие предпочтения?Here are the restaurants near Palo Alto. Searching the reviews found nothing described as romantic. Any other preference? тихий романтичный ресторан в Пало-Альтоquiet romantic restaurant in Palo Alto несколькоsome Вот несколько ресторанов около Пало-Альто, которые совпадают с "тихий романтичный" в обзорах.Here are a few restaurants near Palo Alto that match up with "quiet romantic" in the reviews. тихий романтичный ресторан в Пало-Альтоquiet romantic restaurant in Palo Alto 00 Вот несколько ресторанов около Пало-Альто. Поиск в обзорах не нашел ничего, совпадающего с "тихий романтичный". Какие-либо другие предпочтения?Here are a few restaurants near Palo Alto. Searching the reviews didn't find anything matching "quiet romantic". Any other preference? ужасно модный ресторан в Пало-Альтоterribly trendy restaurant in Palo Alto несколькоsome Вот несколько ресторанов около Пало-Альто, которые совпадают с "ужасно модный" в обзорах.Here are a few restaurants near Palo Alto that match up with "terribly trendy" in the reviews. ужасно модный ресторан в Пало-Альтоterribly trendy restaurant in Palo Alto 00 Вот несколько ресторанов около Пало-Альто. Поиск в обзорах не нашел ничего, совпадающего с "ужасно модный". Какие-либо другие предпочтения?Here are a few restaurants near Palo Alto. A search in the reviews did not find anything that matches "terribly fashionable." Any other preference? столик на двоих сегодня вечером в Пало-Альтоtable for two tonight in Palo Alto несколькоsome Вот рестораны со свободными столиками с 18:00 до 20:00 сегодня вечером для званого вечера на двоих в Пало-Альто, Калифорния.Here are the restaurants with free tables from 6 pm to 8 pm tonight for a dinner party for two in Palo Alto, California. столик на двоих итальянская еда сегодня вечером в Пало-Альтоtable for two italian food tonight in palo alto несколькоsome Вот рестораны со свободными столиками с 18:00 до 20:00 сегодня вечером для званого вечера на двоих в Пало-Альто, Калифорния.Here are the restaurants with free tables from 6 pm to 8 pm tonight for a dinner party for two in Palo Alto, California. il fornaio Пало-Альто 18:00 на двоихil fornaio Palo Alto 18:00 for two 1one Вот варианты столиков в ресторане II Fornaio в Пало-Альто, Калифорния в 18:00 сегодня для званого вечера на двоих.Here are the table options at II Fornaio in Palo Alto, California at 6:00 pm tonight for a dinner party for two. столик на двоих в thai house в PAtable for two in thai house in PA 1one Вот информация по Thai House в Пало-Альто, Калифорния. Вы можете позвонить им по приведенному телефонному номеру.Here is information on Thai House in Palo Alto, California. You can call them on the given phone number. доставка пиццы в Менло-Паркеpizza delivery in menlo park Вот места, которые предлагают пиццу в Менло-Парке. У меня нет вариантов доставки на это время. Щелкните телефонные номера ресторана, чтобы позвонить по вопросам доставки.Here are the places that offer pizza in Menlo Park. I don't have delivery options at this time. Click on restaurant phone numbers to call for delivery inquiries. мне нужен самый лучший тихий романтичный итальянский ресторан для оссобуко в или около Менло-Паркаi need the best quiet romantic italian restaurant for ossobuco in or near menlo park нестрогое соответствие, отсортированы по доступностиloose match, sorted by availability Вот наилучшие совпадения для рекомендованных романтичных итальянских ресторанов около Менло-Парка, которые предлагают оссобуко и описываются как "тихие". Щелкните доступные времена, чтобы зарезервировать столик.Here are the best matches for recommended romantic Italian restaurants near Menlo Park that offer ossobuco and are described as "quiet". Click available times to reserve a table. Заказать мне столик на двоих в лучшем тихом романтичном итальянском ресторане для оссобуко в или около Менло-ПаркаBook me a table for two at the best quiet romantic Italian restaurant for ossobuco in or near Menlo Park нестрогое соответствие, отсортированы по доступностиloose match, sorted by availability Вот наилучшие совпадения для рекомендованных романтичных итальянских ресторанов около Менло-Парка со свободными столиками на двоих, которые предлагают оссобуко и описываются как "тихие". Щелкните доступные времена, чтобы зарезервировать столик.Here are the best matches for recommended romantic Italian restaurants near Menlo Park with free tables for two that offer ossobuco and are described as "quiet". Click available times to reserve a table. УточненияClarifications Менло-Парк (было неизвестно)Menlo Park (was unknown) несколькоsome Вот несколько рекомендованных ресторанов около Менло-Парка. Вы предпочитаете какой-либо конкретный тип еды?Here are some recommended restaurants near Menlo Park. Do you prefer any particular type of food? самый дешевыйthe cheapest несколькоsome Я нашел 4 доступных по цене ресторана около Менло-Парка.I found 4 affordable restaurants near Menlo Park. китайская (была итальянская)Chinese (was Italian) Я нашел 4 китайских ресторана около Менло-Парка.I found 4 Chinese restaurants near Menlo Park. пицца (добавление блюда)pizza (add dish) несколькоsome Я нашел 4 итальянских ресторана около Менло-Парка, которые предлагают пиццу.I found 4 Italian restaurants near Menlo Park that offer pizza. Сан-Франциско (было Менло-Парк)San Francisco (was Menlo Park) несколькоsome Я нашел 4 итальянских ресторана около Сан-Франциско.I found 4 Italian restaurants near San Francisco. ужасно модныйterribly trendy несколькоsome Я нашел 4 ресторана около Пало-Альто, которые совпадают с "ужасно модный" в обзорах.I've found 4 restaurants near Palo Alto that match up with "terribly trendy" in the reviews. тихий романтичныйquiet romantic несколькоsome Вот несколько ресторанов около Пало-Альто, которые совпадают с "тихий романтичный" в обзорах.Here are a few restaurants near Palo Alto that match up with "quiet romantic" in the reviews. cliff housecliff house 00 Я не смог найти Cliff House в Пало-Альто. Он может идти под другим названием или располагаться в другом городе?I couldn't find Cliff House in Palo Alto. Can it go under a different name or be located in another city?

[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

Таблица 5Table 5 Строки с подсказкой, когда пользователи щелкают активные ссылкиPrompt lines when users click active links Текст привязкиAnchor text Текст строки с подсказкойString text with hint ПримечанияNotes Местоположение, гдеLocation where Введите местоположение: город, почтовый индекс или "около", после чего название места.Enter a location: city, zip code, or "about" followed by the name of the place. Эта строка с подсказкой может быть использована, когда пользователь еще не указал местоположение.This hint string can be used when the user has not yet provided a location. Пало-АльтоPalo Alto Введите местоположение, к примеру, город, окрестности, фактический адрес или "около", после чего достопримечательности.Enter a location, such as city, neighborhood, actual address or "about", followed by points of interest. Эта строка с подсказкой может быть использована, когда пользователь изменяет местоположения.This prompt string can be used when the user changes locations. тип едыfood type Введите категорию еды, к примеру, китайская или пицца.Enter a food category, such as Chinese or pizza. Тип еды и кухня могут быть объединеныFood type and cuisine can be combined итальянскаяItalian Вы можете попробовать другие категории еды, к примеру, китайская, или любимое блюдо, к примеру, стейк.You can try other categories of food like Chinese or your favorite food like steak. Пользователь уже произнес итальянская. Помощник 1002 помогает пользователю изучить альтернативы. Если это блюдо, оно преобладает над кухней.The user has already spoken Italian. Assistant 1002 assists the user in exploring alternatives. If it is a dish, it dominates the kitchen. резервированиеreservation Введите день и время для резервирования столика, к примеру, "завтра в 8".Enter the day and time to reserve a table, for example "tomorrow at 8". Подсказка для резервированияReservation Hint здоровая едаhealthy food Вы можете также ввести позиции меню или кухниYou can also enter menu or cuisine items Известный тип едыKnown type of food острая едаspicy food Вы можете также ввести позиции меню или кухниYou can also enter menu or cuisine items Неизвестный тип едыUnknown food type рестораныrestaurants Какой ресторан? (например, китайский, пиццерия)Which restaurant? (e.g. Chinese, pizzeria) Щелчок ссылки ресторанов должен вставлять слово "ресторан" на конце ввода текста.Clicking the restaurants link should insert the word "restaurant" at the end of the text entry. организацииorganizations Вы можете найти местных флористов, ATM, врачей, аптеки и т.п. Какую организацию Вы ищете?You can find local florists, ATMs, doctors, pharmacies and more. What organization are you looking for? Щелчок ссылки организаций должен добавлять в машиночитаемый тег то, что это локальный поискClicking organizations links should add to the machine-readable tag that this is a local search мероприятияactivity Вы можете получить сведения по предстоящим концертам, шоу и т.п. Что Вас интересует?You can get information about upcoming concerts, shows, and more. What are you interested in? занятияclasses Музыка, искусство, театр, спорт и т.п. Чем Вы хотите заняться в этом районе?Music, art, theater, sports, etc. What do you want to do in this area? отелиhotels Я могу помочь Вам найти доступную комнату в отеле. Какие-либо предпочтения по комфортабельности или местоположению?I can help you find an available hotel room. Any preference for comfort or location? погодаweather Введите город, и я скажу Вам, какая там погода.Enter the city and I'll tell you what the weather is like there. Если местоположение известно, просто показать погодные данныеIf location is known, just show weather data покупка вещейbuying things Я могу помочь Вам найти музыку, фильмы, книги, электронные устройства, игрушки и т.д. и купить их на Amazon. Что вы ищете?I can help you find music, movies, books, electronic devices, toys, etc. and buy them on Amazon. What are you looking for?

Рекомендация возможных ответов в диалогеSuggestion of possible answers in the dialogue

[0448] В одном варианте осуществления, помощник 1002 предоставляет контекстные рекомендации. Рекомендации - это способ для помощника 1002 предлагать пользователю варианты, чтобы продвигаться от своей текущей ситуации в диалоге. Набор рекомендаций, предлагаемых посредством помощника 1002, зависит от контекста, и число предлагаемых рекомендаций может зависеть от носителя и форм-фактора. Например, в одном варианте осуществления, большинство характерных рекомендаций может предлагаться в соответствии с общепринятой практикой в диалоге, расширенный список рекомендаций ("больше") может предлагаться в меню с возможностью прокрутки, и еще дополнительные рекомендации достижимы посредством ввода с клавиатуры нескольких символов и выбора из вариантов автозаполнения. Специалисты в данной области техники должны признавать, что другие механизмы могут использоваться для предоставления рекомендаций.[0448] In one embodiment, assistant 1002 provides contextual recommendations. Recommendations are a way for assistant 1002 to suggest options to the user to move forward from their current situation in the dialog. The set of recommendations offered by helper 1002 is context dependent, and the number of recommendations offered may depend on media and form factor. For example, in one embodiment, most feature recommendations may be offered in accordance with common practice in a dialog, an expanded list of recommendations ("more") may be offered in a scrollable menu, and more additional recommendations are achievable by typing a few characters on the keyboard and selecting from autocomplete options. Those skilled in the art will recognize that other mechanisms may be used to provide recommendations.

[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, assistant 1002 includes a common mechanism to maintain a list of recommendations ordered by relevance. The format in which the recommendation is offered may differ depending on the current context, mode, and device form factor.

[0458] В одном варианте осуществления, помощник 1002 определяет то, какие ограничения модифицировать, посредством рассмотрения любых или всех из следующих факторов:[0458] In one embodiment, assistant 1002 determines which constraints to modify by considering any or all of the following factors:

- Рассмотрение того, имеет или нет значение ограничение;- 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, helper 1002 determines the output format for the recommendation. Examples of output formats include:

- изменение предметной области:- 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 more information 322 as a hint. differences between them to the user. For example, if the user input includes the word "cafe", and this word may be the name of a restaurant or a type of restaurant, then assistant 102 may ask, "Did you mean restaurants called 'cafes' or cafe-restaurants?"

[0461] В одном варианте осуществления, помощник 1002 логически выводит ограничения при определенных ситуациях. Иными словами, для задач выбора с ограничениями не все ограничения обязательно должны явно упоминаться в пользовательском вводе; некоторые могут логически выводиться из другой информации, доступной в активной онтологии 1050, кратковременном запоминающем устройстве 1052 и/или других источниках информации, доступных для помощника 1002. Например:[0461] In one embodiment, assistant 1002 infers restrictions under certain situations. In other words, for constrained selection problems, not all constraints need to be explicitly mentioned in user input; some may be inferred from other information available in the active ontology 1050, short-term storage 1052, and/or other sources of information available to helper 1002. For example:

- Логический вывод предметной области или местоположения- 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 helper 1002 infers constraint values, it may also suggest those assumptions as recommendations for rejection by the user. For example, it might tell the user "I thought you meant in the area. Would you like to take a look at another location?"

[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)

1. Способ управления пользовательским устройством с использованием речевого ввода, содержащий этапы, на которых в электронном устройстве, содержащем процессор и память, хранящую инструкции для исполнения процессором:1. A method for controlling a user device using voice input, comprising steps in which, in an electronic device containing a processor and a memory that stores instructions for execution by the processor: предоставляют в пользовательском устройстве графический пользовательский интерфейс, включающий в себя по меньшей мере отчасти основывающийся на речи разговорный интерфейс для взаимодействия с пользователем, причем графический пользовательский интерфейс отображает по меньшей мере часть разговорного взаимодействия между пользователем и пользовательским устройством;providing at the user device a graphical user interface including at least partly speech-based conversational interface for user interaction, the graphical user interface displaying at least a portion of the conversational interaction between the user and the user device; получают контекстную информацию, связанную с взаимодействием между пользователем и пользовательским устройством;obtaining context information related to the interaction between the user and the user device; принимают речевой ввод от пользователя через разговорный интерфейс;receiving voice input from the user through the conversational interface; обрабатывают речевой ввод для определения намерения пользователя, ассоциированного с речевым вводом, при этом намерение пользователя ассоциировано с параметром задачи; иprocessing the speech input to determine the user's intent associated with the speech input, wherein the user's intent is associated with a task parameter; and по определению того, что намерение пользователя, ассоциированное с речевым вводом, связано с активацией программного приложения, установленного в пользовательском устройстве: by determining that the user's intent associated with speech input is related to the activation of a software application installed on the user device: изменяют параметр задачи на основе программного приложения,change the task parameter based on the software application, активируют программное приложение в пользовательском устройстве внешним образом по отношению к графическому пользовательскому интерфейсу, включающему в себя разговорный интерфейс, при этом программное приложение активируется с использованием измененного параметра задачи, иactivating the software application in the user device externally to the graphical user interface including the conversational interface, wherein the software application is activated using the modified task parameter, and выдают ответ на основе намерения пользователя и контекстной информации.issue a response based on the user's intent and contextual information. 2. Способ по п.1, в котором упомянутое получение контекстной информации дополнительно содержит этапы, на которых:2. The method of claim 1, wherein said obtaining context information further comprises the steps of: принимают дополнительный речевой ввод через разговорный интерфейс до приема упомянутого речевого ввода; иreceiving additional voice input via the conversational interface prior to receiving said voice input; and обрабатывают этот дополнительный речевой ввод для получения контекстной информации.processing this additional speech input to obtain contextual information. 3. Способ по п.1, в котором упомянутая обработка речевого ввода для определения намерения пользователя, ассоциированного с речевым вводом, дополнительно содержит этап, на котором разрешают неоднозначность речевого ввода с использованием контекстной информации.3. The method of claim 1, wherein said processing the speech input to determine the intent of the user associated with the speech input further comprises disambiguating the speech input using context information. 4. Способ по п.1, дополнительно содержащий этапы, на которых:4. The method of claim 1, further comprising the steps of: принимают дополнительный речевой ввод от пользователя через разговорный интерфейс;receiving additional voice input from the user through the conversational interface; обрабатывают этот дополнительный речевой ввод для определения дополнительного намерения пользователя, ассоциированного с данным дополнительным речевым вводом; иprocessing this additional speech input to determine the additional intent of the user associated with this additional speech input; and на основе дополнительного намерения пользователя, которое было определено:based on the optional user intent that was defined: получают другой ввод, относящийся к этому дополнительному намерению пользователя, от пользователя через разговорный интерфейс иreceive another input related to this additional user intent from the user through the conversational interface, and выполняют задачу для осуществления данного дополнительного намерения пользователя в пределах разговорного интерфейса.perform a task to implement this additional user intent within the conversational interface. 5. Способ по п.1, дополнительно содержащий этапы, на которых:5. The method of claim 1, further comprising the steps of: принимают дополнительный речевой ввод от пользователя через разговорный интерфейс;receiving additional voice input from the user through the conversational interface; обрабатывают этот дополнительный речевой ввод для определения дополнительного намерения пользователя, ассоциированного с данным дополнительным речевым вводом; иprocessing this additional speech input to determine the additional intent of the user associated with this additional speech input; and по определению того, что это дополнительное намерение пользователя, ассоциированное с дополнительным речевым вводом, связано с активацией дополнительного программного приложения, установленного в пользовательском устройстве, активируют это дополнительное программное приложение в пользовательском устройстве вне разговорного интерфейса.upon determining that this additional user intent associated with the additional speech input is associated with the activation of an additional software application installed in the user device, activating this additional software application in the user device outside the conversational interface. 6. Способ по п.1, в котором упомянутое получение контекстной информации дополнительно содержит этапы, на которых:6. The method of claim 1, wherein said obtaining context information further comprises the steps of: принимают неречевой ввод от пользователя до упомянутого речевого ввода иreceiving non-voice input from the user prior to said voice input, and обрабатывают этот неречевой ввод для получения контекстной информации.process this non-speech input to obtain contextual information. 7. Способ по п.1, в котором речевой ввод содержит команду активировать программное приложение, установленное в пользовательском устройстве.7. The method of claim 1, wherein the voice input comprises a command to activate a software application installed on the user device. 8. Способ по п.1, в котором упомянутое отображение по меньшей мере части разговорного взаимодействия включает в себя отображение перефразирования пользовательского ввода.8. The method of claim 1, wherein said displaying at least a portion of the conversational interaction includes displaying a paraphrase of the user input. 9. Электронное устройство, сконфигурированное для управления им с использованием речевого ввода, причем электронное устройство содержит процессор и память, хранящую инструкции, которые при их исполнении процессором предписывают электронному устройству:9. An electronic device configured to be controlled using speech input, the electronic device comprising a processor and a memory storing instructions which, when executed by the processor, cause the electronic device to: предоставлять в электронном устройстве графический пользовательский интерфейс, включающий в себя по меньшей мере отчасти основывающийся на речи разговорный интерфейс для взаимодействия с пользователем, причем графический пользовательский интерфейс отображает по меньшей мере часть разговорного взаимодействия между пользователем и электронным устройством;providing in the electronic device a graphical user interface including at least partly speech-based conversational interface for user interaction, the graphical user interface displaying at least a portion of the conversational interaction between the user and the electronic device; получать контекстную информацию, связанную с взаимодействием между пользователем и электронным устройством;receive contextual information related to the interaction between the user and the electronic device; принимать речевой ввод от пользователя через разговорный интерфейс;receive voice input from the user through the conversational interface; обрабатывать речевой ввод для определения намерения пользователя, ассоциированного с речевым вводом, при этом намерение пользователя ассоциировано с параметром задачи; иprocess the speech input to determine the user's intent associated with the speech input, wherein the user's intent is associated with a task parameter; and по определению того, что намерение пользователя, ассоциированного с речевым вводом, связано с активацией программного приложения, установленного в электронном устройстве: by determining that the intention of the user associated with speech input is related to the activation of a software application installed in an electronic device: изменять параметр задачи на основе программного приложения,change the task parameter based on the software application, активировать программное приложение в электронном устройстве внешним образом по отношению к графическому пользовательскому интерфейсу, включающему в себя разговорный интерфейс, при этом программное приложение активируется с использованием измененного параметра задачи, иactivate the software application in the electronic device externally to the graphical user interface including the conversational interface, wherein the software application is activated using the modified task parameter, and выдавать ответ на основе намерения пользователя и контекстной информации.issue a response based on the user's intent and contextual information. 10. Электронное устройство по п.9, в котором упомянутое получение контекстной информации дополнительно содержит:10. The electronic device according to claim 9, wherein said obtaining context information further comprises: прием дополнительного речевого ввода через разговорный интерфейс до приема упомянутого речевого ввода иreceiving additional voice input via the conversational interface prior to receiving said voice input, and обработку этого дополнительного речевого ввода для получения контекстной информации.processing this additional speech input to obtain contextual information. 11. Электронное устройство по п.9, в котором упомянутая обработка речевого ввода для определения намерения пользователя, ассоциированного с речевым вводом, дополнительно содержит разрешение неоднозначности речевого ввода с использованием контекстной информации.11. The electronic device of claim 9, wherein said speech input processing for determining a user's intent associated with the speech input further comprises disambiguating the speech input using contextual information. 12. Электронное устройство по п.9, в котором инструкции дополнительно предписывают электронному устройству:12. The electronic device of claim 9, wherein the instructions further direct the electronic device to: принимать дополнительный речевой ввод от пользователя через разговорный интерфейс;receive additional speech input from the user through the conversational interface; обрабатывать этот дополнительный речевой ввод для определения дополнительного намерения пользователя, ассоциированного с данным дополнительным речевым вводом; иprocess this additional speech input to determine the additional user intent associated with this additional speech input; and на основе дополнительного намерения пользователя, которое было определено:based on the optional user intent that was defined: получать другой ввод, относящийся к этому дополнительному намерению пользователя, от пользователя через разговорный интерфейс иreceive other input related to this additional user intent from the user through the conversational interface, and выполнять задачу для осуществления данного дополнительного намерения пользователя в пределах разговорного интерфейса.perform a task to implement this additional user intent within the conversational interface. 13. Электронное устройство по п.9, в котором инструкции дополнительно предписывают электронному устройству:13. The electronic device of claim 9, wherein the instructions further direct the electronic device to: принимать дополнительный речевой ввод от пользователя через разговорный интерфейс;receive additional speech input from the user through the conversational interface; обрабатывать этот дополнительный речевой ввод для определения дополнительного намерения пользователя, ассоциированного с данным дополнительным речевым вводом; иprocess this additional speech input to determine the additional user intent associated with this additional speech input; and по определению того, что это дополнительное намерение пользователя, ассоциированное с дополнительным речевым вводом, связано с активацией дополнительного программного приложения, установленного в электронном устройстве, активировать это дополнительное программное приложение в электронном устройстве вне разговорного интерфейса.upon determining that this additional user intent associated with the additional speech input is associated with the activation of an additional software application installed in the electronic device, to activate this additional software application in the electronic device outside the conversational interface. 14. Электронное устройство по п.9, в котором упомянутое получение контекстной информации дополнительно содержит:14. The electronic device according to claim 9, wherein said obtaining context information further comprises: прием неречевого ввода от пользователя до упомянутого речевого ввода иreceiving non-voice input from the user prior to said voice input, and обработку этого неречевого ввода для получения контекстной информации.processing this non-speech input to obtain contextual information. 15. Электронное устройство по п.9, при этом речевой ввод содержит команду активировать программное приложение, установленное в электронном устройстве.15. An electronic device according to claim 9, wherein the voice input comprises a command to activate a software application installed in the electronic device. 16. Электронное устройство по п.9, в котором упомянутое отображение по меньшей мере части разговорного взаимодействия включает в себя отображение перефразирования пользовательского ввода.16. The electronic device of claim 9, wherein said displaying at least a portion of the conversational interaction includes displaying a paraphrase of a user input. 17. Долговременный машиночитаемый носитель, на котором сохранены одна или более программы, содержащие инструкции, которые при их исполнении пользовательским устройством предписывают данному устройству:17. A non-volatile computer-readable medium that stores one or more programs containing instructions that, when executed by a user device, cause that device to: предоставлять в пользовательском устройстве графический пользовательский интерфейс, включающий в себя по меньшей мере отчасти основывающийся на речи разговорный интерфейс для взаимодействия с пользователем, причем графический пользовательский интерфейс отображает по меньшей мере часть разговорного взаимодействия между пользователем и пользовательским устройством;provide in the user device a graphical user interface including at least partly speech-based conversational interface for user interaction, the graphical user interface displaying at least a portion of the conversational interaction between the user and the user device; получать контекстную информацию, связанную с взаимодействием между пользователем и пользовательским устройством;obtain contextual information related to the interaction between the user and the user device; принимать речевой ввод от пользователя через разговорный интерфейс;receive voice input from the user through the conversational interface; обрабатывать речевой ввод для определения намерения пользователя, ассоциированного с речевым вводом, при этом намерение пользователя ассоциировано с параметром задачи; иprocess the speech input to determine the user's intent associated with the speech input, wherein the user's intent is associated with a task parameter; and по определению того, что намерение пользователя, ассоциированное с речевым вводом, связано с активацией программного приложения, установленного в пользовательском устройстве: by determining that the user's intent associated with speech input is related to the activation of a software application installed on the user device: изменять параметр задачи на основе программного приложения,change the task parameter based on the software application, активировать программное приложение в пользовательском устройстве внешним образом по отношению к графическому пользовательскому интерфейсу, включающему в себя разговорный интерфейс, при этом программное приложение активируется с использованием измененного параметра задачи, иactivate the software application in the user device externally to the graphical user interface including the conversational interface, wherein the software application is activated using the modified task parameter, and выдавать ответ на основе намерения пользователя и контекстной информации.issue a response based on the user's intent and contextual information. 18. Машиночитаемый носитель по п.17, в котором упомянутые инструкции дополнительно предписывают устройству:18. The computer-readable medium of claim 17, wherein said instructions further cause the device to: принимать дополнительный речевой ввод через разговорный интерфейс до приема упомянутого речевого ввода иreceive additional voice input via the conversational interface prior to receiving said voice input, and обрабатывать этот дополнительный речевой ввод для получения контекстной информации.process this additional speech input to obtain contextual information. 19. Машиночитаемый носитель по п.17, в котором упомянутая обработка речевого ввода для определения намерения пользователя, ассоциированного с речевым вводом, дополнительно содержит разрешение неоднозначности речевого ввода с использованием контекстной информации.19. The computer-readable medium of claim 17, wherein said speech input processing for determining the user's intent associated with the speech input further comprises disambiguating the speech input using context information. 20. Машиночитаемый носитель по п.17, в котором упомянутые инструкции дополнительно предписывают устройству:20. The computer-readable medium of claim 17, wherein said instructions further cause the device to: принимать дополнительный речевой ввод от пользователя через разговорный интерфейс;receive additional speech input from the user through the conversational interface; обрабатывать этот дополнительный речевой ввод для определения дополнительного намерения пользователя, ассоциированного с данным дополнительным речевым вводом; иprocess this additional speech input to determine the additional user intent associated with this additional speech input; and на основе дополнительного намерения пользователя, которое было определено:based on the optional user intent that was defined: получать другой ввод, относящийся к этому дополнительному намерению пользователя, от пользователя через разговорный интерфейс иreceive other input related to this additional user intent from the user through the conversational interface, and выполнять задачу для осуществления данного дополнительного намерения пользователя в пределах разговорного интерфейса.perform a task to implement this additional user intent within the conversational interface. 21. Машиночитаемый носитель по п.17, в котором упомянутые инструкции дополнительно предписывают устройству:21. The computer-readable medium of claim 17, wherein said instructions further cause the device to: принимать дополнительный речевой ввод от пользователя через разговорный интерфейс;receive additional speech input from the user through the conversational interface; обрабатывать этот дополнительный речевой ввод для определения дополнительного намерения пользователя, ассоциированного с данным дополнительным речевым вводом; иprocess this additional speech input to determine the additional user intent associated with this additional speech input; and по определению того, что это дополнительное намерение пользователя, ассоциированное с дополнительным речевым вводом, связано с активацией дополнительного программного приложения, установленного в пользовательском устройстве, активировать это дополнительное программное приложение в пользовательском устройстве вне разговорного интерфейса.by determining that the additional user intent associated with the additional speech input is associated with the activation of an additional software application installed in the user device, to activate this additional software application in the user device outside the conversational interface. 22. Машиночитаемый носитель по п.17, в котором упомянутое получение контекстной информации дополнительно содержит:22. The computer-readable medium of claim 17, wherein said obtaining context information further comprises: прием неречевого ввода от пользователя до упомянутого речевого ввода иreceiving non-voice input from the user prior to said voice input, and обработку этого неречевого ввода для получения контекстной информации.processing this non-speech input to obtain contextual information. 23. Машиночитаемый носитель по п.17, при этом речевой ввод содержит команду активировать программное приложение, установленное в пользовательском устройстве.23. The computer-readable medium of claim 17, wherein the voice input comprises a command to activate a software application installed on the user device. 24. Машиночитаемый носитель по п.17, в котором упомянутое отображение по меньшей мере части разговорного взаимодействия включает в себя отображение перефразирования пользовательского ввода.24. The computer-readable medium of claim 17, wherein said displaying at least a portion of the conversational interaction includes displaying a paraphrase of user input.
RU2018112505A 2010-01-18 2018-04-09 Maintenance of contextual information between user interactions with voice assistant RU2785950C2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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