ИСПОЛЬЗОВАНИЕ ТЕКСТА ОПОВЕЩЕНИЯ О СОБЫТИИ В КАЧЕСТВЕ ВВОДА В АВТОМАТИЗИРОВАННЫЙ ПОМОЩНИК
USING EVENT ALERT TEXT AS INPUT TO AUTOMATED ASSISTANT

ПЕРЕКРЕСТНЫЕ ССЫЛКИ НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Данная заявка притязает на приоритет предварительной заявки на патент (США) порядковый номер 61/295774, озаглавленной "Intelligent Automated Assistant", адвокатская выписка номер SIRIP003P, поданной 18 января 2010 года, которая содержится в данном документе по ссылке.
[0002] Данная заявка дополнительно притязает на приоритет заявки на патент на изобретение (США) 12/987982, озаглавленной "Intelligent Automated Assistant", адвокатская выписка номер P10575US1, поданной 10 января 2011 года, которая содержится в данном документе по ссылке.
[0003] Данная заявка дополнительно связана с заявкой на патент (США) порядковый номер 11/518292, озаглавленной "Method and Apparatus for Building the Intelligent Automated Assistant", поданной 8 сентября 2006 года, которая содержится в данном документе по ссылке.
[0004] Данная заявка дополнительно связана с предварительной заявкой на патент (США) порядковый номер 61/186414, озаглавленной "System and Method for Semantic Auto-Completion", поданной 12 июня 2009 года, которая содержится в данном документе по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0005] Настоящее изобретение относится к интеллектуальным системам, а более конкретно, к классам приложений для интеллектуальных автоматизированных помощников.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0006] Сегодняшние электронные устройства имеют возможность осуществлять доступ к значительному, возрастающему и разнообразному количеству функций, служб (сервисов) и информации, как через Интернет, так и из других источников. Функциональность для таких устройств быстро расширяется, поскольку многие бытовые устройства, смартфоны, планшетные компьютеры и т.п. имеют возможность запускать программные приложения, чтобы выполнять различные задачи и предоставлять различные типы информации. Зачастую, каждое приложение, функция, web-узел или признак имеет собственный пользовательский интерфейс и собственные практические парадигмы, многие из которых могут быть сложными в изучении или трудными для понимания пользователями. Помимо этого, многие пользователи могут испытывать затруднение даже при обнаружении того, какая функциональность и/или информация доступна на их электронных устройствах или на различных web-узлах; таким образом, эти пользователи могут быть разочарованы или сбиты с толку либо просто могут быть неспособны эффективно использовать ресурсы, доступные для них.
[0007] В частности, неопытные пользователи или люди, которые имеют какие-либо физические нарушения или ограниченные возможности, и/или являются пожилыми, суетливыми, невнимательными, и/или управляют транспортным средством, могут испытывать затруднение касательно эффективного взаимодействия со своими электронными устройствами и/или эффективного применения онлайновых служб. Такие пользователи, в частности с большой вероятностью должны испытывать затруднение при большом числе разнообразных и несогласованных функций, приложений и web-узлов, которые могут быть доступными для их использования.
[0008] Соответственно, существующие системы зачастую являются сложными в использовании и навигации и зачастую представляют пользователям несогласованные и трудные в понимании интерфейсы, которые зачастую мешают эффективному использованию технологии пользователями.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0009] Согласно различным вариантам осуществления настоящего изобретения, интеллектуальный автоматизированный помощник реализуется на электронном устройстве, чтобы упрощать пользовательское взаимодействие с устройством и помогать пользователю эффективнее применять локальные и/или удаленные службы. В различных вариантах осуществления, интеллектуальный автоматизированный помощник контактирует с пользователем в единой разговорной манере с использованием диалога на естественном языке и при необходимости активирует внешние службы, чтобы получать информацию или выполнять различные действия.
[0010] Согласно различным вариантам осуществления настоящего изобретения, интеллектуальный автоматизированный помощник интегрирует множество характеристик, предоставляемых различными программными компонентами (например, для поддержки распознавания естественного языка и диалога на естественном языке, многомодального ввода, управления персональной информацией, управления потоками задач, оркестровки распределенных служб и т.п.). Кроме того, чтобы предлагать интеллектуальные интерфейсы и полезную функциональность пользователям, интеллектуальный автоматизированный помощник согласно настоящему изобретению, по меньшей мере, в некоторых вариантах осуществления может координировать эти компоненты и службы. Разговорный интерфейс и возможность получать информацию и выполнять дальнейшую задачу реализуются, по меньшей мере, в некоторых вариантах осуществления посредством координирования различных компонентов, таких как языковые компоненты, диалоговые компоненты, компоненты управления задачами, компоненты управления информацией и/или множество внешних служб.
[0011] Согласно различным вариантам осуществления настоящего изобретения, системы на основе интеллектуального автоматизированного помощника могут быть выполнены с возможностью предоставлять различные специальные типы операций, функциональностей и/или признаков и/или комбинировать множество признаков, операций и приложений электронного устройства, на котором они устанавливаются. В некоторых вариантах осуществления, системы на основе интеллектуального автоматизированного помощника настоящего изобретения могут выполнять любое или все из следующего: активное извлечение ввода от пользователя, интерпретация намерения пользователя, разрешение неоднозначности между конкурирующими интерпретациями, запрос и прием проясняющей информации при необходимости, а также выполнение (или инициирование) действий на основе различаемого намерения. Действия могут быть выполнены, например, посредством активации и/или взаимодействия с любыми приложениями или службами, которые могут быть доступными на электронном устройстве, а также службами, которые доступны по электронной сети, такой как Интернет. В различных вариантах осуществления, такая активация внешних служб может быть выполнена через API или посредством любого другого подходящего механизма. Таким образом, системы на основе интеллектуального автоматизированного помощника различных вариантов осуществления настоящего изобретения могут унифицировать, упрощать и улучшать взаимодействие пользователя относительно многих различных приложений и функций электронного устройства и относительно служб, которые могут быть доступными по Интернету. Пользователь тем самым может быть освобожден от нагрузки по изучению того, какая функциональность может быть доступной в устройстве и в службах на основе web-подключения, как взаимодействовать с такими службами, чтобы получать то, что он хочет, и как интерпретировать вывод, принимаемый из таких служб; наоборот, помощник согласно настоящему изобретению может выступать в качестве посредника между пользователем и такими разнообразными службами.
[0012] Помимо этого, в различных вариантах осуществления, помощник согласно настоящему изобретению предоставляет разговорный интерфейс, который пользователь может находить более интуитивным и менее обременительным, чем традиционные графические пользовательские интерфейсы. Пользователь может контактировать в форме разговорного диалога с помощником с использованием любого числа доступных механизмов ввода и вывода, таких как, например, речь, графические пользовательские интерфейсы (кнопки и ссылки), ввод текста и т.п. Система может быть реализована с использованием любого числа различных платформ, таких как API устройств, web-технологии, электронная почта и т.п. или любая комбинация вышеозначенного. Запросы на предмет дополнительного ввода могут быть представлены пользователю в контексте такого разговора. Кратковременное запоминающее устройство и долговременное запоминающее устройство могут применяться, так что пользовательский ввод может быть интерпретирован в надлежащем контексте с учетом предыдущих событий и обмена данными в данном сеансе, а также статистической информации и информации профиля о пользователе.
[0013] Помимо этого, в различных вариантах осуществления, контекстная информация, извлекаемая из пользовательского взаимодействия с признаком, операцией или приложением в устройстве, может быть использована для того, чтобы упрощать работу других признаков, операций или приложений в устройстве или в других устройствах. Например, интеллектуальный автоматизированный помощник может использовать контекст телефонного вызова (к примеру, вызова с человеком), чтобы упрощать инициирование текстового сообщения (например, чтобы определять то, что текстовое сообщение должно отправляться тому же человеку без необходимости для пользователя явно указывать получателя текстового сообщения). Интеллектуальный автоматизированный помощник согласно настоящему изобретению тем самым может интерпретировать инструкции, к примеру, "отправить ему текстовое сообщение", причем "ему" интерпретируется согласно контекстной информации, извлекаемой из текущего телефонного вызова и/или из любого признака, операции или приложения в устройстве. В различных вариантах осуществления, интеллектуальный автоматизированный помощник принимает во внимание различные типы доступных контекстных данных, чтобы определять то, какой контакт из адресной книги использовать, какие контактные данные использовать, какой номер телефона использовать для контакта и т.п., так что пользователь не должен повторно указывать эту информацию вручную.
[0014] В различных вариантах осуществления, помощник также может принимать во внимание внешние мероприятия и реагировать соответствующим образом, например, чтобы инициировать действие, инициировать связь с пользователем, предоставлять оповещения и/или модифицировать ранее инициированное действие с учетом внешних мероприятий. Если требуется ввод от пользователя, разговорный интерфейс снова может быть использован.
[0015] В одном варианте осуществления, система основана на наборах взаимосвязанных предметных областей и задач и использует дополнительную функциональность, поддерживаемую посредством внешних служб, с которыми может взаимодействовать система. В различных вариантах осуществления, эти внешние службы включают в себя службы на основе web-технологий, а также функциональность, связанную с самим аппаратным устройством. Например, в варианте осуществления, в котором интеллектуальный автоматизированный помощник реализуется на смартфоне, персональном цифровом устройстве, планшетном компьютере или другом устройстве, помощник может управлять многими операциями и функциями устройства, к примеру, набирать номер телефона, отправлять текстовое сообщение, задавать напоминания, добавлять мероприятия в календарь и т.п.
[0016] В различных вариантах осуществления, система по настоящему изобретению может быть реализована, чтобы предоставлять помощь в любой из ряда различных предметных областей. Примеры включают в себя:
- локальные службы (включающие в себя зависящие от местоположения и времени службы, такие как рестораны, фильмы, банкоматы (ATM), мероприятия и места для встречи);
- службы персонального и социального запоминающего устройства (включающие в себя намеченные дела, заметки, календарные мероприятия, совместно используемые ссылки и т.п.);
- электронная коммерция (включающая в себя онлайновые покупки товаров, таких как книги, DVD, музыка и т.п.);
- службы по организации путешествий (включающие в себя рейсы, отели, достопримечательности и т.п.).
[0017] Специалисты в данной области техники должны признавать, что вышеуказанный список предметных областей является просто примерным. Помимо этого, система по настоящему изобретению может быть реализована в любой комбинации предметных областей.
[0018] В различных вариантах осуществления, системы на основе интеллектуального автоматизированного помощника, раскрытые в данном документе, могут быть выполнены с возможностью или спроектированы включать в себя функциональность для автоматизации применения данных и служб, доступных по Интернету, чтобы обнаруживать, находить, выбирать, покупать, резервировать или заказывать продукты и услуги. В дополнение к автоматизации процесса использования этих данных и служб, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, также может предоставлять одновременное комбинированное использование нескольких источников данных и служб. Например, он может комбинировать информацию о продуктах из нескольких обзорных web-узлов, проверять цены и доступность от нескольких дистрибьюторов и проверять их местоположения и временные ограничения, а также помогать пользователю находить персонифицированное решение своей проблемы. Дополнительно, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, может быть выполнен с возможностью включать в себя функциональность для автоматизации использования данных и служб, доступных по Интернету, чтобы обнаруживать, собирать сведения, выбирать, резервировать и иным образом узнавать о занятиях (включающих в себя, но не только, фильмы, мероприятия, выступления, выставки, шоу и достопримечательности); местах, куда направляться (включающих в себя, но не только, пункты назначения при поездке, отели и другие места, где останавливаться, достопримечательности и другие интересные места и т.д.); местах, чтобы поесть и выпить (таких как рестораны и бары), временах и местах для встречи с другими людьми, а также любые другие источники развлечений или социального взаимодействия, которые можно находить по Интернету. Дополнительно, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, может быть выполнен с возможностью включать в себя функциональность для обеспечения работы приложений и служб через диалог на естественном языке, который может в противном случае предоставляться посредством специальных приложений с графическими пользовательскими интерфейсами, включающих в себя поиск (включающий в себя основанный на местоположении поиск); навигацию (карты и указания по маршруту); поиск в базе данных (к примеру, нахождение организаций или людей по названию (имени) или другим свойствам); получение данных по погодным условиям и прогнозов погоды, проверку цены коммерческих изделий или состояния финансовых транзакций; мониторинг трафика или статуса рейсов; осуществление доступа и обновление календарей и расписаний; управление напоминаниями, оповещениями, задачами и проектами; обмен данными по электронной почте или другим платформам обмена сообщениями; и локальную или удаленную работу с устройствами (например, набор номеров телефона, управление освещением и температурой, управление домашними защитными устройствами, воспроизведение музыки или видео и т.д.). Дополнительно, по меньшей мере, один вариант осуществления системы на основе интеллектуального автоматизированного помощника, раскрытый в данном документе, может быть выполнен с возможностью включать в себя функциональность для идентификации, формирования и/или предоставления персонализированных рекомендаций для действий, продуктов, услуг, источника развлечения, управления временем или любого другого вида службы предоставления рекомендаций, которая извлекает выгоду из интерактивного диалога на естественном языке и автоматизированного доступа к данным и службам.
[0019] В различных вариантах осуществления, интеллектуальный автоматизированный помощник по настоящему изобретению может управлять многими признаками и операциями электронного устройства. Например, интеллектуальный автоматизированный помощник может вызывать службы, которые взаимодействуют с функциональностью и приложениями в устройстве через API-интерфейсы или посредством другого средства, чтобы выполнять функции и операции, которые в противном случае могут быть инициированы с использованием традиционного пользовательского интерфейса в устройстве. Такие функции и операции могут включать в себя, например, установку будильника, осуществление телефонного вызова, отправку текстового сообщения или почтового сообщения, добавление календарного мероприятия и т.п. Такие функции и операции могут быть выполнены в качестве дополнительных функций в контексте разговорного диалога между пользователем и помощником. Такие функции и операции могут указываться пользователем в контексте такого диалога, или они могут быть автоматически выполнены на основе контекста диалога. Специалисты в данной области техники должны признавать, что помощник тем самым может быть использован в качестве механизма управления для инициирования и управления различными операциями на электронном устройстве, и может быть использован в качестве альтернативы традиционным механизмам, таким как кнопки или графические пользовательские интерфейсы.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0020] Прилагаемые чертежи иллюстрируют несколько вариантов осуществления изобретения и вместе с описанием служат для того, чтобы пояснять принципы изобретения согласно вариантам осуществления. Специалисты в данной области техники должны признавать, что конкретные варианты осуществления, проиллюстрированные на чертежах, являются просто примерными и не имеют намерение ограничивать объем настоящего изобретения.
[0021] Фиг.1 является блок-схемой, иллюстрирующей пример одного варианта осуществления системы на основе интеллектуального автоматизированного помощника.
[0022] Фиг.2 иллюстрирует пример взаимодействия между пользователем и интеллектуальным автоматизированным помощником согласно, по меньшей мере, одному варианту осуществления.
[0023] Фиг.3 является блок-схемой, иллюстрирующей вычислительное устройство, подходящее для реализации, по меньшей мере, части интеллектуального автоматизированного помощника согласно, по меньшей мере, одному варианту осуществления.
[0024] Фиг.4 является блок-схемой, иллюстрирующей архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в автономной вычислительной системе, согласно, по меньшей мере, одному варианту осуществления.
[0025] Фиг.5 является блок-схемой, иллюстрирующей архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в распределенной вычислительной сети, согласно, по меньшей мере, одному варианту осуществления.
[0026] Фиг.6 является блок-схемой, демонстрирующей архитектуру системы, иллюстрирующую несколько различных типов клиентов и режимов работы.
[0027] Фиг.7 является блок-схемой, иллюстрирующей клиент и сервер, которые обмениваются данными друг с другом, чтобы реализовывать настоящее изобретение согласно одному варианту осуществления.
[0028] Фиг.8 является блок-схемой, иллюстрирующей фрагмент активной онтологии согласно одному варианту осуществления.
[0029] Фиг.9 является блок-схемой, иллюстрирующей пример альтернативного варианта осуществления системы на основе интеллектуального автоматизированного помощника.
[0030] Фиг.10 является блок-схемой последовательности операций, иллюстрирующей способ работы для компонента(ов) активного извлечения ввода согласно одному варианту осуществления.
[0031] Фиг.11 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения печатаемого ввода согласно одному варианту осуществления.
[0032] Фиг.12-21 являются снимками экрана, иллюстрирующими некоторые части некоторых процедур для активного извлечения печатаемого ввода согласно одному варианту осуществления.
[0033] Фиг.22 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода для голосового или речевого ввода согласно одному варианту осуществления.
[0034] Фиг.23 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода для ввода на основе GUI согласно одному варианту осуществления.
[0035] Фиг.24 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода на уровне потока диалогов согласно одному варианту осуществления.
[0036] Фиг.25 является блок-схемой последовательности операций, иллюстрирующей способ для активного мониторинга релевантных событий согласно одному варианту осуществления.
[0037] Фиг.26 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения многомодального ввода согласно одному варианту осуществления.
[0038] Фиг.27 является набором снимков экрана, иллюстрирующих пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) моделей предметных областей и оркестровки служб согласно одному варианту осуществления.
[0039] Фиг.28 является блок-схемой последовательности операций способа, иллюстрирующей пример способа для обработки естественного языка согласно одному варианту осуществления.
[0040] Фиг.29 является снимком экрана, иллюстрирующим обработку естественного языка согласно одному варианту осуществления.
[0041] Фиг.30 и 31 являются снимками экрана, иллюстрирующими пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) процессора потока диалогов согласно одному варианту осуществления.
[0042] Фиг.32 является блок-схемой последовательности операций, иллюстрирующей способ работы для компонента(ов) процессора потока диалогов согласно одному варианту осуществления.
[0043] Фиг.33 является блок-схемой последовательности операций способа, иллюстрирующей процедуру автоматического вызова и ответа согласно одному варианту осуществления.
[0044] Фиг.34 является блок-схемой последовательности операций способа, иллюстрирующей пример потока задач для задачи выбора с ограничениями согласно одному варианту осуществления.
[0045] Фиг.35 и 36 являются снимками экрана, иллюстрирующими пример операции задачи выбора с ограничениями согласно одному варианту осуществления.
[0046] Фиг.37 является блок-схемой последовательности операций способа, иллюстрирующей пример процедуры для выполнения процедуры оркестровки служб согласно одному варианту осуществления.
[0047] Фиг.38 является блок-схемой последовательности операций способа, иллюстрирующей пример процедуры активации служб согласно одному варианту осуществления.
[0048] Фиг.39 является блок-схемой последовательности операций способа, иллюстрирующей пример процедуры многофазного вывода согласно одному варианту осуществления.
[0049] Фиг.40 и 41 являются снимками экрана, иллюстрирующими примеры обработки вывода согласно одному варианту осуществления.
[0050] Фиг.42 является блок-схемой последовательности операций способа, иллюстрирующей пример обработки многомодального вывода согласно одному варианту осуществления.
[0051] Фиг.43A и 43B являются снимками экрана, иллюстрирующими пример использования компонента(ов) кратковременного персонального запоминающего устройства, чтобы поддерживать диалоговый контекст при изменении местоположения, согласно одному варианту осуществления.
[0052] Фиг.44A-44C являются снимками экрана, иллюстрирующими пример использования компонента(ов) долговременного персонального запоминающего устройства, согласно одному варианту осуществления.
[0053] Фиг.45 иллюстрирует пример абстрактной модели для задачи выбора с ограничениями.
[0054] Фиг.46 иллюстрирует пример модели потока диалогов, чтобы помогать направлять пользователя через процесс поиска.
[0055] Фиг.47 является блок-схемой последовательности операций, иллюстрирующей способ выбора с ограничениями согласно одному варианту осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0056] Далее подробно описываются различные технологии в отношении нескольких примерных вариантов осуществления, как проиллюстрировано на прилагаемых чертежах. В последующем описании, множество конкретных подробностей изложено для того, чтобы предоставлять полное понимание одного или более аспектов и/или признаков, описанных или указываемых ссылкой в данном документе. Тем не менее, для специалистов в данной области техники должно быть очевидным, что один или более аспектов и/или признаков, описанных или указываемых ссылкой в данном документе, могут осуществляться на практике без некоторых или всех этих конкретных подробностей. В других случаях, известные этапы процесса и/или структуры не описаны подробно, чтобы не затруднять понимание некоторых аспектов и/или признаков, описанных или указываемых ссылкой в данном документе.
[0057] Одно или более различных изобретений могут быть описаны в настоящей заявке. Дополнительно, для одного или более изобретения(й), множество вариантов осуществления, описанных в данном документе, могут быть описаны в этой заявке на патент и представляются только в качестве иллюстрации. Описанные варианты осуществления не имеют намерение быть ограничивающими в каком-либо смысле. Одно или более изобретение(я) могут быть широко применимыми ко множеству вариантов осуществления, как должно быть очевидным из раскрытия сущности. Эти варианты осуществления описываются достаточно подробно, чтобы предоставлять возможность специалистам в данной области техники осуществлять на практике одно или более изобретение(я), и следует понимать, что могут быть использованы другие варианты осуществления, и что структурные, логические, программные, электрические и другие изменения могут осуществляться без отступления от объема одного или более изобретения(й). Соответственно, специалисты в данной области техники должны признавать, что одно или более изобретение(й) могут осуществляться на практике с различными модификациями и изменениями. Конкретные признаки одного или более изобретения(й) могут быть описаны в отношении одного или более конкретных вариантов осуществления или чертежей, которые являются частью настоящего раскрытия сущности, и на которых показаны, в качестве иллюстрации, конкретные варианты осуществления одного или более изобретения(й). Тем не менее, следует понимать, что такие признаки не ограничены использованием в одном или более конкретных вариантах осуществления или на чертежах, в отношении которых они описываются. Настоящее раскрытие сущности не является ни буквальным описанием всех вариантов осуществления одного или более изобретения(й), ни перечнем признаков одного или более изобретения(й), которые должны присутствовать во всех вариантах осуществления.
[0058] Заголовки разделов, предусмотренных в этой заявке на патент, и название этой заявки на патент предоставлены только для удобства и не должны рассматриваться в качестве какого-либо ограничения раскрытия сущности.
[0059] Устройства, которые поддерживают связь друг с другом, не обязательно должны поддерживать непрерывную связь друг с другом, если прямо не указано иное. Помимо этого, устройства, которые поддерживают связь друг с другом, могут обмениваться данными прямо или косвенно через одного или более посредников.
[0060] Описание варианта осуществления с несколькими компонентами, поддерживающими связь друг с другом, не подразумевает, что все такие компоненты являются обязательными. Наоборот, описывается множество необязательных компонентов, чтобы иллюстрировать широкое множество возможных вариантов осуществления одного или более изобретения(й).
[0061] Дополнительно, хотя этапы процесса, этапы способа, алгоритмы и т.п. могут быть описаны в последовательном порядке, такие процессы, способы и алгоритмы могут быть выполнены с возможностью работать в альтернативных порядках. Другими словами, любая последовательность или порядок этапов, которые могут быть описаны в этой заявке на патент, сама по себе не указывает обязательность выполнения этапов в этом порядке. Этапы описанных процессов могут быть выполнены в любом практичном порядке. Дополнительно, некоторые этапы могут выполняться одновременно, несмотря на описание или подразумевание как выполняемых неодновременно (например, поскольку один этап описывается после другого этапа). Кроме того, иллюстрация процесса посредством его демонстрации на чертеже не подразумевает, что проиллюстрированный процесс исключает другие изменения и модификации в нем, не подразумевает, что проиллюстрированный процесс или любой из его этапов являются обязательными для одного или более изобретения(й), и не подразумевает, что проиллюстрированный процесс является предпочтительным.
[0062] Когда описываются одно устройство или изделие, должно быть очевидным, что несколько устройств/изделий (взаимодействуют они или нет) могут быть использованы вместо одного устройства/изделия. Аналогично, если описываются несколько устройств или изделий (взаимодействуют они или нет), должно быть очевидным, что одно устройство/изделие может быть использовано вместо нескольких устройств или изделий.
[0063] Функциональность и/или признаки устройства могут быть альтернативно осуществлены посредством одного или более других устройств, которые не описываются явно как имеющие такую функциональность/признаки. Таким образом, другие варианты осуществления одного или более изобретения(й) не обязательно должны включать в себя само устройство.
[0064] Технологии и механизмы, описанные или указываемые ссылкой в данном документе, для ясности иногда описываются в форме единственного числа. Тем не менее, следует отметить, что конкретные варианты осуществления включают в себя несколько итераций технологии или несколько конкретизаций механизма, если не указано иное.
[0065] Хотя описываются в контексте технологии на основе интеллектуального автоматизированного помощника, можно понимать, что различные аспекты и технологии, описанные в данном документе (такие как, например, ассоциированные с активными онтологиями), также могут развертываться и/или применяться в других областях техники с вовлечением человеческого и/или компьютеризированного взаимодействия с программным обеспечением.
[0066] Другие аспекты, связанные с технологией на основе интеллектуального автоматизированного помощника (например, которая может использоваться посредством, предоставляться посредством и/или реализовываться в одном или более вариантов осуществления системы на основе интеллектуального автоматизированного помощника, описанных в данном документе), раскрываются в одном или более из следующих противопоставленных материалов:
- предварительная заявка на патент (США) порядковый номер 61/295774, озаглавленная "Intelligent Automated Assistant", адвокатская выписка номер SIRIP003P, поданная 18 января 2010 года, раскрытие которой содержится в данном документе по ссылке;
- заявка на патент (США) порядковый номер 11/518292, озаглавленная "Method and Apparatus for Building the Intelligent Automated Assistant", поданная 8 сентября 2006 года, раскрытие которой содержится в данном документе по ссылке; и
- предварительная заявка на патент (США) порядковый номер 61/186414, озаглавленная "System and Method for Semantic Auto-Completion", поданная 12 июня 2009 года, раскрытие которой содержится в данном документе по ссылке.
Аппаратная архитектура
[0067] В общем, технологии интеллектуального автоматизированного помощника, раскрытые в данном документе, могут быть реализованы в аппаратных средствах или в комбинации программного обеспечения и аппаратных средств. Например, они могут быть реализованы в ядре операционной системы, в отдельном пользовательском процессе, в библиотечном пакете, привязанном к сетевым приложениям, в специально созданной машине или в сетевой интерфейсной плате. В конкретном варианте осуществления, технологии, раскрытые в данном документе, могут быть реализованы в программном обеспечении, к примеру, в операционной системе или в приложении, запущенном в операционной системе.
[0068] Программная/аппаратная гибридная реализация(и), по меньшей мере, части варианта(ов) осуществления интеллектуального автоматизированного помощника, раскрытого в данном документе, может быть реализована на программируемой машине, избирательно активируемой или реконфигурируемой посредством компьютерной программы, сохраненной в запоминающем устройстве. Эти сетевые устройства могут иметь несколько сетевых интерфейсов, которые могут быть выполнены с возможностью использовать различные типы протоколов передачи данных по сети. Общая архитектура для некоторых из этих машин может быть очевидной из описаний, раскрытых в данном документе. Согласно конкретным вариантам осуществления, по меньшей мере, некоторые признаки и/или функциональности различных вариантов осуществления интеллектуального автоматизированного помощника, раскрытых в данном документе, могут быть реализованы в одной или более сетевых хост-машин общего назначения, таких как компьютерная система конечного пользователя, компьютер, сетевой сервер или серверная система, мобильное вычислительное устройство (например, персональное цифровое устройство, мобильный телефон, смартфон, переносной компьютер, планшетный компьютер и т.п.), потребительское электронное устройство, музыкальный проигрыватель или любое другое подходящее электронное устройство, маршрутизатор, коммутатор и т.п. или любая комбинация вышеозначенного. По меньшей мере, в некоторых вариантах осуществления, по меньшей мере, некоторые признаки и/или функциональности различных вариантов осуществления интеллектуального автоматизированного помощника, раскрытых в данном документе, могут быть реализованы в одном или более виртуализированных вычислительных окружений (например, сетевых вычислительных облаках и т.п.).
[0069] Ссылаясь теперь на Фиг.3, показана блок-схема, иллюстрирующая вычислительное устройство 60, подходящее для реализации, по меньшей мере, части признаков и/или функциональностей интеллектуального автоматизированного помощника, раскрытых в данном документе. Вычислительное устройство 60 может быть, например, компьютерной системой конечного пользователя, сетевым сервером или серверной системой, мобильным вычислительным устройством (например, персональным цифровым устройством, мобильным телефоном, смартфоном, переносным компьютером, планшетным компьютером и т.п.), потребительским электронным устройством, музыкальным проигрывателем или любым другим подходящим электронным устройством либо любой их комбинацией или частью. Вычислительное устройство 60 может быть выполнено с возможностью обмениваться данными с другими вычислительными устройствами, такими как клиенты и/или серверы, по сети связи, к примеру, по Интернету, с использованием известных протоколов для этой связи (беспроводной или проводной).
[0070] В одном варианте осуществления, вычислительное устройство 60 включает в себя центральный процессор (CPU) 62, интерфейсы 68 и шину 67 (к примеру, шину на основе стандарта взаимодействия периферийных компонентов (PCI)). При работе под управлением надлежащего программного обеспечения или микропрограммного обеспечения, CPU 62 может отвечать за реализацию конкретных функций, ассоциированных с функциями специально сконфигурированного вычислительного устройства или машины. Например, по меньшей мере, в одном варианте осуществления, персональное цифровое устройство (PDA) пользователя может быть выполнено с возможностью выступать в качестве системы на основе интеллектуального автоматизированного помощника, использующей CPU 62, запоминающее устройство 61, 65 и интерфейс(ы) 68. По меньшей мере, в одном варианте осуществления, CPU 62 может инструктироваться выполнять одну или более из различных типов функций и/или операций интеллектуального автоматизированного помощника под управлением программных модулей/компонентов, которые, например, могут включать в себя операционную систему и любое надлежащее прикладное программное обеспечение, драйверы и т.п.
[0071] CPU 62 может включать в себя один или более процессоров 63, таких как, например, процессор из семейства микропроцессоров Motorola или Intel либо семейства микропроцессоров MIPS. В некоторых вариантах осуществления, процессор(ы) 63 может включать в себя специально разработанные аппаратные средства (например, специализированные интегральные схемы (ASIC), электрически стираемые программируемые постоянные запоминающие устройства (EEPROM), программируемые пользователем вентильные матрицы (FPGA) и т.п.) для управления работой вычислительного устройства 60. В конкретном варианте осуществления, запоминающее устройство 61 (к примеру, энергонезависимое оперативное запоминающее устройство (RAM) и/или постоянное запоминающее устройство (ROM)) также является частью CPU 62. Тем не менее, существует множество различных способов, которыми запоминающее устройство может соединяться с системой. Блок 61 запоминающего устройства может использоваться для множества целей, таких как, например, кэширование и/или сохранение данных, программирование инструкций и т.п.
[0072] При использовании в данном документе, термин "процессор" не ограничивается просто этими интегральными схемами, упоминаемыми в данной области техники как процессор, но в широком смысле означает микроконтроллер, микрокомпьютер, контроллер с программируемой логикой, специализированную интегральную схему и любую другую программируемую схему.
[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).
[0074] Хотя система, показанная на Фиг.3, иллюстрирует одну конкретную архитектуру для вычислительного устройства 60 для реализации технологий изобретения, описанного в данном документе, она никоим образом не является единственной архитектурой устройств, в которой может быть реализована, по меньшей мере, часть признаков и технологий, описанных в данном документе. Например, могут быть использованы архитектуры, имеющие один или любое число процессоров 63, и такие процессоры 63 могут присутствовать в одном устройстве или распределяться между любым числом устройств. В одном варианте осуществления, один процессор 63 обрабатывает обмен данными, а также вычисления при маршрутизации. В различных вариантах осуществления, различные типы признаков и/или функциональностей интеллектуального автоматизированного помощника могут быть реализованы в системе на основе интеллектуального автоматизированного помощника, которая включает в себя клиентское устройство (к примеру, персональное цифровое устройство или смартфон с запущенными клиентским программным обеспечением) и серверную систему(ы) (к примеру, серверную систему, подробнее описанную ниже).
[0075] Независимо от конфигурации сетевого устройства, система по настоящему изобретению может использовать одно или более запоминающих устройств или модулей запоминающих устройств (таких как, например, блок 65 запоминающего устройства), выполненных с возможностью сохранять данные, программные инструкции для работы сети общего назначения и/или другую информацию, связанную с функциональностью технологий интеллектуального автоматизированного помощника, описанных в данном документе. Программные инструкции могут управлять, например, работой операционной системы и/или одного или более приложений. Запоминающее устройство или запоминающие устройства также могут быть выполнены с возможностью сохранять структуры данных, информацию таксономии ключевых слов, информацию оповещений, информацию о пользовательских щелчках и нажатиях и/или другую конкретную непрограммную информацию, описанную в данном документе.
[0076] Поскольку эта информация и программные инструкции могут использоваться для того, чтобы реализовывать системы/способы, описанные в данном документе, по меньшей мере, некоторые варианты осуществления сетевого устройства могут включать в себя энергонезависимые машиночитаемые носители хранения данных, которые, например, могут быть выполнены с возможностью сохранять программные инструкции, информацию состояния и т.п. для выполнения различных операций, описанных в данном документе. Примеры таких энергонезависимых машиночитаемых носителей хранения данных включают в себя, но не только, магнитные носители, такие как жесткие диски, гибкие диски и магнитная лента; оптические носители, такие как CD-ROM-диски; магнитооптические носители, такие как флоптические диски, и аппаратные устройства, которые специально выполнены с возможностью сохранять и выполнять программные инструкции, такие как постоянные запоминающие устройства (ROM), флэш-память, запоминающее устройство на мемристорах, оперативное запоминающее устройство (RAM) и т.п. Примеры программных инструкций включают в себя как машинный код, к примеру, сформированный посредством компилятора, так и файлы, содержащие код верхнего уровня, который может быть выполнен посредством компьютера с использованием интерпретатора.
[0077] В одном варианте осуществления, система по настоящему изобретению реализуется в автономной вычислительной системе. Ссылаясь теперь на Фиг.4, показана блок-схема, иллюстрирующая архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в автономной вычислительной системе, согласно, по меньшей мере, одному варианту осуществления. Вычислительное устройство 60 включает в себя процессор(ы) 63, который выполняют программное обеспечение для реализации интеллектуального автоматизированного помощника 1002. Устройство 1206 ввода может иметь любой тип, подходящий для приема пользовательского ввода, включающий в себя, например, клавиатуру, сенсорный экран, микрофон (например, для голосового ввода), мышь, сенсорную панель, шаровой манипулятор, переключатель с пятью кнопками, джойстик и/или любую комбинацию вышеозначенного. Устройство 1207 вывода может быть экраном, динамиком, принтером и/или любой комбинацией вышеозначенного. Запоминающее устройство 1210 может быть оперативным запоминающим устройством, имеющим структуру и архитектуру, известную в данной области техники, для использования посредством процессора(ов) 63 в ходе выполнения программного обеспечения. Устройство 1208 хранения данных может быть любым магнитным, оптическим и/или электрическим устройством хранения данных для хранения данных в цифровой форме; примеры включают в себя флэш-память, магнитный жесткий диск, CD-ROM и т.п.
[0078] В другом варианте осуществления, система по настоящему изобретению реализуется в распределенной вычислительной сети, к примеру, в сети, имеющей любое число клиентов и/или серверов. Ссылаясь теперь на Фиг.5, показана блок-схема, иллюстрирующая архитектуру для реализации, по меньшей мере, части интеллектуального автоматизированного помощника в распределенной вычислительной сети, согласно, по меньшей мере, одному варианту осуществления.
[0079] В компоновке, показанной на Фиг.5, предоставляется любое число клиентов 1304; каждый клиент 1304 может выполнять программное обеспечение для реализации клиентских частей настоящего изобретения. Помимо этого, любое число серверов 1340 может предоставляться для обработки запросов, принимаемых из клиентов 1304. Клиенты 1304 и серверы 1340 могут обмениваться данными друг с другом через электронную сеть 1361, к примеру, Интернет. Сеть 1361 может быть реализована с использованием любых известных сетевых протоколов, включающих в себя, например, проводные и/или беспроводные протоколы.
[0080] Помимо этого, в одном варианте осуществления, серверы 1340 могут вызывать внешние службы 1360 при необходимости, чтобы получать дополнительную информацию или сохранять данные относительно предыдущих взаимодействий с конкретными пользователями. Связь с внешними службами 1360 может осуществляться, например, через сеть 1361. В различных вариантах осуществления, внешние службы 1360 включают в себя службы на основе web-технологий и/или функциональность, связанную или установленную в самом аппаратном устройстве. Например, в варианте осуществления, в котором помощник 1002 реализуется на смартфоне или другом электронном устройстве, помощник 1002 может получать информацию, сохраненную в приложении для работы с календарем ("приложении"), в контактах и/или других источниках.
[0081] В различных вариантах осуществления, помощник 1002 может управлять многими признаками и операциями электронного устройства, на котором он устанавливается. Например, помощник 1002 может вызывать внешние службы 1360, которые взаимодействуют с функциональностью и приложениями в устройстве через API или посредством другого средства, чтобы выполнять функции и операции, которые в противном случае могут быть инициированы с использованием традиционного пользовательского интерфейса в устройстве. Такие функции и операции могут включать в себя, например, установку будильника, осуществление телефонного вызова, отправку текстового сообщения или почтового сообщения, добавление календарного мероприятия и т.п. Такие функции и операции могут быть выполнены в качестве дополнительных функций в контексте разговорного диалога между пользователем и помощником 1002. Такие функции и операции могут указываться пользователем в контексте такого диалога, или они могут быть автоматически выполнены на основе контекста диалога. Специалисты в данной области техники должны признавать, что помощник 1002 тем самым может быть использован в качестве механизма управления для инициирования и управления различными операциями на электронном устройстве, который может быть использован в качестве альтернативы традиционным механизмам, таким как кнопки или графические пользовательские интерфейсы.
[0082] Например, пользователь может предоставлять ввод в помощник 1002, к примеру, "Мне нужно проснуться завтра в 8:00". После того, как помощник 1002 определяет намерение пользователя с использованием технологий, описанных в данном документе, помощник 1002 может вызывать внешние службы 1340, чтобы взаимодействовать с функцией или приложением будильника в устройстве. Помощник 1002 устанавливает будильник от имени пользователя. Таким образом, пользователь может использовать помощник 1002 в качестве замены традиционных механизмов для установки будильника или выполнения других функций в устройстве. Если запросы пользователя являются неоднозначными или требуют дополнительного прояснения, помощник 1002 может использовать различные технологии, описанные в данном документе, включающие в себя активное извлечение, перефразирование, рекомендации и т.п., чтобы получать необходимую информацию, так что вызываются корректные службы 1340, и предпринимается намеченное действие. В одном варианте осуществления, помощник 1002 может запрашивать в виде подсказки у пользователя подтверждение до вызова службы 1340, чтобы выполнять функцию. В одном варианте осуществления, пользователь может избирательно деактивировать возможность помощника 1002 вызывать конкретные службы 1340 или может деактивировать весь такой вызов служб при необходимости.
[0083] Система по настоящему изобретению может быть реализована для многих различных типов клиентов 1304 и режимов работы. Фиг.6 является блок-схемой, демонстрирующей архитектуру системы, иллюстрирующую несколько различных типов клиентов и режимов работы. Специалисты в данной области техники должны признавать, что различные типы клиентов 1304 и режимов работы, показанные на Фиг.6, являются просто примерными, и что система по настоящему изобретению может быть реализована с использованием клиентов 1304 и/или режимов работы, отличных от проиллюстрированных. Дополнительно, система может включать в себя любые или все из таких клиентов 1304 и/или режимов работы, по одному или в любой комбинации. Проиллюстрированные примеры включают в себя:
- Компьютерные устройства с устройствами ввода-вывода и/или датчиками 1402. Клиентский компонент может быть развернут на любом таком компьютерном устройстве 1402. По меньшей мере, один вариант осуществления может быть реализован с использованием web-обозревателя 1304A или другого приложения для предоставления возможности связи с серверами 1340 через сеть 1361. Каналы ввода и вывода могут иметь любой тип, включающий в себя, например, визуальные и/или акустические каналы. Например, в одном варианте осуществления, система изобретения может быть реализована с использованием способов голосовой связи, обеспечивающих вариант осуществления помощника для слепых, в котором эквивалент web-обозревателя управляется посредством речи и использует речь для вывода.
- Мобильные устройства с модулями ввода-вывода и датчиками 1406, для которых клиент может быть реализован как приложение на мобильном устройстве 1304B. Они включают в себя, но не только, мобильные телефоны, смартфоны, персональные цифровые устройства, планшетные устройства, сетевые игровые приставки и т.п.
- Бытовые приборы с модулями ввода-вывода и датчиками 1410, для которых клиент может быть реализован как встроенное приложение в приборе 1304C.
- Автомобили и другие транспортные средства с интерфейсами и датчиками 1414 приборной панели, для которых клиент может быть реализован как встроенное системное приложение 1304D. Они включают в себя, но не только, автомобильные навигационные системы, системы голосового управления, встроенные в автомобиль электронные мультимедийные системы и т.п.
- Сетевые вычислительные устройства, к примеру, маршрутизаторы 1418 или любое другое устройство, которое постоянно размещается или взаимодействует с сетью, для которых клиент может быть реализован как постоянно размещающееся в устройстве приложение 1304E.
- Почтовые клиенты 1424, с которыми вариант осуществления помощника соединяется через сервер 1426 модальности по электронной почте. Сервер 1426 модальности по электронной почте выступает в качестве моста связи, например, принимающего ввод от пользователя в качестве почтовых сообщений, отправленных в помощник, и отправляющего вывод из помощника пользователю в качестве ответов.
- Клиенты 1428 мгновенного обмена сообщениями, с которыми вариант осуществления помощника соединяется через сервер 1430 модальности по протоколу обмена сообщениями. Сервер 1430 модальности по протоколу обмена сообщениями выступает в качестве моста связи, принимающего ввод от пользователя в качестве сообщений, отправленных в помощник, и отправляющего вывод из помощника пользователю в качестве сообщений в ответ.
- Голосовые телефоны 1432, с которыми вариант осуществления помощника соединяется через сервер 1430 модальности по протоколу "речь-по-IP" (VoIP). Сервер 1430 модальности по VoIP выступает в качестве моста связи, принимающего ввод от пользователя в качестве голоса, произносимого для помощника, и отправляющего вывод из помощника пользователю, например, в качестве синтезированной речи, в ответ.
[0084] Для платформ обмена сообщениями, включающих в себя, но не только, электронную почту, мгновенный обмен сообщениями, дискуссионные форумы, сеансы групповых чатов, сеансы интерактивной помощи или технической поддержки и т.п., помощник 1002 может выступать в качестве участника разговоров. Помощник 1002 может отслеживать разговор и ответ людям или группе с использованием одной или более технологий и способов, описанных в данном документе для взаимодействий "один-к-одному".
[0085] В различных вариантах осуществления, функциональность для реализации технологий настоящего изобретения может быть распределена по любому числу клиентских и/или серверных компонентов. Например, различные программные модули могут быть реализованы для выполнения различных функций в связи с настоящим изобретением, и такие модули могут быть по-разному реализованы, чтобы работать на серверных и/или клиентских компонентах. Ссылаясь теперь на Фиг.7, показан пример клиента 1304 и сервера 1340, которые обмениваются данными друг с другом, чтобы реализовывать настоящее изобретение согласно одному варианту осуществления. Фиг.7 иллюстрирует одну возможную компоновку, посредством которой программные модули могут быть распределены между клиентом 1304 и сервером 1340. Специалисты в данной области техники должны признавать, что проиллюстрированная компоновка является просто примерной, и что такие модули могут быть распределены многими различными способами. Помимо этого, любое число клиентов 1304 и/или серверов 1340 может предоставляться, и модули могут быть распределены между этими клиентами 1304 и/или серверами 1340 любым из ряда различных способов.
[0086] В примере по Фиг.7, функциональность извлечения ввода и функциональность обработки вывода распределяются между клиентом 1304 и сервером 1340, при этом клиентская часть извлечения 1094a ввода и клиентская часть обработки 1092a вывода расположены в клиенте 1304, а серверная часть извлечения 1094b ввода и серверная часть обработки 1092b вывода расположены на сервере 1340. Следующие компоненты находятся на сервере 1340:
- полный словарь 1058b;
- полная библиотека модулей 1060b распознавания языковых конструкций;
- главная (мастер) версия 1052b кратковременного персонального запоминающего устройства;
- главная версия 1054b долговременного персонального запоминающего устройства.
[0087] В одном варианте осуществления, клиент 1304 локально хранит поднаборы и/или части этих компонентов, чтобы повышать скорость реагирования и уменьшать зависимость от сетевой связи. Такие поднаборы и/или части могут поддерживаться и обновляться согласно известным технологиям управления кэш-памятью. Такие поднаборы и/или части включают в себя, например:
- поднабор словаря 1058a;
- поднабор библиотеки модулей 1060a распознавания языковых конструкций;
- кэш 1052a кратковременного персонального запоминающего устройства;
- кэш 1054a долговременного персонального запоминающего устройства.
[0088] Дополнительные компоненты могут быть реализованы как часть сервера 1340, включающие в себя, например:
- языковой интерпретатор 1070;
- процессор 1080 потока диалогов;
- процессор 1090 вывода;
- базы 1072 данных объектов предметной области;
- модели 1086 потока задач;
- оркестровку 1082 служб;
- модели 1088 характеристик служб.
[0089] Каждый из этих компонентов подробнее описывается ниже. Сервер 1340 получает дополнительную информацию посредством взаимодействия с внешними службами 1360 при необходимости.
Концептуальная архитектура
[0090] Ссылаясь теперь на Фиг.1, показана упрощенная блок-схема конкретного примерного варианта осуществления интеллектуального автоматизированного помощника 1002. Как подробнее описано в данном документе, различные варианты осуществления систем на основе интеллектуального автоматизированного помощника могут быть выполнены с возможностью предоставлять различные специальные типы операций, функциональностей и/или признаков, в общем, связанных с технологией на основе интеллектуального автоматизированного помощника. Дополнительно, как подробнее описано в данном документе, многие различные операции, функциональности и/или признаки системы на основе интеллектуального автоматизированного помощника, раскрытой в данном документе, могут предоставлять или обеспечивать различные типы преимуществ и/или выгод для различных объектов, взаимодействующих с системой(ами) на основе интеллектуального автоматизированного помощника. Вариант осуществления, показанный на Фиг.1, может быть реализован с использованием любой из аппаратных архитектур, описанных выше, или с использованием другого типа аппаратной архитектуры.
[0091] Например, согласно различным вариантам осуществления, по меньшей мере, некоторая система(ы) на основе интеллектуального автоматизированного помощника может быть выполнена с возможностью предоставлять различные специальные типы операций, функциональностей и/или признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- автоматизация применения данных и служб, доступных по Интернету, чтобы обнаруживать, находить, выбирать, покупать, резервировать или заказывать продукты и услуги. В дополнение к автоматизации процесса использования этих данных и служб, интеллектуальный автоматизированный помощник 1002 также может предоставлять одновременное комбинированное использование нескольких источников данных и служб. Например, он может комбинировать информацию о продуктах из нескольких обзорных web-узлов, проверять цены и доступность от нескольких дистрибьюторов и проверять их местоположения и временные ограничения, а также помогать пользователю находить персонифицированное решение своей проблемы.
- автоматизация использования данных и служб, доступных по Интернету, чтобы обнаруживать, собирать сведения, выбирать, резервировать и иным образом узнавать о занятиях (включающих в себя, но не только, фильмы, мероприятия, выступления, выставки, шоу и достопримечательности); местах, куда направляться (включающих в себя, но не только, пункты назначения при поездке, отели и другие места, где останавливаться, достопримечательности и другие интересные места и т.п.); местах, чтобы поесть и выпить (таких как рестораны и бары), временах и местах для встречи с другими людьми, а также любые другие источники развлечений или социального взаимодействия, которые можно находить по Интернету.
- обеспечение работы приложений и служб через диалог на естественном языке, которые в противном случае предоставляются посредством специальных приложений с графическими пользовательскими интерфейсами, включающих в себя поиск (включающий в себя основанный на местоположении поиск); навигацию (карты и указания по маршруту); поиск в базе данных (к примеру, нахождение организаций или людей по названию (имени) или другим свойствам); получение данных по погодным условиям и прогнозов погоды, проверка цен коммерческих изделий или состояния финансовых транзакций; мониторинг трафика или статуса рейсов; осуществление доступа и обновление календарей и расписаний; управление напоминаниями, оповещениями, задачами и проектами; обмен данными по электронной почте или другим платформам обмена сообщениями; и локальную или удаленную работу с устройствами (например, набор номеров телефона, управление освещением и температурой, управление домашними защитными устройствами, воспроизведение музыки или видео и т.п.). В одном варианте осуществления, помощник 1002 может быть использован для того, чтобы инициировать, оперировать и управлять многими функциями и приложениями, доступными в устройстве.
- предложение персональных рекомендаций для действий, продуктов, услуг, источника развлечения, управления временем или любого другого вида службы предоставления рекомендаций, которая извлекает выгоду из интерактивного диалога на естественном языке и автоматизированного доступа к данным и службам.
[0092] Согласно различным вариантам осуществления, по меньшей мере, часть различных типов функций, операций, действий и/или других признаков, предоставляемых посредством интеллектуального автоматизированного помощника 1002, может быть реализована в одной или более клиентских систем, в одной или более серверных систем и/или в комбинациях вышеозначенного.
[0093] Согласно различным вариантам осуществления, по меньшей мере, часть различных типов функций, операций, действий и/или других признаков, предоставляемых посредством помощника 1002, может быть реализована, по меньшей мере, посредством одного варианта осуществления процедуры автоматизированного вызова и ответа, к примеру, проиллюстрированной и описанной, например, относительно Фиг.33.
[0094] Дополнительно, различные варианты осуществления помощника 1002, описанные в данном документе, могут включать в себя или предоставлять ряд различных преимуществ и/или выгод по сравнению с существующей в настоящее время технологией на основе интеллектуального автоматизированного помощника, таких как, например, одно или более из следующего (или их комбинации):
- Интеграция технологии понимания естественного языка и преобразования речи в текст, которая ограничивается посредством набора явных моделей предметных областей, задач, служб и диалогов. В отличие от технологии на основе помощника, которая пытается реализовывать систему искусственного интеллекта общего назначения, варианты осуществления, описанные в данном документе, могут применять несколько источников ограничений, чтобы сокращать число решений до более поддающегося обработке размера. Это приводит к меньшему числу неоднозначных интерпретаций языка, меньшему числу релевантных предметных областей или задач и меньшему числу способов операционализировать намерение в службах. Сосредоточение на конкретных предметных областях, задачах и диалогах также позволяет достигать охвата предметных областей и задач с помощью управляемого человеком словаря и преобразований из намерения в параметры служб.
- Возможность разрешать проблемы пользователя посредством активации служб от их имени по Интернету, с использованием API. В отличие от поисковых механизмов, которые возвращают только ссылки и содержимое, некоторые варианты осуществления автоматизированных помощников 1002, описанные в данном документе, могут автоматизировать действия по исследованию и решению проблем. Возможность активировать несколько служб для данного запроса также предоставляет более широкую функциональность пользователю, чем достигается посредством посещения одного web-узла, например, чтобы создавать продукт или услугу или находить себе занятие.
- Применение персональной информации и персональной предыстории взаимодействия при интерпретации и выполнении пользовательских запросов. В отличие от традиционных поисковых механизмов или служб ответа на вопросы, варианты осуществления, описанные в данном документе, используют информацию из предыстории персонального взаимодействия (например, предыстории диалогов, предыдущих выборов от результатов и т.п.), персонального физического контекста (например, местоположения пользователя и времени) и персональную информацию, собираемую в контексте взаимодействия (например, имя, адреса электронной почты, физические адреса, телефонные номера, номера лицевого счета, предпочтения и т.п.). Использование этих источников информации обеспечивает, например:
-- лучшую интерпретацию пользовательского ввода (например, с использованием персональной предыстории и физического контекста при интерпретации языка);
-- более персонифицированные результаты (например, ориентированы на предпочтения или недавние выборы);
-- повышенную эффективность для пользователя (например, посредством автоматизации этапов, заключающих в себе регистрацию в службах или заполнение форм).
- Использование предыстории диалогов в интерпретации естественного языка пользовательских вводов. Поскольку варианты осуществления могут сохранять персональную предысторию и применять понимание естественного языка к пользовательским вводам, они также могут использовать диалоговый контекст, такой как текущее местоположение, время, предметная область, этап задач и параметры задачи, чтобы интерпретировать новые вводы. Традиционные поисковые механизмы и командные процессоры интерпретируют, по меньшей мере, один запрос независимо от предыстории диалогов. Способность использовать предысторию диалогов может обеспечивать возможность более естественного взаимодействия, которое напоминает обычный человеческий разговор.
- Активное извлечение ввода, при котором помощник 1002 активно направляет и ограничивает ввод от пользователя на основе идентичных моделей и информации, используемых для того, чтобы интерпретировать их ввод. Например, помощник 1002 может применять модели диалогов, чтобы рекомендовать следующие этапы в диалоге с пользователем, на которых они уточняют запрос; предлагать заполнения для частично печатаемого ввода на основе зависящих от предметной области и контекста возможностей; или использовать семантическую интерпретацию, чтобы выбирать из неоднозначных интерпретаций речи в качестве текста или текста в качестве намерения.
- Явное моделирование и динамическое управление службами при динамической и надежной оркестровке служб. Архитектура описанных вариантов осуществления предоставляет возможность помощнику 1002 взаимодействовать со многими внешними службами, динамически определять то, какие службы могут предоставлять информацию для конкретного пользовательского запроса, преобразовывать параметры пользовательского запроса в различные API служб, вызывать несколько служб сразу, интегрировать результаты из нескольких служб, корректно восстанавливаться после ошибок в ходе работы служб и/или эффективно поддерживать реализацию служб по мере того, как их API и характеристики совершенствуются.
- Использование активных онтологий в качестве способа и аппаратной системы для компоновки помощников 1002, которые упрощают разработку программного обеспечения и сопровождение данных систем автоматизированного помощника. Активные онтологии являются интеграцией сред моделирования данных и выполнения для помощников. Они предоставляют инфраструктуру, чтобы связывать различные источники моделей и данных (концепты предметной области, потоки задач, словарь, модули распознавания языковых конструкций, диалоговый контекст, персональную информацию пользователя и преобразования из запросов по предметным областям и задачам во внешние службы). Активные онтологии и другие архитектурные нововведения, описанные в данном документе, обеспечивают практичность построения глубокой функциональности в предметных областях, унификации нескольких источников информации и служб и выполнения этого через набор предметных областей.
[0095] По меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью использовать и/или формировать различные специальные типы данных и/или другие типы информации при выполнении конкретных задач и/или операций. Они могут включать в себя, например, входные данные/информацию и/или выходные данные/информацию. Например, по меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью осуществлять доступ, обрабатывать и/или иным образом использовать информацию из одного или более различных типов источников, таких как, например, одно или более локальных и/или удаленных запоминающих устройств, устройств и/или систем. Дополнительно, по меньшей мере, в одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 может быть выполнен с возможностью формировать один или более различных типов выходных данных/информации, которые, например, могут быть сохранены в запоминающем устройстве одного или более локальных и/или удаленных устройств и/или систем.
[0096] Примеры различных типов входных данных/информации, к которым может осуществляться доступ и/или которые могут использоваться посредством интеллектуального автоматизированного помощника 1002, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- Голосовой ввод: из мобильных устройств, таких как мобильные телефоны и планшетные компьютеры, компьютеры с микрофонами, гарнитуры Bluetooth, автомобильные системы голосового управления, по телефонной системе, записи в службах записи и передачи сообщений абонентам, голосовая аудиопочта в службах интегрированного обмена сообщениями, бытовые приборы с голосовым вводом, такие как радиочасы, абонентский телефон, системы управления домашним электронным мультимедийным оборудованием и игровые приставки.
- Ввод текста с клавиатур на компьютерах или мобильных устройствах, клавишных панелей на пультах дистанционного управления или других бытовых электронных устройствах, почтовые сообщения, отправленные в помощник, мгновенные сообщения или аналогичные короткие сообщения, отправленные в помощник, текст, принимаемый от игроков в многопользовательских игровых окружениях, и текст, передаваемый в потоках сообщений.
- Информация местоположения, поступающая из датчиков или основанных на местоположении систем. Примеры включают в себя глобальную систему определения местоположения (GPS) и технологию с использованием GPS (A-GPS) на мобильных телефонах. В одном варианте осуществления, информация местоположения комбинируется с явным пользовательским вводом. В одном варианте осуществления, система по настоящему изобретению имеет возможность обнаруживать, когда пользователь дома, на основе известной информации адреса и определения текущего местоположения. Таким образом, определенные логические выводы могут быть сделаны о типе информации, которой может интересоваться пользователь, когда находится дома, в противоположность нахождению вне дома, а также о типе служб и действий, которые должны активироваться от имени пользователя в зависимости от того, находится он дома или нет.
- Информация времени из часов в клиентских устройствах. Она может включать в себя, например, время из телефонов или других клиентских устройств, указывающее местное время и часовой пояс. Помимо этого, время может быть использовано в контексте пользовательских запросов, например, чтобы интерпретировать такие фразы, как "через час" и "сегодня вечером".
- Данные компаса, акселерометра, гироскопа и/или по скорости движения, а также другие данные датчиков из мобильных или карманных устройств либо встроенных систем, к примеру, автомобильных систем управления. Они также могут включать в себя данные определения положения устройства из пультов дистанционного управления для устройств и игровых приставок.
- Щелчок (клик) и выбор пункта меню и другие события из графического пользовательского интерфейса (GUI) на любом устройстве, имеющем GUI. Дополнительные примеры включают в себя касания сенсорного экрана.
- События из датчиков и других управляемых данными триггеров, таких как будильники, календарные оповещения, триггеры изменения цен, триггеры местоположения, проталкивание уведомления в устройство с серверов и т.п.
[0097] Ввод в вариантах осуществления, описанных в данном документе, также включает в себя контекст предыстории пользовательского взаимодействия, включающей в себя предысторию диалогов и запросов.
[0098] Примеры различных типов входных данных/информации, к которым может осуществляться доступ и/или которые могут использоваться посредством интеллектуального автоматизированного помощника 1002, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- Текстовый вывод, отправленный непосредственно в устройство вывода и/или пользовательский интерфейс устройства.
- Текст и графика, отправляемые пользователю по электронной почте.
- Текст и графика, отправляемые пользователю с помощью службы обмена сообщениями.
- Речевой вывод, может включать в себя одно или более из следующего (или комбинации вышеозначенного):
-- Синтезированная речь.
-- Сэмплированная речь.
-- Записанные сообщения.
- Графический макет информации с фотографиями, большим объемом текста, видео, звуков и гиперссылок. Например, содержимое, подготовленное в web-обозревателе.
- Вывод актуатора, чтобы управлять физическими действиями в устройстве, такими как инструктирование ему включаться или выключаться, издавать звук, изменять цвет, вибрировать, управлять освещением и т.п.
- Активация других приложений в устройстве, к примеру, вызов картографического приложения, голосовой набор номера телефона, отправка почтового или мгновенного сообщения, воспроизведение с носителей, внесение записей в календарях, диспетчерах задач и приложениях работы с заметками, а также в других приложениях.
- Вывод актуатора, чтобы управлять физическими действиями для устройств, присоединенных или управляемых посредством устройства, такими как работа с удаленной камерой, управление инвалидным креслом, воспроизведение музыки на удаленных динамиках, воспроизведение видео на удаленных дисплеях и т.п.
[0099] Можно принимать во внимание, что интеллектуальный автоматизированный помощник 1002 по Фиг.1 является только одним примером из широкого диапазона вариантов осуществления системы на основе интеллектуального автоматизированного помощника, которые могут быть реализованы. Другие варианты осуществления системы на основе интеллектуального автоматизированного помощника (не показаны) могут включать в себя дополнительные, меньше и/или другие компоненты/признаки по сравнению с тем, что проиллюстрировано, например, в примерном варианте осуществления системы на основе интеллектуального автоматизированного помощника по Фиг.1.
Пользовательское взаимодействие
[0100] Ссылаясь теперь на Фиг.2, показан пример взаимодействия между пользователем и, по меньшей мере, одним вариантом осуществления интеллектуального автоматизированного помощника 1002. Пример по Фиг.2 допускает то, что пользователь говорит с интеллектуальным автоматизированным помощником 1002 с использованием устройства 1206 ввода, которое может быть механизмом речевого ввода, и вывод является графическим макетом в устройство 1207 вывода, которое может быть экраном с возможностью прокрутки. Экран 101A разговора показывает разговорный пользовательский интерфейс, демонстрирующий то, что произнес пользователь 101B ("Мне бы хотелось романтичное место с итальянской едой около моего офиса"), и ответ помощника 1002, который является сводкой его заключений 101C ("Хорошо, я нашел итальянские рестораны, которые, судя по обзорам, являются романтичными, недалеко от Вашей работы:") и набор результатов 101D (показаны первые три из списка ресторанов). В этом примере, пользователь щелкает первый результат в списке, и результат автоматически открывается, чтобы раскрывать дополнительную информацию о ресторане, показанном на информационном экране 101E. Информационный экран 101E и экран 101A разговора могут отображаться на одном устройстве вывода, таком как сенсорный экран или другое устройство отображения; примеры, проиллюстрированные на Фиг.2, являются двумя различными состояниями вывода для идентичного устройства вывода.
[0101] В одном варианте осуществления, информационный экран 101E показывает информацию, собранную и комбинированную из множества служб, включающую в себя, например, любое или все из следующего:
- адреса и географические местоположения организаций;
- расстояние от текущего местоположения пользователя;
- обзоры из множества источников.
[0102] В одном варианте осуществления, информационный экран 101E также включает в себя некоторые примеры служб, которые помощник 1002 может предлагать от имени пользователя, включающие в себя:
- набор номера телефона, чтобы позвонить в организацию ("вызов");
- запоминание этого ресторана для последующего использования ("сохранить");
- отправку почтового сообщения кому-либо с указаниями, как добраться, и информацией об этом ресторане ("совместно использовать");
- показ местоположения и указаний, как добраться до этого ресторана, на карте ("показать на карте");
- сохранение личных заметок об этом ресторане ("мои заметки").
[0103] Как показано в примере по Фиг.2, в одном варианте осуществления, помощник 1002 включает в себя интеллектуальные средства, помимо простых приложений управления базами данных, такие как, например:
- обработка формулировки намерения на естественном языке 101B, а не просто ключевых слов;
- логический вывод семантического намерения из этого языкового ввода, к примеру, интерпретация "места с итальянской едой" как "итальянские рестораны";
- операционализация семантического намерения в стратегию использования онлайновых служб и выполнение этой стратегии от имени пользователя (например, операционализация желания романтичного места в стратегию проверки онлайновых обзорных web-узлов на предмет обзоров, которые описывают место как "романтичное").
Компоненты интеллектуального автоматизированного помощника
[0104] Согласно различным вариантам осуществления, интеллектуальный автоматизированный помощник 1002 может включать в себя множество различных типов компонентов, устройств, модулей, процессов, системы и т.п., которые, например, могут быть реализованы и/или конкретизированы через использование аппаратных средств и/или комбинации аппаратных средств и программного обеспечения. Например, как проиллюстрировано в примерном варианте осуществления по Фиг.1, помощник 1002 может включать в себя одно или более из следующих типов систем, компонентов, устройств, процессов и т.п. (или комбинаций вышеозначенного):
- одна или более активных онтологий 1050;
- компонент(ы) 1094 активного извлечения ввода (может включать в себя клиентскую часть 1094a и серверную часть 1094b);
- компонент(ы) 1052 кратковременного персонального запоминающего устройства (может включать в себя главную версию 1052b и кэш 1052a);
- компонент(ы) 1054 долговременного персонального запоминающего устройства (может включать в себя главную версию 1052b и кэш 1052a);
- компонент(ы) 1056 моделей предметных областей;
- компонент(ы) 1058 словаря (может включать в себя полный словарь 1058b и поднабор 1058a);
- компонент(ы) 1060 модуля(ей) распознавания языковых конструкций (может включать в себя полную библиотеку 1060b и поднабор 1560a);
- компонент(ы) 1070 языкового интерпретатора;
- база(ы) 1072 данных объектов предметной области;
- компонент(ы) 1080 процессора потока диалогов;
- компонент(ы) 1082 оркестровки служб;
- компонент(ы) 1084 служб;
- компонент(ы) 1086 моделей потока задач;
- компонент(ы) 1087 моделей потока диалогов;
- компонент(ы) 1088 моделей служб;
- компонент(ы) 1090 процессора вывода.
[0105] Как описано в связи с Фиг.7, в определенных клиент-серверных вариантах осуществления, некоторые или все эти компоненты могут быть распределены между клиентом 1304 и сервером 1340.
[0106] В целях иллюстрации, далее более подробно описывается, по меньшей мере, часть различных типов компонентов конкретного примерного варианта осуществления интеллектуального автоматизированного помощника 1002 в отношении примерного варианта осуществления интеллектуального автоматизированного помощника 1002 по Фиг.1.
Активные онтологии 1050
[0107] Активные онтологии 1050 служат в качестве унифицирующей инфраструктуры, которая интегрирует модели, компоненты и/или данные из других частей вариантов осуществления интеллектуальных автоматизированных помощников 1002. В области техники информатики, онтологии предоставляют структуры для представления данных и знаний, такие как классы/типы, отношения, атрибуты/свойства и их конкретизация в экземплярах. Онтологии используются, например, чтобы компоновать модели данных и знаний. В некоторых вариантах осуществления интеллектуальной автоматизированной системы 1002, онтологии являются частью инфраструктуры моделирования, в которой можно компоновать модели, к примеру, модели предметных областей.
[0108] В контексте настоящего изобретения "активная онтология" 1050 также может служить в качестве среды выполнения, в которой различные обрабатывающие элементы размещаются онтологическим способом (например, при наличии различных атрибутов и отношений с другими обрабатывающими элементами). Эти обрабатывающие элементы выполняют, по меньшей мере, некоторые задачи интеллектуального автоматизированного помощника 1002. Может предоставляться любое число активных онтологий 1050.
[0109] По меньшей мере, в одном варианте осуществления, активные онтологии 1050 могут быть выполнены с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
• Выполнение функций среды моделирования и разработки, интегрирующей модели и данные из различных компонентов моделей и данных, включающих в себя, но не только:
- модели 1056 предметных областей
- словарь 1058
- базы 1072 данных объектов предметной области
- модели 1086 потока задач
- модели 1087 потока диалогов
- модели 1088 характеристик служб
• Выполнение функций среды моделирования данных, в которой могут работать инструментальные средства редактирования на основе онтологии, чтобы разрабатывать новые модели, структуры данных, схемы и представления базы данных.
• Выполнение функций среды выполнения вживую, конкретизирующей значения для элементов моделей предметной области 1056, задач 1086 и/или диалогов 1087, модулей распознавания языковых конструкций и/или словаря 1058, и конкретную для пользователя информацию, к примеру, находящуюся в кратковременном персональном запоминающем устройстве 1052, долговременном персональном запоминающем устройстве 1054 и/или в результатах оркестровки 1182 служб. Например, некоторые узлы активной онтологии могут соответствовать концептам предметной области, таким как ресторан и его свойство "название ресторана". В ходе выполнения вживую, эти узлы активной онтологии могут быть конкретизированы с помощью идентификационных данных конкретного объекта ресторана и его названия, а также того, как его название соответствует словам при произнесении ввода на естественном языке. Таким образом, в этом варианте осуществления, активная онтология служит как в качестве среды моделирования, указывающей концепт, что рестораны являются объектами с идентификационными данными, которые имеют названия, так и для сохранения динамических связей этих моделирующих узлов с данными из баз данных объектов и грамматического анализа естественного языка.
• Предоставление возможности связи и координации между компонентами и обрабатывающими элементами интеллектуального автоматизированного помощника, такими как, например, одно или более из следующего (или комбинации вышеозначенного):
- компонент(ы) 1094 активного извлечения ввода
- компонент(ы) 1070 языкового интерпретатора
- компонент(ы) 1080 процессора потока диалогов
- компонент(ы) 1082 оркестровки служб
- компонент(ы) 1084 служб
[0110] В одном варианте осуществления, по меньшей мере, часть функций, операций, действий и/или других признаков активных онтологий 1050, описанных в данном документе, могут быть реализованы, по меньшей мере, частично, с использованием различных способов и аппаратных систем, описанных в заявке на патент (США), порядковый номер 11/518292, озаглавленной "Method and Apparatus for Building the Intelligent Automated Assistant", поданной 8 сентября 2006 года.
[0111] По меньшей мере, в одном варианте осуществления, данный экземпляр активной онтологии 1050 может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством активных онтологий 1050, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- статические данные, которые доступны из одного или более компонентов интеллектуального автоматизированного помощника 1002;
- данные, которые динамически конкретизируются в расчете на пользовательский сеанс, например, но не только, поддержание состояния конкретных для пользователя вводов и выводов, передаваемых между компонентами интеллектуального автоматизированного помощника 1002, содержимое кратковременного персонального запоминающего устройства, логические выводы, сделанные из предыдущих состояний пользовательского сеанса, и т.п.
[0112] Таким образом, активные онтологии 1050 используются для того, чтобы унифицировать элементы различных компонентов в интеллектуальном автоматизированном помощнике 1002. Активная онтология 1050 дает возможность автору, проектировщику или разработчику системы интегрировать компоненты, так что элементы одного компонента идентифицируются с помощью элементов других компонентов. Автор, проектировщик или разработчик системы тем самым может комбинировать и интегрировать компоненты более простым образом.
[0113] Ссылаясь теперь на Фиг.8, показан пример фрагмента активной онтологии 1050 согласно одному варианту осуществления. Этот пример имеет намерение помогать иллюстрировать некоторые из различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством активных онтологий 1050.
[0114] Активная онтология 1050 на Фиг.8 включает в себя представления ресторана и мероприятия с приемом пищи. В этом примере, ресторан является концептом 1610 с такими свойствами, как его название 1612, предлагаемые кухни 1615 и его местоположение 1613, который, в свою очередь, может моделироваться в качестве структурного узла со свойствами для фактического адреса 1614. Концепт мероприятия с приемом пищи может моделироваться в качестве узла 1616, включающего в себя званый ужин 1617 в ресторане (который имеет количество 1619 участников) и период 1618 времени.
- Активные онтологии могут включать в себя и/или ссылаться на модели 1056 предметных областей. Например, Фиг.8 иллюстрирует модель 1622 предметной области ужинов в ресторанах, связанную с концептом 1610 ресторана и концептом 1616 мероприятия с приемом пищи. В этом случае, активная онтология 1050 включает в себя модель 1622 предметной области ужинов в ресторанах; в частности, по меньшей мере, два узла активной онтологии 1050, а именно, ресторан 1610 и мероприятие 1616 с приемом пищи, также включаются и/или указываются ссылкой в модели 1622 предметной области ужинов в ресторанах. Эта модель предметной области представляет, в числе прочего, такую идею, что званый ужин в ресторане заключает в себе мероприятие с приемом пищи, которое происходит в ресторанах. Узлы активной онтологии ресторан 1610 и мероприятие 1616 с приемом пищи также включаются и/или указываются ссылкой в других компонентах интеллектуального автоматизированного помощника, показанных посредством пунктирных линий на Фиг.8.
- Активные онтологии могут включать в себя и/или ссылаться на модели 1086 потока задач. Например, Фиг.8 иллюстрирует модель 1630 потока задач организации мероприятий, которая моделирует организацию мероприятий независимо от предметных областей, применяемых к зависящему от предметной области виду мероприятия: мероприятию 1616 с приемом пищи. Здесь, активная онтология 1050 включает в себя общую модель 1630 потока задач организации мероприятий, которая содержит узлы, представляющие мероприятия и другие концепты, участвующие в их организации. Активная онтология 1050 также включает в себя узел мероприятия 1616 с приемом пищи, который является конкретным видом мероприятия. В этом примере, мероприятие 1616 с приемом пищи включается или указывается ссылкой в модели 1622 предметной области и в модели 1630 потока задач, и обе эти модели включаются и/или указываются ссылкой в активной онтологии 1050. С другой стороны, мероприятие 1616 с приемом пищи является примером того, как активные онтологии могут унифицировать элементы различных компонентов, включенных и/или указываемых ссылкой в других компонентах интеллектуального автоматизированного помощника, показанных посредством пунктирных линий на Фиг.8.
- Активные онтологии могут включать в себя и/или ссылаться на модели 1087 потока диалогов. Например, Фиг.8 иллюстрирует модель 1642 потока диалогов для получения значений ограничений, требуемых для транзакции, конкретизированной в количестве участников званого вечера в виде ограничения, как представлено в концепте 1619. С другой стороны, активная онтология 1050 предоставляет инфраструктуру для связывания и унификации различных компонентов, к примеру, модели 1087 потока диалогов. В этом случае, модель 1642 потока диалогов имеет общий концепт ограничения, которое конкретизируется в этом конкретном примере как количество 1619 участников званого вечера в виде узла активной онтологии. Эта конкретная модель 1642 потока диалогов работает при абстракции ограничений, независимых от предметной области. Активная онтология 1050 представляет свойство 1619 количества участников званого вечера узла 1617 званого вечера, который связан с узлом 1616 мероприятия с приемом пищи. В этом варианте осуществления, интеллектуальный автоматизированный помощник 1002 использует активную онтологию 1050, чтобы унифицировать концепт ограничения в модели 1642 потока диалогов со свойством количества 1619 участников званого вечера в качестве части кластера узлов, представляющих концепт 1616 мероприятия с приемом пищи, который является частью модели 1622 предметной области для ужинов в ресторанах.
- Активные онтологии могут включать в себя и/или ссылаться на модели 1088 служб. Например, Фиг.8 иллюстрирует модель службы 1672 резервирования ресторана, ассоциированной с этапом потока диалогов для получения значений, требуемых для этой службы, чтобы выполнять транзакцию. В этом случае, модель 1672 служб для службы резервирования ресторана указывает, что резервирование требует значения для количества 1619 участников званого вечера (количества людей, сидящих за столиком, который нужно зарезервировать). Количество 1619 участников званого вечера в виде концепта, которое является частью активной онтологии 1050, также соединяется или связывается с общей моделью 1642 потока диалогов для запроса пользователя относительно ограничений для транзакции; в этом случае, количество участников званого вечера является требуемым ограничением для модели 1642 потока диалогов.
- Активные онтологии могут включать в себя и/или ссылаться на базы 1072 данных объектов предметной области. Например, Фиг.8 иллюстрирует базу данных объектов предметной области ресторанов 1652, ассоциированных с узлом 1610 ресторана в активной онтологии 1050. Активная онтология 1050 представляет общий концепт 1610 ресторана, который может быть использован посредством различных компонентов интеллектуального автоматизированного помощника 1002, и он конкретизируется посредством данных о конкретных ресторанах в базе 1652 данных ресторанов.
- Активные онтологии могут включать в себя и/или ссылаться на словарные базы 1058 данных. Например, Фиг.8 иллюстрирует словарную базу 1662 данных кухонь, к примеру, итальянскую, французскую и т.п., и слов, ассоциированных с каждой кухней, к примеру, "французская", "континентальная", "провинциальная" и т.п. Активная онтология 1050 включает в себя узел 1610 ресторана, который связан с узлом 1615 предлагаемых кухонь, который ассоциирован с представлением кухонь в базе 1662 данных кухонь. Конкретная запись в базе 1662 данных для кухни, к примеру, "французская", тем самым связана через активную онтологию 1050 в качестве экземпляра концепта 1615 предлагаемых кухонь.
- Активные онтологии могут включать в себя и/или ссылаться на любую базу данных, которая может преобразовываться в концепты или другие представления в онтологии 1050. Базы 1072 данных объектов предметной области и словарные базы 1058 данных являются просто двумя примерами того, как активная онтология 1050 может интегрировать базы данных друг с другом и с другими компонентами автоматизированного помощника 1002. Активные онтологии дают возможность автору, проектировщику или разработчику системы указывать нетривиальное преобразование между представлениями в базе данных и представлениями в онтологии 1050. Например, схема базы данных для базы 1652 данных ресторанов может представлять ресторан в качестве таблицы из строк и чисел или в качестве проекции от большей базы данных организаций или любого другого представления, подходящего для базы 1652 данных. В этой примерной активной онтологии 1050, ресторан 1610 является узлом концепта со свойствами и отношениями, организованными отлично от таблиц базы данных. В этом примере, узлы онтологии 1050 ассоциированы с элементами схем базы данных. Интеграция базы данных и онтологии 1050 предоставляет унифицированное представление для интерпретации и воздействия на конкретные записи данных в базах данных с точки зрения больших наборов моделей и данных в активной онтологии 1050. Например, слово "французская" может быть записью в базе 1662 данных кухонь. Поскольку в этом примере база 1662 данных интегрируется в активной онтологии 1050, это же слово "французская" также имеет интерпретацию как возможная предлагаемая кухня в ресторане, которая включается в организацию мероприятий с приемом пищи, и эта кухня служит в качестве ограничения, которое следует использовать при использовании служб резервирования ресторанов и т.д. Активные онтологии тем самым могут интегрировать базы данных в среду моделирования и выполнения, чтобы взаимодействовать с другими компонентами автоматизированного помощника 1002.
[0115] Как описано выше, активная онтология 1050 дает возможность автору, проектировщику или разработчику системы интегрировать компоненты; таким образом, в примере по Фиг.8, элементы компонента, такие как ограничение в модели 1642 потока диалогов могут быть идентифицированы с помощью элементов других компонентов, таких как обязательный параметр службы 1672 резервирования ресторана.
[0116] Активные онтологии 1050 могут быть осуществлены в качестве, например, конфигураций моделей, баз данных и компонентов, в которых взаимосвязи между моделями, базами данных и компонентами являются любым из следующего:
- отношение включения и/или импликация;
- взаимосвязь со ссылками и/или указателями;
- взаимодействие по API, как внутренним относительно программы, так и между программами.
[0117] Например, ссылаясь теперь на Фиг.9, показан пример альтернативного варианта осуществления системы 1002 на основе интеллектуального автоматизированного помощника, в которой компоненты моделей 1056 предметных областей, словаря 1058, модулей 1060 распознавания языковых конструкций, кратковременного персонального запоминающего устройства 1052 и долговременного персонального запоминающего устройства 1054 организуются в рамках общего контейнера, ассоциированного с активной онтологией 1050, а другие компоненты, такие как компонент 1094 активного извлечения ввода, языковой интерпретатор 1070 и процессор 1080 потока диалогов, ассоциированы с активной онтологией 1050 через взаимосвязи API.
Компонент(ы) 1094 активного извлечения ввода
[0118] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода (который, как описано выше, может быть реализован в автономной конфигурации или в конфигурации, включающей в себя как серверные, так и клиентские компоненты) может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
• Извлечение, упрощение и/или обработка ввода от пользователя либо из среды пользователя и/или информации относительно его потребности(ей) или запроса(ов). Например, если пользователь стремится найти ресторан, модуль извлечения ввода может получать информацию относительно ограничений или предпочтений пользователя по местоположению, времени, кухне, цене и т.д.
• Упрощение различных видов ввода из различных источников, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- ввод с клавиатур или из любого другого устройства ввода, которое формирует текст,
- ввод с клавиатур в пользовательских интерфейсах, которые предлагают динамические рекомендованные заполнения частичного ввода,
- ввод из систем голосового или речевого ввода,
- ввод из графических пользовательских интерфейсов (GUI), в которых пользователи щелкают, выбирают или иным образом непосредственно манипулируют графическими объектами, чтобы указывать варианты выбора,
- ввод из других приложений, которые формируют текст и отправляют его в автоматизированный помощник, включающих в себя электронную почту, обмен текстовыми сообщениями или другие платформы текстовой связи.
[0119] Посредством выполнения активного извлечения ввода помощник 1002 имеет возможность разрешать неоднозначность намерения на ранней фазе обработки ввода. Например, в варианте осуществления, в котором ввод предоставляется посредством речи, сигнал может отправляться на сервер 1340, на котором извлекаются слова, и выполняется семантическая интерпретация. Результаты такой семантической интерпретации затем могут быть использованы для того, чтобы управлять активным извлечением ввода, которое может предлагать пользователю альтернативные варианты слов, из которых следует выбирать на основе степени их семантического соответствия, а также фонетического соответствия.
[0120] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода активно, автоматически и динамически направляет пользователя в направлении вводов, на которые могут влиять одна или более служб, предлагаемых посредством вариантов осуществления помощника 1002. Ссылаясь теперь на Фиг.10, показана блок-схема последовательности операций, иллюстрирующая способ работы для компонентов 1094 активного извлечения ввода согласно одному варианту осуществления.
[0121] Процедура начинается на этапе 20. На этапе 21, помощник 1002 может предлагать интерфейсы на одном или более входных каналов. Например, пользовательский интерфейс может предлагать пользователю варианты говорить или печатать, или прикасаться на любой стадии разговорного взаимодействия. На этапе 22, пользователь выбирает входной канал посредством инициирования ввода в одной модальности, к примеру, нажатия кнопки, чтобы начинать запись речи или вызывать интерфейс для ввода с клавиатуры.
[0122] По меньшей мере, в одном варианте осуществления, помощник 1002 предлагает рекомендации по умолчанию для выбранной модальности 23. Иными словами, он предлагает варианты 24, которые являются релевантными в текущем контексте, до выполнения пользователем какого-либо ввода в этой модальности. Например, в модальности ввода текста, помощник 1002 может предлагать список общих слов, которые должны начинать текстовые запросы или команды, такие как, например, одно или более из следующего (или комбинации вышеозначенного): императивные глаголы (например, найти, купить, зарезервировать, получить, позвонить, проверить, составить расписание и т.п.), существительные (например, рестораны, фильмы, мероприятия, организации и т.п.) или варианты в стиле пунктов меню с названиями предметных областей дискурса (например, погода, спортивные состязания, новости и т.п.)
[0123] Если пользователь выбирает один из вариантов по умолчанию на этапе 25, и задано предпочтение для автозаполнения 30, процедура может сразу возвращаться. Это является аналогичным операции традиционного выбора пункта меню.
[0124] Тем не менее, начальный вариант может приниматься в качестве частичного ввода, или пользователь может начать осуществлять частичный ввод 26. В любой точке ввода, по меньшей мере, в одном варианте осуществления пользователь может выбирать указывать, что частичный ввод закончен 22, что приводит к возврату процедуры.
[0125] На этапе 28, последний ввод, выбранный или введенный, добавляется к кумулятивному вводу.
[0126] На этапе 29, система рекомендует следующие возможные вводы, которые являются релевантными, с учетом текущего ввода и других источников ограничений на то, что составляет релевантный и/или значимый ввод.
[0127] По меньшей мере, в одном варианте осуществления, источники ограничений на пользовательский ввод (например, которые используются на этапах 23 и 29) представляют собой одну или более из различных моделей и источников данных, которые могут быть включены в помощник 1002, что может включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- Словарь 1058. Например, могут быть рекомендованы слова или фразы, которые совпадают с текущим вводом. По меньшей мере, в одном варианте осуществления, словарь может быть ассоциирован с любым или одним или более узлов активных онтологий, моделей предметных областей, моделей задач, моделей диалогов и/или моделей служб.
- Модели 1056 предметных областей, которые могут ограничивать вводы, которые могут конкретизировать или иным образом быть согласованными с моделью предметной области. Например, по меньшей мере, в одном варианте осуществления, модели 1056 предметных областей могут быть использованы для того, чтобы рекомендовать концепты, отношения, свойства и/или экземпляры, которые, как предполагается, согласованы с текущим вводом.
- Модули 1060 распознавания языковых конструкций, которые могут быть использованы для того, чтобы распознавать идиомы, фразы, грамматические конструктивы или другие конструкции в текущем вводе, и могут быть использованы для того, чтобы рекомендовать заполнения, которые заполняют конструкцию.
- Базы 1072 данных объектов предметной области, которые могут быть использованы для того, чтобы рекомендовать возможные объекты в предметной области, которые совпадают с вводом (например, названия организаций, названия фильмов, названия мероприятий и т.п.).
- Кратковременное запоминающее устройство 1052, которое может быть использовано для того, чтобы согласовывать любой предшествующий ввод или часть предшествующего ввода и/или любое другое свойство либо факт о предыстории взаимодействия с пользователем. Например, частичный ввод может сопоставляться с городами, которые пользователь встречает в сеансе, будь то гипотетически (например, упомянуты в запросах) и/или физически (например, как определено из датчиков местоположения).
- По меньшей мере, в одном варианте осуществления, семантические перефразирования недавних вводов, запроса или результатов могут сопоставляться с текущим вводом. Например, если пользователь ранее выполнил запрос "живая музыка" и получил перечень концертов и затем напечатал "музыка" в среде активного извлечения ввода, рекомендации могут включать в себя "живая музыка" и/или "концерты".
- Долговременное персональное запоминающее устройство 1054, которое может быть использовано для того, чтобы рекомендовать совпадающие элементы из долговременного запоминающего устройства. Такие совпадающие элементы могут включать в себя, например, одно или более либо любую комбинацию следующего: объекты предметной области, которые сохранены (например, "любимые" рестораны, фильмы, театры, места проведения мероприятий и т.п.), элементы списка занятий, элементы списка, записи календаре, имена людей в списках контактов/адресных книгах, названия улиц или городов, упомянутые в списках контактов/адресных книгах, и т.п.
- Модели 1086 потока задач, которые могут быть использованы для того, чтобы рекомендовать вводы на основе следующих возможных этапов в потоке задач.
- Модели 1087 потока диалогов, которые могут быть использованы для того, чтобы рекомендовать вводы на основе следующих возможных этапов в потоке диалогов.
- Модели 1088 характеристик служб, которые могут быть использованы для того, чтобы рекомендовать возможные службы для использования по названию, категории, характеристике или любому другому свойству в модели. Например, пользователь может печатать часть названия предпочтительного обзорного web-узла, и помощник 1002 может рекомендовать команду заполнения для запроса этого обзорного web-узла на предмет обзора.
[0128] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода представляет пользователю разговорный интерфейс, например, интерфейс, в котором пользователь и помощник общаются посредством поочередного произнесения фраз в разговорной манере. Компонент(ы) 1094 активного извлечения ввода может быть выполнен с возможностью осуществлять и/или реализовывать различные типы разговорных интерфейсов.
[0129] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода может быть выполнен с возможностью осуществлять и/или реализовывать различные типы разговорных интерфейсов, в которых помощник 1002 использует ответвления разговора, чтобы запрашивать в виде подсказки информацию от пользователя согласно моделям диалогов. Модели диалогов могут представлять процедуру для проведения диалога, такую как, например, последовательность этапов, требуемых для того, чтобы извлекать информацию, необходимую для выполнения службы.
[0130] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода предлагает ограничения и указания пользователю в реальном времени в то время, когда пользователь находится в процессе ввода с клавиатуры, произнесения или иного создания ввода. Например, активное извлечение может направлять пользователя, чтобы печатать вводы текста, которые могут распознаваться посредством варианта осуществления помощника 1002 и/или которые могут обслуживаться посредством одной или более служб, предлагаемых посредством вариантов осуществления помощника 1002. Это является преимуществом по сравнению с пассивным ожиданием ввода без ограничений от пользователя, поскольку это дает возможность сосредоточения усилий пользователя на вводах, которые могут быть полезными, и/или это дает возможность вариантам осуществления помощника 1002 применять свои интерпретации ввода в реальном времени по мере того, как пользователь вводит его.
[0131] По меньшей мере, часть функций, операций, действий и/или других признаков активного извлечения ввода, описанных в данном документе, может быть реализована, по меньшей мере, частично, с использованием различных способов и аппаратных систем, описанных в заявке на патент (США), порядковый номер 11/518292, озаглавленной "Method and Apparatus for Building the Intelligent Automated Assistant", поданной 8 сентября 2006 года.
[0132] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1094 активного извлечения ввода могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.
[0133] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1094 активного извлечения ввода могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1094 активного извлечения ввода. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1094 активного извлечения ввода, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- Начало пользовательского сеанса. Например, когда пользовательский сеанс запускает приложение, которое является вариантом осуществления помощника 1002, интерфейс может предлагать возможность для пользователя инициировать ввод, например, посредством нажатия кнопки, чтобы инициировать систему речевого ввода, или щелчка текстового поля, чтобы инициировать сеанс ввода текста.
- Пользовательский ввод обнаружен.
- Когда помощник 1002 явно запрашивает в виде подсказки у пользователя ввод, как тогда, когда он запрашивает ответ на вопрос или предлагает меню из следующих этапов, из которых можно выбирать.
- Когда помощник 1002 помогает пользователю выполнять транзакцию и собирает данные для этой транзакции, например, заполнение формы.
[0134] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1094 активного извлечения ввода может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1094 активного извлечения ввода, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- база данных возможных слов, которые следует использовать в текстовом вводе;
- грамматика возможных фраз, которые следует использовать при произнесении текстового ввода;
- база данных возможных интерпретаций речевого ввода;
- база данных предыдущих вводов от пользователя или от других пользователей;
- данные из любой из различных моделей и источников данных, которые могут быть частью вариантов осуществления помощника 1002, которые могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- модели 1056 предметных областей;
- словарь 1058;
- модули 1060 распознавания языковых конструкций;
- базы 1072 данных объектов предметной области;
- кратковременное запоминающее устройство 1052;
- долговременное персональное запоминающее устройство 1054;
- модели 1086 потока задач;
- модели 1087 потока диалогов;
- модели 1088 характеристик служб.
[0135] Согласно различным вариантам осуществления, компонент 1094 активного извлечения ввода может применять процедуры активного извлечения, например, к одному или более из следующего (или к комбинациям вышеозначенного):
- печатаемый ввод;
- речевой ввод;
- ввод из графических пользовательских интерфейсов (GUI), включающий в себя жесты;
- ввод из рекомендаций, предлагаемых в диалоге; и
- события из вычислительных и/или очувствленных окружений.
Активное извлечение печатаемого ввода
[0136] Ссылаясь теперь на Фиг.11, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения печатаемого ввода согласно одному варианту осуществления.
[0137] Способ начинается 110. Помощник 1002 принимает 111 частичный ввод текста, например, через устройство 1206 ввода. Частичный ввод текста может включать в себя, например, символы, которые напечатаны к этому моменту в поле ввода текста. В любое время пользователь может указывать, что печатаемый ввод закончен 112, к примеру, посредством нажатия клавиши Enter. Если не закончен, формирователь рекомендаций формирует 114 варианты рекомендаций 116. Эти рекомендации могут быть синтаксическими, семантическими и/или другими видами рекомендаций на основе любого из источников информации или ограничений, описанных в данном документе. Если рекомендация выбирается 118, ввод преобразуется 117 так, что он включает в себя выбранную рекомендацию.
[0138] По меньшей мере, в одном варианте осуществления, рекомендации могут включать в себя расширения в текущий ввод. Например, рекомендацией для "отдых" может быть "рестораны".
[0139] По меньшей мере, в одном варианте осуществления, рекомендации могут включать в себя замены частей текущего ввода. Например, рекомендацией для "отдых" может быть "места, чтобы поесть".
[0140] По меньшей мере, в одном варианте осуществления, рекомендации могут включать в себя замену и перефразирование частей текущего ввода. Например, если текущим вводом является "найти рестораны в стиле", рекомендацией может быть "итальянский", и когда рекомендация выбирается, весь ввод может быть перезаписан как "найти итальянские рестораны".
[0141] По меньшей мере, в одном варианте осуществления, результирующий ввод, который возвращается, аннотируется 119, так что информация о том, какие варианты выбраны на этапе 118, сохраняется вместе с текстовым вводом. Это предоставляет возможность ассоциирования, например, семантических концептов или объектов, лежащих в основе строки, со строкой, когда она возвращается, что повышает точность последующей языковой интерпретации.
[0142] Ссылаясь теперь на Фиг.12-21, показаны снимки экрана, иллюстрирующие некоторые части некоторых процедур для активного извлечения печатаемого ввода согласно одному варианту осуществления. Снимки экрана иллюстрируют пример варианта осуществления помощника 1002, реализованного на смартфоне, таком как iPhone, предлагаемый компанией Apple Inc., Купертино, Калифорния. Ввод предоставляется в такое устройство через сенсорный экран, включающий в себя функциональность экранной клавиатуры. Специалисты в данной области техники должны признавать, что снимки экрана иллюстрируют вариант осуществления, который является просто примерным, и что технологии настоящего изобретения могут быть реализованы в других устройствах и с использованием других макетов и компоновок.
[0143] На Фиг.12, экран 1201 включает в себя высокоуровневый набор рекомендаций 1202, показанный, когда ввод не предоставлен в поле 1203. Это соответствует этапу 23 без ввода по Фиг.10, применяемому к этапу 114 по Фиг.11, когда нет ввода.
[0144] На Фиг.13, экран 1301 иллюстрирует пример использования словаря, чтобы предлагать рекомендованные заполнения 1303 частичного пользовательского ввода 1305, выполненного в поле 1203 с использованием экранной клавиатуры 1304. Эти рекомендованные заполнения 1303 могут быть частью функции 1094 активного извлечения ввода. Пользователь выполняет частичный пользовательский ввод 1305, включающий в себя строку "связь". Компонент 1058 словаря предоставляет преобразование этой строки в три различных вида экземпляров, которые перечисляются как рекомендованные заполнения 1303: фраза "общественные и локальные мероприятия" является категорией предметной области мероприятий; "сводка коммерческой информации" является категорией предметной области поиска местных организаций, и "общественный клуб Jewish" является названием экземпляра местных организаций. Компонент 1058 словаря может предоставлять поиск данных и управление пространствами имен, такими как эти. Пользователь может прикасаться к кнопке 1306 Go, чтобы указывать, что он закончил ввод; это инструктирует помощнику 1002 продолжать с заполненной текстовой строкой в качестве единицы пользовательского ввода.
[0145] На Фиг.14, экран 1401 иллюстрирует пример, в котором рекомендованные семантические заполнения 1303 для частичной строки "wh" 1305 включают в себя полные фразы с печатаемыми параметрами. Эти виды рекомендаций могут обеспечиваться посредством использования одной или более из различных моделей и источников ограничений по вводу, описанных в данном документе. Например, в одном варианте осуществления, показанном на Фиг.14, "что происходит в городе" является активным извлечением параметра положения для предметной области локальных мероприятий; "где находится название организации" является активным извлечением ограничения в виде названия организации для предметной области поиска местных организаций; "что демонстрируется в название места проведения мероприятий" является активным извлечением ограничения в виде названия места проведения мероприятий для предметной области локальных мероприятий; и "что идет в кинотеатре" является активным извлечением ограничения в виде названия кинотеатра для предметной области локальных мероприятий. Эти примеры иллюстрируют, что рекомендованные заполнения формируются посредством моделей, а не просто извлекаются из базы данных ранее введенных запросов.
[0146] На Фиг.15, экран 1501 иллюстрирует продолжение идентичного примера после того, как пользователь вводит дополнительный текст 1305 в поле 1203. Рекомендованные заполнения 1303 обновляются так, что они совпадают с дополнительным текстом 1305. В этом примере, использованы данные из базы 1072 данных объектов предметной области: места проведения мероприятий, название которых начинается с "f". Следует отметить, что это представляет собой значительно меньший и более семантически релевантный набор рекомендаций, чем все слова, которые начинаются с "f". С другой стороны, рекомендации формируются посредством применения модели, в этом случае модели предметной области, которая представляет локальные мероприятия как происходящие в местах проведения мероприятий, которые являются организациями с названиями. Рекомендации активно извлекают вводы, которые должны составлять потенциально значимые записи при использовании службы локальных мероприятий.
[0147] На Фиг.16, экран 1601 иллюстрирует продолжение идентичного примера после того, как пользователь выбрал одно из рекомендованных заполнений 1303. Активное извлечение продолжается посредством подсказки пользователю дополнительно указывать тип требуемой информации, здесь посредством представления определенного числа спецификаторов 1602, из которых пользователь может выбирать. В этом примере, эти спецификаторы формируются посредством моделей предметной области, потока задач и потока диалогов. Предметной областью являются локальные мероприятия, что включает в себя категории мероприятий, которые происходят в указанные даты в указанных местоположениях и имеют названия мероприятий и участников выступления. В этом варианте осуществления, тот факт, что эти пять вариантов предлагаются пользователю, формируется из модели потока диалогов, которая указывает, что пользователей следует запрашивать относительно ограничений, которые они еще не ввели, и из модели служб, которая указывает, что эти пять ограничений являются параметрами для служб предоставления перечня локальных мероприятий, доступных для помощника. Даже выбор предпочтительных фраз, которые следует использовать в качестве спецификаторов, к примеру, "по категориям" и "участвуют", формируется из словарных баз данных по предметной области.
[0148] На Фиг.17, экран 1701 иллюстрирует продолжение идентичного примера после того, как пользователь выбрал один из спецификаторов 1602.
[0149] На Фиг.18, экран 1801 иллюстрирует продолжение идентичного примера, в котором выбранный спецификатор 1602 добавлен в поле 1203, и представляются дополнительные спецификаторы 1602. Пользователь может выбирать один из спецификаторов 1602 и/или предоставлять дополнительный ввод текста через клавиатуру 1304.
[0150] На Фиг.19, экран 1901 иллюстрирует продолжение идентичного примера, в котором выбранный спецификатор 1602 добавлен в поле 1203, и представляются еще дополнительные спецификаторы 1602. В этом примере, ранее введенные ограничения не извлекаются активно избыточно.
[0151] На Фиг.20, экран 2001 иллюстрирует продолжение идентичного примера, в котором пользователь прикасается к кнопке 1306 Go. Ввод пользователя показывается в поле 2002, а сообщение показывается в поле 2003, предоставляя обратную связь пользователю в отношении запроса, выполняемого в ответ на ввод пользователя.
[0152] На Фиг.21, экран 2101 иллюстрирует продолжение идентичного примера, в котором результаты найдены. Сообщение показывается в поле 2102. Результаты 2103, включающие в себя элементы ввода, предоставляют возможность пользователю просматривать более подробную информацию, сохранять идентифицированное мероприятие, покупать билеты, добавлять заметки и т.п.
[0153] На одном экране 2101 и другие отображаемые экраны могут прокручиваться, предоставляя возможность пользователю прокручивать вверх, чтобы видеть экран 2001 или другие ранее представленные экраны, и вносить изменения в запрос при необходимости.
Активное извлечение речевого ввода
[0154] Ссылаясь теперь на Фиг.22, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения ввода для голосового или речевого ввода согласно одному варианту осуществления.
[0155] Способ начинается 221. Помощник 1002 принимает 121 голосовой или речевой ввод в форме звукового сигнала. Служба 122 преобразования речи в текст или процессор формирует набор вариантов 124 интерпретаций текста из звукового сигнала. В одном варианте осуществления, служба 122 преобразования речи в текст реализуется с использованием, например, модуля распознавания нюансов, предлагаемого компанией Nuance Communications, Inc., Burlington, MA.
[0156] В одном варианте осуществления, помощник 1002 использует статистические языковые модели, чтобы формировать варианты 124 интерпретаций текста для речевого ввода 121.
[0157] Помимо этого, в одном варианте осуществления, статистические языковые модели настраиваются, чтобы искать слова, названия и фразы, которые появляются в различных моделях помощника 1002, показанного на Фиг.8. Например, по меньшей мере, в одном варианте осуществления в статистические языковые модели предоставляются слова, названия и фразы из части или всего из следующего: модели 1056 предметных областей (например, слова и фразы, связанные с рестораном и мероприятиями с приемом пищи), модели 1086 потока задач (например, слова и фразы, связанные с организацией мероприятия), модели 1087 потока диалогов (например, слова и фразы, связанные с ограничениями, которые необходимы для того, чтобы собирать вводы для резервирования ресторана), базы 1072 данных объектов предметной области (например, названия ресторанов), словарные базы 1058 данных (например, названия кухонь), модели 1088 служб (например, названия поставщиков служб, такие как OpenTable), и/или любые слова, названия или фразы, ассоциированные с любым узлом активной онтологии 1050.
[0158] В одном варианте осуществления, статистические языковые модели также настраиваются, чтобы искать слова, названия и фразы из долговременного персонального запоминающего устройства 1054. Например, в статистические языковые модели может предоставляться текст из элементов списка занятий, элементов списка, личных заметок, записей календаре, имен людей в списках контактов/адресных книгах, адресов электронной почты, названий улиц или городов, упомянутых в списках контактов/адресных книгах, и т.п.
[0159] Компонент ранжирования анализирует варианты интерпретаций 124 и ранжирует 126 их согласно тому, насколько хорошо они соответствуют синтаксическим и/или семантическим моделям интеллектуального автоматизированного помощника 1002. Могут быть использованы любые источники ограничений на пользовательский ввод. Например, в одном варианте осуществления, помощник 1002 может ранжировать вывод интерпретатора для преобразования речи в текст согласно тому, насколько хорошо выполнен грамматический анализ интерпретаций в синтаксическом и/или семантическом смысле, модели предметной области, модели потока задач и/или модели диалогов и т.п.: он оценивает, насколько хорошо различные комбинации слов в интерпретациях текста 124 соответствуют концептам, отношениям, объектам и свойствам активной онтологии 1050 и ее ассоциированных моделей. Например, если служба 122 преобразования речи в текст формирует два варианта интерпретаций "итальянская еда на обед" и "итальянская обувь на обед", ранжирование посредством семантической релевантности 126 может ранжировать "итальянскую еду на обед" выше, если она лучше совпадает с узлами активной онтологии 1050 помощника 1002 (например, слова "итальянская", "еда" и "обед" совпадают с узлами в онтологии 1050, и они все соединяются посредством взаимосвязей в онтологии 1050, тогда как слово "обувь" не совпадает с онтологией 1050 или совпадает с узлом, который не является частью сети предметной области ужинов в ресторанах).
[0160] В различных вариантах осуществления, алгоритмы или процедуры, используемые посредством помощника 1002 для интерпретации вводов текста, включающие в себя любой вариант осуществления процедуры обработки естественного языка, показанной на Фиг.28, могут быть использованы для того, чтобы ранжировать и количественно оценивать варианты 124 интерпретаций текста, сформированные посредством службы 122 преобразования речи в текст.
[0161] В одном варианте осуществления, если компонент ранжирования 126 определяет 128, что интерпретация речи с наивысшим рангом из интерпретаций 124 ранжируется выше указанного порогового значения, интерпретация с наивысшим рангом может быть автоматически выбрана 130. Если ни одна из интерпретаций не ранжируется выше указанного порогового значения, возможные варианты интерпретаций речи 134 представляются 132 пользователю. Пользователь затем может выбирать 136 между отображаемыми вариантами выбора.
[0162] В различных вариантах осуществления, пользовательский выбор 136 между отображаемыми вариантами выбора может достигаться посредством любого режима ввода, включающего в себя, например, любой из режимов многомодального ввода, описанного в связи с Фиг.16. Такие режимы ввода включают в себя, без ограничения, активно извлекаемый печатаемый ввод 2610, активно извлекаемый речевой ввод 2620, активно представленный GUI для ввода 2640 и т.п. В одном варианте осуществления, пользователь может выбирать из вариантов 134 интерпретаций, например, посредством прикосновения или произнесения. В случае произнесения возможная интерпретация нового речевого ввода является сильно ограниченной посредством небольшого набора предлагаемых вариантов выбора 134. Например, если предлагается "Вы имели в виду итальянскую еду или итальянскую обувь?", пользователь может просто сказать "еда", и помощник может сопоставлять это с фразой "итальянская еда" и не получать путаницу с другими глобальными интерпретациями ввода.
[0163] Независимо от того, ввод выбирается 130 автоматически или выбирается 136 пользователем, результирующий ввод 138 возвращается. По меньшей мере, в одном варианте осуществления, возвращаемый ввод аннотируется 138, так что информация о том, какие варианты выбраны на этапе 136, сохраняется вместе с текстовым вводом. Это предоставляет возможность ассоциирования, например, семантических концептов или объектов, лежащих в основе строки, со строкой, когда она возвращается, что повышает точность последующей языковой интерпретации. Например, если "итальянская еда" предложена в качестве одного из вариантов 134 интерпретаций на основе семантической интерпретации Кухня=Итальянская еда, то машиночитаемая семантическая интерпретация может отправляться вместе с выбором пользователем строки "итальянская еда" в качестве аннотированного ввода текста 138.
[0164] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста формируются на основе интерпретаций речи, принимаемых в качестве вывода службы 122 преобразования речи в текст.
[0165] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста формируются посредством перефразирования интерпретаций речи с точки зрения их семантического значения. В некоторых вариантах осуществления, может быть несколько перефразирований идентичной интерпретации речи, рекомендующих различный смысл слова или альтернативы омонима. Например, если служба 122 преобразования речи в текст указывает "место для встречи", варианты интерпретаций, представленные пользователю, могут быть перефразированы в качестве "места для встречи (местные организации)" и "места для встречи (рестораны)".
[0166] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста включают в себя рекомендации корректировать подстроки.
[0167] По меньшей мере, в одном варианте осуществления, варианты 124 интерпретаций текста включают в себя рекомендации корректировать подстроки вариантов интерпретаций с использованием синтаксического и семантического анализа, как описано в данном документе.
[0168] По меньшей мере, в одном варианте осуществления, когда пользователь выбирает вариант интерпретации, он возвращается.
[0169] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы редактировать интерпретацию до того, как она возвращается.
[0170] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы продолжать дополнительный голосовой ввод до того, как ввод возвращается. Это предоставляет ему возможность инкрементно компоновать произнесение ввода, получая синтаксические и семантические коррекции, рекомендации и указания за одну итерацию.
[0171] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы переходить непосредственно от 136 к этапу 111 способа активного извлечения печатаемого ввода (описано выше в связи с Фиг.11). Это предоставляет ему возможность перемежать печатаемый и произносимый ввод, получая синтаксические и семантические коррекции, рекомендации и указания на одном этапе.
[0172] По меньшей мере, в одном варианте осуществления, пользователю предлагается интерфейс, чтобы переходить непосредственно от этапа 111 варианта осуществления активного извлечения печатаемого ввода к варианту осуществления активного извлечения речевого ввода. Это предоставляет ему возможность перемежать печатаемый и произносимый ввод, получая синтаксические и семантические коррекции, рекомендации и указания на одном этапе.
Активное извлечение ввода на основе GUI
[0173] Ссылаясь теперь на Фиг.23, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения ввода для ввода на основе GUI согласно одному варианту осуществления.
[0174] Способ начинается 140. Помощник 1002 представляет 141 графический пользовательский интерфейс (GUI) в устройстве 1207 вывода, который может включать в себя, например, ссылки и кнопки. Пользователь взаимодействует 142, по меньшей мере, с одним GUI-элементом. Данные 144 принимаются и преобразуются 146 в универсальный формат. Преобразованные данные затем возвращаются.
[0175] По меньшей мере, в одном варианте осуществления, некоторые элементы GUI формируются динамически из моделей активной онтологии, а не записываются в компьютерную программу. Например, помощник 1002 может предлагать набор ограничений, чтобы направлять службу резервирования ресторана в качестве областей для прикосновения на экране, причем каждая область представляет название ограничения и/или значение. Например, экран может иметь строки динамически сформированного GUI-макета с областями для ограничений по кухне, местоположению и диапазону цен. Если модели активной онтологии изменяются, то GUI-экран должен автоматически изменяться без перепрограммирования.
Активное извлечение ввода рекомендаций по диалогу
[0176] Фиг.24 является блок-схемой последовательности операций, иллюстрирующей способ для активного извлечения ввода на уровне потока диалогов согласно одному варианту осуществления. Помощник 1002 рекомендует 151 возможные ответы 152. Пользователь выбирает 154 рекомендованный ответ. Принимаемый ввод преобразуется 154 в универсальный формат. Преобразованные данные затем возвращаются.
[0177] По меньшей мере, в одном варианте осуществления, рекомендации, предлагаемые на этапе 151, предлагаются в качестве последующих этапов в поток диалогов и/или задач.
[0178] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы уточнять запрос, например, с использованием параметров из модели предметной области и/или задач. Например, может быть предложено изменять допущенное местоположение или время запроса.
[0179] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы выбирать между неоднозначными альтернативными интерпретациями, предоставленными посредством процедуры или компонента языковой интерпретации.
[0180] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы выбирать между неоднозначными альтернативными интерпретациями, предоставленными посредством процедуры или компонента языковой интерпретации.
[0181] По меньшей мере, в одном варианте осуществления, рекомендации предлагают варианты, чтобы выбирать между следующими этапами в ассоциированной с потоком обработке модели 1087 потока диалогов. Например, модель 1087 потока диалогов может рекомендовать, чтобы после сбора ограничений для одной предметной области (например, ужина в ресторане) помощник 1002 рекомендовал другие связанные предметные области (например, ближайший фильм).
Активный мониторинг релевантных событий
[0182] По меньшей мере, в одном варианте осуществления, асинхронные события могут обрабатываться в качестве вводов аналогично другим модальностям активного извлекаемого ввода. Таким образом, такие события могут предоставляться в качестве вводов в помощник 1002. После интерпретации, такие события могут обрабатываться способом, аналогичным любому другому вводу.
[0183] Например, изменение статуса рейса может инициировать отправку оповещающего уведомления пользователю. Если рейс указывается как запаздывающий, помощник 1002 может продолжать диалог посредством представления альтернативных рейсов, формирования других рекомендаций и т.п. на основе обнаруженного события.
[0184] Такие события могут иметь любой тип. Например, помощник 1002 может обнаруживать то, что пользователь просто вернулся домой или отклонился (от указанного маршрута), или то, что курс акций достигает порогового значения, или то, что начинается телешоу, которое интересно пользователю, или то, что интересующий музыкант совершает турне в данном районе. В любом из этих случаев, помощник 1002 может продолжать диалог практически идентично тому, как если сам пользователь инициирует запрос. В одном варианте осуществления, события могут быть основаны даже на данных, предоставляемых из других устройств, например, чтобы сказать пользователю, когда коллега вернулся с обеда (устройство коллеги может передавать такое событие в устройство пользователя, и в этот момент времени помощник 1002, установленный в устройстве пользователя, реагирует соответствующим образом).
[0185] В одном варианте осуществления, события могут быть уведомлениями или оповещениями из календаря, часов, приложения работы с напоминаниями или со списком занятий. Например, оповещение из приложения для работы с календарем относительно даты ужина может инициировать диалог с помощником 1002 относительно встречи на ужине в ресторане. Диалог может продолжаться, как если пользователь только что произнес или напечатал информацию относительно предстоящего ужина в ресторане, к примеру, "ужин на двоих в Сан-Франциско".
[0186] В одном варианте осуществления, контекст возможного триггера 162 по событиям может включать в себя информацию о людях, местах, временах и другие данные. Эти данные могут быть использованы в качестве части ввода в помощник 1002, который следует использовать на различных этапах обработки.
[0187] В одном варианте осуществления, эти данные из контекста триггера 162 по событиям могут быть использованы для того, чтобы разрешать неоднозначность речевых вводов или вводов текста от пользователя. Например, если оповещение относительно календарного мероприятия включает в себя имя человека, приглашенного на мероприятие, эта информация может помогать разрешать неоднозначность ввода, который может сопоставлять несколько человек с идентичным или аналогичным именем.
[0188] Ссылаясь теперь на Фиг.25, показана блок-схема последовательности операций, иллюстрирующая способ для активного мониторинга релевантных событий согласно одному варианту осуществления. В этом примере, события триггера по событиям являются наборами ввода 162. Помощник 1002 отслеживает на предмет 161 таких событий. Обнаруженные события могут фильтроваться и сортироваться 164 для семантической релевантности с использованием моделей, данных и информации, доступной из других компонентов в интеллектуальном автоматизированном помощнике 1002. Например, для события, которое сообщает изменение в статусе рейса, может предоставляться более высокая релевантность, если записи кратковременного или долговременного запоминающего устройства для пользователя указывают, что пользователь находится на этом рейсе и/или выполняет запрос о нем в помощник 1002. Эта сортировка и фильтрация затем может представлять только главные события для обзора пользователем, который затем может выбирать одно или более из них и воздействовать на них.
[0189] Данные событий преобразуются 166 в универсальный формат ввода и возвращаются.
[0190] По меньшей мере, в одном варианте осуществления, помощник 1002 может заранее предлагать службы, ассоциированные с событиями, которые рекомендованы для внимания пользователя. Например, если оповещение по статусу рейса указывает, что рейс может быть отменен, помощник 1002 может рекомендовать пользователю поток задач для повторного планирования маршрута или заказа отеля.
Пример компонента(ов) извлечения ввода
[0191] Следующий пример имеет намерение помогать иллюстрировать некоторые из различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) 1094 активного извлечения ввода.
Пример: Заполнение команды (что пользователь может сказать помощнику 1002?)
[0192] Пользователю отображается поле ввода текста с общей инструкцией, чтобы ввести "Чем хотите заняться?" В зависимости от контекста и пользовательского ввода, предоставляется любой из нескольких ответов системы. Примеры показаны ниже.
Случай: Нулевой ввод
Пользовательский ввод
Ответ системы
Комментарий
При пустом поле и отсутствии диалогового контекста, печатание вопроса или пробела или отсутствие ввода в течение некоторого периода времени.|
- Найти рестораны, отели, фильмы- Заказать столик, комнату, место, ...- Заказать еду, цветы, ...- Купить билет, книгу, DVD, ...- Составить расписание для встречи, мероприятия, ...- Напомнить о занятии, ...- Пояснить результаты
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.
Случай: Ввод первого слова
Пользовательский ввод
Ответ системы
Комментарий
При пустом диалоговом контексте, если пользователь печатает первую букву какой-либо команды, она рекомендуется. Например,F|
- Найти рестораны, отели, фильмы-
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.
Случай: Ввод ключевого слова
Пользовательский ввод
Ответ системы
Комментарий
При пустом диалоговом контексте, если пользователь печатает первые две буквы какого-либо ключевого слова, оно рекомендуется, как и команда. Например,Re|
- Напомнить о занятии, ...- Найти рестораны по местоположению, кухне-
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.
Случай: Подсказка для аргументов
Пользовательский ввод
Ответ системы
Комментарий
Пользователь ввел или выбрал "командный" глагол и больше ничего.Например,Find_ | (Найти)
- рестораны по местоположению, кухне- отели по местоположению, доступности, ...- фильмы по местоположению, жанру, ...- название места
Не только предлагается класс выбора, но и выдается совет по вариантам ограничений. Следует отметить, что название места является просто строкой с подсказкой и не должно вставлять текст.
Случай: Рекомендация критериев
Пользовательский ввод
Ответ системы
Комментарий
Пользователь уже ввел достаточно для того, чтобы устанавливать задачу и предметную область, и теперь запрашивается в виде подсказки на предмет ограничений по порядку.
- в городе, почтовый индекс- около дома, офиса, название места- название ресторана с названием
Черный текст вставляется в поле ввода. Курсивный текст представляет собой дальнейшие рекомендации после того, как текст вставлен.
Find restaurants_ | (Найти рестораны)
-
Случай: Добавление критериев
Пользовательский ввод
Ответ системы
Комментарий
Пользователь произнес "в" и теперь запрашивается в виде подсказки на предмет местоположенийFind restaurants in_ | (Найти рестораны в)
- город, почтовый индекс- Пало-Альто, Калифорния- Менло-Парк, Калифорния
Пока он не введет следующее слово, рекомендации являются строкой с подсказкой относительно того, что печатать. Места являются городами из персонального запоминающего устройства.
Пользователь произнес "около" и теперь запрашивается в виде подсказки на предмет местоположенийFind restaurants near_ | (Найти рестораны около)
- моего дома- моей работы- Пало-Альто, Калифорния- Менло-Парк, Калифорния
Места являются одним или более мест из персонального запоминающего устройства.
Случай: Добавление местоположения или других ограничений
Пользовательский ввод
Ответ системы
Комментарий
Find restaurants in Palo Alto_ | (Найти рестораны в Пало-Альто)
- предлагающие тип блюд или кухню- с доступностью сегодня вечером, завтра, ...- описанные как романтичные, с хорошим обслуживанием
Строка с подсказкой для других ограничений
Find restaurants in Palo Alto with
- сегодня вечером- завтра
19:00 и 21:00 - это наши
availability_ | (Найти рестораны в Пало-Альто с доступностью)
- в 19:00- в 21:00- в другое время или дату
рекомендации на основе текущего времени
Случай: Начало с ограничения, неизвестной задачи или предметной области
Пользователь-ский ввод
Ответ системы
Комментарий
romantic_ | (романтичный)
- рестораны по местоположению, кухне, ...- отели по местоположению, доступности, ...- фильмы по местоположению, жанру, ...-
Значение ограничения из онтологии говорит Вам, какие классы выбора следует использовать.
comedy_ | (комедия)
- фильмы по местоположению, жанру, ...- мероприятия по местоположению, ...- клубы по местоположению
"Комедия" является значением ограничения для жанра в фильмах, жанра в мероприятиях, а "комедийные клубы" являются категорией локального каталога организаций
Пример: Заполнение названия
[0193] Здесь, пользователь напечатал некоторый текст без подтверждения какой-либо из команд, или он просто дополняет команду с названием объекта. Система может пытаться заполнять названия в зависимости от контекста. Она также разрешает неоднозначность предметной области.
Случай: слова без контекста
Пользовательский ввод
Ответ системы
Комментарий
il for
- Il Fornaio (ресторан)- Ill Forgotten Gains (фильм)
Может требовать поиска по названию объекта. Следует отметить многословное заполнение. Показ предметной области в качестве рекомендации.
tom cruise (том круз)
- фильмы
Может требовать поиска по названию объекта.
romantic (романтичный)
- фильмы- рестораны
Только на основе онтологии
Случай: название с контекстом
Пользовательский ввод
Ответ системы
Комментарий
Find restaurants il for (Найти рестораны il for)
- Il Fornaio (ресторан)-
Может требовать поиска по названию объекта. Использует класс выбора и контекст местоположения из текущих и предыдущих запросов, чтобы ограничивать заполнение. Показ предметной области в качестве рекомендации.
tom cruise (том круз)
- фильмы
Может требовать поиска по названию объекта.
Find movies rom (Найти фильмы rom)
- романтичные- Римские каникулы (фильм)
Только на основе онтологии
g-rated (с рейтингом G)
- фильмы
Пример: Выбор значений из набора
[0194] Здесь, пользователь отвечает на системный запрос, чтобы вводить значение для конкретного параметра, такого как местоположение, время, кухня или жанр. Пользователь может либо выбирать из списка, либо вводить значение. По мере того, как он печатает, совпадающие элементы из списка показываются как варианты. Примеры показаны ниже.
Случай: выбор valueclass
Пользовательский ввод
Ответ системы
Комментарий
Restaurants serving (Рестораны, предлагающие)
- гамбургеры- мороженое- хот-доги
Пользователь может напечатать что-либо еще и обязательно не должен выбирать из меню.
Restaurants serving h (Рестораны, предлагающие h)
- гамбургеры- хот-доги- острый соус
Movies playing (Фильмы, идущие)
- сегодня- сегодня вечером- в пятницу вечером
Пример: Многократное использование предыдущих команд
[0195] Предыдущие запросы также являются вариантами, которые следует заполнять в интерфейсе автозаполнения. Они могут просто сопоставляться как строки (когда поле ввода является пустым, и нет известных ограничений), или они могут рекомендоваться как релевантные в определенных ситуациях.
Случай: заполнение предыдущих запросов
Пользовательский ввод
Ответ системы
Комментарий
Ital
- итальянские рестораны (обычное заполнение)
Использование строкового
- фильмы с итальянскими актерами в главной роли (недавний запрос)
совпадения, чтобы извлекать предыдущие запросы.
Lunch (Обед)
- закусочные, предлагающие обеды в marin (недавний запрос)- купить книгу "Naked lunch"
Пример: Извлечение элементов персонального запоминающего устройства
[0196] Помощник 1002 может запоминать определенные мероприятия и/или объекты в персональном запоминающем устройстве, ассоциированном с пользователем. Автозаполнение может быть выполнено на основе таких запомненных элементов. Примеры приведены ниже.
Случай: заполнение по мероприятиям и объектам в персональном запоминающем устройстве
Пользовательский ввод
Ответ системы
Комментарий
Mary
- обед с Mary в субботу (из My Events (Мои мероприятия))- фильмы с названием "Something about Mary"
Lunch (Обед)
- обед с Mary в субботу (из My Events (Мои мероприятия))- купить книгу "Naked lunch" (из My Todos (Мои занятия))
Hob
- Ресторан Hobee в Пало-Альто (из My Restaurants (Мои рестораны))
Активное извлечение многомодального ввода
[0197] По меньшей мере, в одном варианте осуществления, компонент(ы) 1094 активного извлечения ввода может обрабатывать ввод из множества модальностей ввода. По меньшей мере, одна модальность может быть реализована с процедурой активного извлечения ввода, которая пользуется преимуществами конкретных видов вводов и способов для выбора из предлагаемых вариантов. Как описано в данном документе, это могут быть варианты осуществления процедур для активного извлечения ввода для ввода текста, речевого ввода, ввода на основе GUI, ввода в контексте диалога и/или ввода, являющегося результатом триггеров по событиям.
[0198] По меньшей мере, в одном варианте осуществления, для одного экземпляра интеллектуального автоматизированного помощника 1002, может быть поддержка одного или более (или любой комбинации) из печатаемого ввода, речевого ввода, GUI-ввода, диалогового ввода и/или ввода мероприятий.
[0199] Ссылаясь теперь на Фиг.26, показана блок-схема последовательности операций, иллюстрирующая способ для активного извлечения многомодального ввода согласно одному варианту осуществления. Способ начинается 100. Вводы могут быть приняты одновременно из одной или более либо любой комбинации модальностей ввода в любой последовательности. Таким образом, способ включает в себя активное извлечение печатаемого ввода 2610, речевого ввода 2620, ввода 2640 на основе GUI, ввода 2650 в контексте диалога и/или ввода 2660, являющегося результатом триггеров по событиям. Любые или все из этих источников ввода унифицируются в унифицированный формат 2690 ввода и возвращаются. Унифицированный формат 2690 ввода предоставляет возможность разработки и работы других компонентов интеллектуального автоматизированного помощника 1002 независимо от конкретной модальности ввода.
[0200] Рекомендация активных указаний для нескольких модальностей и уровней предоставляет ограничение и указания по вводу за рамками ограничений и указаний, доступных для изолированных модальностей. Например, виды рекомендаций, предлагаемых для того, чтобы выбирать между этапами речи, текста и диалога, являются независимыми, так что их комбинация является значительным усовершенствованием по сравнению с добавлением технологий активного извлечения в отдельные модальности или уровни.
[0201] Комбинирование нескольких источников ограничений, как описано в данном документе (синтаксический/лингвистический, словарь, базы данных объектов, модели предметных областей, модели задач, модели служб и т.п.), и нескольких мест, в которых эти ограничения могут активно применяться (речь, текст, GUI, диалог и асинхронные события), предоставляет новый уровень функциональности для человеко-машинного взаимодействия.
Компонент(ы) 1056 моделей предметных областей
[0202] Компонент(ы) моделей 1056 предметных областей включает в себя представления концептов, объектов, отношений, свойств и экземпляров предметной области. Например, модель 1622 предметной области ужинов в ресторанах может включать в себя концепт ресторана в качестве организации с названием и адресом и телефонным номером, концепт мероприятия с приемом пищи с количеством участников званого вечера, а также дату и время, ассоциированные с рестораном.
[0203] По меньшей мере, в одном варианте осуществления, компонент(ы) 1056 моделей предметных областей помощника 1002 может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Компонент(ы) 1056 модели предметной области может быть использован посредством автоматизированного помощника 1002 для нескольких процессов, включающих в себя: извлечение ввода 100, интерпретацию естественного языка 200, координацию для служб 400 и формирование вывода 600.
- Компонент(ы) 1056 модели предметной области может предоставлять списки слов, которые могут совпадать с концептом предметной области или объектом, к примеру, названия ресторанов, которые могут использоваться для активного извлечения ввода 100 и обработки естественного языка 200.
- Компонент(ы) 1056 модели предметной области может классифицировать варианты слов в процессах, например, чтобы определять то, что слово является названием ресторана.
- Компонент(ы) 1056 модели предметной области может показывать взаимосвязь между частичной информацией для интерпретации естественного языка, например, что кухня может быть ассоциирована с коммерческими организациями (например, "местная мексиканская еда" может быть интерпретировано как "найти рестораны со стилем= мексиканский", и этот логический вывод является возможным вследствие информации в модели 1056 предметной области).
- Компонент(ы) 1056 модели предметной области может организовывать информацию о службах, используемых в оркестровке 1082 служб, например, что конкретная web-служба может предоставлять обзоры ресторанов.
- Компонент(ы) 1056 модели предметной области может предоставлять информацию для формирования перефразирований на естественном языке и другого форматирования вывода, например, посредством предоставления канонических способов описания концептов, отношений, свойств и экземпляров.
[0204] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1056 моделей предметных областей могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1056 моделей предметных областей могут быть выполнены, реализованы и/или инициированы посредством одного или более следующих типов систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинаций вышеозначенного):
- Компонент(ы) 1056 моделей предметных областей может быть реализован как структуры данных, которые представляют концепты, отношения, свойства и экземпляры. Эти структуры данных могут быть сохранены в запоминающем устройстве, файлах или базах данных.
- Доступ к компоненту(ам) 1056 модели предметной области может быть реализован через прямые API, сетевые API, интерфейсы запросов к базе данных и т.п.
- Создание и сопровождение компонента(ов) 1056 моделей предметных областей может осуществляться, например, через прямое редактирование файлов, транзакции базы данных и/или с помощью инструментальных средств редактирования моделей предметной области.
- Компонент(ы) 1056 моделей предметных областей может быть реализован как часть или в ассоциации с активными онтологиями 1050, которые комбинируют модели с конкретизациями моделей для серверов и пользователей.
[0205] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1056 моделей предметных областей могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1056 моделей предметных областей. Например, инициирование или начало реализации одного или более различных подпроцессов, или экземпляры компонента(ов) 1056 моделей предметных областей может быть инициировано, когда требуется информация модели предметной области, в том числе в ходе извлечения ввода, интерпретации ввода, идентификации задач и предметных областей, обработки естественного языка, оркестровки служб и/или форматирования вывода для пользователей.
[0206] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1056 моделей предметных областей может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Например, данные из компонента(ов) 1056 модели предметной области могут быть ассоциированы с другими компонентами моделирования на основе моделей, включающими в себя словарь 1058, модули 1060 распознавания языковых конструкций, модели 1087 потока диалогов, модели 1086 потока задач, модели 1088 характеристик служб, базы 1072 данных объектов предметной области и т.п. Например, организации в базах 1072 данных объектов предметной области, которые классифицируются как рестораны, могут быть известными посредством идентификаторов типов, которые поддерживаются в компонентах модели предметной области ужинов в ресторанах.
Пример компонента(ов) моделей предметных областей
[0207] Ссылаясь теперь на Фиг.27, показан набор снимков экрана, иллюстрирующих пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) 1056 моделей предметных областей согласно одному варианту осуществления.
[0208] По меньшей мере, в одном варианте осуществления, компонент(ы) 1056 моделей предметных областей является унифицирующим представлением данных, которое обеспечивает представление информации, показанной на экранах 103A и 103B, о ресторане, которая комбинирует данные из нескольких различных источников данных и служб и которая включает в себя, например: название, адрес, категории организаций, телефонный номер, идентификатор для сохранения в долговременное персональное запоминающее устройство, идентификатор для совместного использования по электронной почте, обзоры из нескольких источников, картографические координаты, личные заметки и т.п.
Компонент(ы) 1070 языкового интерпретатора
[0209] По меньшей мере, в одном варианте осуществления, компонент(ы) 1070 языкового интерпретатора помощника 1002 может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
• Анализ пользовательского ввода и идентификация набора результатов грамматического анализа.
- Пользовательский ввод может включать в себя любую информацию от пользователя и из контекста его устройства, которая может способствовать пониманию намерения пользователя, которая может включать в себя, например, одно или более из следующего (или комбинации вышеозначенного): последовательности слов, идентификационные данные жестов или GUI-элементов, участвующих в извлечении ввода, текущий контекст диалога, текущее приложение устройства и его текущие объекты данных и/или любые другие персональные динамические данные, полученные о пользователе, такие как местоположение, время и т.п. Например, в одном варианте осуществления, пользовательский ввод имеет форму универсального аннотированного формата 2690 ввода, являющегося результатом 1094 активного извлечения ввода.
- Результаты грамматического анализа являются ассоциированиями данных в пользовательском вводе с концептами, взаимосвязями, свойствами, экземплярами и/или другими узлами и/или структурами данных в моделях, базах данных и/или других представлениях намерения и контекста пользователя. Ассоциирования результатов грамматического анализа могут быть сложными преобразованиями из наборов и последовательностей слов, сигналов и других элементов пользовательского ввода в один или более ассоциированных концептов, отношений, свойств, экземпляров, других узлов и/или структур данных, описанных в данном документе.
• Анализ пользовательского ввода и идентификация набора результатов синтаксического анализа, которые являются результатами грамматического анализа, которые ассоциируют данные в пользовательском вводе со структурами, которые представляют синтаксические части речи, выражения и фразы, включающие в себя многословные названия, структуру предложений и/или другие структуры грамматического графа. Результаты синтаксического анализа описываются в элементе 212 процедуры обработки естественного языка, описанной в связи с Фиг.28.
• Анализ пользовательского ввода и идентификация набора результатов семантического анализа, которые являются результатами грамматического анализа, которые ассоциируют данные в пользовательском вводе со структурами, которые представляют концепты, взаимосвязи, свойства, объекты, величины, суждения и/или другие представления значения и намерения пользователя. В одном варианте осуществления, эти представления значения и намерения представляются посредством наборов и/или элементов, и/или экземпляров моделей или баз данных, и/или узлов в онтологиях, как описано в элементе 220 процедуры обработки естественного языка, описанной в связи с Фиг.28.
• Разрешение неоднозначности между альтернативными результатами синтаксического или семантического анализа, как описано в элементе 230 процедуры обработки естественного языка, описанной в связи с Фиг.28.
• Определение того, является или нет частично печатаемый ввод синтаксически и/или семантически значимым в процедуре автозаполнения, к примеру, в процедуре, описанной в связи с Фиг.11.
• Помощь в формировании рекомендованных заполнений 114 в процедуре автозаполнения, к примеру, в процедуре, описанной в связи с Фиг.11.
• Определение того, являются или нет интерпретации произносимого ввода синтаксически и/или семантически значимыми в процедуре речевого ввода, к примеру, в процедуре, описанной в связи с Фиг.22.
[0210] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1070 языкового интерпретатора могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.
[0211] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1070 языкового интерпретатора могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1070 языкового интерпретатора. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1070 языкового интерпретатора, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
• при извлечении ввода, включающем в себя, но не только:
- рекомендацию возможных заполнений печатаемого ввода 114 (Фиг.11);
- ранжирование интерпретаций речи 126 (Фиг.22);
- при рекомендации неоднозначностей как рекомендованных ответов в диалоге 152 (Фиг.24);
• когда результат извлечения ввода доступен, в том числе, когда ввод извлекается посредством любого режима активного извлечения 100 многомодального ввода.
[0212] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1070 языкового интерпретатора может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части такой информации базы данных доступ может осуществляться через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) языкового интерпретатора, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- модели 1056 предметных областей;
- словарь 1058;
- базы 1072 данных объектов предметной области;
- кратковременное запоминающее устройство 1052;
- долговременное персональное запоминающее устройство 1054;
- модели 1086 потока задач;
- модели 1087 потока диалогов;
- модели 1088 характеристик служб.
[0213] Также ссылаясь теперь на Фиг.29, показан снимок экрана, иллюстрирующий обработку естественного языка согласно одному варианту осуществления. Пользователь предоставляет (через голос или текст) языковой ввод 2902, состоящий из фразы "кто играет в эти выходные в filmore". Эта фраза отражается пользователю на экране 2901. Компонент(ы) 1070 языкового интерпретатора покомпонентно обрабатывает ввод 2902 и формирует результат грамматического анализа. Результат грамматического анализа ассоциирует этот ввод с запросом, чтобы показывать локальные мероприятия, которые назначены на любой из предстоящих выходных дней в любом месте проведения мероприятий, название которого совпадает с "filmore". Перефразирование результатов грамматического анализа показано как 2903 на экране 2901.
[0214] Также ссылаясь теперь на Фиг.28, показана блок-схема последовательности операций способа, иллюстрирующая пример способа для обработки естественного языка согласно одному варианту осуществления.
[0215] Способ начинается 200. Принимается языковой ввод 202, такой как строка "Кто играет в эти выходные в filmore" в примере по Фиг.29. В одном варианте осуществления, ввод расширяется посредством текущей контекстной информации, такой как текущее местоположение пользователя и местное время. При сопоставлении 210 слов/фраз, компонент(ы) 1070 языкового интерпретатора находит ассоциирования между пользовательским вводом и концептами. В этом примере, ассоциирования находятся между строкой "играет" и концептом перечней в местах проведения мероприятий; строкой "в эти выходные" (вместе с текущим местным временем пользователя) и конкретизацией аппроксимированного периода времени, который представляет предстоящие выходные; и строкой "filmore" с названием места проведения мероприятий. Сопоставление 210 слов/фраз может использовать данные, например, из модулей 1060 распознавания языковых конструкций, словарной базы 1058 данных, активной онтологии 1050, кратковременного персонального запоминающего устройства 1052 и долговременного персонального запоминающего устройства 1054.
[0216] Компонент(ы) 1070 языкового интерпретатора формирует варианты 212 синтаксического анализа, которые включают в себя выбранный результат грамматического анализа, но также могут включать в себя другие результаты грамматического анализа. Например, другие результаты грамматического анализа могут включать в себя результаты, при которых "играет" ассоциировано с другими предметными областями, к примеру, играми, или с категорией мероприятия, такого как спортивные соревнования.
[0217] Кратко- и/или долговременное запоминающее устройство 1052, 1054 также может быть использовано посредством компонента(ов) 1070 языкового интерпретатора при формировании вариантов 212 синтаксического анализа. Таким образом, ввод, который предоставлен ранее в идентичном сеансе, и/или известная информация о пользователе могут быть использованы для того, чтобы повышать производительность, уменьшать неоднозначность и усиливать разговорный характер взаимодействия. Данные из активной онтологии 1050, моделей 1056 предметных областей и моделей 1086 потока задач также могут быть использованы для того, чтобы реализовывать основанное на обосновании рассуждение при определении допустимых вариантов 212 синтаксического анализа.
[0218] При семантическом согласовании 220, компонент(ы) 1070 языкового интерпретатора рассматривает комбинации возможных результатов грамматического анализа согласно тому, насколько хорошо они соответствуют семантическим моделям, к примеру, моделям предметных областей и базам данных. В этом случае, грамматический анализ включает в себя ассоциирования (1) "играет" (слово в пользовательском вводе) в качестве "локального мероприятия в месте проведения мероприятий" (часть модели 1056 предметной области, представленной посредством кластера узлов в активной онтологии 1050) и (2) "filmore" (другое слово во вводе) в качестве совпадения с названием объекта в базе 1072 данных объектов предметной области для мест проведения локальных мероприятий, которое представляется посредством элемента модели предметной области и узла активной онтологии (название места проведения мероприятий).
[0219] Семантическое согласование 220 может использовать данные, например, из активной онтологии 1050, кратковременного персонального запоминающего устройства 1052 и долговременного персонального запоминающего устройства 1054. Например, семантическое согласование 220 может использовать данные из предыдущих ссылок на места проведения мероприятий или локальные мероприятия в диалоге (из кратковременного персонального запоминающего устройства 1052) или любимые места проведения мероприятий (из долговременного персонального запоминающего устройства 1054).
[0220] Набор вариантов результатов (или потенциальных результатов) семантического анализа формируется 222.
[0221] На этапе 230 разрешения неоднозначности, компонент(ы) 1070 языкового интерпретатора взвешивает основанную на обосновании интенсивность вариантов 222 результатов семантического анализа. В этом примере, комбинация грамматического анализа "играет" в качестве "локального мероприятия в месте проведения мероприятий" и совпадения "filmore" в качестве названия места проведения мероприятий является более строгим совпадением с моделью предметной области, чем альтернативные комбинации, в которых, например, "играет" ассоциировано с моделью предметной области для спортивных состязаний, но нет ассоциирования в предметной области спортивных состязаний для "filmore".
[0222] Разрешение неоднозначности 230 может использовать данные, например, из структуры активной онтологии 1050. По меньшей мере, в одном варианте осуществления, соединения между узлами в активной онтологии предоставляют основанную на обосновании поддержку для разрешения неоднозначности между вариантами 222 результатов семантического анализа. Например, в одном варианте осуществления, если три узла активной онтологии семантически совпадают и все соединяются в активной онтологии 1050, это указывает более высокую основанную на обосновании интенсивность семантического анализа, чем когда эти совпадающие узлы не соединены или соединены посредством более длинных путей соединений в активной онтологии 1050. Например, в одном варианте осуществления семантического согласования 220, для грамматического анализа, который совпадает как с "локальное мероприятие в месте проведения мероприятий", так и с "название места проведения мероприятий", предоставляется расширенная основанная на обосновании поддержка, поскольку комбинированные представления этих аспектов намерения пользователя соединяются посредством ссылок и/или отношений в активной онтологии 1050: в этом случае, узел локального мероприятия соединяется с узлом места проведения мероприятий, который соединяется с узлом названия места проведения мероприятий, который соединяется с названием объекта в базе данных названий мест проведения мероприятий.
[0223] По меньшей мере, в одном варианте осуществления, соединения между узлами в активной онтологии, которые предоставляют основанную на обосновании поддержку для разрешения неоднозначности между вариантами 222 результатов семантического анализа, являются направленными дугами, формирующими решетку логического вывода, в которой совпадающие узлы представляют обоснование для узлов, с которыми они соединяются посредством направленных дуг.
[0224] На этапе 232, компонент(ы) 1070 языкового интерпретатора сортирует и выбирает 232 главные варианты семантического анализа в качестве представления намерения 290 пользователя.
База(ы) 1072 данных объектов предметной области
[0225] По меньшей мере, в одном варианте осуществления, база(ы) 1072 данных объектов предметной области может быть выполнена с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
• Сохранение данных об объектах предметной области. Объекты предметной области являются сущностями в мире или в вычислительном окружении, которые могут моделироваться в моделях предметных областей. Примеры могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- организации любого вида;
- фильмы, видео, песни и/или другие музыкальные продукты и/или любые другие развлекательные продукты с названием;
- продукты любого вида;
- мероприятия;
- записи в календаре;
- города, штаты, страны, окрестности и/или другие географические, геополитические и/или геопространственные точки или области;
- места с названием, к примеру, достопримечательности, аэропорты и т.п.;
• Предоставление служб работы с базами данных для этих баз данных, включающих в себя, но не только, простые и сложные запросы, транзакции, триггерные события и т.п.
[0226] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов базы 1072 данных объектов предметной области могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности базы 1072 данных объектов предметной области могут быть выполнены, реализованы и/или инициированы посредством программного обеспечения баз данных и/или аппаратных средств, постоянно размещающихся на клиенте(ах) 1304 и/или на сервере(ах) 1340.
[0227] Одним примером базы 1072 данных объектов предметной области, который может быть использован в связи с настоящим изобретением согласно одному варианту осуществления, является база данных одной или более организаций, сохраняющая, например, их названия и местоположения. База данных может быть использована, например, для того, чтобы искать слова, содержащиеся во входном запросе, на предмет совпадающих организаций, и/или искать местоположение организации, название которой известно. Специалисты в данной области техники должны признавать, что множество других компоновок и реализаций являются возможными.
Компонент(ы) 1058 словаря
[0228] По меньшей мере, в одном варианте осуществления, компонент(ы) 1058 словаря может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Предоставление баз данных, ассоциирующих слова и строки с концептами, свойствами, отношениями или экземплярами моделей предметных областей или моделей задач;
- Словарь из компонентов словаря может быть использован посредством автоматизированного помощника 1002 для нескольких процессов, включающих в себя, например: извлечение ввода, интерпретацию естественного языка и формирование вывода.
[0229] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1058 словаря могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1058 словаря могут быть реализованы как структуры данных, которые ассоциируют строки с названиями концептов, отношений, свойств и экземпляров. Эти структуры данных могут быть сохранены в запоминающем устройстве, файлах или базах данных. Доступ к компоненту(ам) 1058 словаря может быть реализован через прямые API, сетевые API и/или интерфейсы запросов к базе данных. Создание и сопровождение компонента(ов) 1058 словаря может осуществляться через прямое редактирование файлов, транзакции базы данных или с помощью инструментальных средств редактирования моделей предметной области. Компонент(ы) 1058 словаря может быть реализован как часть или в ассоциации с активными онтологиями 1050. Специалисты в данной области техники должны признавать, что множество других компоновок и реализаций являются возможными.
[0230] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1058 словаря могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1058 словаря. В одном варианте осуществления, доступ к компоненту(ам) 1058 словаря осуществляется каждый раз, когда запрашивается словарная информация, в том числе, например, в ходе извлечения ввода, интерпретации ввода и форматирования вывода для пользователей. Специалисты в данной области техники должны признавать, что другие условия или мероприятия могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1058 словаря.
[0231] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента 1058 словаря может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. В одном варианте осуществления, компонент 1058 словаря может осуществлять доступ к данным из внешних баз данных, например, из хранилища данных или словаря.
Компонент(ы) 1060 модуля распознавания языковых конструкций
[0232] По меньшей мере, в одном варианте осуществления, компонент 1060 модуля распознавания языковых конструкций может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, поиск конструкций в языковом или речевом вводе, которые указывают грамматические, идиоматические и/или другие составные объекты маркеров ввода. Эти конструкции соответствуют, например, одному или более из следующего (или комбинациям вышеозначенного): слова, названия, фразы, данные, параметры, команды и/или сигналы речевых актов.
[0233] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1060 модуля распознавания конструкций могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1060 модуля распознавания языковых конструкций могут быть выполнены, реализованы и/или инициированы посредством одного или более файлов, баз данных и/или программ, содержащих выражения на языке сопоставления с конструкцией. По меньшей мере, в одном варианте осуществления, компонент(ы) 1060 модуля распознавания языковых конструкций представляется декларативно, а не в качестве программного кода; это предоставляет возможность их создания и поддержания посредством редакторов и других инструментальных средств, отличных от инструментальных средств программирования. Примеры декларативных представлений могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного): регулярные выражения, правила сопоставления с конструкцией, грамматики естественного языка, грамматические анализаторы на основе конечных автоматов и/или других моделей грамматического анализа.
[0234] Специалисты в данной области техники должны признавать, что другие типы систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинации вышеозначенного) могут использоваться для реализации компонента(ов) 1060 модуля распознавания языковых конструкций.
[0235] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1060 модуля распознавания языковых конструкций могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1060 модуля распознавания языковых конструкций. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1060 модуля распознавания языковых конструкций, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- в ходе активного извлечения ввода, при котором структура модулей распознавания языковых конструкций может ограничивать и направлять ввод от пользователя;
- в ходе обработки естественного языка, при которой модули распознавания языковых конструкций помогают интерпретировать ввод в качестве языка;
- в ходе идентификации задач и диалогов, при которой модули распознавания языковых конструкций могут помогать идентифицировать задачи, диалоги и/или этапы.
[0236] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1060 модуля распознавания языковых конструкций может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента 1060 модуля распознавания языковых конструкций, могут включать в себя, но не только, данные из любой из моделей, различных моделей и источников данных, которые могут быть частью вариантов осуществления помощника 1002, которые могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- модели 1056 предметных областей;
- словарь 1058;
- базы 1072 данных объектов предметной области;
- кратковременное запоминающее устройство 1052;
- долговременное персональное запоминающее устройство 1054;
- модели 1086 потока задач;
- модели 1087 потока диалогов;
- модели 1088 характеристик служб.
[0237] В одном варианте осуществления, доступ данных из других частей вариантов осуществления помощника 1002 может быть координирован посредством активных онтологий 1050.
[0238] Снова ссылаясь на Фиг.14, показан пример некоторых различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) 1060 модуля распознавания языковых конструкций. Фиг.14 иллюстрирует языковые конструкции, которые может распознавать компонент(ы) 1060 модуля распознавания языковых конструкций. Например, идиома "что происходит" (в городе) может быть ассоциирована с задачей организации мероприятий и предметной областью локальных мероприятий.
Компонент(ы) 1080 процессора потока диалогов
[0239] По меньшей мере, в одном варианте осуществления, компонент(ы) 1080 процессора потока диалогов может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- С учетом представления намерения 290 пользователя из языковой интерпретации 200, идентификация задачи, выполнение которой требует пользователь, и/или проблемы, разрешение которой требует пользователь. Например, задача может состоять в том, чтобы найти ресторан.
- Для данной проблемы или задачи, с учетом представления намерения 290 пользователя, идентификация параметров для задачи или проблемы. Например, пользователь может искать рекомендованный ресторан, который подает итальянскую еду около дома пользователя. Такие ограничения, как то, что ресторан должен быть рекомендованным, подача итальянской еды и около дома, являются параметрами для задачи нахождения ресторана.
- С учетом интерпретации задачи и текущего диалога с пользователем, к примеру, который может быть представлен в персональном кратковременном запоминающем устройстве 1052, выбор надлежащей модели потока диалогов и определение этапа в модели потока, соответствующего текущему состоянию.
[0240] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1080 процессора потока диалогов могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.
[0241] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1080 процессора потока диалогов может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1080 процессора потока диалогов, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- модели 1086 потока задач;
- модели 1056 предметных областей;
- модели 1087 потока диалогов.
[0242] Ссылаясь теперь на Фиг.30 и 31, показаны снимки экрана, иллюстрирующие пример различных типов функций, операций, действий и/или других признаков, которые могут предоставляться посредством компонента(ов) процессора потока диалогов согласно одному варианту осуществления.
[0243] Как показано на экране 3001, пользователь запрашивает резервирование ужина посредством предоставления речевого ввода или ввода текста "Заказать мне столик для ужина". Помощник 1002 формирует строку 3003 с подсказкой, запрашивающую, чтобы пользователь указал время и количество участников званого вечера.
[0244] После того, как эти параметры предоставлены, показывается экран 3101. Помощник 1002 выводит диалоговое окно 3102, указывающее то, что результаты представляются и строку 3103 с подсказкой, запрашивающую пользователя щелкать время. Перечни 3104 также отображаются.
[0245] В одном варианте осуществления, такой диалог реализуется следующим образом. В компонент(ы) 1080 процессора потока диалогов предоставляется представление намерения пользователя из компонента 1070 языкового интерпретатора, и он определяет то, что надлежащий ответ заключается в том, чтобы запрашивать у пользователя информацию, требуемую для того, чтобы выполнять следующий этап в потоке задач. В этом случае, предметной областью являются рестораны, задача заключается в резервировании, и этап диалога заключается в том, чтобы запрашивать у пользователя информацию, требуемую для того, чтобы выполнять следующий этап в потоке задач. Этот этап диалога иллюстрируется посредством строки 3003 с подсказкой на экране 3001.
[0246] Также ссылаясь теперь на Фиг.32, показана блок-схема последовательности операций, иллюстрирующая способ работы для компонента(ов) 1080 процессора потока диалогов согласно одному варианту осуществления. Блок-схема последовательности операций способа по Фиг.32 описывается в связи с примером, показанным на Фиг.30 и 31.
[0247] Способ начинается 200. Представление намерения 290 пользователя принимается. Как описано в связи с Фиг.28, в одном варианте осуществления, представление намерения 290 пользователя является набором вариантов семантического анализа. Для примера, показанного на Фиг.30 и 31, предметной областью являются рестораны, глаголом является "заказать", ассоциированный с резервированием ресторана, и параметром времени является вечер текущего дня.
[0248] На этапе 310, компонент(ы) 1080 процессора потока диалогов определяет то, поддерживается или нет эта интерпретация намерения пользователя достаточно строго, чтобы продолжать, и/или поддерживается она или нет лучше альтернативных неоднозначных вариантов семантического анализа. В текущем примере, интерпретация поддерживается строго без конкурирующих неоднозначных вариантов семантического анализа. С другой стороны, если имеются конкурирующие неоднозначности или достаточная неопределенность, то этап 322 выполняется для того, чтобы задавать этап потока диалогов, так что фаза выполнения инструктирует диалогу выводить строку с подсказкой для получения дополнительной информации от пользователя.
[0249] На этапе 312, компонент(ы) 1080 процессора потока диалогов определяет предпочтительную интерпретацию семантического анализа с другой информацией, чтобы определять задачу, которую следует выполнять, и ее параметры. Информация может быть получена, например, из моделей 1056 предметных областей, моделей 1086 потока задач и/или моделей 1087 потока диалогов либо любой комбинации вышеозначенного. В текущем примере, задача идентифицируется в качестве резервирования, которое заключает в себе как нахождение места, которое доступно для резервирования и свободно, так и осуществление транзакции, чтобы зарезервировать столик. Параметры задачи являются временным ограничением вместе с другими, которые логически выводятся на этапе 312.
[0250] На этапе 320, обращаются в модель потока задач с тем, чтобы определять надлежащий следующий этап. Информация может быть получена, например, из моделей 1056 предметных областей, моделей 1086 потока задач и/или моделей 1087 потока диалогов либо любой комбинации вышеозначенного. В примере, определяется то, что в этом потоке задач следующий этап заключается в том, чтобы извлекать пропущенные параметры для поиска доступности ресторанов, приводя к строке 3003 с подсказкой, проиллюстрированной на Фиг.30, запрашивающей количество участников званого вечера и время для резервирования.
[0251] Как описано выше, Фиг.31 иллюстрирует экран 3101, который показывается как включающий в себя элемент 3102 диалога, который представляется после того, как пользователь отвечает на запрос относительно количества участников званого вечера и времени резервирования. В одном варианте осуществления, экран 3101 представляется как результат другой итерации через процедуру автоматизированного вызова и ответа, как описано в связи с Фиг.33, которая приводит к другому вызову процедуры диалогов и потоков, проиллюстрированной на Фиг.32. В этой конкретизации процедуры диалогов и потоков, после приема пользовательских предпочтений компонент(ы) 1080 процессора потока диалогов определяет другой этап потока задач на этапе 320: осуществить поиск доступности. Когда запрос 390 составляется, он включает в себя параметры задачи, достаточные для компонента 1080 процессора потока диалогов и компонента(ов) 1082 оркестровки служб, чтобы координироваться для службы заказов ресторана.
Компонент(ы) 1087 моделей потока диалогов
[0252] По меньшей мере, в одном варианте осуществления, компонент(ы) 1087 моделей потока диалогов может быть выполнен с возможностью предоставлять модели потока диалогов, которые представляют этапы, которые предпринимаются в конкретном виде разговора между пользователем и интеллектуальным автоматизированным помощником 1002. Например, поток диалогов для обобщенной задачи выполнения транзакции включает в себя этапы для получения необходимых данных для транзакции и подтверждения параметров транзакции до ее совершения.
Компонент(ы) 1086 моделей потока задач
[0253] По меньшей мере, в одном варианте осуществления, компонент(ы) 1086 моделей потока задач может быть выполнен с возможностью предоставлять модели потока задач, которые представляют этапы, которые предпринимаются, чтобы разрешать проблему или удовлетворять потребность. Например, поток задач для резервирования ужина заключает в себе нахождение требуемого ресторана, проверку доступности и выполнение транзакции, чтобы получать резервирование на конкретное время в ресторане.
[0254] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1086 моделей потока задач могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1086 моделей потока задач могут быть реализованы как программы, конечные автоматы или другие способы идентификации надлежащего этапа на блок-схеме.
[0255] По меньшей мере, в одном варианте осуществления, компонент(ы) 1086 моделей потока задач может использовать инфраструктуру моделирования задач, называемых обобщенными задачами. Обобщенные задачи являются абстракциями, которые моделируют этапы в задаче и их требуемые вводы и сформированные выводы без зависимости от предметных областей. Например, обобщенная задача для транзакций может включать в себя этапы для сбора данных, требуемых для транзакции, выполнения транзакций и вывода результатов транзакции - и все это безотносительно конкретной предметной области транзакции или службы для ее реализации. Она может быть конкретизирована для предметной области, такой как совершение покупок, но она является независимой от предметной области совершения покупок и может с равным успехом применяться к предметным областям резервирования, составления расписания и т.п.
[0256] По меньшей мере, часть функций, операций, действий и/или других признаков, ассоциированных с компонентом(ами) 1086 моделей потока задач и/или процедурой(ами), описанной в данном документе, может быть реализована, по меньшей мере, частично, с использованием концептов, признаков, компонентов, процессов и/или других аспектов, раскрытых в данном документе в связи с инфраструктурой моделирования обобщенных задач.
[0257] Дополнительно, по меньшей мере, часть функций, операций, действий и/или других признаков, ассоциированных с компонентом(ами) 1086 моделей потока задач и/или процедурой(ами), описанной в данном документе, может быть реализована, по меньшей мере, частично, с использованием концептов, признаков, компонентов, процессов и/или других аспектов, связанных с задачами выбора с ограничениями, как описано в данном документе. Например, один вариант осуществления обобщенных задач может быть реализован с использованием модели задач выбора с ограничениями.
[0258] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1086 моделей потока задач может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1086 моделей потока задач, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- модели 1056 предметных областей;
- словарь 1058;
- базы 1072 данных объектов предметной области;
- кратковременное запоминающее устройство 1052;
- долговременное персональное запоминающее устройство 1054;
- модели 1087 потока диалогов;
- модели 1088 характеристик служб.
[0259] Ссылаясь теперь на Фиг.34, показана блок-схема последовательности операций способа, иллюстрирующая пример потока задач для задачи 351 выбора с ограничениями согласно одному варианту осуществления.
[0260] Выбор с ограничениями является видом обобщенной задачи, в которой цель состоит в том, чтобы выбирать некоторый элемент из набора элементов в мире на основе набора ограничений. Например, задача 351 выбора с ограничениями может быть конкретизирована для предметной области ресторанов. Задача 351 выбора с ограничениями начинается посредством запрашивания критериев и ограничений от пользователя 352. Например, пользователь может интересоваться азиатской едой и может желать место, чтобы поесть, около своего офиса.
[0261] На этапе 353, помощник 1002 представляет элементы, которые удовлетворяют установленным критериям и ограничениям для пользователя, чтобы просматривать их. В этом примере, это может быть список ресторанов и их свойств, который может быть использован для того, чтобы выбирать из них.
[0262] На этапе 354, пользователю дается возможность уточнять критерии и ограничения. Например, пользователь может уточнять запрос посредством высказывания "около моего офиса". Система затем должна представлять новый набор результатов на этапе 353.
[0263] Также ссылаясь теперь на Фиг.35, показан пример экрана 3501, включающего в себя список 3502 элементов, представленных посредством задачи 351 выбора с ограничениями согласно одному варианту осуществления.
[0264] На этапе 355, пользователь может выбирать из совпадающих элементов. Затем может быть обеспечена доступность любого числа дальнейших задач 359, таких как, например, заказ 356, напоминание 357 или совместное использование 358. В различных вариантах осуществления, дальнейшие задачи 359 могут заключать в себе взаимодействие со службами на основе web-технологий и/или с функциональностью, локальной для устройства (к примеру, установка назначенной встречи по календарю, телефонный вызов, отправка почтового или текстового сообщения, установка будильника и т.п.).
[0265] В примере по Фиг.35, пользователь может выбирать элемент в списке 3502, чтобы видеть дополнительные сведения и выполнять дополнительные действия. Также ссылаясь теперь на Фиг.36, показан пример экрана 3601 после того, как пользователь выбрал элемент из списка 3502. Дополнительная информация и варианты, соответствующие дальнейшим задачам 359 относительно выбранного пункта, отображаются.
[0266] В различных вариантах осуществления, этапы потока могут предлагаться пользователю в любой из нескольких модальностей ввода, включающих в себя, но не только, любую комбинацию явных диалоговых строк с подсказкой и GUI-ссылок.
Компонент(ы) 1084 служб
[0267] Компонент(ы) 1084 служб представляет набор служб, которые интеллектуальный автоматизированный помощник 1002 может вызывать от имени пользователя. Любая служба, которая может вызываться, может быть предложена в компоненте 1084 служб.
[0268] По меньшей мере, в одном варианте осуществления, компонент(ы) 1084 служб может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Предоставление функций по API, которые обычно должны предоставляться посредством пользовательского web-интерфейса, в службу. Например, обзорный web-узел может предоставлять API служб, который автоматически возвращает обзоры данного объекта при вызове посредством программы. API предлагает для интеллектуального автоматизированного помощника 1002 службы, которые человек в противном случае должен получать посредством работы с пользовательским интерфейсом web-узла.
- Предоставление функций по API, которые обычно должны предоставляться посредством пользовательского интерфейса, в приложение. Например, приложение для работы с календарем может предоставлять API служб, который автоматически возвращает записи календаре при вызове посредством программы. API предлагает для интеллектуального автоматизированного помощника 1002 службы, которые человек в противном случае должен получать посредством работы с пользовательским интерфейсом приложения. В одном варианте осуществления, помощник 1002 имеет возможность инициировать и управлять любым числом различных функций, доступных в устройстве. Например, если помощник 1002 устанавливается на смартфоне, персональном цифровом устройстве, планшетном компьютере или другом устройстве, помощник 1002 может выполнять такие функции, как: инициирование приложений, совершение звонков, отправка электронных писем и/или текстовых сообщений, добавление календарных мероприятий, установка будильников и т.п. В одном варианте осуществления, такие функции активируются с использованием компонента(ов) 1084 служб.
- Предоставление служб, которые в данный момент не реализуются в пользовательском интерфейсе, но которые доступны через API, в помощник в больших задачах. Например, в одном варианте осуществления, API для приема фактического адреса и возврата машиночитаемых геокоординат может быть использован посредством помощника 1002 в качестве компонента 1084 служб, даже если он не имеет прямого пользовательского интерфейса на основе web-технологий или в устройстве.
[0269] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1084 служб могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента 1084 служб могут быть выполнены, реализованы и/или инициированы посредством одной или более следующих типов систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинаций вышеозначенного):
- реализация API, представленного посредством службы, локально или удаленно либо в любой комбинации;
- импликация базы данных в автоматизированном помощнике 1002 или службы работы с базами данных, доступной для помощника 1002.
[0270] Например, web-узел, который предлагает пользователям интерфейс для просмотра фильмов, может быть использован посредством варианта осуществления интеллектуального автоматизированного помощника 1002 в качестве копии базы данных, используемой посредством web-узла. Компонент(ы) 1084 служб затем должен предлагать внутренний API для данных, как если они предоставляются по сетевому API, даже если данные сохраняются локально.
[0271] В качестве другого примера, компонент(ы) 1084 служб для интеллектуального автоматизированного помощника 1002, который помогает с выбором ресторана и организацией мероприятия с приемом пищи, может включать в себя любые или все из следующего набора служб, которые доступны от третьих сторон по сети:
- набор служб предоставления перечня ресторанов, которые перечисляют рестораны, совпадающие по названию, местоположению или другим ограничениям;
- набор служб составления рейтинга ресторанов, которые возвращают ранжирование для ресторанов с названием;
- набор служб обзора ресторанов, которые возвращают написанные обзоры для ресторанов с названием;
- служба геокодирования, чтобы находить рестораны на карте;
- служба резервирования, которая обеспечивает программируемое резервирование столиков в ресторанах.
Компонент(ы) 1082 оркестровки служб
[0272] Компонент(ы) 1082 оркестровки служб интеллектуального автоматизированного помощника 1002 выполняет процедуру оркестровки служб.
[0273] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Динамическое и автоматическое определение того, какие службы могут удовлетворять запросу пользователя и/или указываемой предметной области(ям) и задаче(ам);
- Динамический и автоматический вызов несколько служб, в любой комбинации параллельного и последовательного упорядочения;
- Динамическое и автоматическое преобразование параметров и ограничений задачи, чтобы удовлетворять требованиям по вводу API служб;
- Динамическое и автоматическое отслеживание и сбор результатов из нескольких служб;
- Динамическое и автоматическое объединение данных с результатами предоставления служб из различных служб в унифицированную модель результатов;
- Оркестровка множеством служб, чтобы удовлетворять ограничениям запроса;
- Оркестровка множеством служб, чтобы аннотировать существующий набор результатов со вспомогательной информацией;
- Вывод результата вызова множества служб в универсальном, независимом от службы представлении, которое унифицирует результаты из различных служб (например, как результат вызова нескольких служб ресторана, которые возвращают списки ресторанов, объединяют данные, по меньшей мере, по одному ресторану из нескольких служб, удаляя избыточность).
[0274] Например, в некоторых случаях может быть несколько способов выполнять конкретную задачу. Например, пользовательский ввод, к примеру, "напомнить мне выехать на встречу в город в 14:00" указывает действие, которое может быть выполнено, по меньшей мере, тремя способами: установить будильник; создать календарное мероприятие; или вызвать диспетчер списка занятий. В одном варианте осуществления, компонент 1082 оркестровки служб выполняет определение в отношении того, какой способ лучше всего подходит для запроса.
[0275] Компонент(ы) 1082 оркестровки служб также может выполнять определения в отношении того, какую комбинацию из нескольких служб лучше всего активировать, чтобы выполнять данную общую задачу. Например, чтобы находить и резервировать столик для ужина, компонент(ы) 1082 оркестровки служб должен выполнять определения в отношении того, какие службы следует вызывать, чтобы выполнять такие функции, как поиск в обзорах, получение доступности и выполнение резервирования. Определение того, какие службы следует использовать, может зависеть от любого числа различных факторов. Например, по меньшей мере, в одном варианте осуществления, информация о надежности, способности службы обрабатывать определенные типы запросов, обратная связь с пользователем и т.п. могут быть использованы в качестве факторов при определении того, какую службу(и) надлежит активировать.
[0276] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1082 оркестровки служб могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.
[0277] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1082 оркестровки служб может использовать явные модели 1088 характеристик служб, чтобы представлять характеристики и другие свойства внешних служб, и рассуждать насчет этих характеристик и свойств при достижении признаков компонента(ов) 1082 оркестровки служб. Это предоставляет преимущества по сравнению с программированием вручную набора служб, которые могут включать в себя, например, одно или более из следующего (или комбинации вышеозначенного):
- простота разработки;
- устойчивость и надежность при выполнении;
- возможность динамически добавлять и удалять службы без повреждения кода;
- возможность реализовывать общие алгоритмы оптимизации распределенных запросов, которые управляются посредством свойств и характеристик, а не жестко кодируются для конкретных служб или API.
[0278] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1082 оркестровки служб может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1082 оркестровки служб, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- конкретизации моделей предметных областей;
- варианты синтаксического и семантического анализа ввода на естественном языке;
- конкретизации моделей задач (со значениями для параметров);
- модели потока диалогов и задач и/или выбранные этапы в них;
- модели 1088 характеристик служб;
- любая другая информация, доступная в активной онтологии 1050.
[0279] Ссылаясь теперь на Фиг.37, показан пример процедуры для выполнения процедуры оркестровки служб согласно одному варианту осуществления.
[0280] В этом конкретном примере, предполагается, что один пользователь заинтересован в нахождении хорошего места для ужина в ресторане и контактирует с интеллектуальным автоматизированным помощником 1002 в форме разговора, чтобы помогать предоставлять эти службы.
[0281] Рассмотрим задачу нахождения ресторанов, которые имеют высокое качество, хорошие отзывы в обзорах, расположены около конкретного местоположения, доступны для резервирования в конкретное время и предлагают конкретный вид еды. Эти параметры предметной области и задачи предоставляются в качестве ввода 390.
[0282] Способ начинается 400. На этапе 402, определяется то, может или нет данный запрос требовать какие-либо службы. В некоторых случаях, делегирование службам может не требоваться, например, если помощник 1002 имеет возможность выполнять требуемую задачу самостоятельно. Например, в одном варианте осуществления, помощник 1002 может иметь возможность отвечать на фактический вопрос без активации делегирования службам. Соответственно, если запрос не требует служб, то автономный этап потока выполняется на этапе 403, и его результат 490 возвращается. Например, если запрос по задаче состоит в том, чтобы запрашивать информацию о самом автоматизированном помощнике 1002, то ответ диалога может обрабатываться без активации внешних служб.
[0283] Если на этапе 402 определяется то, что требуется делегирование службам, компонент(ы) 1082 оркестровки служб переходит к этапу 404. На этапе 404, компонент(ы) 1082 оркестровки служб может сопоставлять требования задачи с декларативными описаниями характеристик и свойств служб в моделях 1088 характеристик служб. По меньшей мере, один поставщик служб, который может поддерживать конкретизированную операцию, предоставляет декларативные, качественные метаданные, детализирующие, например, одно или более из следующего (или комбинации вышеозначенного):
- поля данных, которые возвращаются с результатами;
- какие классы параметров поставщик служб (как статически известно) поддерживает;
- функции управления политиками для параметров, которые поставщик служб может поддерживать после динамической проверки значений параметров;
- рейтинг производительности, задающий то, как работает служба (например, реляционная DB, web-служба, хранение в трех экземплярах, полнотекстовый индекс или некоторая комбинация вышеозначенного);
- рейтинги качества свойств, статически задающие ожидаемое качество значений свойств, возвращаемых с объектом с результатом;
- рейтинг общего качества результатов, которые предположительно может возвращать служба.
[0284] Например, при рассмотрении классов параметров, которые может поддерживать служба, модель служб может указывать, что службы 1, 2, 3 и 4 могут предоставлять рестораны, которые расположены около конкретного местоположения (параметр), службы 2 и 3 могут фильтровать или ранжировать рестораны по качеству (другой параметр), службы 3, 4 и 5 могут возвращать обзоры для ресторанов (возвращается поле данных), служба 6 может перечислять типы питания, предлагаемые посредством ресторанов (возвращается поле данных), и служба 7 может проверять доступность ресторанов в конкретные временные диапазоны (параметр). Службы 8-99 предлагают характеристики, которые не требуются для этой конкретной предметной области и задачи.
[0285] С использованием этих декларативных, качественных метаданных, задачи, параметров задачи и другой информации, доступной из среды выполнения помощника, компонент(ы) 1082 оркестровки служб определяет 404 оптимальный набор поставщиков служб, который следует активировать. Оптимальный набор поставщиков служб может поддерживать один или более параметров задачи (возвращая результаты, которые удовлетворяют одному или более параметрам), а также рассматривает рейтинг производительности, по меньшей мере, одного поставщика служб и рейтинг общего качества, по меньшей мере, одного поставщика служб.
[0286] Результатом этапа 404 является динамически сформированный список служб, которые следует вызывать для этого конкретного пользователя, и запрос.
[0287] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб рассматривает надежность служб, а также их способность отвечать на конкретные информационные запросы.
[0288] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб противостоит ненадежности посредством вызова перекрывающихся или избыточных служб.
[0289] По меньшей мере, в одном варианте осуществления, компонент(ы) 1082 оркестровки служб рассматривает персональную информацию о пользователе (из компонента кратковременного персонального запоминающего устройства), чтобы выбирать службы. Например, пользователь может предпочитать некоторые службы составления рейтингов перед другими.
[0290] На этапе 450, компонент(ы) 1082 оркестровки служб динамически и автоматически активирует несколько служб от имени пользователя. По меньшей мере, в одном варианте осуществления, они вызываются динамически при ответе на запрос пользователя. Согласно конкретным вариантам осуществления, одновременно могут вызываться несколько экземпляров или подпроцессов служб. По меньшей мере, в одном варианте осуществления, они вызываются по сети с использованием API или по сети с использованием API web-служб, или по Интернету с использованием API web-служб, или по любой комбинации вышеозначенного.
[0291] По меньшей мере, в одном варианте осуществления, частота, с которой вызываются службы, программно ограничивается и/или управляется.
[0292] Также ссылаясь теперь на Фиг.38, показан пример процедуры 450 активации служб согласно одному варианту осуществления. Активация служб используется, например, чтобы получать дополнительную информацию или выполнять задачи посредством использования внешних служб. В одном варианте осуществления, параметры запроса преобразуются надлежащим образом для API службы. После того, как результаты принимаются из службы, результаты преобразуются в представление результатов для представления пользователю в помощнике 1002.
[0293] По меньшей мере, в одном варианте осуществления, службы, активируемые посредством процедуры 450 активации служб, могут быть web-службой, приложением, запущенным на устройстве, функцией операционной системы и т.п.
[0294] Предоставляется представление 390 запроса, включающее в себя, например, параметры задачи и т.п. По меньшей мере, для одной службы, доступной из моделей 1088 характеристик служб, процедура 450 активации служб выполняет этапы преобразования 452, вызова 454 и преобразования 456 вывода.
[0295] На этапе 452 преобразования текущие параметры задачи из представления 390 запроса преобразуются в форму, которая может быть использована посредством, по меньшей мере, одной службы. Параметры для служб, которые могут быть предложены в качестве API или баз данных, могут отличаться от представления данных, используемого в запросах по задачам, а также, по меньшей мере, друг от друга. Соответственно, цель этапа 452 состоит в том, чтобы преобразовывать, по меньшей мере, один параметр задачи в один или более соответствующих форматов и значений, по меньшей мере, в одной вызываемой службе.
[0296] Например, названия организаций, к примеру, ресторанов могут варьироваться согласно службам, которые рассматривают такие организации. Соответственно, этап 452 должен заключать в себе преобразование любых названий в формы, которые наилучшим образом подходят, по меньшей мере, для одной службы.
[0297] В качестве другого примера, местоположения известны при различных уровнях точности и с использованием различных единиц и условных обозначений согласно службам. Служба 1 может, может требовать почтовых индексов, служба 2 - GPS-координат, а служба 3 - фактических почтовых адресов.
[0298] Служба вызывается 454 по API, и ее данные собираются. По меньшей мере, в одном варианте осуществления, результаты кэшируются. По меньшей мере, в одном варианте осуществления, службы, которые не возвращаются в пределах указанной производительности уровня (например, как указано в соглашении об уровне обслуживания, или SLA), отбрасываются.
[0299] На этапе 456 преобразования вывода, данные, возвращаемые посредством службы, преобразуются обратно в унифицированное представление 490 результата. Этот этап может включать в себя рассмотрение различных форматов, единиц и т.д.
[0300] На этапе 412, результаты из нескольких служб проверяются на достоверность и объединяются. В одном варианте осуществления, если проверенные результаты собираются, функция управления политиками равенства (заданная для каждой предметной области) затем вызывается попарно для одного или более результатов, чтобы определять то, какие результаты представляют идентичные концепты в реальном мире. Когда обнаруживается пара равных результатов, набор функций управления политиками свойств (также заданный для каждой предметной области) используется для того, чтобы объединять значения свойств в объединенный результат. Функция управления политиками свойств может использовать рейтинги качества свойств из моделей характеристик служб, параметров задачи, контекста предметной области и/или долговременного персонального запоминающего устройства 1054, чтобы определять оптимальную стратегию объединения.
[0301] Например, списки ресторанов от различных поставщиков ресторанов могут быть объединены, а дублирования удалены. По меньшей мере, в одном варианте осуществления, критерии для идентификации дублирований могут включать в себя нечеткое совпадение названий, нечеткое совпадение местоположений, нечеткое совпадение с несколькими свойствами объектов предметной области, такими как название, местоположение, телефонный номер и/или адрес web-узла и/или любая комбинация вышеозначенного.
[0302] На этапе 414, результаты сортируются и обрезаются, чтобы возвращать список результатов требуемой длины.
[0303] По меньшей мере, в одном варианте осуществления, контур ослабления запроса также применяется. Если на этапе 416 компонент(ы) 1082 оркестровки служб определяет то, что текущий список результатов не является достаточным (например, он имеет меньше требуемого числа совпадающих элементов), то параметры задачи могут ослабляться 420, чтобы обеспечивать большее число результатов. Например, если число ресторанов требуемого типа, найденных в пределах N миль от целевого местоположения, является слишком маленьким, то ослабление должно запускать запрос снова с поиском в области, превышающей N миль, и/или с ослаблением некоторого другого параметра поиска.
[0304] По меньшей мере, в одном варианте осуществления, способ оркестровки служб применяется во втором проходе, чтобы "аннотировать" результаты со вспомогательными данными, которые являются полезными для задачи.
[0305] На этапе 418, компонент(ы) 1082 оркестровки служб определяет то, требуется или нет аннотация. Оно может требоваться, если, например, задача может требовать плана с результатами на карте, но первичные службы не возвращают геокоординаты, требуемые для преобразования.
[0306] На этапе 422, снова обращаются к модели 1088 характеристик служб с тем, чтобы находить службы, которые могут возвращать требуемую дополнительную информацию. В одном варианте осуществления, процесс аннотирования определяет то, могут или нет дополнительные или лучшие данные быть аннотированы в объединенном результате. Он осуществляет это посредством делегирования в функцию управления политиками свойств (заданную для каждой предметной области), по меньшей мере, одного свойства, по меньшей мере, одного объединенного результата. Функция управления политиками свойств может использовать объединенное значение свойства и рейтинг качества свойств, рейтинги качества свойств одного или более других поставщиков служб, контекст предметной области и/или пользовательский профиль, чтобы определять то, могут или нет быть получены лучшие данные. Если определено, что один или более поставщиков служб могут аннотировать одно или более свойств для объединенного результата, активируется функция затрат, чтобы определять оптимальный набор поставщиков служб, который следует аннотировать.
[0307] По меньшей мере, один поставщик служб в оптимальном наборе аннотированных поставщиков служб затем активируется 450 со списком объединенных результатов, чтобы получать результаты 424. Изменения, внесенные, по меньшей мере, в один объединенный результат посредством, по меньшей мере, одного поставщика служб, отслеживаются во время этого процесса, и изменения затем объединяются с использованием процесса функции управления политиками свойств, идентичного используемому на этапе 412. Их результаты объединяются 426 в существующий набор результатов.
[0308] Результирующие данные сортируются 428 и унифицируются в универсальное представление 490.
[0309] Можно принимать во внимание, что одно преимущество способов и систем, описанных выше относительно компонента(ов) 1082 оркестровки служб, состоит в том, что они могут преимущественно применяться и/или использоваться в различных областях техники, отличных от областей техники, которые, в частности, связаны с интеллектуальными автоматизированными помощниками. Примеры таких других областей техники, в которых аспекты и/или признаки процедур оркестровки служб, включают в себя, например, одно или более из следующего:
- динамические "смешения" на web-узлах и в web-приложениях и службах;
- оптимизация распределенных запросов к базе данных;
- динамическая конфигурация сервис-ориентированной архитектуры.
Компонент(ы) 1088 моделей характеристик служб
[0310] По меньшей мере, в одном варианте осуществления, компонент(ы) 1088 моделей характеристик служб может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Предоставление машиночитаемой информации о характеристиках служб, чтобы выполнять определенные классы вычислений;
- Предоставление машиночитаемой информации о характеристиках служб, чтобы отвечать на определенные классы запросов;
- Предоставление машиночитаемой информации о том, какие классы транзакций предоставляются посредством различных служб;
- Предоставление машиночитаемой информации о параметрах для API, представленных посредством различных служб;
- Предоставление машиночитаемой информации о параметрах, которые могут быть использованы в запросах к базе данных для баз данных, предоставляемых посредством различных служб.
Компонент(ы) 1090 процессора вывода
[0311] По меньшей мере, в одном варианте осуществления, компонент(ы) 1090 процессора вывода может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Форматирование выходных данных, которые представляются в универсальной внутренней структуре данных, в формы и макеты, которые подготавливают их надлежащим образом для различных модальностей. Выходные данные могут включать в себя, например, общение на естественном языке между интеллектуальным автоматизированным помощником и пользователем; данные об объектах предметной области, к примеру, свойства ресторанов, фильмов, продуктов и т.п.; результаты с зависящими от предметной области данными из информационных служб, к примеру, прогнозы погоды, проверки статуса рейса, цены и т.п.; и/или интерактивные ссылки и кнопки, которые предоставляют возможность пользователю реагировать посредством прямого взаимодействия с представлением вывода.
- Подготовка выходных данных для модальностей, которые могут включать в себя, например, любую комбинацию следующего: графические пользовательские интерфейсы; текстовые сообщения; почтовые сообщения; звуки; анимации; и/или речевой вывод.
- Динамическая подготовка данных для различных механизмов отображения на основе графического пользовательского интерфейса на основе запроса. Например, использование различных макетов и форматов обработки вывода в зависимости от того, какой web-обозреватель и/или устройство используется.
- Динамическая подготовка выходных данных в различных голосах в форме речевого сигнала.
- Динамическая подготовка к указанным модальностям на основе пользовательских предпочтений.
- Динамическая подготовка вывода с использованием конкретных для пользователя "оболочек", которые настраивают оформление и функциональность.
- Отправка в модальность потока выходных пакетов, показывающих промежуточное состояние, обратную связь или результаты по всем фазам взаимодействия с помощником 1002.
[0312] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1090 процессора вывода могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1090 процессора вывода могут быть выполнены, реализованы и/или инициированы посредством одной или более следующих типов систем, компонентов, систем, устройств, процедур, процессов и т.п. (или комбинаций вышеозначенного):
- программные модули в клиенте или сервере варианта осуществления интеллектуального автоматизированного помощника;
- удаленно вызываемые службы;
- использование сочетания шаблонов и процедурного кода.
[0313] Ссылаясь теперь на Фиг.39, показана блок-схема последовательности операций способа, иллюстрирующая пример процедуры многофазного вывода согласно одному варианту осуществления. Процедура многофазного вывода включает в себя этапы 702 обработки в автоматизированном помощнике 1002 и этапы 704 многофазного вывода.
[0314] На этапе 710, получается произнесение речевого ввода, и компонент преобразования речи в текст (к примеру, компонент, описанный в связи с Фиг.22) интерпретирует речь, чтобы формировать набор вариантов 712 интерпретации речи. В одном варианте осуществления, компонент преобразования речи в текст реализуется с использованием, например, модуля распознавания нюансов, предлагаемого компанией Nuance Communications, Inc., Burlington, MA. Варианты 712 интерпретации речи могут быть показаны пользователю на 730, например, в перефразированной форме. Например, интерфейс может показывать альтернативы "Вы сказали?", перечисляющие несколько возможных альтернативных текстовых интерпретаций одного сэмпла звука речи.
[0315] По меньшей мере, в одном варианте осуществления, предоставляется пользовательский интерфейс, чтобы давать возможность пользователю прерываться и выбирать из вариантов интерпретации речи.
[0316] На этапе 714, варианты 712 интерпретации речи отправляются в языковой интерпретатор 1070, который может формировать представления намерения 716 пользователя, по меньшей мере, для одного варианта 712 интерпретации речи. На этапе 732, перефразирования этих представлений намерения 716 пользователя формируются и представляются пользователю. (См. связанный этап 132 процедуры 120 на Фиг.22).
[0317] По меньшей мере, в одном варианте осуществления, пользовательский интерфейс предоставляет возможность пользователю прерываться и выбирать из перефразирований интерпретаций 732 на естественном языке.
[0318] На этапе 718, выполняется анализ задач и диалогов. На этапе 734, интерпретации задачи и предметной области представляются пользователю с использованием алгоритма перефразирования намерения.
[0319] Также ссылаясь теперь на Фиг.40, показан снимок экрана, иллюстрирующий пример обработки вывода согласно одному варианту осуществления. Экран 4001 включает в себя отражение 4002 речевого ввода пользователя, сформированного посредством этапа 730. Экран 4001 дополнительно включает в себя перефразирование 4003 намерения пользователя, сформированного посредством этапа 734. В одном варианте осуществления, как проиллюстрировано в примере по Фиг.40, для ключевых слов, таких как "мероприятия", используется специальное форматирование/выделение, которое может быть использовано для того, чтобы упрощать обучение пользователя для взаимодействия с интеллектуальным автоматизированным помощником 1002. Например, посредством визуального наблюдения форматирования отображаемого текста, пользователь может легко идентифицировать и интерпретировать обратно, что интеллектуальный автоматизированный помощник распознает ключевые слова, такие как "мероприятия", "в следующую среду", "Сан-Франциско" и т.п.
[0320] Возвращаясь к Фиг.39, по мере того, как запросы координируются 720 для служб, и результаты динамически собираются, промежуточные результаты могут отображаться в форме хода 736 выполнения в реальном времени. Например, может возвращаться список ресторанов, и затем их обзоры могут динамически заполняться по мере того, как поступают результаты из служб обзоров. Службы могут включать в себя службы на основе web-технологий и/или службы, которые осуществляют доступ к информации, сохраненной локально в устройстве, и/или из любого другого источника.
[0321] Универсальное представление ответа 722 формируется и форматируется 724 для надлежащей модальности вывода. После того, как конечное форматирование вывода завершается, другой вид перефразирования может предлагаться на этапе 738. На этой фазе весь набор результатов может анализироваться и сравниваться с начальным запросом. Затем может предлагаться сводка результатов или ответ на вопрос.
[0322] Также ссылаясь на Фиг.41, показан другой пример обработки вывода согласно одному варианту осуществления. Экран 4101 иллюстрирует перефразирование 4102 интерпретации текста, сформированной посредством этапа 732, ход 4103 выполнения в реальном времени, сформированный посредством этапа 736, и перефразированную сводку 7104, сформированную посредством этапа 738. Также включены подробные результаты 4105.
[0323] В одном варианте осуществления, помощник 1002 допускает формирование вывода в нескольких режимах. Ссылаясь теперь на Фиг.42, показана блок-схема последовательности операций способа, иллюстрирующая пример обработки многомодального вывода согласно одному варианту осуществления.
[0324] Способ начинается на этапе 600. Процессор 1090 вывода принимает универсальное представление ответа 490 и форматирует 612 ответ согласно устройству и модальности, которая является надлежащей и применимой. Этап 612 может включать в себя информацию из устройства и моделей 610 модальности и/или моделей 614 данных предметной области.
[0325] После того, как ответ 490 отформатирован 612, любое число различных механизмов вывода может быть использовано в любой комбинации. Примеры, проиллюстрированные на Фиг.42, включают в себя:
- Формирование 620 вывода текстовых сообщений, который отправляется 630 в канал текстовых сообщений;
- Формирование 622 вывода электронной почты, который отправляется 632 в качестве почтового сообщения;
- Формирование 624 GUI-вывода, который отправляется 634 в устройство или web-обозреватель для подготовки;
- Формирование 626 речевого вывода, который отправляется 636 в модуль формирования речи.
[0326] Специалисты в данной области техники должны признавать, что может быть использовано множество других механизмов вывода.
[0327] В одном варианте осуществления, содержимое выходных сообщений, сформированных посредством процедуры 700 многофазного вывода, приспосабливается к режиму обработки 600 многомодального вывода. Например, если модальностью вывода является речь 626, язык, используемый для того, чтобы перефразировать пользовательский ввод 730, интерпретации 732 текста, интерпретации 734 задачи и предметной области, ход 736 выполнения и/или сводки 738 результатов, может быть более или менее многословным или использовать предложения, которые проще обнаруживать в звуковой форме, чем в письменной форме. В одном варианте осуществления, язык приспосабливается на этапах процедуры 700 многофазного вывода; в других вариантах осуществления, процедура 700 многофазного вывода приводит к промежуточному результату, который дополнительно уточняется в конкретный язык посредством обработки 600 многомодального вывода.
Компонент(ы) 1052 кратковременного персонального
запоминающего устройства
[0328] По меньшей мере, в одном варианте осуществления, компонент 1052 кратковременного персонального запоминающего устройства может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Хранение предыстории недавнего диалога между вариантом осуществления помощника и пользователем, включающей в себя предысторию пользовательских вводов и их интерпретаций;
- Хранение предыстории недавних выборов пользователем в GUI, к примеру, какие элементы открыты или изучены, по каким телефонным номерам звонили, какие элементы преобразованы, какие анонсы фильмов воспроизведены, и т.п.;
- Сохранение предыстории диалога и пользовательского взаимодействия в базе данных на клиенте, сервере в конкретном для пользователя сеансе или в состоянии клиентского сеанса, таком как куки-файл web-обозревателя или RAM, используемое посредством клиента;
- Сохранение списка недавних пользовательских запросов;
- Сохранение последовательности результатов недавних пользовательских запросов;
- Сохранение предыстории последовательности щелчков UI-событий, включающих в себя нажатия кнопок, прикосновения, жесты, триггеры с активацией голосом и/или любой другой пользовательский ввод.
- Сохранение данных датчиков устройств (таких как местоположение, время, позиционная ориентация, движение, уровень освещенности, уровень звука и т.п.), которые могут быть коррелированы со взаимодействиями с помощником.
[0329] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1052 кратковременного персонального запоминающего устройства могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения.
[0330] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1052 кратковременного персонального запоминающего устройства могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1052 кратковременного персонального запоминающего устройства. Например, компонент(ы) 1052 кратковременного персонального запоминающего устройства может активироваться, когда существует пользовательский сеанс с вариантом осуществления помощника 1002, по меньшей мере, в одной форме ввода или действие пользователем, или ответ посредством системы.
[0331] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1052 кратковременного персонального запоминающего устройства может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Например, компонент(ы) 1052 кратковременного персонального запоминающего устройства может осуществлять доступ к данным из компонента(ов) 1054 долговременного персонального запоминающего устройства (например, чтобы получать пользовательские идентификационные данные и персональные настройки) и/или к данным из локального устройства относительно времени и местоположения, которые могут быть включены в записи кратковременного запоминающего устройства.
[0332] Ссылаясь теперь на Фиг.43A и 43B, показаны снимки экрана, иллюстрирующие пример использования компонента(ов) 1052 кратковременного персонального запоминающего устройства, чтобы поддерживать диалоговый контекст при изменении местоположения, согласно одному варианту осуществления. В этом примере, пользователь спросил относительно местной погоды, а затем произносит просто "в Нью-Йорке". Экран 4301 показывает начальный ответ, включающий в себя местную погоду. Когда пользователь говорит "в Нью-Йорке", помощник 1002 использует компонента(а) 1052 кратковременного персонального запоминающего устройства, чтобы осуществлять доступ к диалоговому контексту и тем самым определять то, что текущей предметной областью являются прогнозы погоды. Это предоставляет возможность помощнику 1002 интерпретировать новое произнесение "в Нью-Йорке" как означающее "каков прогноз погоды в Нью-Йорке в предстоящий вторник?". Экран 4302 показывает надлежащий ответ, включающий в себя прогнозы погоды для Нью-Йорка.
[0333] В примере Фиг.43A и 43B, в кратковременном запоминающем устройстве сохранены не только слова ввода "Послезавтра будет дождь?", но и семантическая интерпретация системой ввода в качестве предметной области погоды и параметра времени, заданного как послезавтра.
Компонент(ы) 1054 долговременного персонального
запоминающего устройства
[0334] По меньшей мере, в одном варианте осуществления, компонент 1054 долговременного персонального запоминающего устройства может быть выполнен с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Постоянное сохранение персональной информации и данных о пользователе, включающих в себя, например, его предпочтения, идентификационные данные, аутентификационные учетные данные, учетные записи, адреса и т.п.;
- Сохранение информации, которую пользователь собрал посредством использования варианта осуществления помощника 1002, такой как эквивалент закладок, избранного, выборок и т.п.;
- Постоянное сохранение сохраненных списков коммерческих организаций, включающих в себя рестораны, отели, магазины, театры и другие места проведения мероприятий. В одном варианте осуществления, компонент(ы) 1054 долговременного персонального запоминающего устройства сохраняет больше, чем просто названия или URL-адреса, а также сохраняет информацию, достаточную для того, чтобы вызывать полный перечень по объектам, включающий в себя телефонные номера, местоположения на карте, фотографии и т.п.;
- Постоянное сохранение сохраненных фильмов, видео, музыки, шоу и других элементов развлечения;
- Постоянное сохранение персонального календаря(и), списка(ков) занятий, напоминаний и оповещений, баз данных контактов, списков из социальных сетей пользователя и т.п.;
- Постоянное сохранение списков покупок и списков пожеланий для продуктов и служб, полученных купонов и дисконтных кодов и т.п.;
- Постоянное сохранение предыстории и квитанций по транзакциям, включающим в себя резервирование, покупки, билеты на мероприятия и т.п.
[0335] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов компонента(ов) 1054 долговременного персонального запоминающего устройства могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности компонента(ов) 1054 долговременного персонального запоминающего устройства могут быть выполнены, реализованы и/или инициированы с использованием одной или более баз данных и/или файлов на (или ассоциированных) клиентах 1304 и/или серверах 1340 и/или постоянно размещающихся в устройствах хранения данных.
[0336] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров компонента(ов) 1054 долговременного персонального запоминающего устройства могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов минимальных пороговых критериев для инициирования, по меньшей мере, одного экземпляра компонента(ов) 1054 долговременного персонального запоминающего устройства. Различные примеры условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров компонента(ов) 1054 долговременного персонального запоминающего устройства, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
- Записи долговременного персонального запоминающего устройства могут быть обнаружены в качестве побочного эффекта взаимодействия пользователя с вариантом осуществления помощника 1002. Любой вид взаимодействия с помощником может формировать добавления в долговременное персональное запоминающее устройство, включающие в себя просмотр, поиск, нахождение, совершение покупок, составление расписаний, приобретение, резервирование, обмен данными с другими людьми через помощник.
- Долговременное персональное запоминающее устройство также может наполняться как следствие регистрации пользователей в учетной записи или службе, обеспечения помощнику 1002 доступа к учетным записям в других службах, использования помощником 1002 службы на клиентском устройстве с доступом к другим базам данных персональной информации, таким как календари, списки занятий, списки контактов и т.п.
[0337] По меньшей мере, в одном варианте осуществления, данный экземпляр компонента(ов) 1054 долговременного персонального запоминающего устройства может осуществлять доступ и/или использовать информацию из одной или более ассоциированных баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств, которые могут находиться, например, на клиенте(ах) 1304 и/или сервере(ах) 1340. Примеры различных типов данных, к которым может осуществляться доступ посредством компонента(ов) 1054 долговременного персонального запоминающего устройства, могут включать в себя, но не только, данные из других баз данных персональной информации, таких как списки контактов или списки друзей, календари, списки занятий, другие диспетчеры списков, диспетчеры персональных счетов и кошельков, предоставляемые посредством внешних служб 1360, и т.п.
[0338] Ссылаясь теперь на Фиг.44A-44C, показаны снимки экрана, иллюстрирующие пример использования компонента(ов) 1054 долговременного персонального запоминающего устройства, согласно одному варианту осуществления. В примере, предоставляется признак (с названием "My Stuff (Мои материалы)"), который включает в себя доступ к сохраненным объектам, таким как рестораны, фильмы и организации, которые находятся через интерактивные сеансы с вариантом осуществления помощника 1002. На экране 4401 по Фиг.44A, пользователь нашел ресторан. Пользователь прикасается к Save to My Stuff (Сохранить в Мои материалы) 4402, который сохраняет информацию о ресторане в компоненте(ах) 1054 долговременного персонального запоминающего устройства.
[0339] Экран 4403 по Фиг.44B иллюстрирует пользовательский доступ к My Stuff (Мои материалы). В одном варианте осуществления, пользователь может выбирать из категорий, чтобы переходить к требуемому элементу.
[0340] Экран 4404 по Фиг.44C иллюстрирует категорию My Restaurant (Мои рестораны), включающую в себя элементы, ранее сохраненные в My Stuff (Мои материалы).
Процедура автоматизированного вызова и ответа
[0341] Ссылаясь теперь на Фиг.33, показана блок-схема последовательности операций способа, иллюстрирующая процедуру автоматического вызова и ответа согласно одному варианту осуществления. Процедура по Фиг.33 может быть реализована в связи с одним или более вариантов осуществления интеллектуального автоматизированного помощника 1002. Можно принимать во внимание, что интеллектуальный автоматизированный помощник 1002, как проиллюстрировано на Фиг.1, является просто одним примером из широкого диапазона вариантов осуществления системы на основе интеллектуального автоматизированного помощника, которые могут быть реализованы. Другие варианты осуществления систем на основе интеллектуального автоматизированного помощника (не показаны) могут включать в себя дополнительные, меньше и/или другие компоненты/признаки по сравнению с тем, что проиллюстрировано, например, в примерном интеллектуальном автоматизированном помощнике 1002, показанном на Фиг.1.
[0342] По меньшей мере, в одном варианте осуществления, процедура автоматизированного вызова и ответа по Фиг.33 может быть выполнена с возможностью осуществлять и/или реализовывать различные типы функций, операций, действий и/или других признаков, таких как, например, одно или более из следующего (или комбинации вышеозначенного):
- Процедура автоматизированного вызова и ответа по Фиг.33 может предоставлять контур потока управления интерфейсом для разговорного интерфейса между пользователем и интеллектуальным автоматизированным помощником 1002. По меньшей мере, одна итерация процедуры автоматизированного вызова и ответа может служить в качестве ответвления в разговоре. Разговорный интерфейс является интерфейсом, в котором пользователь и помощник 1002 общаются посредством поочередного произнесения фраз в разговорной манере.
- Процедура автоматизированного вызова и ответа по Фиг.33 может предоставлять исполнительный поток управления для интеллектуального автоматизированного помощника 1002. Иными словами, процедура управляет сбором ввода, обработкой ввода, формированием вывода и представлением вывода пользователю.
- Процедура автоматизированного вызова и ответа по Фиг.33 может координировать связь между компонентами интеллектуального автоматизированного помощника 1002. Иными словами, она может направлять то, где вывод одного компонента подается в другой, и где может происходить общий ввод из окружения и действие на окружение.
[0343] По меньшей мере, в некоторых вариантах осуществления части процедуры автоматизированного вызова и ответа также могут быть реализованы в других устройствах и/или системах компьютерной сети.
[0344] Согласно конкретным вариантам осуществления, несколько экземпляров или подпроцессов процедуры автоматизированного вызова и ответа могут быть одновременно реализованы и/или инициированы через использование одного или более процессоров 63 и/или других комбинаций аппаратных средств и/или аппаратных средств и программного обеспечения. По меньшей мере, в одном варианте осуществления, одна или более или выбранные части процедуры автоматизированного вызова и ответа могут быть реализованы в одном или более клиенте(ов) 1304, в одном или более сервере(ов) 1340 и/или в комбинации вышеозначенного.
[0345] Например, по меньшей мере, в некоторых вариантах осуществления, различные аспекты, признаки и/или функциональности процедуры автоматизированного вызова и ответа могут быть выполнены, реализованы и/или инициированы посредством программных компонентов, сетевых служб, баз данных и т.п. или любой комбинации вышеозначенного.
[0346] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров процедуры автоматизированного вызова и ответа могут быть инициированы в ответ на обнаружение одного или более условий или событий, удовлетворяющих одному или более различных типов критериев (таких как, например минимальные пороговые критерии) для инициирования, по меньшей мере, одного экземпляра процедуры автоматизированного вызова и ответа. Примеры различных типов условий или событий, которые могут инициировать или начинать реализацию одного или более различных подпроцессов или экземпляров процедуры автоматизированного вызова и ответа, могут включать в себя, но не только, одно или более из следующего (или комбинации вышеозначенного):
• пользовательский сеанс с экземпляром интеллектуального автоматизированного помощника 1002, такой как, например, но не только, одно или более из следующего:
- запуск приложения для мобильных устройств, например, приложения для мобильных устройств, которое является реализацией варианта осуществления интеллектуального автоматизированного помощника 1002;
- запуск компьютерного приложения, например, приложения, которое является реализацией варианта осуществления интеллектуального автоматизированного помощника 1002;
- нажатие специальной кнопки на мобильном устройстве, к примеру, "кнопки речевого ввода";
- кнопка на периферийном устройстве, присоединенном к компьютеру или мобильному устройству, такому как гарнитура, телефонная трубка или базовая станция, навигационная GPS-система, бытовой прибор, пульт дистанционного управления или любое другое устройство с кнопкой, которая может быть ассоциирована с активацией помощи;
- запуск web-сеанса из web-обозревателя для web-узла, реализующего интеллектуальный автоматизированный помощник 1002;
- начало взаимодействия из существующего сеанса web-обозревателя для web-узла, реализующего интеллектуальный автоматизированный помощник 1002, при котором, например, запрашивается служба интеллектуального автоматизированного помощника 1002;
- отправка почтового (e-mail) сообщения на сервер 1426 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;
- отправка текстового сообщения на сервер 1426 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;
- осуществление телефонного вызова с сервером 1434 модальности, который опосредует связь с вариантом осуществления интеллектуального автоматизированного помощника 1002;
- отправка события, такого как оповещение или уведомление, в приложение, которое предоставляет вариант осуществления интеллектуального автоматизированного помощника 1002.
• когда устройство, которое предоставляет интеллектуальный автоматизированный помощник 1002, включается и/или запускается.
[0347] Согласно различным вариантам осуществления, один или более различных подпроцессов или экземпляров процедуры автоматизированного вызова и ответа могут быть инициированы и/или реализованы вручную, автоматически, статически, динамически, одновременно и/или как комбинации вышеозначенного. Дополнительно, различные экземпляры и/или варианты осуществления процедуры автоматизированного вызова и ответа могут быть инициированы в один или более различных временных интервалов (например, в течение конкретного временного интервала, с регулярными периодическими интервалами, с нерегулярными периодическими интервалами, по требованию и т.п.).
[0348] По меньшей мере, в одном варианте осуществления, данный экземпляр процедуры автоматизированного вызова и ответа может использовать и/или формировать различные специальные типы данных и/или другие типы информации при выполнении конкретных задач и/или операций. Они могут включать в себя, например, входные данные/информацию и/или выходные данные/информацию. Например, по меньшей мере, в одном варианте осуществления, по меньшей мере, один экземпляр процедуры автоматизированного вызова и ответа может осуществлять доступ, обрабатывать и/или иным образом использовать информацию из одного или более различных типов источников, таких как, например, одна или более баз данных. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части информации базы данных может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. Дополнительно, по меньшей мере, один экземпляр процедуры автоматизированного вызова и ответа может формировать один или более различных типов выходных данных/информации, которые, например, могут быть сохранены в локальном запоминающем устройстве и/или удаленных запоминающих устройствах.
[0349] По меньшей мере, в одном варианте осуществления, начальная конфигурация данного экземпляра процедуры автоматизированного вызова и ответа может быть выполнена с использованием одного или более различных типов параметров инициализации. По меньшей мере, в одном варианте осуществления, по меньшей мере, к части параметров инициализации может осуществляться доступ через связь с одним или более локальных и/или удаленных запоминающих устройств. По меньшей мере, в одном варианте осуществления, по меньшей мере, часть параметров инициализации, предоставляемых в экземпляр процедуры автоматизированного вызова и ответа, может соответствовать и/или может извлекаться из входных данных/информации.
[0350] В конкретном примере по Фиг.33, предполагается, что один пользователь осуществляет доступ к экземпляру интеллектуального автоматизированного помощника 1002 по сети из клиентского приложения с характеристиками речевого ввода. Пользователь интересуется нахождением хорошего места для ужина в ресторане и контактирует с интеллектуальным автоматизированным помощником 1002 в форме разговора, чтобы помогать предоставлять эти службы.
[0351] На этапе 100, пользователь запрашивается в виде подсказки вводить запрос. Пользовательский интерфейс клиента предлагает несколько режимов ввода, как описано в связи с Фиг.26. Они могут включать в себя, например:
- интерфейс для печатаемого ввода, который может активировать процедуру активного извлечения печатаемого ввода, как проиллюстрировано на Фиг.11;
- интерфейс для речевого ввода, который может активировать процедуру активного извлечения речевого ввода, как проиллюстрировано на Фиг.22.
- интерфейс для выбора вводов из меню, который может активировать активное извлечение ввода на основе GUI, как проиллюстрировано на Фиг.23.
[0352] Специалисты в данной области техники должны признавать, что могут предоставляться другие режимы ввода.
[0353] В одном варианте осуществления, этап 100 может включать в себя представление вариантов, оставшихся от предыдущего разговора с помощником 1002, например, с использованием технологий, описанных в процедуре активного извлечения ввода рекомендаций по диалогу, описанной в связи с Фиг.24.
[0354] Например, посредством одного из способов активного извлечения ввода на этапе 100, пользователь может сказать помощнику 1002: "Где я могу найти хорошую итальянскую еду в округе?" Например, пользователь, возможно, произносит это в компонент речевого ввода. Вариант осуществления компонента 1094 активного извлечения ввода вызывает службу преобразования речи в текст, запрашивает у пользователя подтверждение и затем представляет подтвержденный пользовательский ввод в качестве универсального аннотированного формата 2690 ввода.
[0355] Вариант осуществления компонента 1070 языкового интерпретатора затем вызывается на этапе 200, как описано в связи с Фиг.29. Компонент 1070 языкового интерпретатора грамматически анализирует текстовый ввод и формирует список возможных интерпретаций намерения 290 пользователя. В одном грамматическом анализе слово "итальянский" ассоциировано с ресторанами в итальянском стиле; "хороший" ассоциирован со свойством рекомендации ресторанов; и "в округе" ассоциирован с параметром положения, описывающим расстояние из показания глобального датчика (например, местоположение пользователя, предоставленное посредством GPS на мобильном устройстве).
[0356] На этапе 300, представление намерения 290 пользователя передается в процессор 1080 потока диалогов, который реализует вариант осуществления процедуры анализа диалогов и потоков, как описано в связи с Фиг.32. Процессор 1080 потока диалогов определяет то, какая интерпретация намерения является наиболее вероятной, преобразует эту интерпретацию в экземпляры моделей предметных областей и параметры модели задач и определяет следующий этап потока в потоке диалогов. В текущем примере, модель предметной области ресторанов конкретизируется с помощью задачи выбора с ограничениями, чтобы находить ресторан посредством ограничений (стиль кухни, уровень рекомендации и ограничения близости). Модель потока диалогов указывает, что следующий этап заключается в том, чтобы получать несколько примеров ресторанов, удовлетворяющих этим ограничениям, и представлять их пользователю.
[0357] На этапе 400, вариант осуществления процедуры 400 оркестровки потоков и служб активируется через компонент 1082 оркестровки служб. Он активирует набор служб 1084 от имени запроса пользователя, чтобы находить ресторан. В одном варианте осуществления, эти службы 1084 вносят некоторые данные в общий результат. Их данные объединяются, и результирующий список ресторанов представляется в универсальной, независимой от службы форме.
[0358] На этапе 500, процессор 1092 вывода формирует сводку диалога результатов, к примеру: "Я нашел несколько рекомендованных итальянских ресторанов недалеко". Процессор 1092 вывода комбинирует эту сводку с данными результатов вывода и затем отправляет комбинацию в модуль, который форматирует вывод для конкретного мобильного устройства пользователя на этапе 600.
[0359] На этапе 700, этот конкретный для устройства выходной пакет отправляется в мобильное устройство, и клиентское программное обеспечение в устройстве подготавливает его на экране (или другом устройстве вывода) мобильного устройства.
[0360] Пользователь просматривает это представление и решает изучить различные варианты. Если пользователь закончил 790, способ завершается. Если пользователь не закончил 490, другая итерация контура инициируется посредством возвращения на этап 100.
[0361] Процедура автоматического вызова и ответа может применяться, например, к запросу пользователя "как насчет мексиканской еды?". Такой ввод может быть извлечен на этапе 100. На этапе 200, ввод интерпретируется как рестораны в мексиканском стиле и комбинируется с другим состоянием (хранимым в кратковременном персональном запоминающем устройстве 1052), чтобы поддерживать интерпретацию идентичного намерения, как и в прошлый раз, с одним изменением в параметре стиля ресторана. На этапе 300, это обновленное намерение формирует уточнение запроса, которое предоставляется в компонент(ы) 1082 оркестровки служб на этапе 400.
[0362] На этапе 400 обновленный запрос координируется для нескольких служб 1084, приводя к новому набору ресторанов, который обобщается в диалоге на этапе 500, форматируется для устройства на 600 и отправляется по сети, чтобы показывать новую информацию на мобильном устройстве пользователя на этапе 700.
[0363] В этом случае, пользователь находит понравившийся ресторан, показывает его на карте и отправляет указания, как добраться, другу.
[0364] Специалисты в данной области техники должны признавать, что различные варианты осуществления процедуры автоматизированного вызова и ответа (не показаны) могут включать в себя дополнительные признаки и/или операции по сравнению с тем, что проиллюстрировано в конкретном варианте осуществления по Фиг.33, и/или могут опускать, по меньшей мере, часть признаков и/или операций процедуры автоматизированного вызова и ответа, проиллюстрированной в конкретном варианте осуществления по Фиг.33.
Выбор с ограничениями
[0365] В одном варианте осуществления, интеллектуальный автоматизированный помощник 1002 использует выбор с ограничениями при своих взаимодействиях с пользователем, с тем чтобы эффективнее идентифицировать и представлять элементы, которые с большой вероятностью должны представлять интерес для пользователя.
[0366] Выбор с ограничениями является видом обобщенной задачи. Обобщенные задачи являются абстракциями, которые характеризуют виды объектов предметной области, вводы, выводы и поток управления, которые являются общими для класса задач. Задача выбора с ограничениями выполняется посредством выбора элементов из набора вариантов выбора объектов предметной области (к примеру, ресторанов) на основе ограничений выбора (к примеру, требуемой кухни или местоположения). В одном варианте осуществления, помощник 1002 помогает пользователю изучить пространство возможных вариантов выбора, с извлечением ограничений и предпочтений пользователя, представлением вариантов выбора и рекомендацией действий, которые следует выполнять для этих вариантов выбора, к примеру, резервировать, покупать, запоминать или совместно использовать их. Задача выполнена, когда пользователь выбирает один или более элементов, для которых следует выполнять действие.
[0367] Выбор с ограничениями является полезным во многих контекстах: например, выбор фильма для просмотра, ресторана для ужина, отеля на ночь, места для покупки книги и т.п. В общем, выбор с ограничениями является полезным, когда известна категория, и требуется выбирать экземпляр категории с некоторыми требуемыми свойствами.
[0368] Одним традиционным подходом к выбору с ограничениями является служба работы с каталогами. Пользователь выбирает категорию, и система предлагает список вариантов выбора. В локальном каталоге можно ограничивать каталог местоположением, таким как город. Например, в службе "желтых страниц", пользователи выбирают книгу для города и затем ищут категорию, и книга показывает один или более элементов для этой категории. Основная проблема при использовании службы работы с каталогами состоит в том, что число возможно релевантных вариантов выбора является большим (например, рестораны в данном городе).
[0369] Другим традиционным подходом является приложение управления базами данных, которое предоставляет способ формировать набор вариантов выбора посредством извлечения запроса от пользователя, извлечения совпадающих элементов и представления элементов некоторым способом, который выделяет характерные признаки. Пользователь просматривает строки и столбцы набора результатов, возможно сортируя результаты или изменяя запрос до тех пор, пока он не находит несколько подходящих вариантов. Проблема при использовании службы работы с базами данных состоит в том, что она может требовать, чтобы пользователь операционализировал свою человеческую потребность в качестве формального запроса и использовал абстрактные машины для сортировки, фильтрации и просмотра, чтобы изучить результирующие данные. Это затруднительно для большинства людей, даже с помощью графических пользовательских интерфейсов.
[0370] Третьим традиционным подходом является открытый поиск, к примеру, "локальный поиск". Поиск прост в выполнении, но существует несколько проблем с поисковыми службами, что затрудняет людям осуществление задачи выбора с ограничениями. В частности:
- Аналогично поиску по каталогам, пользователь не может просто вводить категорию и рассматривать один или более возможных вариантов выбора, а должен сужать список.
- Если пользователь может сужать выбор посредством ограничений, непонятно, какие ограничения могут быть использованы (например, "можно поискать места, которые находятся на расстоянии, которое можно пройти пешком, или открыты допоздна?")
- Неясно, как указывать ограничения состояния (например, указана кухня или тип ресторана и каковы возможные значения?)
- Конфликт нескольких предпочтений; обычно нет объективно "лучшего" ответа на данный случай (например, мне нужно место, которое близко расположено и является дешевым, предлагающее деликатесы с превосходным обслуживанием, и которое открыто до полуночи).
- Предпочтения являются относительными, и они зависят от того, что доступно. Например, если пользователь может добиваться столика в ресторане с очень высоким рейтингом, он может выбирать его, даже если он является дорогим. Тем не менее, в общем, пользователь предпочитает менее дорогие варианты.
[0371] В различных вариантах осуществления, помощник 1002 по настоящему изобретению помогает упрощать задачу выбора с ограничениями. В различных вариантах осуществления, помощник 1002 использует службы работы с базами данных и поисковые службы, а также другую функциональность, чтобы сокращать усилия со стороны пользователя на выражение того, что он ищет, с учетом того, что доступно, и выбор удовлетворительного решения.
[0372] В различных вариантах осуществления, помощник 1002 помогает упрощать выбор с ограничениями для людей любым из ряда различных способов.
[0373] Например, в одном варианте осуществления, помощник 1002 может операционализировать свойства в ограничения. Пользователь указывает то, что он хочет, с точки зрения свойств желаемого результата. Помощник 1002 операционализирует этот ввод в формальные ограничения. Например, вместо высказывания "найти один или более ресторанов менее чем в 2 милях от центра Пало-Альто, кухня которого включает в себя итальянскую еду", пользователь может просто сказать "итальянские рестораны в Пало-Альто". Помощник 1002 также может операционализировать качества, запрашиваемые пользователем, которые не являются параметрами для базы данных. Например, если пользователь запрашивает романтичные рестораны, система может операционализировать это в качестве текстового поиска или ограничения в виде совпадения тегов. Таким образом, помощник 1002 помогает преодолевать некоторые проблемы, которые пользователи в противном случае могут иметь в ходе выбора с ограничениями. Пользователю проще представлять себе и описывать удовлетворительное решение, чем описывать условия, которые должны отличать подходящие решения от неподходящих решений.
[0374] В одном варианте осуществления, помощник 1002 может предлагать полезные критерии выбора, и пользователь должен только сообщать, какие критерии являются важными в настоящее время. Например, помощник 1002 может запрашивать: "что из этого имеет значение: цена (дешевле лучше), местоположение (ближе лучше), рейтинг (с более высоким рейтингом лучше)?" Помощник 1002 также может рекомендовать критерии, которые могут требовать конкретных значений; например: "Вы можете сказать, какую кухню Вы предпочитаете или какое блюдо Вы предпочитаете".
[0375] В одном варианте осуществления, помощник 1002 может помогать пользователю принимать решение между вариантами выбора, которые расходятся по ряду конкурирующих критериев (таких как цена, качество, доступность и удобство).
[0376] Посредством предоставления таких указаний помощник 1002 может помогать пользователям при принятии многопараметрических решений любым из нескольких способов:
- Один заключается в том, чтобы уменьшать размерность пространства, комбинируя необработанные данные, к примеру, рейтинги из нескольких источников в составной количественный показатель "рекомендации". Составной количественный показатель может принимать во внимание знания проблемной области об источниках данных (например, рейтинги Zagat могут предоставлять более точные прогнозы качества, чем Yelp).
- Другой подход заключается в том, чтобы сосредотачиваться на поднаборе критериев, превращая проблему "каковы все возможные критерии для рассмотрения и как они комбинируются?" в выбор самых важных критериев в данном случае (например, "какой из них является более важным, цена или близость?").
- Еще один способ упрощать принятие решений заключается в том, чтобы допускать значения по умолчанию и порядки предпочтений (например, все сущности равнозначны, с более высоким рейтингом, а также ближе и дешевле лучше). Система также может запоминать предыдущие ответы пользователей, которые указывают их значения по умолчанию и предпочтения.
- В-четвертых, система может предлагать характерные свойства элементов в наборе вариантов выбора, которые не упомянуты в исходном запросе. Например, пользователь, возможно, запрашивает локальную итальянскую еду. Система может предлагать набор вариантов выбора ресторанов и с ними, списком популярных тегов, используемых посредством рецензентов, или ключевую фразу из путеводителя (например, "прелестное местечко для свидания" "отличные макароны"). Это может позволять людям выбирать конкретный элемент и выполнять задачу. Исследования показывают, что большинство людей принимает решения посредством оценки конкретных экземпляров вместо выбора критериев и рационального подтверждения того из них, который появляется первым. Они также показывают то, что люди узнают о признаках из конкретных случаев. Например, при выборе автомобилей, покупатели могут не обращать внимания на навигационные системы до тех пор, пока они не видят, что некоторые автомобили имеют их (и впоследствии навигационная система может становиться важным критерием). Помощник 1002 может представлять характерные свойства перечисленных элементов, которые помогают людям выбирать победителя или которые рекомендуют размерность, вдоль которой можно оптимизировать.
Концептуальная модель данных
[0377] В одном варианте осуществления, помощник 1002 предлагает помощь с задачей выбора с ограничениями посредством упрощения концептуальной модели данных. Концептуальная модель данных является абстракцией, представляемой пользователям в интерфейсе помощника 1002. Чтобы преодолевать психологические проблемы, описанные выше, в одном варианте осуществления помощник 1002 предоставляет модель, которая дает возможность пользователям описывать то, что они хотят, с точки зрения нескольких легко распознаваемых и запоминаемых свойств подходящих вариантов выбора, а не выражений ограничения. Таким образом, свойства могут быть простыми при составлении в запросах на естественном языке (например, прилагательные, модифицирующие маркеры ключевых слов) и могут распознаваться в строках с подсказкой ("Вы также можете предпочесть рекомендованные рестораны..."). В одном варианте осуществления, используется модель данных, которая дает возможность помощнику 1002 определять интересующую предметную область (например, рестораны в сравнении с отелями) и общий подход к указанию того, что может быть конкретизировано с помощью зависящих от предметной области свойств.
[0378] В одном варианте осуществления, концептуальная модель данных, используемая посредством помощника 1002, включает в себя класс выбора. Это представление пространства сущностей, из которых можно выбирать. Например, в приложении "найти ресторан", класс выбора является классом ресторанов. Класс выбора может быть абстрактным и иметь подклассы, такие как "занятия в пункте назначения". В одном варианте осуществления, концептуальная модель данных допускает то, что в данной ситуации решения проблемы, пользователь заинтересован в выборе из одного класса выбора. Это допущение упрощает взаимодействие и также дает возможность помощнику 1002 объявлять свои границы компетентности ("Я знаю о ресторанах, отелях и фильмах" в противоположность "Я знаю о жизни в городе").
[0379] С учетом класса выбора, в одном варианте осуществления модель данных, представленная пользователю для задачи выбора с ограничениями, включает в себя, например: элементы; признаки элементов; критерии выбора; и ограничения.
[0380] Элементы являются экземплярами класса выбора.
[0381] Признаки элементов являются свойствами, атрибутами или вычисленными значениями, которые могут быть представлены и/или ассоциированы, по меньшей мере, с одним элементом. Например, название и телефонный номер ресторана являются признаками элементов. Признаки могут быть внутренними (название или кухня ресторана) или реляционными (например, расстояние от текущего интересующего местоположения). Они могут быть статическими (например, название ресторана) или динамическими (рейтинг). Они могут быть составными значениями, вычисленными из других данных (например, количественный показатель "соотношения цены и качества"). Признаки элементов являются абстракциями для пользователя, выполняемыми посредством средства моделирования предметной области; они не должны соответствовать базовым данным из внутренних интерфейсных служб.
[0382] Критерии выбора являются признаками элементов, которые могут быть использованы для того, чтобы сравнивать значение или релевантность элементов. Иными словами, это способы сообщать то, какие элементы являются предпочтительными. Критерии выбора моделируются в качестве признаков самих элементов, независимо от того, являются они внутренними свойствами или вычисляются. Например, близость (заданная как расстояние от интересующего местоположения) является критерием выбора. Местоположение в пространстве и времени является свойством, а не критерием выбора, и оно используется вместе с интересующим местоположением для того, чтобы вычислять расстояние от интересующего местоположения.
[0383] Критерии выбора могут иметь присущий порядок предпочтений. Иными словами, значения любого конкретного критерия могут быть использованы для того, чтобы выстраивать элементы в порядке согласно критерию наилучшего соответствия. Например, критерий близости имеет такое присущее предпочтение, что ближе лучше. Местоположение, с другой стороны, не имеет присущего значения предпочтения. Это ограничение дает возможность системе делать допущения по умолчанию и направлять выбор, если пользователь только упоминает критерий. Например, пользовательский интерфейс может предлагать "сортировать по рейтингу" и допускать, что с более высоким рейтингом лучше.
[0384] Один или более критериев выбора также являются признаками элементов; это признаки, связанные с выбором из возможных элементов. Тем не менее, признаки элементов не обязательно связаны с предпочтением (например, названия и телефонные номера ресторанов обычно нерелевантны для выбора из них).
[0385] По меньшей мере, в одном варианте осуществления, ограничения являются ограничениями на требуемые значения критериев выбора. Формально, ограничения могут представляться как членство в наборе (например, тип кухни включает в себя итальянскую), совпадения с конструкцией (например, текст обзора ресторана включает в себя "романтичный"), нечеткие неравенства (например, расстояние меньше нескольких миль), качественные пороговые значения (например, с высоким рейтингом) или более сложные функции (например, хорошее соотношение цены и качества). Чтобы в достаточной степени упрощать ситуацию для обычных людей, эта модель данных сокращает, по меньшей мере, одно или более ограничений до символьных значений, которые могут сопоставляться как слова. Время и расстояние могут исключаться из этого сокращения. В одном варианте осуществления, операторы и пороговые значения, используемые для реализации ограничений, скрываются от пользователя. Например, ограничение на критерии выбора, называемое "кухней", может представляться как символьное значение, к примеру, "итальянская" или "китайская". Ограничение на рейтинг - это "рекомендован" (двоичный выбор). Для времени и расстояния, в одном варианте осуществления помощник 1002 использует собственные представления, которые обрабатывают диапазон вводов и значений ограничений. Например, расстояние может быть "расстоянием, которое можно пройти пешком", и время может быть "сегодня вечером"; в одном варианте осуществления, помощник 1002 использует специальную обработку, чтобы сопоставлять такой ввод с более точными данными.
[0386] По меньшей мере, в одном варианте осуществления, некоторые ограничения могут быть обязательными ограничениями. Это означает то, что задача просто не может быть выполнена без этих данных. Например, трудно выбирать ресторан без некоторого понятия требуемого местоположения, даже если известно название.
[0387] Чтобы подвести итог, предметная область моделируется в качестве классов выбора с признаками элементов, которые являются важными для пользователей. Некоторые функции используются для того, чтобы выбирать и заказывать элементы, предлагаемые пользователю - эти признаки называются критериями выбора. Ограничения являются символьными ограничениями на критерии выбора, которые сужают набор элементов до элементов, которые совпадают.
[0388] Зачастую, несколько критериев могут конкурировать, и ограничения могут совпадать частично. Модель данных сокращает задачу выбора от задачи оптимизации (нахождения наилучшего решения) до задачи сопоставления (нахождения элементов, которые хорошо подходят для набора заданных критериев и совпадают с набором символьных ограничений). Алгоритмы для выбора критериев и ограничений и определения упорядочения описываются в следующем разделе.
Технология для выбора с ограничениями
[0389] В одном варианте осуществления, помощник 1002 выполняет выбор с ограничениями посредством рассмотрения в качестве ввода упорядоченного списка критериев с неявными или явными ограничениями, по меньшей мере, на один и формирования набора вариантов элементов с характерными признаками. В вычислительном отношении задача выбора может характеризоваться как вложенный поиск: во-первых, идентификация класса выбора, затем идентификация важных критериев выбора, затем указание ограничений (границ допустимых решений) и выполнение поиска в экземплярах в порядке наилучшего приближения, чтобы находить приемлемые элементы.
[0390] Ссылаясь теперь на Фиг.45, показан пример абстрактной модели 4500 для задачи выбора с ограничениями в качестве вложенного поиска. В примере, помощник 1002 идентифицирует 4505 вызов выбора для всех типов локального поиска 4501. Идентифицированный класс является рестораном. В наборе всех ресторанов 4502, помощник 1002 выбирает 4506 критерии. В примере, критерий идентифицируется в качестве расстояния. В наборе ресторанов в PA 4503, помощник 1002 указывает 4507 ограничения для поиска. В примере, идентифицированное ограничение является "итальянской кухней". В наборе итальянских ресторанов в PA 4504, помощник 4508 выбирает элементы для представления пользователю.
[0391] В одном варианте осуществления, такой вложенный поиск - это то, что помощник 1002 выполняет, когда он имеет релевантные входные данные, а не поток для извлечения данных и представления результатов. В одном варианте осуществления, такой поток управления управляется через диалог между помощником 1002 и пользователем, который работает посредством других процедур, таких как модели потока диалогов и задач. Выбор с ограничениями предлагает инфраструктуру для компоновки моделей потока диалогов и задач на этом уровне абстракции (т.е. подходящую для задач выбора с ограничениями независимо от предметной области).
[0392] Ссылаясь теперь на Фиг.46, показан пример диалога 4600, чтобы помогать направлять пользователя через процесс поиска, так что релевантные входные данные могут быть получены.
[0393] В примерном диалоге 4600, первый этап состоит в указании пользователем того, что он ищет, т.е. класса выбора. Например, пользователь может осуществлять это посредством высказывания "ужин в Пало-Альто". Это дает возможность помощнику 1002 логически выводить 4601 задачу и предметную область.
[0394] После того, как помощник 1002 понял привязку задачи и предметной области (класс выбора=рестораны), следующий этап заключается в том, чтобы понимать, какие критерии выбора являются важными для этого пользователя, например, посредством запрашивания 4603 критериев и/или ограничений. В вышеприведенном примере, "в Пало-Альто" указывает интересующее местоположение. В контексте ресторанов система может интерпретировать местоположение в качестве ограничения близости (технически, ограничения на критерий близости). Помощник 1002 поясняет, что необходимо, принимает ввод. Если существует достаточно информации, чтобы ограничивать набор вариантов выбора до обоснованного размера, то помощник 1002 перефразирует ввод и представляет 4605 один или более ресторанов, которые удовлетворяют ограничению близости, отсортированных в некотором полезном порядке. Пользователь затем может выбирать 4607 из этого списка или уточнять 4606 критерии и ограничения. Помощник 1002 рассуждает насчет уже указанных ограничений и использует зависящие от предметной области знания для того, чтобы рекомендовать другие критерии, которые могут помогать, также с запросом ограничений на эти критерии. Например, помощник 1002 может рассуждать, что при рекомендации ресторанов на расстоянии, которое можно пройти пешком от отеля, полезными критериями для запроса должны быть доступность столика и кухня.
[0395] Задача выбора с ограничениями выполнена, когда пользователь выбирает 4607 экземпляр класса выбора. В одном варианте осуществления, дополнительные дальнейшие задачи 4602 обеспечиваются посредством помощника 1002. Таким образом, помощник 1002 может предлагать службы, которые указывают выбор при предоставлении некоторого другого значения. Примеры 4608 - это заказ ресторана, установка напоминания на календаре и/или совместное использование выбора с другими посредством отправки приглашения. Например, заказ ресторана однозначно указывает, что он выбран; другие варианты могут заключаться в том, чтобы помещать ресторан в календарь или отправлять в приглашении с указаниями, как добраться, друзьям.
[0396] Ссылаясь теперь на Фиг.47, показана блок-схема последовательности операций, иллюстрирующая способ выбора с ограничениями согласно одному варианту осуществления. В одном варианте осуществления, помощник 1002 работает приспосабливающимся способом с перемежающейся инициативой, разрешая пользователю переходить к внутреннему контуру, например, посредством указания задачи, предметной области, критериев и ограничений по одному или более за раз во вводе.
[0397] Способ начинается 4701. Ввод принимается 4702 от пользователя согласно любому из режимов, описанных в данном документе. Если, на основе ввода, задача неизвестна, помощник 1002 запрашивает 4705 прояснение ввода от пользователя.
[0398] На этапе 4717, помощник 1002 определяет то, предоставляет или нет пользователь дополнительный ввод. Если да, помощник 1002 возвращается к этапу 4702. В противном случае, способ завершается 4799.
[0399] Если на этапе 4703 задача известна, помощник 1002 определяет 4704 то, является или нет задачей выбор с ограничениями. Если нет, помощник 1002 переходит 4706 к указанному потоку задач.
[0400] Если на этапе 4704 задачей является выбор с ограничениями, помощник 1002 определяет 4707, может или нет класс выбора быть определен. Если нет, помощник 1002 предлагает 4708 выбор известных классов выбора и возвращается к этапу 4717.
[0401] Если на этапе 4707 класс выбора может быть определен, помощник 1002 определяет 4709, могут или нет быть определены все обязательные ограничения. Если нет, помощник 1002 запрашивает в виде подсказки 4710 запрошенную информацию и возвращается к этапу 4717.
[0402] Если на этапе 4709 все требуемые константы могут быть определены, помощник 1002 определяет 4711, могут или нет быть найдены какие-либо элементы результатов, с учетом ограничений. Если нет элементов, которые удовлетворяют ограничениям, помощник 1002 предлагает 4712 способы ослаблять ограничения. Например, помощник 1002 может ослаблять ограничения от наименьшего до наибольшего приоритета с использованием алгоритма фильтрации/сортировки. В одном варианте осуществления, если существуют элементы, которые удовлетворяют некоторым ограничениям, то помощник 1002 может перефразировать ситуацию (вывод, например: "Я не могу найти рекомендованные греческие рестораны, которые осуществляют доставку по воскресеньям в Сан-Карлосе. Тем не менее, я нашел 3 греческих ресторана и 7 рекомендованных ресторанов в Сан-Карлосе".). В одном варианте осуществления, если нет элементов, которые совпадают с любыми ограничениями, то помощник 1002 может перефразировать эту ситуацию и запрашивать в виде подсказки различные ограничения (вывод, например: "Извините, я не могу найти рестораны в Anytown, Техас. Вы можете выбрать другое местоположение".). Помощник 1002 возвращается к этапу 4717.
[0403] Если на этапе 4711 элементы результата могут быть найдены, помощник 1002 предлагает 4713 список элементов. В одном варианте осуществления, помощник 1002 перефразирует текущие заданные критерии и ограничения (вывод, например, "Вот несколько рекомендованных итальянских ресторанов в Сан-Хосе". (рекомендовано=да, кухня=итальянская, близость=<в Сан-Хосе>)). В одном варианте осуществления, помощник 1002 представляет отсортированный, разбитый на страницы список элементов, которые удовлетворяют известным ограничениям. Если элемент показывает только некоторые ограничения, такое условие может быть показано как часть отображения элементов. В одном варианте осуществления, помощник 1002 предлагает пользователю способы выбирать элемент, например, посредством инициирования другой задачи для этого элемента, такой как заказ, напоминание, составление расписания или совместное использование. В одном варианте осуществления, для любого данного элемента, помощник 1002 представляет признаки элементов, которые являются характерными для выборки экземпляров класса выбора. В одном варианте осуществления, помощник 1002 показывает то, как элемент удовлетворяет ограничению; например, рейтинг Zagat в 5 удовлетворяет ограничению "рекомендовано=да", а "на расстоянии в 1 милю" удовлетворяет ограничению "на расстоянии, которое можно пройти пешком от адреса". В одном варианте осуществления, помощник 1002 дает возможность пользователю выполнять детализацию для получения дополнительных подробностей для элемента, что приводит к отображению большего числа признаков элементов.
[0404] Помощник 1002 определяет 4714, выбирает или нет пользователь элемент. Если пользователь выбирает элемент, задача выполнена. Любая дальнейшая задача выполняется 4715, если имеется, и способ завершается 4799.
[0405] Если на этапе 4714 пользователь не выбирает элемент, помощник 1002 предлагает 4716 пользователю способы выбирать другие критерии и ограничения и возвращается к этапу 4717. Например, с учетом текущих заданных критериев и ограничений, помощник 1002 может предлагать критерии, которые с наибольшей вероятностью должны ограничивать набор вариантов выбора до требуемого размера. Если пользователь выбирает значение ограничения, то значение ограничения добавляется к ранее определенным ограничениям, когда этапы 4703-4713 повторяются.
[0406] Поскольку один или более критериев могут иметь присущее значение предпочтения, выбор критериев может добавлять информацию в запрос. Например, предоставление возможности пользователю указывать, что положительные обзоры ценятся, дает возможность помощнику 1002 сортировать по этому критерию. Эта информация может быть принята во внимание, когда этапы 4703-4713 повторяются.
[0407] В одном варианте осуществления, помощник 1002 дает возможность пользователю повышать значимость критерия, который уже указан, так что он должен иметь более высокий порядок приоритета. Например, если пользователь запрашивает быстрые, дешевые, наиболее рекомендуемые рестораны в пределах одного квартала от своего местоположения, помощник 1002 может запрашивать, чтобы пользователь выбрал то, какой из этих критериев является более важным. Эта информация может быть принята во внимание, когда этапы 4703-4713 повторяются.
[0408] В одном варианте осуществления, пользователь может предоставлять дополнительный ввод в любой момент в то время, когда выполняется способ по Фиг.47. В одном варианте осуществления, помощник 1002 проверяет периодически или непрерывно на предмет такого ввода и, в ответ, переходит назад к этапу 4703, чтобы обрабатывать его.
[0409] В одном варианте осуществления, при выводе элемента или списка элементов, помощник 1002 указывает в представлении элементов признаки, которые использованы для того, чтобы выбирать и упорядочивать их. Например, если пользователь запрашивает близлежащие итальянские рестораны, такие признаки элементов для расстояния и кухни могут быть показаны в представлении элемента. Это может включать в себя выделение совпадений, а также перечень критериев выбора, которые вовлечены в представление элемента.
Примерные предметные области
[0410] Таблица 1 предоставляет пример предметных областей выбора с ограничениями, которые могут обрабатываться посредством помощника 1002 согласно различным вариантам осуществления.
Таблица 1
Выбор
На основе этих критериев
Местополо-жение
Цена
Доступность
Тип
Двойственность
Название
Услуги
Специальный поиск
Общий поиск
Ресторана
Близость
Доступность по цене
Свободные столики
кухня
рейтинг по путеводителю, обзору
Название ресторана
доставка
позиции меню
Ключевые слова
отеля
Близость
Диапазон цен
Доступные комнаты
мотель, отель, B&B, ...
рейтинг по путеводителю, обзору
Название отеля
комфортабельность
Ключевые слова
фильма
Близость кинотеатра
Расписание сеансов
жанр
рейтинг по обзору
Название фильма
актеры и т.д.
местной организации
Близость
Категория организации
рейтинг по обзору
Название организации
Ключевые слова
Локального мероприятия
Близость места проведения мероприятий
по дате
Название мероприятия
Ключевые слова
концерт
Близость места проведения мероприятий
по расписанию турне
стиль музыки
Название группы
Участники группы
Ключевые слова
CD, книги, DVD для покупки
диапазон цен
онлайн, в магазине и т.д.
Загрузка, физический
Популярность
Название альбома или песни
Исполнитель, название и т.д.
Ключевые слова
Фильтрация и сортировка результатов
[0411] В одном варианте осуществления, при представлении элементов, которые удовлетворяют текущим заданным критериям и ограничениям, может использоваться технология фильтрации/сортировки. В одном варианте осуществления ограничения выбора могут служить в качестве параметров фильтрации и сортировки для базовых служб. Таким образом, любой критерий выбора может быть использован для того, чтобы определять то, какие элементы находятся в списке, и вычислять порядок, в котором можно разбивать их на страницы и показывать. Порядок сортировки для этой задачи сродни рангу релевантности при поиске. Например, близость является критерием с символьными значениями ограничений, к примеру, "на расстоянии, которое можно проехать на машине" и общим понятием сортировки по расстоянию. Ограничение "расстояние, которое можно проехать на машине" может быть использовано для того, чтобы выбирать группу вариантов элементов. В этой группе ближе расположенные элементы могут сортироваться выше в списке.
[0412] В одном варианте осуществления, ограничения выбора и ассоциированная фильтрация и сортировка находятся на дискретных "уровнях", которые являются функциями как от базовых данных, так и от ввода пользователя. Например, близость группируется на уровни, такие как "расстояние, которое можно пройти пешком", "расстояние, которое можно проехать на такси", "расстояние, которое можно проехать на машине". При сортировке один или более элементов на расстоянии, которое можно пройти пешком, трактуются, как если они находятся на одном расстоянии. Ввод от пользователя может вступать в действие в способе, которым он указывает ограничение. Если пользователь вводит, например, "в Пало-Альто", то один или более элементов в границах города Пало-Альто являются идеальными совпадениями и являются эквивалентными. Если пользователь вводит "около железнодорожного вокзала на University Avenue", то совпадение должно зависеть от расстояния от этого адреса, при этом степень совпадения зависит от класса выбора (например, "около" для ресторанов отличается от "около" для отелей). Даже в пределах ограничения, которое может указываться с непрерывным значением, может применяться дискретность. Это может быть важным для операций сортировки, так что несколько критериев могут участвовать в определении упорядочения по критерию наилучшего соответствия.
[0413] В одном варианте осуществления, список элементов (элементов, которые считаются "совпадающими" или "достаточно хорошими") может быть меньше или больше числа элементов, показанных на одной "странице" вывода. В общем, элементам на первой странице уделяется наибольшее внимание, но концептуально существует более длинный список, и разбиение на страницы является просто функцией от форм-фактора носителя вывода. Это означает, например, что если пользователю предлагается способ сортировать или просматривать элементы по некоторому критерию, то именно полный набор элементов (на несколько страниц) сортируется или просматривается.
[0414] В одном варианте осуществления, для критериев выбора существует упорядочение по приоритету. Иными словами, некоторые критерии могут иметь большее значение, чем другие, при фильтрации и сортировке. В одном варианте осуществления, этим критериям, выбранным пользователем, предоставляется более высокий приоритет, чем другим, и предусмотрено упорядочение по умолчанию по одному или более критериев. Это обеспечивает возможность общей лексикографической сортировки. Допущение заключается в том, что существует значимый априорный приоритет. Например, если пользователь не указывает иное, для ресторана может быть важнее быть ближе, чем быть недорогим. В одном варианте осуществления, упорядочение по априорному приоритету зависит от предметной области. Модель предоставляет возможность конкретным для пользователя предпочтений переопределять значения по умолчанию предметной области, если это требуется.
[0415] Поскольку значения ограничений могут представлять несколько внутренних типов данных, существуют различные способы согласования ограничений, и они могут быть конкретными для ограничения. Например, в одном варианте осуществления:
- Двоичные ограничения совпадают как одно или более или ни одно. Например, то, имеет ресторан тип "быстрого питания", может быть истиной или нет.
- Ограничения членства в наборе совпадают как одно или более или ни одно на основе значения свойства. Например, кухня=греческая означает, что набор кухонь для ресторана включает в себя греческую.
- Ограничения перечисления совпадают при пороговом значении. Например, критерий рейтинга может иметь значения ограничений "с рейтингом", "с высоким рейтингом" или "с самым высоким рейтингом". Ограничение как "с высоким рейтингом" также совпадает "с самым высоким рейтингом".
- Числовые ограничения совпадают при пороговом значении, которое может быть конкретным критерием. Например, "открыт допоздна" может быть критерием, и пользователь может запрашивать места, открытые после 22:00. Этот вид ограничения может немного выходить за рамки задачи выбора с ограничениями, поскольку это не символьное значение ограничения. Тем не менее, в одном варианте осуществления, помощник 1002 распознает несколько случаев числовых ограничений, таких как эти, и преобразует их в пороговые значения с символьными ограничениями (например, "рестораны в Пало-Альто открытые сейчас"->"вот 2 ресторана в Пало-Альто, которые открыты допоздна").
- Местоположение и время обрабатывается специальным образом. Ограничение на близость может быть интересующим местоположением, указываемым с некоторой степенью детализации, которое определяет совпадение. Если пользователь указывает город, то совпадение на уровне города является надлежащим; почтовый индекс может обеспечивать радиус. Помощник 1002 также может понимать местоположения, которые находятся "около" других интересующих местоположений, также на основе специальной обработки. Время является релевантным в качестве значения ограничения критериев, которые имеют пороговое значение на основе вызова службы, такой как доступность столика или рейсы в пределах данного диапазона времени.
[0416] В одном варианте осуществления, ограничения могут моделироваться так, что существует одно пороговое значение для выбора и небольшой набор дискретных значений для сортировки. Например, критерий доступности по цене может моделироваться в качестве примерно двоичного ограничения, если доступные по цене рестораны - это все рестораны ниже некоторого порогового диапазона цен. Когда данные подтверждают несколько дискретных уровней для выбора, ограничения могут моделироваться с использованием градиента совпадения. В одном варианте осуществления могут предоставляться два уровня соответствия (к примеру, строгое и нестрогое соответствие); тем не менее, специалисты в данной области техники должны признавать, что в других вариантах осуществления, может предоставляться любое число уровней соответствия. Например, близость может согласовываться с нечеткой границей, так что сущности, которые расположены около интересующего местоположения, могут совпадать нестрого. Практическое последствие строгого или нестрогого соответствия заключается в алгоритме фильтрации/сортировки, как описано ниже.
[0417] По меньшей мере, для одного критерия подход к совпадению и пороговым значениям по умолчанию может устанавливаться, если релевантно. Пользователь может иметь возможность просто произносить название ограничения, символьное значение ограничения или точное выражение ограничения, если оно обрабатывается специально (к примеру, время и местоположение).
[0418] Идеальная ситуация для выбора с ограничениями возникает, когда пользователь указывает ограничения, которые приводят к короткому списку вариантов, один или более которых удовлетворяет ограничениям. Пользователь затем выбирает из победителей на основе признаков элементов. Во многих случаях, тем не менее, проблема имеет чрезмерные или не имеет достаточных ограничений. Когда она имеет чрезмерные ограничения, существует мало или вообще не существует элементов, которые удовлетворяют ограничениям. Когда она не имеет достаточных ограничений, существует столько вариантов, что анализ списка не целесообразен. В одном варианте осуществления, общая модель выбора с ограничениями настоящего изобретения имеет возможность обрабатывать несколько ограничений с надежным совпадением и обычно формировать что-либо, из чего можно выбирать. Затем пользователь может предпочесть уточнять свои критерии и ограничения или просто выполнять задачу с "достаточно хорошим" решением.
Способ
[0419] В одном варианте осуществления, используется следующий способ для фильтрации и сортировки результатов:
1. С учетом упорядоченного списка критериев выбора, выбранных пользователем, определение ограничений, по меньшей мере, на один.
a. Если пользователь указал значение ограничения, использование его. Например, если пользователь произнес "греческая еда", ограничением является кухня=греческая. Если пользователь произнес "Сан-Франциско", ограничением является "В городе Сан-Франциско". Если пользователь произнес "к югу от рынка", то ограничением является "В окрестностях SoMa".
b. В противном случае, использование зависящего от предметной области и критериев значения по умолчанию. Например, если пользователь произнес "столик в каком-нибудь тайском заведении", то он указывает, что критерий доступности является релевантным, но он не указал значение ограничения. Значениями ограничений по умолчанию для доступности могут быть некоторый диапазон времен и дат, к примеру, сегодня вечером и количество участников званого вечера по умолчанию в 2.
2. Выбор минимума из N результатов посредством указанных ограничений.
a. Попытка получить N результатов в строгом соответствии.
b. Если она завершается неудачно, попытка ослаблять ограничения в обратном порядке приоритета. Иными словами, совпадение на строгом уровне для одного или более критериев, за исключением последнего, который может совпадать на нестрогом уровне. Если нет нестрогого совпадения для этого ограничения, то попытка использования нестрогих совпадений вверх по линии от наименьшего до наибольшего приоритета.
c. Затем повторение контура, разрешающего ошибку при совпадении ограничений, от наименьшего до наибольшего приоритета.
3. После получения минимального набора вариантов выбора лексикографическая сортировка по одному или более критериев (которые могут включать в себя указываемые пользователем критерии, а также другие критерии) в порядке приоритета.
a. Рассмотрение набора указываемых пользователем критериев в качестве наибольшего приоритета, затем одного или более оставшихся критериев в их априорном приоритете. Например, если априорный приоритет - это (доступность, кухня, близость, рейтинг), и пользователь дает ограничения на близость и кухню, то приоритет сортировки - это (кухня, близость, доступность, рейтинг).
b. Сортировка для критериев с использованием дискретных уровней соответствия (строгое, нестрогое, нет) с использованием подхода, идентичного подходу при ослаблении ограничений, в этот раз с применением полного списка критериев.
i. Если набор вариантов выбора получен без ослабления ограничений, то один или более из набора вариантов выбора могут "связываться" в сортировке, поскольку они представляют собой одно или более совпадений на строгих уровнях. Далее, следующие критерии в списке приоритетов могут вступать в силу, чтобы сортировать их. Например, если пользователь говорит, что кухня = итальянская, близость = В Сан-Франциско, и приоритет сортировки - это (кухня, близость, доступность, рейтинг), то одно или более мест в списке имеют равные значения совпадения для кухни и близости. Таким образом, список должен сортироваться по доступности (места с доступными столиками появляются первыми). Внутри доступных мест, места с наивысшим рейтингом должны быть наверху.
ii. Если набор вариантов выбора получен посредством ослабления ограничений, то один или более полностью совпадающих элементов располагаются наверху списка, а за ними частично совпадающие элементы. В совпадающей группе они сортируются посредством оставшихся критериев, как и в частично совпадающей группе. Например, если имеется только два итальянских ресторана в Сан-Франциско, то доступный показывается сначала, а затем недоступный. После этого показываются оставшиеся рестораны в Сан-Франциско, отсортированные по доступности и рейтингу.
Упорядочение по приоритету
[0420] Технологии, описанные в данном документе, обеспечивают сверхнадежность помощника 1002, несмотря на частично указываемые ограничения и неполные данные. В одном варианте осуществления, помощник 1002 использует эти технологии, чтобы формировать пользовательский список элементов в порядке по критерию наилучшего соответствия, т.е. согласно релевантности.
[0421] В одном варианте осуществления, такая сортировка по релевантности основана на упорядочении по априорному приоритету. Иными словами, из сущностей, которые важны относительно предметной области, набор критериев выбирается и размещается в порядке значимости. Если одна или более сущностей совпадают, критерии выше по порядку приоритета могут быть более релевантными для выбора с ограничениями из элементов, чем ниже по порядку. Помощник 1002 может работать на основе любого числа критериев. Помимо этого, критерии могут быть модифицированы во времени без нарушения существующих режимов поведения.
[0422] В одном варианте осуществления, порядок приоритета для критериев может настраиваться с зависящими от предметной области параметрами, поскольку способ, которым взаимодействуют критерии, может зависеть от класса выбора. Например, при выборе отелей, доступность и цена могут быть доминирующими ограничениями, тогда как для ресторанов, кухня и близость могут быть более важными.
[0423] В одном варианте осуществления, пользователь может переопределять упорядочение по критериям по умолчанию в диалоге. Это дает возможность системе направлять пользователя, когда поиск имеет чрезмерные ограничения, посредством использования упорядочения, чтобы определять то, какие ограничения должны ослабляться. Например, если пользователь задает ограничения на кухню, близость, рекомендацию и блюдо, и нет полностью совпадающих элементов, пользователь может сказать, что блюдо важнее уровня рекомендации, и изменить сочетание, так что желательные соответствия блюд сортируются первыми.
[0424] В одном варианте осуществления, когда порядок приоритета определяется, указываемые пользователем ограничения имеют приоритет по сравнению с другими. Например, в одном варианте осуществления, близость является обязательным ограничением и тем самым всегда указывается и дополнительно имеет приоритет над другими невыбранными ограничениями. Следовательно, не обязательно быть ограничением с наибольшим приоритетом для сильного доминирования. Кроме того, многие критерии могут не совпадать как один или более, если ограничение не задается пользователем, и таким образом, приоритет этих критериев имеет значение только в выбираемых пользователем критериях. Например, когда пользователь указывает кухню, он важен для них, а в противном случае нерелевантен для сортировки элементов.
[0425] Например, ниже приводится парадигма сортировки по вариантам приоритета для предметной области ресторанов:
1. кухня* (не поддающийся сортировке, если значение ограничения не задано),
2. доступность* (поддающийся сортировке с использованием значения ограничения по умолчанию, например, времени)
3. рекомендованный
4. близость* (значение ограничения всегда задается),
5. доступность по цене
6. возможность доставки
7. блюдо (не поддающийся сортировке, если значение ограничения, например, ключевое слово не задано),
8. ключевые слова (не поддающийся сортировке, если значение ограничения, например, ключевое слово не задано),
9. название ресторана
[0426] Ниже приводится пример объяснения схемы для вышеуказанной парадигмы сортировки:
- Если пользователь указывает кухню, он хочет запомнить ее.
- Если одна или более сущностей совпадают, сортировать по уровню рейтинга (наибольший приоритет для критериев может быть использован для того, чтобы сортировать без ограничения).
- По меньшей мере, в одном варианте осуществления, близость может быть важнее большинства сущностей. Тем не менее, поскольку она совпадает на дискретных уровнях (в городе, в пределах радиуса для прохождения пешком и т.п.), и она всегда указывается, то большую часть времени, большинство совпадающих элементов могут "привязываться" по близости.
- Доступность (определенная посредством поиска на web-узле, таком как, например, open-http://table.com/) является ценным критерием сортировки и может быть основана на значении по умолчанию для сортировки, если не указывается. Если пользователь указывает время для заказа, то только доступные места могут быть в списке, и сортировка может быть основана на рекомендации.
- Если пользователь говорит, что ему нужны наиболее рекомендуемые места, то он может сортировать вышеуказанную близость и доступность, и эти критерии могут ослабляться перед рекомендацией. Допущение заключается в том, что если кто-то ищет хорошее место, он может быть готов поехать немного дальше, и это важнее доступности столика по умолчанию. Если конкретное время для доступности указывается, и пользователь запрашивает рекомендованные места, то места, которые как рекомендованы, так и доступны, могут идти первыми, и рекомендация может ослабляться до нестрогого соответствия до того, как доступность перестает совпадать как один или более.
- Оставшиеся ограничения за исключением названия являются одним или более на основе неполных данных или совпадения. Так что они представляют собой эвристику нестрогой сортировки по умолчанию, а когда они указываются - совпадение типа "один или более или ни один".
- Название может быть использовано в качестве ограничения, чтобы обрабатывать случай, в котором упоминается ресторан по названию, например, найти один или более ресторанов Hobee около Пало-Альто. В этом случае, один или более элементов могут совпадать с названием и могут сортироваться по близости (другое указанное ограничение в этом примере).
Моделирование предметной области: преобразование критериев выбора в базовые данные
[0427] Может быть желательным проводить различие между данными, которые доступны для вычисления посредством помощника 1002, и данными, используемыми для осуществления выбора. В одном варианте осуществления, помощник 1002 использует модель данных, которая уменьшает сложность для пользователя посредством свертывания одного или более видов данных, используемых для того, чтобы различать элементы, в простую модель критериев выбора. Внутренне, эти данные могут принимать несколько форм. Экземпляры класса выбора могут иметь внутренние свойства и атрибуты (к примеру, кухня ресторана), могут сравниваться вдоль размерностей (к примеру, расстояние от некоторого местоположения) и могут быть обнаружены посредством некоторого запроса (к примеру, совпадают они или нет с текстовой конструкцией или доступны или нет в данное время). Они также могут быть вычислены из других данных, которые не представляются пользователю в качестве критериев выбора (например, взвешенных комбинаций рейтингов из нескольких источников). Эти данные являются релевантными как "один или более" для задачи, но различия между этими тремя видами данных не являются релевантными для пользователя. Поскольку пользователь мыслит с точки зрения признаков требуемого варианта выбора, а не свойств и размерностей, помощник 1002 операционализирует эти различные критерии в признаки элементов. Помощник 1002 предоставляет дружественную для пользователя модель данных предметной области и преобразует ее в данные, найденные в web-службах.
[0428] Одним типом преобразования является изоморфизм из базовых данных в дружественные для пользователя критерии. Например, доступность столиков для резервирования, наблюдаемая пользователем, может быть точно такой же, как предлагает web-узел онлайнового резервирования, к примеру, opentable.com, с использованием идентичной степени детализации для времени и количества участников званого вечера.
[0429] Другим типом преобразования является нормализация данных из одной или более служб в набор общих значений, возможно с унификацией эквивалентных значений. Например, кухни одного или более ресторанов могут представляться как одна онтология в помощнике 1002 и преобразовываться в различные словари, используемые в различных службах. Эта онтология может быть иерархической и иметь концевые узлы, указывающие на конкретные значения, по меньшей мере, из одной службы. Например, одна служба может иметь значение кухни "китайская", другая - "сычуаньская" и третья - "азиатская". Онтология, используемая посредством помощника 1002, должна приводить к тому, что ссылки на "китайскую еду" или "сычуаньскую" семантически совпадают с одним или более этих узлов с доверительными уровнями, отражающими степень совпадения.
[0430] Нормализация также может вовлекаться при устранении разногласий в точности. Например, местоположение ресторана может предоставляться на уровне улицы в одной службе, но только как город в другом. В одном варианте осуществления, помощник 1002 использует глубокое структурное представление местоположений и времен, которые могут преобразовываться в различные поверхностные значения данных.
[0431] В одном варианте осуществления, помощник 1002 использует специальный вид преобразования для открытых спецификаторов (например, романтичный, тихий), которые могут преобразовываться в совпадения при полнотекстовом поиске, теги или другие открыто текстурированные признаки. Название ограничения выбора в этом случае должно быть чем-то вроде "описывается как".
[0432] По меньшей мере, в одном варианте осуществления, ограничения могут преобразовываться в упорядочения по практическим предпочтениям. Иными словами, с учетом названия критерия выбора и его значений ограничения, помощник 1002 имеет возможность интерпретировать критерий в качестве упорядочения по возможным элементам. Существует несколько технических проблем, которые следует разрешать при таком преобразовании. Например:
- Упорядочения по предпочтению могут конфликтовать. Упорядочение, предоставленное посредством одного ограничения, может быть несогласованным или даже обратно коррелированным с упорядочением, предоставленным посредством другого. Например, цена и качество имеют тенденцию быть противоположными. В одном варианте осуществления, помощник 1002 интерпретирует ограничения, выбираемые пользователем, во взвешенном или иным образом комбинированным упорядочении, которое отражает желания пользователя, но является истинным для данных. Например, пользователь может запрашивать "дешевые французские рестораны быстрого питания на расстоянии, которое можно пройти пешком, с высоким рейтингом". Во многих местоположениях вообще может не быть такого ресторана. Тем не менее, в одном варианте осуществления, помощник 1002 может показывать список элементов, который стремится к оптимизации, по меньшей мере, для одного ограничения, и пояснять, почему, по меньшей мере, один элемент перечисляется. Например, одним элементом может быть "французская кухня с высоким рейтингом", а другим "дешевое кафе быстрого питания на расстоянии, которое можно пройти пешком".
- Данные могут быть использованы или в качестве жестких или мягких ограничений. Например, диапазон цен ресторана может быть важным для его выбора, но может быть затруднительным указывать пороговое значение для верхней цены. Даже такие на вид жесткие ограничения, как кухня, на практике могут быть мягкими ограничениями вследствие частичного совпадения. Поскольку в одном варианте осуществления помощник 1002 использует стратегию моделирования данных, которая стремится сглаживать один или более критериев в символьные значения (к примеру, "дешевый" или "близко"), эти ограничения могут преобразовываться в функцию, которая правильно интерпретирует критерии и порядок без строгости в отношении совпадения с конкретными пороговыми значениями. Для символьных критериев с четкими объективными значениями истинности помощник 1002 может присваивать объективным критериям более высокие весовые коэффициенты, чем другим критериям, и прояснять в пояснении, что он знает о том, что некоторые элементы не совпадают строго с запрашиваемыми критериями.
- Элементы могут совпадать с некоторыми, но не с одним или более ограничений, и могут быть показаны элементы "с наилучшим приближением".
- В общем, помощник 1002 определяет то, какие признаки элементов являются характерными для предметной области и какие могут служить в качестве критериев выбора и, по меньшей мере, для одного критерия, возможных значений ограничений. Эта информация может предоставляться, например, через рабочие данные и API-вызовы.
Текст перефразирований и строк с подсказкой
[0433] Как описано выше, в одном варианте осуществления помощник 1002 предоставляет обратную связь, чтобы показывать то, что он понимает намерение пользователя и работает в направлении цели пользователя, посредством формирования перефразирований его текущего понимания. В модели разговорных диалогов настоящего изобретения перефразирование - это то, что помощник 1002 выводит после ввода пользователя в качестве предисловия (например, перефразирование 4003 на Фиг.40) или сводки результатов, которые следует учитывать (например, список 3502 на Фиг.35). Строка с подсказкой является рекомендацией пользователю о том, что он еще может сделать, чтобы уточнить своей запрос или изучить пространство выбора вдоль некоторых размерностей.
[0434] В одном варианте осуществления, цели текста перефразирований и строк с подсказкой включают в себя, например:
- показать, что помощник 1002 понимает концепты во вводе пользователя, а не только текст;
- указать границы понимания 1002 помощника;
- направить пользователя, чтобы вводить текст, который требуется для предполагаемой задачи;
- помочь пользователю изучить пространство возможностей при выборе с ограничениями;
- пояснить текущие результаты, полученные из служб, с точки зрения установленных критериев пользователя и допущений помощника 1002 (например, пояснить результаты запросов без достаточных или с чрезмерными ограничениями).
[0435] Например, следующее перефразирование и строка с подсказкой иллюстрируют несколько из этих целей:
Пользовательский ввод:
indonesian food in menlo park (индонезийская еда в Менло-Парке)
Интерпретация системы:
Task=constrainedSelection
SelectionClass=restaurant
Ограничения:
Location=Menlo Park, CA
Cuisine=Indonesian (известно в онтологии)
Результаты из служб:
нет строгих соответствий
Перефразирование:
Sorry, I can't find any Indonesian restaurants near Menlo Park (Извините, я не могу найти индонезийские рестораны около Менло-Парка).
Строка с подсказкой:
You can try other cuisines or locations (Вы можете попробовать другие кухни или местоположения).
Строка с подсказкой под гипертекстовыми ссылками:
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 (Введите местоположение, к примеру, город, окрестности, фактический адрес или "около", после чего достопримечательности).
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 (Введите местоположение: город, почтовый индекс или "около", после чего название места).
[0436] В одном варианте осуществления, помощник 1002 отвечает на пользовательский ввод относительно быстро с перефразированием. Перефразирование затем обновляется после того, как результаты известны. Например, начальный ответ может быть "Поиск индонезийских ресторанов около Менло-Парка...". После того, как результаты получаются, помощник 1002 должен обновлять текст для прочтения "Извините, я не могу найти индонезийские рестораны около Менло-Парка. Вы можете попробовать другие кухни или местоположения". Следует отметить, что определенные элементы выделяются (указывается здесь посредством подчеркивания), указывая, что эти элементы представляют ограничения, которые могут ослабляться или изменяться.
[0437] В одном варианте осуществления, специальное форматирование/выделение используется для ключевых слов в перефразировании. Это может быть полезно, чтобы упрощать обучение пользователя для взаимодействия с интеллектуальным автоматизированным помощником 1002 посредством указания пользователю, какие слова являются самыми важными и с большей вероятностью распознаются посредством помощника 1002. Пользователь затем может с большей вероятностью использовать такие слова в будущем.
[0438] В одном варианте осуществления, перефразирование и строка с подсказкой формируются с использованием любых релевантных контекстных данных. Например, любой из следующих элементов данных может быть использован, по одному или в комбинации:
- Грамматический анализ - дерево узлов онтологии, привязанных к совпадающим маркерам ввода, с примечаниями и исключениями. Для каждого узла в грамматическом анализе, это может включать в себя метаданные узла и/или все маркеры во вводе, которые представляют обоснование для значения узла.
- Задача, если известна.
- Класс выбора.
- Ограничение местоположения независимо от класса выбора.
- Какие обязательные параметры являются неизвестными для данного класса выбора (например, местоположение является обязательным ограничением на рестораны).
- Название объекта с названием в грамматическом анализе, который является экземпляром класса выбора, если таки существуют (например, конкретное название ресторана или фильма).
- Это дальнейшее уточнение или начало разговора? (Сброс начинает новый разговор).
- Какие ограничения при грамматическом анализе связываются со значениями во вводе, который изменил их значения? Другими словами, какие ограничения просто изменены посредством последнего ввода?
- Класс выбора логически выведен или непосредственно указан?
- Отсортированы по качеству, релевантности или близости?
- Для каждого указываемого ограничения, насколько хорошо оно совпадает?
- Уточнение введено как текст или щелчком?
[0439] В одном варианте осуществления, алгоритм перефразирования учитывает запрос, модель 1056 предметной области и результаты предоставления служб. Модель 1056 предметной области содержит классы и признаки, включающие в себя метаданные, которые используются для того, чтобы определять то, как формировать текст. Примеры таких метаданных для формирования перефразирования включают в себя:
- IsConstraint={true | false}
- IsMultiValued={true | false}
- ConstraintType={EntityName, Location, Time, Category Constraint, AvailabilityConstraint, BinaryConstraint, SearchQualifier, GuessedQualifier}
- DisplayName=string
- DisplayTemplateSingular=string
- DisplayTemplatePlural=string
- GrammaticalRole={AdjectiveBeforeNoun,Noun,ThatClauseModifer}
[0440] Например, грамматический анализ может содержать эти элементы:
Class: Restaurant
IsConstraint=false
DisplayTemplateSingular="restaurant"
DisplayTemplatePlural="restaurants"
GrammaticalRole=Noun
Feature: RestaurantName (пример: "Il Fornaio")
IsConstraint=true
IsMultiValued=false
ConstraintType=EntityName
DisplayTemplateSingular="named $1"
DisplayTemplatePlural="named $1"
GrammaticalRole=Noun
Feature: RestaurantCuisine (пример: "китайская")
IsConstraint=true
IsMultiValued=false
ConstraintType=CategoryConstraint
GrammaticalRole=AdjectiveBeforeNoun
Feature: RestaurantSubtype (пример: "кафе")
IsConstraint=true
IsMultiValued=false
ConstraintType=CategoryConstraint
DisplayTemplateSingular="$1"
DisplayTemplatePlural="$1s"
GrammaticalRole=Noun
Feature: RestaurantQualifiers (пример: "романтичный")
IsConstraint=true
IsMultiValued=true
ConstraintType=SearchQualifier
DisplayTemplateSingular="is described as $1"
DisplayTemplatePlural="are described as $1"
DisplayTemplateCompact="matching $1"
GrammaticalRole=Noun
Feature: FoodType (пример: "буррито")
IsConstraint=true
IsMultiValued=false
ConstraintType=SearchQualifier
DisplayTemplateSingular="serves $1"
DisplayTemplatePlural="serve $1"
DisplayTemplateCompact="serving $1"
GrammaticalRole=ThatClauseModifer
Feature: IsRecommended (пример: true)
IsConstraint=true
IsMultiValued=false
ConstraintType=BinaryConstraint
DisplayTemplateSingular="recommended"
DisplayTemplatePlural="recommended"
GrammaticalRole=AdjectiveBeforeNoun
Feature: RestaurantGuessedQualifiers (пример: "впечатляющий")
IsConstraint=true
IsMultiValued=false
ConstraintType=GuessedQualifier
DisplayTemplateSingular="matches $1 in reviews"
DisplayTemplatePlural="match $1 in reviews"
DisplayTemplateCompact="matching $1"
GrammaticalRole=ThatClauseModifer
[0441] В одном варианте осуществления, помощник 1002 имеет возможность обрабатывать несовпадающий ввод. Чтобы обрабатывать такой ввод, модель 1056 предметной области может предусматривать узлы типа GuessedQualifier для каждого класса выбора и правил, которые совпадают с в иных отношениях несовпадающими словами, если они находятся в правильном грамматическом контексте. Иными словами, GuessedQualifiers обрабатываются как разные узлы при грамматическом анализе, которые совпадают, когда существуют слова, которые не найдены в онтологии, но которые находятся в правильном контексте, чтобы указывать то, что они, вероятно, являются спецификаторами класса выбора. Отличие между GuessedQualifiers и SearchQualifiers состоит в том, что вторые сопоставляются со словарем в онтологии. Это различие дает возможность перефразировать то, что помощник 1002 однозначно идентифицировал намерение в SearchQualifiers, и может быть менее устойчивым при отражении GuessedQualifiers.
[0442] В одном варианте осуществления, помощник 1002 выполняет следующие этапы при формировании текста перефразирования:
1. Если задача является неизвестной, пояснение того, что помощник 1002 может сделать, и запрос в виде подсказки для дополнительного ввода.
2. Если задачей является задача выбора с ограничениями, и местоположение известно, то пояснение предметных областей, которые помощник 1002 знает, и запрос в виде подсказки для класса выбора.
3. Если класс выбора известен, но обязательное ограничение отсутствует, то запрос в виде подсказки для этого ограничения (например, местоположение требуется для выбора с ограничениями ресторанов).
4. Если ввод содержит EntityName класса выбора, то вывод "поиск"<название>в<местоположении>.
5. Если это начальный запрос в разговоре, то вывод "поиск", после чего сложной именной группы, которая описывает ограничения.
6. Если это этап дальнейшего уточнения в диалоге:
a. Если пользователь только что закончил требуемый ввод, то вывод "спасибо" и затем обычное перефразирование. (Это происходит, когда существует обязательное ограничение, которое преобразуется в пользовательский ввод).
b. Если пользователь изменяет ограничение, подтверждение этого и затем обычное перефразирование.
c. Если пользователь ввел имя собственное экземпляра класса выбора, его обработка специальным образом.
d. Если пользователь просто добавляет нераспознанную фразу, то указание того, как она должна свернуться, в качестве поиска. При необходимости ввод может быть координирован для поисковой службы.
e. Если пользователь просто добавляет обычное ограничение, то вывод "Хорошо" и обычное перефразирование.
7. Чтобы пояснять результаты, использование идентичного подхода для перефразирования. Тем не менее, когда результаты являются удивительными или неожиданными, то пояснение результатов с использованием знаний о данных и службе. Кроме того, когда запрос имеет чрезмерные или не имеет достаточных ограничений, запрос в виде подсказки для дополнительного ввода.
Грамматика для составления сложных именных групп
[0443] В одном варианте осуществления, при перефразировании 734 запроса в задаче выбора с ограничениями, основой является сложная именная группа вокруг класса выбора, который ссылается на текущие ограничения. Каждое ограничение имеет грамматическую позицию на основе своего типа. Например, в одном варианте осуществления, помощник 1002 может составлять перефразирование, к примеру:
рекомендованные романтичные итальянские рестораны около Менло-Парк со свободными столиками на двоих, которые предлагают оссобуко и описываются как "тихие"
Грамматика, чтобы составлять это, следующая:
<paraphraseNounClause>:==<binaryConstraint><searchQualifier><categoryConstraint><itemNoun><locationConstraint><availabiltyCon-straint><adjectivalClauses>
<binaryConstraint>:==одно прилагательное, которое указывает присутствие или отсутствие BinaryConstraint (например, рекомендованный (лучший), доступный по цене (дешевый)) Можно перечислять несколько в одном запросе.
<searchQualifier>:==слово или слова, которые совпадают с онтологией для спецификатора класса выбора, который должен быть передан в службу поискового механизма. (например, романтичные рестораны, смешные фильмы). Использовать, когда ConstraintType=SearchQualifier.
<categoryConstraint:==прилагательное, которое идентифицирует жанр, кухню или категорию класса выбора (например, китайский ресторан или файл с рейтингом R). Это последнее префиксное прилагательное, поскольку оно является наиболее существенным. Использовать для признаков типа CategoryConstraint и GrammaticalRole=AdjectiveBeforeNoun.
<itemNoun>:==<namedEntityPhrase>|<selectionClass>| <selectionClassSubType>. Находить наиболее конкретный способ отображать существительное.
NamedEntity< SubType<Class
<selectionClass>:==существительное, которое является обобщенным названием для класса выбора (например, ресторан, фильм, место)
<selectionClassSubType>:==именная группа, которая является подтипом класса выбора, если он известен (например, закусочная, музей, магазин, бар для класса выбора "местная организация") Использовать для признаков, в которых ConstraintType=CategoryConstraint и GrammaticalRole=AdjectiveBeforeNoun.
<namedEntityPhrase>:==<entityName> | "the" (<selectionClass> | <selectionClassSubType>)
<entityName>:==имя собственное экземпляра класса выбора (например, "Il Fornaio" "Animal House" "Harry's Bar")
<locationConstraint>:==<locationPreposition><locationName>
<locationPreposition>:=="в", "около", "на" и т.п.
<locationName>:==город, фактический адрес, достопримечательность или что-нибудь для GPS, к примеру "Ваше текущее местоположение"
<availabilityConstraint>:==ограничение доступности, выраженное как предложная фраза, которая идет после существительного (например, "со свободными столиками", "с доступными местами", "доступно онлайн"). Она идет сразу после существительного, чтобы придавать ему характерные свойства.
<adjectivalClauses>:==<modiferVerbPhrase> | "that" <modiferVerbPhrase> "and" <modiferVerbPhrase>
<modiferVerbPhrase>:=глагольная группа, которая выражает ограничение в стиле ключевого слова для поиска на класс выбора (например, рестораны, которые "описываются как тихие", "предлагают мясо после 11", "совпадение с 'ужасно модный' в обзорах"; фильмы, которые "содержат насилие", "в главной роли Billy Bob Thornton"). Включать все ограничения в грамматический анализ, для которых GrammaticalRole=ThatClauseModifer, с использованием варианта "that...and", если их больше одного. Использовать DisplayTemplatePlural, чтобы формировать выражения "that", помещая GuessedQualifier последним. Если существует только одно такое ограничение, использовать вариант DisplayTemplateCompact.
[0444] Таблица 2 предоставляет несколько примеров перефразирований, которые могут предоставляться в ответ на первый ввод для задачи, согласно одному варианту осуществления.
Таблица 2
Перефразирования в ответ на первый ввод
Ввод
Начальное перефразирование
tie house
Извините, я не понимаю "tie house". Я знаю о ресторанах, отелях и других местных организациях, рейсах, погоде и покупке вещей онлайн. Что Вы ищете и где?
Пало-Альто
Я могу помочь Вам найти рестораны, организации, мероприятия и занятия в Пало-Альто. Что вы ищете?
еда
Ищите место, чтобы поесть? Где? (примеры)
итальянская еда
Я могу рассказать Вам об итальянских ресторанах в Вашем районе. Где Вы хотите поесть?
буррито
Я могу помочь Вам найти места, которые предлагают буррито в Вашем районе. Где Вы хотите поесть?
лучшая мексиканская еда
Я могу помочь Вам найти хорошие мексиканские рестораны в Вашем районе. Где Вы?
рестораны Пало-Альто
Поиск ресторанов около Пало-Альто.
итальянская Пало-Альто
Поиск итальянских ресторанов около Пало-Альто.
тайская еда в Менло-Парке
Поиск тайских ресторанов около Менло-Парка
индонезийская еда в Менло-Парке
Поиск индонезийских ресторанов около Менло-Парка
лучшая мексиканская еда в Пало-Альто
Поиск рекомендованных мексиканских ресторанов около Пало-Альто.
кафе быстрого питания Менло-Парк
Поиск ресторанов быстрого питания около Менло-Парка
здоровая еда в Менло-Парке
Поиск мест около Менло-Парка, которые предлагают здоровую еду.
дешевый бар в Менло-Парке
Поиск дешевых баров около Менло-Парка.
бильярдная в Менло-Парке
Поиск бильярдных около Менло-Парка.
кальянная в Менло-Парке
Поиск мест около Менло-Парка, описанных как "кальянная".
острая еда в sf
Поиск мест около Менло-Парка, которые предлагают острую еду.
гамбургеры в Менло-Парке
Поиск мест около Менло-Парка, которые предлагают гамбургеры.
заведение, где танцуют танец живота, в sf
Поиск мест около Сан-Франциско, описанных как "с танцем живота".
заведение, где танцуют танец живота, в Менло-Парке
Поиск мест около Менло-Парка, описанных как "с танцем живота".
недорогая закусочная в sf
Поиск закусочных около Сан-Франциско, описанных как "недорогие".
tie house Менло-Парк
Поиск мест около Менло-Парка, описанных как "tie house".
thai house Пало-Альто
Поиск Thai House в Пало-Альто
il fornaio Менло-Парк
Поиск II Fornaio в Пало-Альто
il fornao в Менло-Парке
Поиск мест около Пало-Альто, описанных как "il fornao".
cliff house в Менло-Парке
Поиск Cliff House в Пало-Альто
романтичный ресторан в Пало-Альто
Поиск романтичных ресторанов в Пало-Альто
романтичный ресторан в Пало-Альто
Поиск романтичных ресторанов в Пало-Альто
тихий романтичный ресторан в Пало-Альто
Поиск романтичных ресторанов в Пало-Альто, описанных как "тихие"
тихий романтичный ресторан в Пало-Альто
Поиск романтичных ресторанов в Пало-Альто, описанных как "тихие"
ужасно модный ресторан в Пало-Альто
Поиск ресторанов в Пало-Альто, описанных как "ужасно модные"
ужасно модный ресторан в Пало-Альто
Поиск ресторанов в Пало-Альто, описанных как "ужасно модные"
столик на двоих сегодня вечером в Пало-Альто
Проверка доступности на сегодня вечером в ресторанах около Пало-Альто.
столик на двоих итальянская еда сегодня вечером в Пало-Альто
Проверка доступности на сегодня вечером в итальянских ресторанах около Пало-Альто.
il fornaio Пало-Альто 18:00 на двоих
Проверка доступности для столиков сегодня вечером в Il Fornaio в Пало-Альто.
столик на двоих в thai house в PA
Проверка доступности для столиков сегодня вечером в Thai House в Пало-Альто.
доставка пиццы в Менло-Парке
мне нужен самый лучший тихий романтичный итальянский ресторан для оссобуко в или около Менло-Парка
Хорошо, поиск рекомендованных романтичных итальянских ресторанов около Менло-Парка, которые предлагают оссобуко и описываются как "тихие".
Заказать мне столик на двоих в лучшем тихом романтичном итальянском ресторане для оссобуко в или около Менло-Парка
Хорошо, поиск рекомендованных романтичных итальянских ресторанов около Менло-Парка со свободными столиками на двоих, которые предлагают оссобуко и описываются как "тихие".
Уточнение запроса о местах, чтобы поесть
[0445] Таблица 3 предоставляет несколько примеров перефразирований в ответ на ситуацию, когда намерение пользователя найти место, чтобы поесть, известно, но он не выбрал конкретное место, чтобы поесть. Ему отображается список ресторанов, и он предоставляет уточнения.
Таблица 3
Перефразирования в ответ на уточнения
Уточнения
Менло-Парк (было неизвестно)
Спасибо, теперь поиск ресторанов в Менло-Парке.
самый дешевый
Хорошо, поиск доступных по цене ресторанов около Менло-Парка.
китайская (была итальянская)
Хорошо, изменяю кухню на китайскую. Поиск китайских ресторанов около Менло-Парка.
пицца (добавление блюда)
Хорошо, поиск итальянских ресторанов около Менло-Парка, которые предлагают пиццу.
Сан-Франциско (было Менло-Парк)
Хорошо, изменяю местоположение на Сан-Франциско. Поиск итальянских ресторанов около Сан-Франциско, которые предлагают пиццу.
ужасно модный
Хорошо, я поищу в обзорах "ужасно модный".
тихий романтичный
Хорошо, поиск романтичных ресторанов в Пало-Альто, описанных как "тихие"
cliff house
Cliff House кажется знакомым. Поищу его в Пало-Альто.
[0446] Таблица 4 предоставляет несколько примеров сводок результатов, которые предоставляются, как только результаты получены.
Таблица 4
Сводка результатов
Ввод
Числорезультатов
Сводка результатов
tie house
Нет данных
Нет данных (нет вызова служб)
Пало-Альто
Нет данных
Нет данных (нет вызова служб)
еда
Нет данных
Нет данных (нет вызова служб)
итальянская еда
Нет данных
Нет данных (нет вызова служб)
буррито
Нет данных
Нет данных (нет вызова служб)
лучшая мексиканская еда
Нет данных
Нет данных (нет вызова служб)
рестораны Пало-Альто
много
Вот несколько рекомендованных ресторанов около Пало-Альто. Вы предпочитаете какой-либо конкретный тип еды? Желаете резервирование?
итальянская Пало-Альто
несколько
Вот несколько итальянских ресторанов около Пало-Альто. Чтобы зарезервировать столик, щелкните доступные времена.
тайская еда в Менло-Парке
несколько
Вот несколько тайских ресторанов около Менло-Парка. Чтобы зарезервировать столик, щелкните доступные времена.
индонезийская еда в Менло-Парке
0
Извините, я не могу найти индонезийские рестораны около Менло-Парка. Вы можете попробовать другие кухни или местоположения.
лучшая мексиканская еда в Пало-Альто
несколько
Вот несколько рекомендованных мексиканских ресторанов около Пало-Альто.
кафе быстрого питания Менло-Парк
несколько
Хорошо, вот несколько ресторанов быстрого питания около Менло-Парка.
здоровая еда в Менло-Парке
несколько
Вот несколько мест около Менло-Парка, которые могут подавать здоровую еду, на основе обзоров.
дешевый бар в Менло-Парке
несколько
Вот несколько баров около Менло-Парка. Не вижу ничего конкретного по "дешевому бару". Можете сказать по-другому?
бильярдная в Менло-Парке
несколько
Вот несколько мест в Менло-Парке, которые описываются как бильярдные. Вы можете добавить другие слова, чтобы описать то, что Вы хотите.
кальянная в Менло-Парке
0
Я не могу найти места в Менло-Парке, соответствующие "кальянной". Интересуетесь ресторанами, отелями или местными организациями?
острая еда в sf
нестрогое соответствие
Вот несколько мест, чтобы поесть в Сан-Франциско. Я не знаю, какие из них предлагают острую еду. Это может идти под другим названием?
гамбургеры в Менло-Парке
несколько
Вы можете найти гамбургеры в этих местах, чтобы поесть, около Менло-Парка.
заведение, где танцуют танец живота, в sf
несколько
Вот несколько мест в Менло-Парке, которые описываются как "с танцем живота". Вы можете добавить другие слова, чтобы описать то, что Вы хотите.
заведение, где танцуют танец живота, в Менло-Парке
0
Я могу помочь Вам найти рестораны, организации, мероприятия и занятия в Сан-Франциско. Есть еще другие слова для "заведение, где танцуют танец живота"?
недорогая закусочная в sf
0
Я могу помочь Вам найти рестораны, организации, мероприятия и занятия в Сан-Франциско. Есть еще другие слова для "недорогая закусочная"?
tie house Менло-Парк
0
Извините, я не знаю о "tie house" в Менло-Парке. Какие-либо другие названия для него?
thai house Пало-Альто
1
Нашел: Ресторан Thai House в Пало-Альто, Калифорния. Хотите зарезервировать столик? Когда и на сколько человек?
il fornaio Менло-Парк
нестрогое соответствие
В Пало-Альто есть ресторан II Fornaio, который располагается около Менло-Парка.
il fornao в Менло-Парке
соответствие по написанию
Вы имели в виду II Fornaio в Пало-Альто? Если нет, попробуйте другие слова.
cliff house в Менло-Парке
0
Я не смог найти Cliff House в Пало-Альто. Он может идти под другим названием или располагаться в другом городе?
романтичный ресторан в Пало-Альто
несколько
Вот несколько ресторанов около Пало-Альто, которые описываются в обзорах как романтичные.
романтичный ресторан в Пало-Альто
0
Вот рестораны около Пало-Альто. Поиск в обзорах не нашел ничего, описанного как романтичный. Какие-либо другие предпочтения?
тихий романтичный ресторан в Пало-Альто
несколько
Вот несколько ресторанов около Пало-Альто, которые совпадают с "тихий романтичный" в обзорах.
тихий романтичный ресторан в Пало-Альто
0
Вот несколько ресторанов около Пало-Альто. Поиск в обзорах не нашел ничего, совпадающего с "тихий романтичный". Какие-либо другие предпочтения?
ужасно модный ресторан в Пало-Альто
несколько
Вот несколько ресторанов около Пало-Альто, которые совпадают с "ужасно модный" в обзорах.
ужасно модный ресторан в Пало-Альто
0
Вот несколько ресторанов около Пало-Альто. Поиск в обзорах не нашел ничего, совпадающего с "ужасно модный". Какие-либо другие предпочтения?
столик на двоих сегодня вечером в Пало-Альто
несколько
Вот рестораны со свободными столиками с 18:00 до 20:00 сегодня вечером для званого вечера на двоих в Пало-Альто, Калифорния.
столик на двоих итальянская еда сегодня вечером в Пало-Альто
несколько
Вот рестораны со свободными столиками с 18:00 до 20:00 сегодня вечером для званого вечера на двоих в Пало-Альто, Калифорния.
il fornaio Пало-Альто 18:00 на двоих
1
Вот варианты столиков в ресторане II Fornaio в Пало-Альто, Калифорния в 18:00 сегодня для званого вечера на двоих.
столик на двоих в thai house в PA
1
Вот информация по Thai House в Пало-Альто, Калифорния. Вы можете позвонить им по приведенному телефонному номеру.
доставка пиццы в Менло-Парке
Вот места, которые предлагают пиццу в Менло-Парке. У меня нет вариантов доставки на это время. Щелкните телефонные номера ресторана, чтобы позвонить по вопросам доставки.
мне нужен самый лучший тихий романтичный итальянский ресторан для оссобуко в или около Менло-Парка
нестрогое соответствие, отсортированы по доступности
Вот наилучшие совпадения для рекомендованных романтичных итальянских ресторанов около Менло-Парка, которые предлагают оссобуко и описываются как "тихие". Щелкните доступные времена, чтобы зарезервировать столик.
Заказать мне столик на двоих в лучшем тихом романтичном итальянском ресторане для оссобуко в или около Менло-Парка
нестрогое соответствие, отсортированы по доступности
Вот наилучшие совпадения для рекомендованных романтичных итальянских ресторанов около Менло-Парка со свободными столиками на двоих, которые предлагают оссобуко и описываются как "тихие". Щелкните доступные времена, чтобы зарезервировать столик.
Уточнения
Менло-Парк (было неизвестно)
несколько
Вот несколько рекомендованных ресторанов около Менло-Парка. Вы предпочитаете какой-либо конкретный тип еды?
самый дешевый
несколько
Я нашел 4 доступных по цене ресторана около Менло-Парка.
китайская (была итальянская)
Я нашел 4 китайских ресторана около Менло-Парка.
пицца (добавление блюда)
несколько
Я нашел 4 итальянских ресторана около Менло-Парка, которые предлагают пиццу.
Сан-Франциско (было Менло-Парк)
несколько
Я нашел 4 итальянских ресторана около Сан-Франциско.
ужасно модный
несколько
Я нашел 4 ресторана около Пало-Альто, которые совпадают с "ужасно модный" в обзорах.
тихий романтичный
несколько
Вот несколько ресторанов около Пало-Альто, которые совпадают с "тихий романтичный" в обзорах.
cliff house
0
Я не смог найти Cliff House в Пало-Альто. Он может идти под другим названием или располагаться в другом городе?
[0447] Таблица 5 предоставляет несколько примеров строк с подсказкой, которые предоставляются, когда пользователи щелкают активные ссылки.
Строки с подсказкой, когда пользователи щелкают активные ссылки
Таблица 5
Строки с подсказкой, когда пользователи щелкают активные ссылки
Текст привязки
Текст строки с подсказкой
Примечания
Местоположение, где
Введите местоположение: город, почтовый индекс или "около", после чего название места.
Эта строка с подсказкой может быть использована, когда пользователь еще не указал местоположение.
Пало-Альто
Введите местоположение, к примеру, город, окрестности, фактический адрес или "около", после чего достопримечательности.
Эта строка с подсказкой может быть использована, когда пользователь изменяет местоположения.
тип еды
Введите категорию еды, к примеру, китайская или пицца.
Тип еды и кухня могут быть объединены
итальянская
Вы можете попробоватьдругие категории еды, к примеру, китайская, или любимое блюдо, к примеру, стейк.
Пользователь ужепроизнес итальянская. Помощник 1002 помогает пользователю изучить альтернативы. Если это блюдо, оно преобладает над кухней.
резервирование
Введите день и время для резервирования столика, к примеру, "завтра в 8".
Подсказка для резервирования
здоровая еда
Вы можете также ввести позиции меню или кухни
Известный тип еды
острая еда
Вы можете также ввести позиции меню или кухни
Неизвестный тип еды
рестораны
Какой ресторан? (например, китайский, пиццерия)
Щелчок ссылки ресторанов должен вставлять слово "ресторан" на конце ввода текста.
организации
Вы можете найти местных флористов, ATM, врачей, аптеки и т.п. Какую организацию Вы ищете?
Щелчок ссылки организаций должен добавлять в машиночитаемый тег то, что это локальный поиск
мероприятия
Вы можете получить сведения по предстоящим концертам, шоу и т.п. Что Вас интересует?
занятия
Музыка, искусство, театр, спорт и т.п. Чем Вы хотите заняться в этом районе?
отели
Я могу помочь Вам найти доступную комнату в отеле. Какие-либо предпочтения покомфортабельности или местоположению?
погода
Введите город, и я скажу Вам, какая там погода.
Если местоположение известно, просто показать погодные данные
покупка вещей
Я могу помочь Вам найти музыку, фильмы, книги, электронные устройства, игрушки и т.д. и купить их на Amazon. Что вы ищете?
Рекомендация возможных ответов в диалоге
[0448] В одном варианте осуществления, помощник 1002 предоставляет контекстные рекомендации. Рекомендации - это способ для помощника 1002 предлагать пользователю варианты, чтобы продвигаться от своей текущей ситуации в диалоге. Набор рекомендаций, предлагаемых посредством помощника 1002, зависит от контекста, и число предлагаемых рекомендаций может зависеть от носителя и форм-фактора. Например, в одном варианте осуществления, большинство характерных рекомендаций может предлагаться в соответствии с общепринятой практикой в диалоге, расширенный список рекомендаций ("больше") может предлагаться в меню с возможностью прокрутки, и еще дополнительные рекомендации достижимы посредством ввода с клавиатуры нескольких символов и выбора из вариантов автозаполнения. Специалисты в данной области техники должны признавать, что другие механизмы могут использоваться для предоставления рекомендаций.
[0449] В различных вариантах осуществления, могут предоставляться различные типы рекомендаций. Примеры типов рекомендаций включают в себя:
- варианты, чтобы уточнять запрос, включающие в себя добавление или удаление, или изменение значений ограничений;
- варианты, чтобы исправлять или восстанавливаться после некорректных ситуаций, к примеру, "не то, что я имел в виду" или "начать снова" или "поискать в Интернете";
- варианты, чтобы разрешать неоднозначность между:
- интерпретациями речи;
- интерпретациями текста, включающими в себя коррекцию написания и семантическую неоднозначность;
- зависящими от контекста командами, к примеру, "показать их на карте" или "отправить указания, как добраться, в мою дату" или "пояснить эти результаты";
- рекомендованными рекомендациями по перекрестной продаже, такими как следующие этапы в сценариях организации званых приемов пищи или мероприятий;
- варианты, чтобы многократно использовать предыдущие команды или их части.
[0450] В различных вариантах осуществления, контекст, который определяет самые релевантные рекомендации, может извлекаться, например, из следующего:
• состояние диалога
• состояние пользователя, включающее в себя, например:
- статические свойства (название, домашний адрес и т.д.)
- динамические свойства (местоположение, время, скорость работы сети)
• предыстория взаимодействия, включающая в себя, например:
- предысторию запросов
- предысторию результатов
- текст, который введен до этого в автозаполнение.
[0451] В различных вариантах осуществления, рекомендации могут быть сформированы посредством любого механизма, такого как, например:
- перефразирование предметной области, задачи или ограничения на основе модели онтологии;
- подсказка в автозаполнении на основе текущей предметной области и ограничений;
- перефразирование неоднозначных альтернативных интерпретаций;
- альтернативные интерпретации преобразования речи в текст;
- авторство вручную на основе специальных условий диалога.
[0452] Согласно одному варианту осуществления, рекомендации формируются в качестве операций для команд в некотором состоянии заполнения. Команды являются явными каноническими представлениями запросов, включающими в себя допущения и логические выводы на основе предпринятых интерпретаций для пользовательского ввода. В случаях, когда пользовательский ввод является неполным или неоднозначным, рекомендации являются попыткой помогать пользователю регулировать ввод, чтобы прояснять команду.
[0453] В одном варианте осуществления, каждая команда является повелительным предложением, имеющим некоторую комбинацию следующего:
- командный глагол (императив, к примеру, "найти" или "где");
- предметная область (класс выбора, к примеру, "рестораны");
- ограничение(я), к примеру, местоположение = Пало-Альто и кухня = итальянская.
[0454] Эти части команды (глагол, предметная область, ограничения) соответствуют узлам в онтологии.
[0455] Рекомендация, затем, может рассматриваться в качестве операций для команды, таких как ее задание, ее изменение или объявление того, что она является релевантной или нерелевантной. Примеры включают в себя:
- задание командного глагола или предметной области ("найти рестораны"),
- изменение командного глагола ("заказать это", "показать это на карте", "сохранить это"),
- изменение предметной области ("поиск ресторана, а не местной организации")
- указание того, что ограничение является релевантным ("попробуйте уточнить по кухне"),
- выбор значения для ограничения ("итальянская", "французская" и т.п.)
- выбор ограничения и значения вместе ("недалеко отсюда", "столики на двоих")
- указание того, что значение ограничения является неправильным ("не этот Бостон")
- указание того, что ограничение не является релевантным ("игнорировать расходы"),
- указание намерения изменять значение ограничения ("попробуйте другое местоположение"),
- изменение значения ограничения ("итальянская, а не китайская")
- добавление к значению ограничения ("также с бассейном")
- привязка значения к сетке ("Лос-Анджелес, не лос-анджелос")
- инициирование новой команды, многократное использование контекста ([после фильмов] "найти близлежащие рестораны", "отправить указания, как добраться, моему другу"),
- инициирование команды, которая является "meta" для контекста ("пояснить эти результаты"),
- инициирование новой команды, сброс или игнорирование контекста ("начать снова", "справка с помощью речи"),
[0456] Рекомендация также может заключать в себе некоторую комбинацию вышеуказанного. Например:
- "фильм Milk (Молоко), а не [рестораны, предлагающие] блюдо молоко"
- "рестораны, предлагающие пиццу, а не просто пиццерии-забегаловки"
- "Место под названием Costco в Маунтин-Вью. Мне не важно, считаете Вы или нет, что это ресторан или местная организация"
- "китайский в mountain view" [недавний запрос]
[0457] В одном варианте осуществления, помощник 1002 включает в себя общий механизм, чтобы поддерживать список рекомендаций, заказываемых посредством релевантности. Формат, в котором предлагается рекомендация, может отличаться в зависимости от текущего контекста, режима и форм-фактора устройства.
[0458] В одном варианте осуществления, помощник 1002 определяет то, какие ограничения модифицировать, посредством рассмотрения любых или всех из следующих факторов:
- Рассмотрение того, имеет или нет значение ограничение;
- Рассмотрение того, ограничение логически выведено или явно указывается;
- Рассмотрение его характерных свойств (suggestionIndex).
[0459] В одном варианте осуществления, помощник 1002 определяет формат вывода для рекомендации. Примеры форматов вывода включают в себя:
- изменение предметной области:
- если вариант автозаполнения "найти рестораны", то "попробуйте что-нибудь другое"
- иначе [логически выведено] "это не поиск ресторанов"
- изменение ограничения в виде названия:
- если название логически выведено, предложение альтернативной неоднозначной интерпретации
- подстановка в автозаполнение названий объектов из текущих результатов
- другое название
- при условии, что это не поиск по названию (удаление ограничения) - возможно, предлагать категорию вместо него
- "без названия"
- "не в Беркли"
- "некоторый другой день"
- не в этом смысле (использовать неоднозначные альтернативы)
- логически выведенная дата: "в любой день, резервирование не нужно"
[0460] В одном варианте осуществления, помощник 1002 пытается разрешать неоднозначности через рекомендации. Например, если набор текущих интерпретаций намерения пользователя является слишком неоднозначным 310, то рекомендации являются одним способом запрашивать в виде подсказки получение дополнительной информации 322. В одном варианте осуществления, для задач выбора с ограничениями, помощник 1002 факторизует общие ограничения для неоднозначных интерпретаций намерения 290 и представляет отличия между ними пользователю. Например, если пользовательский ввод включает в себя слово "кафе", и это слово может совпадать с названием ресторана или типом ресторана, то помощник 102 может запрашивать: "Вы имели в виду рестораны с названием 'кафе' или кафе-рестораны?"
[0461] В одном варианте осуществления, помощник 1002 логически выводит ограничения при определенных ситуациях. Иными словами, для задач выбора с ограничениями не все ограничения обязательно должны явно упоминаться в пользовательском вводе; некоторые могут логически выводиться из другой информации, доступной в активной онтологии 1050, кратковременном запоминающем устройстве 1052 и/или других источниках информации, доступных для помощника 1002. Например:
- Логический вывод предметной области или местоположения
- Допущение по умолчанию, такое как местоположение
- Нестрого совпадающее ограничение (местоположение с нечеткими и неявно выраженными характерными свойствами и т.д.)
- Неоднозначные критерии (сопоставление со значением ограничения без префикса (название по сравнению с категорией, зачастую неоднозначно))
[0462] В случаях, если помощник 1002 логически выводит значения ограничений, он также может предлагать эти допущения в качестве рекомендаций для отклонения пользователем. Например, он может сказать пользователю "Я думал, вы имели в виду в округе. Хотите взглянуть на другое местоположение?"
[0463] Настоящее изобретение описано с конкретной степенью подробности относительно возможных вариантов осуществления. Специалисты в данной области техники должны принимать во внимание, что изобретение может осуществляться на практике в других вариантах осуществления. Во-первых, присвоение конкретных названий компонентам, написание прописными буквами терминов, атрибутов, структур данных либо любой другой аспект программирования или структурный аспект не является обязательным или значительным, и механизмы, которые реализуют изобретение или его признаки, могут иметь различные названия, форматы или протоколы. Дополнительно, система может быть реализована через комбинацию аппаратных средств и программного обеспечения, как описано, либо полностью в аппаратных элементах или полностью в программных элементах. Кроме того, конкретное разделение функциональности между различными системными компонентами, описанными в данном документе, является просто примерным и не обязательным; функции, выполняемые посредством одного системного компонента, вместо этого могут выполняться посредством нескольких компонентов, и функции, выполняемые посредством нескольких компонентов, вместо этого могут выполняться посредством одного компонента.
[0464] В различных вариантах осуществления, настоящее изобретение может быть реализовано как система или способ для выполнения вышеописанных технологий, отдельно или в любой комбинации. В другом варианте осуществления, настоящее изобретение может быть реализовано как компьютерный программный продукт, содержащий энергонезависимый машиночитаемый носитель хранения данных и компьютерный программный код, кодированный на носителе, для инструктирования процессору в вычислительном устройстве или другом электронном устройстве выполнять вышеописанные технологии.
[0465] Ссылка в этом подробном описании на "один из вариантов осуществления" или "вариант осуществления" означает, что конкретный признак, структура или характеристика, описанная в связи с вариантом осуществления, включена, по меньшей мере, в один вариант осуществления изобретения. Вхождения фразы "в одном варианте осуществления" в различных местах подробного описания не обязательно ссылаются на идентичный вариант осуществления.
[0466] Некоторые части вышеуказанного представляются с точки зрения алгоритмов и символических представлений операций с битами данных в запоминающем устройстве вычислительного устройства. Эти алгоритмические описания и представления являются средством, используемым специалистами в области обработки данных для того, чтобы наиболее эффективно передавать суть своей работы другим специалистам в данной области техники. Алгоритм представлен здесь и, в общем, задуман как непротиворечивая последовательность этапов (инструкций), приводящая к требуемому результату. Этапы - это то, что требует физической обработки физических величин. Обычно, хотя и не обязательно, эти величины принимают форму электрических, магнитных или оптических сигналов, допускающих хранение, передачу, комбинирование, сравнение и иную обработку. Иногда удобно, главным образом по причинам стандартного использования, упоминать эти сигналы как биты, значения, элементы, символы, знаки, термины, числа и т.п. Кроме того, также удобно время от времени упоминать определенные компоновки этапов, требующих физических обработок физических величин, как модули или кодирующие устройства, без потери общности.
[0467] Тем не менее, следует принимать во внимание, что все эти и аналогичные термины должны быть ассоциативно связаны с соответствующими физическими величинами и являются просто удобными обозначениями, применяемыми к этим величинам. Если прямо не указано иное, как очевидно из последующего пояснения, следует принимать во внимание, что по всему описанию, пояснения, использующие такие термины, как, "обработка" или "вычисление", или "отображение", или "определение" и т.п., означают действие и процессы компьютерной системы или аналогичного электронного вычислительного модуля и/или устройства, которое обрабатывает и преобразует данные, представленные в качестве физических (электронных) величин в запоминающих устройствах компьютерной системы или регистрах либо в других таких устройствах хранения, передачи или отображения информации.
[0468] Конкретные аспекты настоящего изобретения включают в себя этапы и инструкции процесса, описанные в данном документе в форме алгоритма. Следует отметить, что этапы и инструкции процесса настоящего изобретения могут быть осуществлены в программном обеспечении, микропрограммном обеспечении или аппаратных средствах и при осуществлении в программном обеспечении могут загружаться так, что они постоянно размещаются, а также управляются из различных платформ, используемых посредством множества операционных систем.
[0469] Настоящее изобретение также относится к аппаратной системе для выполнения операций в данном документе. Это аппаратная система может быть специально создана в требуемых целях или она может содержать вычислительное устройство общего назначения, избирательно активируемое или реконфигурируемое посредством компьютерной программы, сохраненной в вычислительном устройстве. Такая компьютерная программа может быть сохранена на машиночитаемом носителе хранения данных, таком как, но не только, любой тип диска, включающий в себя гибкие диски, оптические диски, CD-ROM, магнитооптические диски, постоянные запоминающие устройства (ROM), оперативные запоминающие устройства (RAM), EPROM, EEPROM, магнитные или оптические карты, специализированные интегральные схемы (ASIC) или любой тип носителей, подходящих для сохранения электронных инструкций, каждый из которых соединен с компьютерной системной шиной. Дополнительно, упоминаемые в данном документе вычислительные устройства могут включать в себя один процессор или могут быть архитектурами, использующими многопроцессорные схемы для расширения вычислительных возможностей.
[0470] Алгоритмы и экраны, представленные в данном документе, по сути, не связаны ни с одним конкретным вычислительным устройством, виртуализированной системой или другой аппаратной системой. Различные системы общего назначения также могут быть использованы для программ в соответствии с идеями в данном документе, или может быть удобным конструировать более специализированную аппаратную систему, чтобы осуществлять требуемые этапы способа. Требуемая структура для множества этих систем должна быть очевидной из описания, предусмотренного в данном документе. Помимо этого, настоящее изобретение не описывается в отношении какого-либо конкретного языка программирования. Следует принимать во внимание, что множество языков программирования может быть использовано для того, чтобы реализовывать идеи настоящего изобретения, как описано в данном документе, и все вышеприведенные ссылки на конкретные языки предоставляются для раскрытия сущности и оптимального режима настоящего изобретения.
[0471] Соответственно, в различных вариантах осуществления, настоящее изобретение может быть реализовано как программное обеспечение, аппаратные средства и/или другие элементы для управления компьютерной системой, вычислительным устройством или другим электронным устройством либо любой комбинацией или множеством из означенного. Такое электронное устройство может включать в себя, например, процессор, устройство ввода (к примеру, клавиатуру, мышь, сенсорную панель, трекпад, джойстик, шаровой манипулятор, микрофон и/или любую комбинацию вышеозначенного), устройство вывода (к примеру, экран, динамик и т.п.), запоминающее устройство, устройство долговременного хранения данных (к примеру, магнитное устройство хранения данных, оптическое устройство хранения данных и т.п.) и/или сетевые подключения, согласно технологиям, которые известны в данной области техники. Такое электронное устройство может быть портативным или непортативным. Примеры электронных устройств, которые могут использоваться для реализации изобретения, включают в себя: мобильный телефон, персональное цифровое устройство, смартфон, киоск, настольный компьютер, переносной компьютер, планшетный компьютер, потребительское электронное устройство, электронное бытовое устройство; музыкальный проигрыватель; камеру; телевизионный приемник; абонентскую приставку; электронный игровой блок; и т.п. Электронное устройство для реализации настоящего изобретения может использовать любую операционную систему, такую как, например, iOS или MacOS, предлагаемую компанией Apple Inc., Cupertino, Калифорния, либо любую другую операционную систему, которая выполнена с возможностью использования в устройстве.
[0472] Хотя изобретение описано относительно ограниченного числа вариантов осуществления, специалисты в данной области техники с использованием преимущества вышеприведенного описания должны принимать во внимание, что могут быть разработаны другие варианты осуществления, которые не отступают от объема настоящего изобретения, как описано в данном документе. Помимо этого, следует отметить, что язык, используемый в подробном описании, преимущественно выбран для удобочитаемости и изучения и не может быть выбран, чтобы обрисовывать или ограничивать объем изобретения. Соответственно, раскрытие настоящего изобретения имеет намерение быть иллюстративным, а не ограничивающим объем изобретения, который определен в формуле изобретения.