Шрифт:
Интервал:
Закладка:
«Личность» симулятора определялась загруженным в него сценарием. Первый сценарий, он же самый известный – «Врач» (продемонстрирован выше), – был разработан самим Вейценбаумом. В документальном фильме Rebel at Work64 («Бунтарь за работой») он рассказывает, почему выбрал именно такой вариант:
«И вдруг меня осенило: психотерапевт. Психотерапевт выслушивает пациента и задает ему вопросы. Неважно, связаны они со сказанным только частично или вообще не связаны – пациент истолковывает их по-своему, в зависимости от душевного состояния, поскольку исходит из предположения, что психиатр его понимает, что он умнее и что в его словах должен быть смысл – “не знаю, какой, но какой-то есть”. Из этой мысли постепенно и родилась концепция ELIZA.
“Так, посмотрим… – говорит психотерапевт. – Какие у вас с этим ассоциации?”
“Как проницательно! – думает пациент. – Этот психотерапевт точно угадал мое состояние. Думаю, я продолжу с ним работать!”»
В статье для журнала АВТ Вейценбаум особо отмечает, что ELIZA, конечно же, не «понимает» вопросов, которые ей задают. В конце концов, это всего лишь усложненный движок по генерации текста с примитивным парсером, который ищет совпадения в пользовательском вводе и строит ответы по определенным правилам. Гениальность сценария «Врач» состоит в том, что живой врач-психотерапевт (как минимум, с точки зрения неспециалиста) ведет себя примерно так же.
Впрочем, необходимо понимать, что стенограмма, отрывок из которой приведен в начале главы, иллюстрирует почти идеальную ситуацию, и было бы натяжкой вслед за Вейценбаумом назвать этот текст «типичной беседой». Стоит провести с ELIZA чуть больше времени, и неизбежно наступит момент, когда раскрывается ее сущность – а именно, что это всего лишь хитроумный салонный фокус. И проколы возникают не реже, чем удивительно точные ответы.
Написана ELIZA была на языке MAD65 (Michigan Algorithm Decoder, «Мичиганский декодер алгоритмов» – по месту создания: Мичиганский университет) с использованием библиотеки SLIP, которую написал в 1963 году сам Вейценбаум. Этот язык имел довольно ограниченное хождение, однако статья в журнале АВТ содержала столь подробное описание симулятора, что его получилось относительно без труда портировать на другие языки и платформы. Словом, получилось почти как с Adventure, код которой комментировал Дон Вудс.
По мере распространения программы первоначальная концепция диалогового симулятора как-то забылась, и система ELIZA стала просто «психотерапевтом по имени Элиза». В выпуске Creative Computing за июль-август 1977 года появилась версия на языке BASIC66, написанная Джеффом Шрегером и Стивом Нортом. В сопроводительном тексте Норт отмечал: «Программа, конечно, сильно урезана по сравнению с оригиналом, но она работает». Имеются в виду, прежде всего, ограничения BASIC и необходимость работать под 16 Кб ОЗУ. Однако даже в урезанном виде программа выглядела довольно впечатляюще и за следующие десять лет породила бесчисленное множество вариаций, подражаний и продолжений. Казалось, в 70-е и 80-е нельзя было найти персональный компьютер, в библиотеке которого не было бы хоть какой-то вариации ELIZA.
18. Поговори с «Элизой», часть 2
Итак, давайте разберемся, на что ELIZA способна, а на что нет. Для наглядности я решил воспользоваться готовой стенограммой, которая была приведена в том самом выпуске Creative Computing. Я постараюсь шаг за шагом показать, что происходит у программы, так сказать, «под капотом». (Я позволил себе только заменить IMSAI 8080 на TRS-80, чтобы сделать отсылку к предыдущей теме.) Эта стенограмма куда менее впечатляющая, чем та, которую включил в свою статью Вейценбаум. Отчасти это связано с упрощенной версией самой ELIZA, а отчасти с тем, что редакторы Creative Computing верно рассудили: обычный пользователь едва ли станет играть с программой в психотерапевта-пациента; он скорее постарается всеми правдами и неправдами «сломать» ее. С этой точки зрения я считаю приведенный пример более достоверной демонстрацией возможностей ELIZA и опыта взаимодействия с ней.
В основе программы лежит простейший алгоритм, который ищет во введенном пользователем тексте совпадения с теми или иными последовательностями символов. Вот эти последовательности в порядке убывания значимости (с приблизительным переводом на русский):
1. CAN YOU – МОЖЕШЬ ЛИ ТЫ/ТЫ МОЖЕШЬ
2. CAN I – МОГУ ЛИ Я/МОЖНО МНЕ
3. YOU ARE – ТЫ (УТВ.)
4. YOU’RE – ТЫ (УТВ.)
5. I DON’T – Я НЕ
6. I FEEL – Я ЧУВСТВУЮ (СЕБЯ)
7. WHY DON’T YOU – ПОЧЕМУ ТЫ НЕ/ПОЧЕМУ БЫ ТЕБЕ НЕ
8. WHY CAN’T I – ПОЧЕМУ Я НЕ МОГУ
9. ARE YOU – ТЫ (ВОПР.)
10. I CAN’T – Я НЕ МОГУ
11. I AM – Я
12. I’M – Я
13. YOU – ТЫ (+ГЛАГ.)
14. I WANT – Я ХОЧУ/МНЕ НУЖНО
15. WHAT – ЧТО
16. HOW – КАК
17. WHO – КТО
18. WHERE – ГДЕ
19. WHEN – КОГДА
20. WHY – ПОЧЕМУ/ЗАЧЕМ
21. NAME – ИМЯ/ЗОВУТ
22. CAUSE – ПРИЧИНА/ПРИЧИНЯЕТ
23. SORRY – ПРОСТИ/ИЗВИНИ
24. DREAM – СОН/СНИТСЯ
25. HELLO – ПРИВЕТ/ЗДРАВСТВУЙ
26. HI – ПРИВЕТ/ЗДРАВСТВУЙ
27. MAYBE – МОЖЕТ БЫТЬ
28. NO – НЕТ
29. YOUR – ТВОЙ/-Я/-Ё/-И
30. ALWAYS – ВСЕГДА
31. THINK – ДУМАЮ/-ЕШЬ
32. ALIKE – ПОХОЖ/-А/-Е/-И
33. YES – ДА
34. FRIEND – ДРУГ
35. COMPUTER – КОМПЬЮТЕР
Найдя все возможные совпадения, программа начинает подбирать ответ. Например, триггер на слово «КОМПЬЮТЕР» сработает только в том случае, если предыдущие 34 варианта в пользовательском вводе не найдены.
НАЧАЛО
ПРИВЕТ! МЕНЯ ЗОВУТ ЭЛИЗА. В ЧЕМ ТВОЯ ПРОБЛЕМА
? Я IBM 370
ТЫ ЗДЕСЬ ПОТОМУ, ЧТО ТЫ IBM 370
ELIZA выбирает ответы из соответствующего совпадению списка по порядку, без рандомизации. В этом примере за основу берется «Я_»; алгоритм отсекает местоимение, оставляя только «IBM 37067»*, после чего выбирает первую заготовку «ТЫ ЗДЕСЬ ПОТОМУ ЧТО ТЫ…» – и подставляет в пропуск конец фразы, введенной пользователем.
*Да, кстати, вся эта «беседа» сочинена ради хохмы. IBM 370 был, наверное, самым большим и мощным мейнфреймом того периода; отсюда и высокомерное отношение к «малютке» TRS-80.
? ДА, МНЕ НУЖЕН НОВЫЙ ПРИНТЕР
ЗАЧЕМ ТЕБЕ НУЖЕН НОВЫЙ ПРИНТЕР
Здесь два совпадения: «ДА» и «МНЕ НУЖЕН», – однако «МНЕ НУЖЕН» имеет более высокий приоритет (14). ELIZA отбрасывает всю часть фразы до «НОВЫЙ ПРИНТЕР» (куда, кстати,
- Итоги № 45 (2013) - Итоги Итоги - Публицистика
- Итоги № 35 (2012) - Итоги Итоги - Публицистика
- Итоги № 10 (2013) - Итоги Итоги - Публицистика
- Итоги № 37 (2013) - Итоги Итоги - Публицистика
- Итоги № 50 (2012) - Итоги Итоги - Публицистика
- Итоги № 3 (2012) - Итоги Итоги - Публицистика
- Итоги № 40 (2012) - Итоги Итоги - Публицистика
- Итоги № 44 (2012) - Итоги Итоги - Публицистика
- Итоги № 53 (2011) - Итоги Итоги - Публицистика
- Итоги № 24 (2012) - Итоги Итоги - Публицистика