SHRDLU

SHRDLU — одна из первых программ для понимания естественного языка, разработанная Терри Виноградом в MIT в 1968—1970 годах. В этой программе пользователь ведёт диалог с компьютером, перемещая объекты, давая им имена и задавая вопросы о состоянии упрощённого «мира кубиков» — виртуальной коробки с различными блоками[2].

SHRDLU была написана на Micro Planner и Лиспе для компьютера DEC PDP-6 и графического терминала DEC. Позднее дополнения были внесены в лаборатории компьютерной графики Университета Юты, что добавило прорисовку SHRDLU-мира в полном 3D.

Название SHRDLU происходит от выражения ETAOIN SHRDLU — последовательности букв на клавиатуре Linotype, расположенных по убыванию частоты встречаемости в английском языке.

Что важно знать
SHRDLU
Тип понимание естественного языка
Автор Терри Виноград
Разработчик Терри Виноград[1]
Написана на Micro Planner, Лисп
Операционная система PDP-6
Первый выпуск 1967
Аппаратная платформа DEC

Возможности

SHRDLU представляет собой в первую очередь языковой парсер, позволяющий взаимодействовать с программой через английские команды. Пользователь даёт SHRDLU инструкции перемещать различные объекты в «мире кубиков», состоящем из таких базовых объектов, как кубики, конусы и шары. SHRDLU объединила четыре простые идеи, чтобы симуляция «понимания» выглядела убедительно.

Во-первых, мир SHRDLU настолько прост, что весь набор объектов и локаций описывается всего примерно 50 словами: существительными, такими как «блок» и «конус», глаголами вроде «положи на» и «перемести в», и прилагательными вроде «большой» и «синий». Возможные сочетания этих лингвистических блоков достаточно просты.

Также SHRDLU содержит базовую память для хранения контекста. Например, программе можно было сказать: «положи зелёный конус на красный кубик», а затем: «убери конус», и под «конусом» будет подразумеваться зелёный конус, о котором только что шла речь. Обычно SHRDLU способна найти требуемый контекст и в более ранних репликах, если используются дополнительные прилагательные. Можно также задавать вопросы об истории действий: например, «Ты поднимал что-нибудь до того, как взял конус?»

Побочным эффектом этой памяти и изначальных правил является умение программы отвечать на вопросы о возможном и невозможном в мире SHRDLU. Например, она понимает, что блоки можно складывать друг на друга (после нескольких попыток), но треугольники складывать нельзя. В мире SHRDLU действует базовая физика: блоки могут падать вне зависимости от языкового парсера.

Наконец, программа запоминает заданные пользователем имена объектов или их расположения. Например, можно сказать: «шпиль — это маленький треугольник поверх высокого прямоугольника», после чего SHRDLU сможет отвечать на вопросы о шпилях в мире кубиков и строить новые.

Пример сессии SHRDLU[3]:

