Вывод на естественном языке: идеальный интерфейс для извлечения по атрибутам
В предыдущих разделах этой главы мы обсуждали достоинства извле' чения данных по атрибутам. Чтобы быть действительно успешной, та' кая система требует интерфейса, позволяющего пользователям легко ориентироваться в сложных и взаимосвязанных наборах атрибутов.
Один из возможных альтернативных подходов заключается в исполь' зовании естественного языка для формулирования запроса. Препятст' вием на этом пути, однако, становится то, что обычные современные компьютеры в большинстве случаев не способны эффективно обраба' тывать запросы на естественном языке, касающиеся реальных рабо' чих ситуаций. Распознавание естественного языка возможно в лабора' тории, в жестко контролируемых условиях, но не в реальном мире, где имеют место безграмотность, диалектизмы, разговорные выражения и прочие недоразумения. Так или иначе, программирование механиз' ма распознавания естественного языка лежит за пределами возможно' стей и бюджета средней команды программистов.
Более приемлемый подход, успешно опробованный авторами, состоит в том, что мы назвали выводом на естественном языке. Использую' щая эту методику программа предлагает пользователю массив элемен' тов управления, ограничивающих ввод. С их помощью пользователь выбирает нужные значения. Элементы расположены так, что образу' ют предложение на английском языке. Пользователь действует в рам' ках набора грамматически правильных вариантов, так что результа' том проектирования становится ограниченная самодокументирован' ная функция построения запроса. На рис. 15.3 приведен пример тако' го интерфейса.
Рис. 15.3. Пример интерфейса извлечения по атрибутам, основанного
на естественном языке. Это фрагмент проекта, созданного фирмой Cooper для продукта Storage Manager по заказу Softek. Элементы управления, помогающие составить запрос к базе данных, предлагают естественный язык на выходе вместо того, чтобы пытаться принимать его в качестве входного. Щелчок по любой подчеркнутой конструкции раскрывает меню
со списком вариантов. Пользователь конструирует предложение из динами- ческого множества вариантов, гарантирующего корректный результат
Вывод на естественном языке: идеальный интерфейс для извлечения по атрибутам 383
Интерфейс с выводом на естественном языке полностью подходит для составления запросов к традиционным реляционным базам данных. Большинству людей сложно работать с обычными запросами к базе дан' ных, поскольку для их понимания необходимо знать булеву систему обозначений и мудреный синтаксис а'ля SQL. Мы уже обсуждали про' блемы булевой нотации в главе 2. То, что программе требуются булевы запросы, еще не основание навязывать их составление пользователю.
Естественный язык не является языком булевой алгебры, и предложе' ния в нем соединяются не союзами AND (И) или OR (ИЛИ), а фразами типа
«все перечисленные» и «не все перечисленные». Пользователю проще выбрать из этих фраз, потому что они ясны и осмысленны, а когда он составит предложение, то сможет прочитать его, чтобы проверить пра' вильность.
С точки зрения программиста, самое сложное в выводе на естествен' ном языке состоит в том, что выбор одного из элементов в начале пред' ложения очень часто меняет набор вариантов в остальных частях предложения. Это означает, что для эффективной реализации вывода на естественном языке грамматика предложений должна быть хорошо продумана заранее и что элементы управления должны появляться и скрываться динамически, в зависимости от того, что выбрано в ос' тальных элементах управления. Кроме того, сами элементы должны быть в состоянии выводить или по меньшей мере загружать данные динамически.
Еще одним сложным вопросом является локализация. Если вы разра' батываете программу для пользователей, говорящих на разных язы' ках, а порядок слов в их языках различается (как, например, в немец' ком и английском), то, возможно, вам потребуется многоязычная сис' тема грамматического ассоциирования.
Как системы поиска по атрибутам, так и интерфейсы с выводом на ес' тественном языке требуют значительных усилий от проектировщиков и программистов, но зато приносят огромную выгоду пользователям, предоставляя им мощную и гибкую систему управления данными. По' скольку объем данных, которыми нам приходится управлять, растет экспоненциально, имеет смысл вкладываться в разработку этих более мощных целеориентированных инструментов управления данными уже сейчас.
Отмена
Отмена – замечательная функция, позволяющая отказаться от совер' шённого действия. Ценность этой простой и элегантной возможности очевидна. Тем не менее если рассмотреть имеющиеся реализации и при' менения этой функции с точки зрения целеориентированного подхода, обнаружатся значительные вариации ее назначения и принципа дей' ствия. Функция отмены чрезвычайно важна для пользователей и не так проста, как может показаться на первый взгляд. В этой главе ис' следуются различные представления пользователей об этой функции и разнообразные способы ее применения.
Пользователи и отмена
Отменатрадиционно воспринимается как метод спасения пользовате' ля в беде – эдакий рыцарь в сверкающих доспехах, или кавалькада, скачущая по холмам, или супергерой, влетающий в кадр в последнюю секунду.
Как вычислительная функция отмена не имеет никаких достоинств. Компьютеры не нуждаются в ней, поскольку никогда не ошибаются. Зато люди совершают ошибки постоянно, и эта функциональная воз' можность существует исключительно для них. Одно только это наблю' дение немедленно приводит нас к заключению, что из всех функцио' нальных возможностей программы модель отмены должна в наимень' шей степени соответствовать модели реализации и в наибольшей сте' пени – ментальной модели пользователей.
Люди не просто совершают ошибки. Ошибки – это часть их повседнев' ного поведения. С точки зрения компьютера фальстарт, взгляд в не' верном направлении, пауза, чихание, экспериментирование, разнооб' разные «ну» и «как бы» – все это ошибки. Однако с человеческой точ' ки зрения они вполне нормальны. Ошибки человека настолько обыч'
Пользователи и отмена385
ны, что если вы будете расценивать их как неправильное, «ошибочное» поведение, то это отрицательно скажется на дизайне вашего программ' ного продукта.