SHRDLU


SHRDLU — ранняя программа понимания естественного языка, разработанная Терри Виноградом в MIT в 19681970 годах. Она была написана на языках Micro Planner и Лисп на компьютере DEC PDP-6 и использовала графический терминал DEC. Впоследствии в лаборатории компьютерной графики в университете штата Юта была внесена возможность полноценной трёхмерной отрисовки «мира» SHRDLU.

Название SHRDLU образовано от ETAOIN SHRDLU — расположения алфавитных клавиш на линотипах в соответствии с убыванием частоты появления букв в английском языке. Кроме того, Этаоин Шрдлу — имя разумного линотипа в одноимённом фантастическом рассказе[1] Фредерика Брауна.

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

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

SHRDLU также включала простейшую память для поддержания контекста общения. Человек может попросить SHRDLU: «Положи зелёный конус на красный блок» и затем «сними конус». Будет снят тот «конус», о котором говорили чуть ранее. Если даны дополнительные прилагательные, в большинстве случаев SHRDLU сможет искать более старые утверждения, чтобы найти надлежащий контекст. Человек также может задавать вопросы об истории действий — например, может спросить: «Ты поднимала что-нибудь до того, как поднять конус?»

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