Человек: Подними большой красный кубик.
Компьютер: ХОРОШО.
Человек: Возьми пирамиду.
Компьютер: Я НЕ ПОНИМАЮ, КАКУЮ ПИРАМИДУ ВЫ ИМЕЕТЕ В ВИДУ.
Человек (передумывая): Найди блок, который выше того, что ты держишь, и положи его в коробку.
Компьютер: ПОД «НЕГО» Я ПОДРАЗУМЕВАЮ БЛОК, КОТОРЫЙ ВЫШЕ ТОГО, ЧТО Я ДЕРЖУ.
Компьютер: ХОРОШО.
Человек: Что в коробке?
Компьютер: СИНЯЯ ПИРАМИДА И СИНИЙ КУБИК.
Человек: На чём стоит пирамида?
Компьютер: НА КОРОБКЕ.
Человек: Сколько кубиков вне коробки?
Компьютер: ЧЕТЫРЕ ИЗ НИХ.
Человек: Есть ли среди них хотя бы один уже того, что я просил поднять?
Компьютер: ДА, КРАСНЫЙ КУБ.
Человек: Он поддержан?
Компьютер: ДА, СТОИТ НА СТОЛЕ.
Человек: Может ли стол поднимать кубики?
Компьютер: НЕТ.
Человек: Может ли пирамида быть поддержана кубиком?
Компьютер: ДА.
Человек: Может ли пирамида поддерживать пирамиду?
Компьютер: Я НЕ ЗНАЮ.
Человек: Поставь две пирамиды друг на друга.
Компьютер: НЕ МОГУ.
Человек: Пожалуйста, поставь оба красных кубика и либо зелёный куб, либо пирамиду.
Компьютер: ХОРОШО.
Человек: Какой кубик стоит на столе?
Компьютер: БОЛЬШОЙ ЗЕЛЁНЫЙ, КОТОРЫЙ ПОДДЕРЖИВАЕТ КРАСНУЮ ПИРАМИДУ.
Человек: Есть ли большой блок позади пирамиды?
Компьютер: ДА, ТРИ: БОЛЬШОЙ КРАСНЫЙ, БОЛЬШОЙ ЗЕЛЁНЫЙ КУБ И СИНИЙ.
Человек: Положи маленький на зелёный куб, который поддерживает пирамиду.
Компьютер: ХОРОШО.
Человек: Поставь самую маленькую пирамиду сверху.
Компьютер: ХОРОШО.
Человек: Самая короткая вещь, которую поддерживает поддержка самой высокой пирамиды, поддерживает ли она что-нибудь зелёное?
Компьютер: ДА, ЗЕЛЁНУЮ ПИРАМИДУ.
Человек: Какого она цвета?
Компьютер: ПОД «ОНА» Я ПОДРАЗУМЕВАЮ САМУЮ КОРОТКУЮ ВЕЩЬ, КОТОРУЮ ПОДДЕРЖИВАЕТ ПОДДЕРЖКА САМОЙ ВЫСОКОЙ ПИРАМИДЫ.
Компьютер: КРАСНАЯ.
Человек: Сколько объектов на зелёных кубах?
Компьютер: НЕ СОВСЕМ ПОНИМАЮ, ЧТО ВЫ ИМЕЕТЕ В ВИДУ ПОД «НА ЗЕЛЁНЫХ КУБАХ». ВЫ ИМЕЕТЕ В ВИДУ:
1 — НЕПОСРЕДСТВЕННО НА ПОВЕРХНОСТИ
2 — ГДЕ-ТО СВЕРХУ?
Человек: 2
Компьютер: ТРИ ОБЪЕКТА.
Человек: Ты касался какой-нибудь пирамиды до того, как положил зелёную на маленький кубик?
Компьютер: ДА, ЗЕЛЁНОЙ.
Человек: Когда ты её поднимал?
Компьютер: ПОКА Я СКЛАДЫВАЛ КРАСНЫЙ КУБ, БОЛЬШОЙ КРАСНЫЙ БЛОК И БОЛЬШОЙ ЗЕЛЁНЫЙ КУБ.
Человек: Почему?
Компьютер: ЧТОБЫ ИЗБАВИТЬСЯ ОТ НЕЁ.
Человек: Почему ты это сделал?
Компьютер: ЧТОБЫ ОЧИСТИТЬ КРАСНЫЙ КУБ.
Человек: Почему ты очистил тот куб?
Компьютер: ЧТОБЫ ПОЛОЖИТЬ ЕГО НА БОЛЬШОЙ ЗЕЛЁНЫЙ КУБ.
Человек: Почему ты это сделал?
Компьютер: ЧТОБЫ СЛОЖИТЬ КРАСНЫЙ КУБ, БОЛЬШОЙ КРАСНЫЙ БЛОК И БОЛЬШОЙ ЗЕЛЁНЫЙ КУБ.
Человек: Почему ты это сделал?
Компьютер: ПОТОМУ ЧТО ВЫ МЕНЯ ПРОСИЛИ.
Человек: Как ты это сделал?
Компьютер: ПОЛОЖИВ БОЛЬШОЙ КРАСНЫЙ БЛОК НА СТОЛ; ПОТОМ ОТПУСТИВ ЕГО; ПОТОМ ПОЛОЖИВ БОЛЬШОЙ ЗЕЛЁНЫЙ КУБ НА НЕГО; ПОТОМ ОТПУСТИВ ЭТОТ КУБ; ПОТОМ ПОЛОЖИВ КРАСНЫЙ КУБ НА ТОТ КУБ; ПОТОМ ОТПУСТИВ ТОТ КУБ.
Человек: Сколько объектов ты трогал, пока это делал?
Компьютер: ЧЕТЫРЕ.
Человек: Что поддерживал красный куб до очистки?
Компьютер: ЗЕЛЁНУЮ ПИРАМИДУ.
Человек: Тогда слева от коробки стояло пять блоков.
Компьютер: НЕТ, ТОЛЬКО ЧЕТЫРЕ: КРАСНЫЙ КУБ, ДВА БОЛЬШИХ ЗЕЛЁНЫХ КУБА И БОЛЬШОЙ КРАСНЫЙ БЛОК.
Человек: Положи синюю пирамиду на блок в коробке.
Компьютер: ХОРОШО.
Человек: Есть ли предмет, который больше всех пирамид, но уже предмета, который его поддерживает?
Компьютер: ДА, СИНИЙ КУБ.
Человек: Может ли шпиль
Компьютер (перебивает): ИЗВИНЯЮСЬ, Я НЕ ЗНАЮ СЛОВО «ШПИЛЬ».
Человек: «Шпиль» — это стопка, содержащая два зелёных куба и пирамиду.
Компьютер: ПОНЯЛ.
Человек: Есть ли сейчас шпили?
Компьютер: НЕТ.
Человек: Построй один.
Компьютер: ХОРОШО.
Человек: Назови самый большой блок «суперблок».
Компьютер: ХОРОШО.
Человек: Ты поднимал «суперблок» с начала нашей беседы?
Компьютер: ДА.
Человек: Почему ты его уронил?
Компьютер: ПОД «ЕГО» Я ПОДРАЗУМЕВАЮ СУПЕРБЛОК.
Я НЕ МОГУ ОБЪЯСНИТЬ НЕСУЩЕСТВУЮЩЕЕ СОБЫТИЕ.
Человек: Есть ли что-то справа от красной пирамиды?
Компьютер: ДА, ЧЕТЫРЕ ПРЕДМЕТА: КОРОБКА, КРАСНЫЙ КУБ, СИНЯЯ ПИРАМИДА И БЛОК ПО ИМЕНИ «СУПЕРБЛОК».
Человек: Спасибо.
Компьютер: ПОЖАЛУЙСТА!

