Интерес к использованию естественного (обычного разговорного) языка в программах для вычислительных машин объясняется рядом причин. Как уже говорилось, речь является естественным средством общения между людьми, и, безусловно, пользователи вычислительных машин предпочли бы говорить с ними на обычном языке. При этом на вход ЭВМ может подаваться либо устная команда, либо текст, набираемый на клавиатуре вычислительной машины.
Наиболее распространенные языки программирования высокого уровня сложности содержат многие слова обычного языка; например, в языке АЛГОЛ используются слова начать, конец, для, пока, если, то, иначе и некоторые другие. Некоторые из этих слов включены также в языки ФОРТРАН и БЕЙСИК. Языки программирования, содержащие такие слова (по существу, в их обыденном значении), существенно облегчают задачу программирования по сравнению со случаем использования машинного языка или даже языка ассемблера (в котором до некоторой степени учитывается удобство его для человека). Однако и эти языки все равно сильно отличаются от обычного языка, используемого при общении людей; поэтому им приходится специально обучаться.
Кроме процесса программирования людям приходится взаимодействовать с вычислительными машинами во время работы программы, отдавая соответствующие команды или задавая вопросы. И опять же чем свободнее используемый язык, тем удобнее, по-видимому, будет пользователю (хотя, как мы увидим в дальнейшем, здесь нужна известная осторожность).
Удобно также, если сообщения (особенно сложные) передаются от машины пользователю на обычном разговорном языке. Это обеспечить значительно проще, чем восприятие машиной входной информации, передаваемой на естественном языке.
Поскольку большая часть пионерских исследований по искусственному интеллекту была выполнена в США, под естественным языком довольно часто понимают английский язык, забывая о том, что в других странах "естественными" являются другие языки. Как-то даже была предложена система перевода с естественного языка на немецкий!
Экспертные системы, о которых пойдет речь в следующей главе, представляют собой тип программы, способной общаться с пользователем весьма сложным образом. Такие программы находят применение в задачах типа медицинской диагностики, и весьма важной их особенностью является способность обосновывать заключения, к которым они приходят. В некоторых системах подобного рода пользователь может дать команду "объясни" - и система дает описание цепочки шагов, которая привела к данному заключению, пользуясь при этом достаточно хорошим приближением к разговорному английскому языку.
Реакции такого сорта очень помогают общению человека с машиной. Утверждалось, что причина недавно происшедшей аварии на одной из атомных электростанций заключалась, в частности, в том, что установленная там вычислительная система была сконструирована исходя из предположения, что ей достаточно просто отдать любой сигнал об аварии, лишь бы только он был выражен ясно и громко. Оператору не была предоставлена возможность потребовать объяснений, которые помогли бы ему предпринять нужные в аварийной ситуации действия. Поэтому он пришел в полное смятение от вспышек ламп и завывания сирен.
Кроме проблем взаимодействия пользователя с вычислительной системой имеются и более глубокие причины интереса к естественному языку при работах в области искусственного интеллекта. Язык служит не только для общения между людьми, но и для выражения мыслей человека "про себя". Если интеллект вычислительных машин должен имитировать мышление человека, то он также должен пользоваться естественным языком.
Последнее замечание ставит достаточно глубокие вопросы о природе мышления и о том, в какой степени оно носит лингвистический характер. В одних случаях вербальная (словесная) составляющая мышления является лишь "вершиной айсберга", тогда как в других она играет более фундаментальную роль.
Другая область, в которой рассматривалась возможность использования машин для обработки естественного языка, - это автоматический перевод с одного языка на другой. Вряд ли стоит говорить о пользе такого перевода. Многие трудности, связанные с использованием естественного языка в программах для вычислительных машин, были выявлены в ходе исследований, направленных на создание программ для автоматического перевода.
Синтаксис
Как известно, грамматические предложения строятся по строго определенным правилам. Поэтому на первый взгляд кажется вполне возможным разбирать предложения естественно-языкового входа машины примерно так же, как это делается при разборе (анализе) предложения, которому обучают детей в школе. Можно распознавать слова по их принадлежности к определенным "частям речи", т. е. к таким категориям, как существительное, прилагательное, глагол и т. д. Еще один небольшой шаг, казалось бы, позволит найти в предложении подлежащее и сказуемое, а в сказуемом выделить глагол и объект и т. д. Проанализировав предложение в соответствии с его синтаксисом, можно было бы установить и его смысл.
К сожалению, на деле все обстоит не так просто. Анализ предложения, которому нас учат в школе, зависит от понимания семантики, т. е. смысла, предложения, в гораздо большей степени, чем это предполагалось ранее - до того, как были предприняты попытки автоматизировать этот анализ. Нетрудно проиллюстрировать на примерах, что интерпретация естественного языка существенно зависит от понимания смысла.
Простейший случай, когда интерпретация зависит от знания предмета разговора, связан с неоднозначностью смысла слова. Эту ситуацию иллюстрирует следующая пара фраз, предложенная лингвистом Бар-Хиллелом (теперь ее часто называют парадоксом Бар-Хиллела):
The pen is in the box (ручка в ящике).
The box is in the pen (ящик в клетке).
В первом предложении слово реп наводит на мысль о ручке для письма, тогда как во втором оно говорит совершенно о другом - о клетке для птиц. В синтаксисе приведенных фраз нет ничего, что указывало бы на различие в смысле этого слова и что могло бы оказаться важным при переводе этих фраз на такой язык, в котором нет слова, охватывающего одновременно оба значения слова pen.
Иногда семантика влияет на интерпретацию фразы более тонко, как, например, в такой паре предложений, приведенной Виноградом [1]:
Отцы города отказались выдать женщинам разрешение на демонстрацию, поскольку они боялись беспорядков.
Отцы города отказались выдать женщинам разрешение на демонстрацию, поскольку они были настроены революционно.
В первой фразе предполагается, что местоимение они относится к отцам города, которые, по всей вероятности, больше беспокоятся о беспорядках, чем группа воинственно настроенных женщин. Во второй фразе это местоимение почти наверняка относится к женщинам, поскольку и представить себе невозможно, чтобы отцы города были настроены революционно. При переводе этих фраз на язык, в котором местоимение, эквивалентное местоимению они, имеет различные формы в мужском и женском роде, необходимо в каждой из этих фраз использовать соответствующее смыслу местоимение.
Иногда смысл фразы, подсказываемый контекстом, оказывается противоречивым, как, например, в предложении
The old man's glasses were filled with sherry. (Стаканы старого человека были наполнены вином.)
Большинство людей, читающих эту фразу в первый раз, интерпретируют слово glasses как очки (этому способствует слово старый); когда же предложение прочитано до конца, приходится возвращаться к началу фразы и интерпретировать слово glasses уже как стаканы.
Неоднозначности, которые необходимо разрешать с учетом семантики, не ограничиваются неоднозначностью в словах и местоимениях. Случается, что саму структуру предложения можно понять лишь с учетом семантики.
Рассмотрим, например, пару фраз, взятых снова из работы Винограда:
Он подошел к машине с камнем.
Он подошел к машине с резиновым бампером.
При интерпретации первой фразы предложенное дополнение, играющее роль наречия, наиболее естественно связывается с глаголом подошел. Во второй фразе оно с большей вероятностью относится к существительному машина и играет роль прилагательного. В синтаксисе этих двух фраз нет ничего, что указывало бы на это различие, и для их правильной интерпретации приходится прибегнуть к помощи семантики.
В английском языке фразы, начинающиеся со слова with*, часто используются там, где (как это было в предыдущем примере) структура предложения дает мало информации о том, к чему это слово относится. Даже следующее предложение, взятое у Шенка [2], довольно легко интерпретируется человеком, но только лишь с использованием семантики:
* (Предлог with, по существу, имеет два значения: с (вместе с кем-то, чем-то) и посредством (указывая на орудие). - Прим. перев.)
I hit the boy with the girl with long hair with a hammer with vengeance.
(Я с силой ударил мальчика с девочкой с длинными волосами молотком.)
Мы уже касались вопроса об указательных местоимениях. Обычно такие местоимения относятся к существительному, расположенному в тексте довольно близко. Однако близкое расположение слов не всегда является надежным критерием. Проиллюстрируем это на примере отрывка, взятого из рассказа о том, как Мария купила Джону воздушный змей. Мария упоминает об этом в разговоре с Джейн, которая отвечает ей: "Нет, у Джона уже есть воздушный змей, и он попросит, чтобы ты забрала его назад".
В сознании читателей не возникает никакого сомнения в том, что под "его" в замечании Джейн подразумевается тот воздушный змей, который купила Мария, но, безусловно, это нельзя вывести из соображения близкого расположения слов "змей" и "его".
Ясно, что для нормального анализа естественноязыкового текста анализы синтаксиса и семантики должны идти рука об руку. По существу, это лишь частный случай проблемы инженерии знаний, о которой мы говорили ранее (гл. 8) при обсуждении вопросов распознавания речи.
Необходимость обращения к семантической информации привела в свое время к двум важным последствиям. Во-первых, работу по автоматическому переводу, по существу, пришлось прекратить, хотя ей было отдано много сил в 50-х годах. Для перевода высокого качества машине необходимо иметь опыт и мировоззрение, которые свойственны человеческому существу, что намного превосходит сегодняшние возможности вычислительных машин*.
* (На самом деле положение в этой области не столь - безнадежно. Автоматический перевод переживает сейчас новый подъем. В 80-х годах - после накопления необходимых знаний о семантике языка - стали создавать системы перевода, намного превосходящие беспомощные системы первого этапа развития работ в этой области. Отметим, например, систему перевода с французского на русский язык, разработанную в СССР под руководством Ю. Д. Апресяна. - Прим. ред.)
Во-вторых, для того чтобы машина была в состоянии использовать естественный язык, причем так, чтобы это хотя бы отдаленно напоминало ту свободу, с которой языком владеет человек, область рассуждений искусственной системы должна быть ограниченной. В одном из наиболее успешных проектов "рассуждения" машины касались трехмерного пространства, в котором содержались коробка и несколько цветных кубиков и пирамид.
Пространство и его содержимое не имели реального воплощения за пределами памяти вычислительной машины, но это не мешало воссоздавать их на экране цветного телевизора. Однако прежде чем перейти к обсуждению этой известной работы Винограда [1], сделаем еще несколько дополнительных замечаний относительно неоднозначности языка.
Неоднозначность языка
До сих пор мы отмечали лишь случаи неоднозначности, которые главным образом мешают переводу с одного языка на другой. Существуют, кроме того, неоднозначности в смысле, которые имеют существенное значение, если программа для вычислительной машины должна реагировать на естественноязыковые сообщения. Такие неоднозначности не обязательно мешают в процессе перевода, поскольку в переводе их можно сохранить.
Из-за неоднозначностей различного типа ничем не ограниченный естественный язык не может служить идеальным средством для общения с вычислительной машиной. (Не при всех обстоятельствах он является таковым и для общения между людьми. Математические соображения передаются с помощью специальной символики, а языки программирования высокого уровня способны помочь одному человеку объяснить какую-нибудь алгоритмическую процедуру другому, не обязательно прибегая при этом к помощи вычислительной машины. Например, при военной подготовке или при судействе в спортивных состязаниях лучше всего пользоваться ограниченным, заранее отобранным подмножеством языка.)
Хилл [3] высказал предположение, что, по-видимому, более полезно не обеспечивать возможность программирования вычислительных машин на естественном языке, а поставить задачу включения в язык человеческого общения элементов языков программирования.
Простая неоднозначность слов не всегда столь легко снимается, как в случае парадокса Бар-Хиллела. Машина в отличие от человека не может распознавать идиомы, поэтому ей трудно быть абсолютно уверенной в истинном смысле, например, такой, фразы:
Едва ли вы узнаете маленького Джона сейчас. Он вырос на целую голову.
Естественный язык всегда неоднозначен, поскольку в нем отсутствует нечто соответствующее скобкам, которые используются в математике и в языках программирования высокого уровня для указания приоритета в порядке применения операторов. Фраза "Старые мужчины и женщины" неоднозначна в том смысле, что нельзя быть уверенным, относится ли определение "старые" и к женщинам, т. е. включены ли в эту фразу и женщины, которые не являются старыми. Если бы можно было использовать скобки, то упоминание молодых женщин допускалось бы во фразе "(Старые мужчины) и женщины", но не во фразе "Старые (мужчины и женщины)".
Неоднозначность возникает нередко и при использовании наречий, подобных слову снова. Рассмотрим, например, следующий диалог:
- Мне сегодня снова хочется забраться на Эверест.
- Снова?
- Да, я и вчера испытывал подобное желание.
Смысл, вкладываемый в слова, во многом зависит от контекста. Хилл приводит пример, где сопоставляются два случая использования слова обычно:
Доставляют ли Вам обычно удовольствие каникулы?
Доставляет ли Вам обычно удовольствие хорошее здоровье?
Как указывает Хилл, страховая компания вряд ли была бы рада клиенту, который отвечает утвердительно на второй вопрос, интерпретируя слово обычно точно так же, как и в первом вопросе, т. е. ответ которого означает следующее: "В те редкие периоды, когда я здоров, я действительно обычно испытываю большое удовольствие".
Условные утверждения типа "если..., то..." часто используются таким образом, что предварительное условие оказывается не столь точно определенным, как это требуется в контексте программирования. Допустим, я говорю приятелю: "Если бы я не приехал на эту конференцию, то я бы отправился на ту, что состоялась в Лондоне". Он понимает, что мое утверждение справедливо лишь при условии, что целый ряд других обстоятельств также остается неизменным. Например, он понимает - хотя этого не сказано, - что я не поехал бы и на конференцию в Лондоне, если бы причиной моего отсутствия на данной конференции был несчастный случай, в результате которого мое состояние не позволяет мне поехать ни на одну конференцию. Подобные же множества невысказанных предположений присутствуют в большинстве утверждений, касающихся причин.
В юриспруденции предпринимаются попытки избежать присущей естественному языку неоднозначности путем формулирования законов и других юридических документов на языке, который представляет собой чрезвычайно тяжеловесный вариант обычного языка. Несмотря на эти усилия, неоднозначности не исключаются полностью, и судопроизводство должно осуществляться на основании того, какую цель преследует данное законодательство, а не того, что оно ясно устанавливает.
Эти, казалось бы, уничижительные замечания относительно естественного языка ни в коей мере не умаляют его силу и общность. Этот язык был описан как наш конечный метаязык [5], в котором в конечном счете определены специальные термины и символы даже формальной математики и языков программирования.
Хотя весьма трудно добиться того, чтобы программа реагировала на абсолютно свободный (ничем не ограниченный) естественный язык, значительные успехи были достигнуты при использовании весьма ограниченного контекста и при ограничениях, накладываемых на допустимую синтаксическую форму.
Первая из программ, отвечающих на вопросы, поставленные на естественном языке [5], была в состоянии отвечать на вопросы, касающиеся бейсбола, исходя из данных Американской лиги бейсбола по всем играм за год. Для каждой игры имелась запись месяца, дня и места игры, а также названий команд и счета.
Программа была в состоянии отвечать на достаточно разнообразные вопросы от самых простых - типа "Кому проиграла команда "Ред Сокс" 5 июля?" или "Где играла команда "Ред Сокс" 7 июля?" - до весьма сложных, вроде "Играла ли каждая команда по крайней мере один раз в месяц на каждом стадионе".
Программа отвечала на целый ряд вопросов, начинающихся со слова "сколько". Не удивительно, что система была не в состоянии отвечать на неоднозначные вопросы типа "Выиграла ли команда "Ред Сокс" большинство своих встреч в июле?"
Программа "Бейсбол" относится к числу программ, формулирующих ответы на вопросы, про которые Виноград сказал: "Их узкая предметная область часто позволяла использовать эвристики специального назначения, обеспечивающие весьма впечатляющие результаты при минимальных заботах, связанных со сложностями языка".
Работа самого Винограда также относится к ограниченной области (пространство с кубиками и пирамидами, или мир кубиков), но она иллюстрирует методы, имеющие более широкую применимость.
Мир кубиков
Программа, составленная Виноградом, называется SHRDLU; это не аббревиатура каких-то слов из области вычислительной техники, а просто совокупность букв, которые образуют кодовое слово, используемое операторами линотипов. Хофштадтер в своей книге [6], где он, в частности, пытается найти связь между рекурсией в программировании и музыкой Баха, так пародирует название одной арии Баха: "Игрушка типа SHRDLU, изобретенная человеком".
Для анализа входной информации в программе SHRDLU используется система анализа языка ПРОГРАММАР, которая объединяет семантические и Синтаксические характеристики. Как показывает приведенное ранее предложение "Стаканы старого человека были наполнены вином", система анализа должна быть в состоянии вернуться назад, когда обнаруживается, что на основе построенной к настоящему моменту догадки дальнейший анализ фразы невозможен. В системе ПРОГРАММАР допускается возвращение назад, но, как и у человека, это происходит изредка. Подобно шахматной программе Ботвинника* система ПРОГРАММАР располагает достаточно мощными эвристиками, позволяющими делать в основном правильный выбор.
* (См., в частности, список рекомендуемой литературы. - Прим. ред.)
В системе SHRDLU использована также система ПЛЭННЕР, которую иногда рассматривают как обобщение языка программирования ЛИСП (гл. 13). На самом же деле ПЛЭННЕР дает гораздо больше, чем обычно ожидается от языка программирования. Она содержит базу данных (система предположений), где хранятся утверждения, относящиеся к миру кубиков.
Большинство этих утверждений касается либо свойств предметов, либо отношений между ними. Свойства и отношения - во многом характеристики одного порядка, с тем исключением, что свойство относится к одному объекту, а отношение - к двум и более. В формальном аппарате, который используется для представления утверждений в системе ПЛЭННЕР, словам, обозначающим свойства или отношения, с целью их выделения предшествует символ. Например, утверждения "Лондон - это город" и "Джеймс является отцом Алекса" в таком формализме следует представить так:
(# ГОРОД : ЛОНДОН)
(# ОТЕЦ : ДЖЕЙМС : АЛЕКС)
Некоторые отношения могут связывать три или более объектов, и для использования указанного формализма важно знать, какое число предметов охватывает данное отношение. Отношение давать связывает три объекта, так что, скажем, утверждение "Гарри дает (или дал) Алисе эти украшения" записывается следующим образом:
(# ДАВАТЬ : ГАРРИ : АЛИСА : УКРАШЕНИЕ)
Сила системы ПЛЭННЕР состоит в том, что в ней можно выразить свойства отношений и отношения между отношениями. Это оказывается особенно полезным при представлении событий, которые можно записать в виде отношений (как в последнем примере). Эти отношения описывают, в частности, пространственно-временные свойства других отношений.
Отношению можно дать определенное название, что позволяет использовать его в утверждениях. Название помещают после списка объектов, которые связаны данным отношением; приведенное выше отношение можно назвать ОТН2, используя для его записи форму
(# ДАВАТЬ : ГАРРИ : АЛИСА : УКРАШЕНИЕ : ОТН2)
Виноград предлагает следующие возможности представления предложения "Гарри присел на диван после того, как дал Алисе украшения":
(# ПРИСЕЛ : ГАРРИ : ОТН1)
(# МЕСТО : ОТН1 : ДИВАН)
(# ДАВАТЬ : ГАРРИ : АЛИСА : УКРАШЕНИЯ : ОТН2)
(# ПОСЛЕ : ОТН1 : ОТН2)
Система ПЛЭННЕР в состоянии принять утверждения и добавить их в указанной форме к своей базе данных. Она может также строить следствия имеющихся у нее утверждений. Здесь возникает проблема выбора стратегии. Когда в базу данных вносится какое-то добавление, необходимо сделать просмотр, чтобы обнаружить, какие новые следствия стали возможными. Если все из них сформированы и добавлены к базе данных, то последующая работа с базой данных, по-видимому, пойдет быстрее, поскольку эти следствия не придется выводить заново. С другой стороны, сама база данных может при этом чрезмерно вырасти и стать неуправляемой, так что придется делать какой-то выбор. Эта задача аналогична проблеме выбора "интересных" результатов, о которой мы упоминали в гл. 4 при обсуждении автоматической математики.
Чтобы формулировать следствия, система ПЛЭННЕР должна иметь правила, позволяющие формировать новые утверждения исходя из старых. Для этого в систему необходимо ввести переменные, а также кванторы для всех и существует и логические операторы и, или, не и имплицирует (если... то).
Утверждения "Все люди ошибаются" и "Поскольку X человек, X ошибается" должно быть представлено следующим образом:
(ДЛЯ ВСЕХ (X) (ИМПЛИЦИРУЕТ (# ЧЕЛОВЕК X) (# ОШИБАЕТСЯ))).
Важное различие между системой ПЛЭННЕР и некоторыми другими системами дедукции состоит в том, что теоремы в ней представлены в виде процедур, т. е. программ, что позволяет применить теорему к некоторому конкретному объекту путем вызова процедуры. Виноград приводит такой пример (вероятно, слишком заостряющий существо вопроса)' теоремы: "Диссертация приемлема, если она либо толстая, либо содержит убедительные аргументы".
Чтобы определить, приемлема ли данная конкретная диссертация, может быть вызвана представляющая приведенное утверждение процедура. Поскольку свойство "быть толстой" проверить, вероятно, нетрудно, обращаясь к другой процедуре, это делается в первую очередь. Если (и только в этом случае) диссертация не является толстой, то должна быть предпринята попытка определить, содержит ли она убедительные аргументы. По-видимому, не существует единой теоремы, которая могла бы дать оценку этому свойству, и процедура содержит определенную инструкцию, означающую: "Найти все теоремы, которые приводят к заключению, относительно убедительных аргументов и испробовать их, пока не встретится теорема, удовлетворяющая данным требованиям".
Эти теоремы также могут содержать инструкции "поискового" типа, так что процесс решения задачи может быть весьма сложным. Его можно представить как поиск по дереву, поскольку каждая процедура обычно влечет за собой какую-то одну из некоторого числа других процедур. Последующая процедура должна вызываться с указанием соответствующего множества объектов (в нашем примере - это конкретная диссертация). Иногда работа заканчивается сообщением о неудаче. В приведенном примере это произойдет в том случае, когда диссертация невелика по объему и не содержит убедительных аргументов.
Язык программы ПЛЭННЕР вместе с ее базой данных позволяет отвечать на весьма сложные вопросы. Приведенное рассмотрение показывает, как программа дает ответ на вопрос: "Приемлема ли диссертация Сэма?". По существу, та же самая организация позволяет системе отрабатывать команды. Команды в системе SHRDLU обычно звучат примерно так: "Помести объект А на объект В". Процедура, представляющая теорему поместить, содержит ряд инструкций, выполнение которых потребует обращения к другим теоремам и может привести к перебору. Необходимо убедиться, что наверху объекта В имеется место для объекта А, а затем необходимо все спять с объекта А, чтобы его можно было поднять, и т. д.
В конечном счете требуемое действие - если оно вообще может быть произведено - представляется в виде базовых теорем переместить, взять, отпустить, которые дают команды демонстрационной части системы, позволяющие перестраивать детали "мира кубиков". Действие переместить означает: переместить имитируемую руку вместе с тем, что она держит, в новое положение. Взять - заставляет руку взять объект. Отпустить - вызывает высвобождение объекта, однако это действие не выполняется, если под объектом нет соответствующей опоры.
Виноград приводит многочисленные примеры диалога между программой SHRDLU и экспериментатором (см. также [6], р. 586-593). Простая команда
Возьми большой красный кубик
вызывает простой отклик ОК ("все в порядке") системы SHRDLU, после того как действие выполнено. При этом состояние "мира кубиков" в момент подачи команды было таким, что на большом красном кубике находился зеленый кубик, так что система SHRDLU сначала должна была найти для него новое место и переместить его туда.
Система SHRDLU в состоянии работать с указательными местоимениями, реагируя на команду
Найди кубик, который выше того, что ты держишь в руке, и положи его в коробку.
На это система SHRDLU сначала сообщает:
Под "его" я подразумеваю кубик, который выше того, что я держу в руке.
После совершения движений в соответствии с этим предположением система SHRDLU вновь выдает "ОК".
Система способна ответить также на весьма сложные вопросы типа
Сколько кубиков находится в коробке?
На этот вопрос система SHRDLU дает верный ответ: "Их четыре", после чего ее спрашивают:
Является ли хотя бы один из них уже того, что я попросил тебя взять?
На этот вопрос система также дает верный ответ: "Да, это красный кубик". Эта реакция весьма выразительна, причем не только из-за сложной структуры вопроса, но и вследствие того, что слова "один из них" приобретают смысл только в свете предыдущего вопроса. К тому же, чтобы интерпретировать фразу "того, что я попросил тебя взять", система должна пойти еще дальше назад.
Использование естественного языка в режиме "меню"
Возможно, стоит подчеркнуть, что существуют совершенно тривиальные способы написания программы, которые дают пользователю приятное чувство участия в диалоге с машиной на естественном языке. Очень легко сделать, чтобы какая-то интерактивная программа задавала вопросы на естественном языке. Вопросы могут быть и длинными, и сложными - при условии, что ответы выбираются из некоторого конечного множества возможностей. Пользователю предъявляется список возможных вариантов в виде "меню", из которого пользователь делает простой выбор, либо печатая какое-то число, либо перемещая курсор (точку) на экране дисплея к выбранному варианту.
С этим приемом знакомы пользователи, работающие с вычислительными системами в интерактивном режиме, но нам хотелось бы здесь лишь отметить, что, для того чтобы пользователь общался с машиной на естественном языке, совсем не обязательно строить столь сложную систему, как SHRDLU.