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, включает исходные тексты
- SHRDLU resurrection (22 августа 2013). Архивировано 17 ноября 2017 года. — переписанные версии SHRDLU, включая вариант на Java3D
- Первая полная репликация диалога SHRDLU (июнь 2023) как часть Go-реализации NLI-GO.
- How SHRDLU got its name.