Последствия

SHRDLU стала чрезвычайно успешной демонстрацией возможностей искусственного интеллекта. Это привело к чрезмерному оптимизму среди других исследователей ИИ, который вскоре сменился разочарованием, поскольку более поздние системы сталкивались с существенно большей неоднозначностью и сложностью[4]. Позднейшие проекты по типу SHRDLU, такие как Cyc, уделяли большее внимание наделению программ обширными базами знаний для логических выводов.

В интервью 1991 года Виноград отмечал[4]:

[...] знаменитый диалог с SHRDLU, где можно было поднять блок и т. д., я очень тщательно проработал построчно. Если сесть за программу и задать вопрос, которого не было в этом диалоге, есть шанс, что она его поймёт. Если вопрос достаточно похож на те, что были по форме и содержанию, скорее всего, она даст ответ. Но никто не пытался довести программу до состояния, когда её можно было бы отдать кому-то и тот смог бы перемещать кубики как захочет. Такой задачи никто не ставил. Задача была сделать то, что можно показать как демонстрацию. Приведу более свежий пример — Негропонте и его MIT Media Lab, где вместо «публиковать или погибнуть» — «покажи демо или погибни». Я считаю, что это проблема. Искусственный интеллект от этого сильно пострадал, ведь появлялись такие «потёмкинские деревни»: то, что делалось для показа, выглядело хорошо, но за ним не хватало глубины, чтобы это реально работало в более широких случаях.

Хотя SHRDLU не задумывалась как игра, её нередко считают первым формальным примером интерактивной художественной литературы: пользователь управляет виртуальной средой командами, пусть и без явного повествования, свойственного жанру. Первая настоящая игра в этом жанре — Colossal Cave Adventure (1976—1977)[5].

Примечания

Литература

  • Winograd, Terry Procedures as a Representation for Data in a Computer Program for Understanding Natural Language. MIT AI Technical Report 235 (24 августа 1970). Архивировано 3 октября 2020 года.
  • Winograd, Terry (1972-01). “Understanding natural language”. Cognitive Psychology. 3 (1): 1—191. DOI:10.1016/0010-0285(72)90002-3. Проверьте дату в |date= (справка на английском)

Ссылки

  • Winograd, Terry SHRDLU (2001). Архивировано 17 августа 2020 года. — страница Терри Винограда о SHRDLU, включает исходные тексты