Моя прекрасная леди: как устроен первый в мире чат-бот
Всю историю человечество стремится переступить грань, отделяющую его от Бога, и научиться создавать новую жизнь из неодушевленной материи. Долгое время эти попытки не приносили успеха, но с развитием науки и техники эти стремления наконец стали обретать реальную форму. Одна из сложностей, стоящая на пути к успеху - создание полноценного разума, способного взаимодействовать с человеческим, и первые успехи в этой области стали появляться только к середине двадцатого века. Во многом это связано с появлением компьютеров, ведь лишь благодаря мощным вычислениям можно построить достаточно точную математическую модель работы человеческого мозга. В свою очередь, создание искусственного разума во многом связано с разработкой модели, которая позволит компьютеру понимать не только формальные компьютерные языки, но и естественные языки, на которых говорим мы с вами. Созданием подобных моделей занимается раздел компьютерных наук, называемый анализ естественных языков
И хотя успехи в этой области стали заметны публике лишь в начале 2010-х с появлением программ вроде Сири, на деле уже в шестидесятые годы прошлого века было разработано несколько систем, позволявших компьютерам распознавать человеческие фразы и даже пытаться осмысленно отвечать на них. Одна из самых известных - это программа ELIZA, разработанная в 1966 и пародировавшая стиль общения, распространенный среди психотерапевтов. Общаясь с ней, пользователь рассказывал о своих проблемах и получал в ответ более-менее осмысленные фразы:
Все мужчины одинаковые
ПОЧЕМУ
Они вечно чем-нибудь нас разражают
ВЫ МОЖЕТЕ ПРИВЕСТИ КОНКРЕТНЫЙ ПРИМЕР
Например, мой парень привел меня сюда
ВАШ ПАРЕНЬ ПРИВЕЛ ВАС СЮДА
Он говорит, что я часто пребываю в депрессии
Я СОЖАЛЕЮ, ЧТО ВЫ В ДЕПРЕСИИ
Это так. Я несчастлива
ВЫ ДУМАЕТЕ, ЧТО ПРИДЯ СЮДА, ВЫ ИЗБАВИТЕСЬ ОТ НЕСЧАСТИЙ
Будет точнее сказать, что мне нужна поддержка
ЧТО ДЛЯ ВАС ОЗНАЧАЕТ НУЖНА ПОДДЕРЖКА
Возможно, я научусь уживаться со своей мамой
РАССКАЖИТЕ МНЕ ПОПОДРОБНЕЕ О СВОЕЙ СЕМЬЕ
Как видим, по осмысленности ответов эта программа может дать фору некоторым комментаторам на Ютубе, и некоторые пользователи, пообщавшиеся с ELIZA, даже начинали верить в ее разумность
Тем интереснее, что в основе этой программы лежит довольно простой механизм, и в сущности, она просто отзеркаливает фразы собеседниками с помощью небольшого числа встроенных шаблонов
На этой картине изображена Элиза Дулитл, персонаж пьеcы Бернарда Шоу, в чью честь была названа программа ELIZA. По сюжету, она проходит долгий путь самосовршенствования, поднимаясь с лондонского дна до персоны из высшего общества
Принцип работы
Схематично, механизм, лежащий в основе ELIZA, выглядит так: скрипт принимает строку, введенную пользователем. Затем скрипт ищет ключевые слова, которые встречаются в словаре, а также определяет контекст, в котором употребляются эти слова. После этого он подбирает соотетствующуее правило, и трансформирует исходную строку в соответствии с ним
Для лучшего понимания рассмотрим этот механизм на примере. Представим, что с пользователем говорит иностранец, который понимает на слух только маленькое количество английских слов. Например, когда он слышит фразу I am very unhappy
, он может понять в ней только слова I
и am
. Однако, даже такого маленького набора слов достаточно, чтобы установить минимальный контекст фразы: очевидно, что есть некое суждение (я несчастлив, я счастлив, я толстый etc). Если прибавить к этому, что иностранец играет роль психотерапевта, можно установить, что человек говорит о своих проблемах. Поэтому, чтобы проявить сопереживание, иностранцу достаточно: 1) разложить исходную фразу на две части, первая из которых содержит ключевые слова, а вторая - все слова кроме них; 2) построить свою фразу из шаблона, в котором первая часть состоит из фразы How long have you been
, а во вторую подставляется исходная фраза без слов I am
Подобный принцип программа использует и при обработке более сложных фраз. Представим, что наш незадачливый иностранец слышит фразу It seems that you hate me
, в которой понимает только слова you и me. Чтобы ответить на это высказывание, он разбивает его на 4 части: 1) It seems that
, 2) you
, 3) hate
, 4) me
; и воспользоваться шаблоном, в котором он заменит you
на I
и me
на you
: What makes you think that I hate you
. Такой же шаблон можно использовать для множества похожих фраз, вроде I think that you lie me
или Why are you hate me?
. Более формально шаблон можно представить с помощью правила декомпозиции:
0 YOU 1 ME
где первый ноль - произвольное количество слов до слова you, а единица обозначает одно слово между you и me; и правила трансформации:
(WHAT MAKES YOU THINK I 3 YOU
где 3 - это третья часть исходной фразы (в нашем случае слово hate
)
Таким образом, для получения мало-мальски осмысленного ответа нам нужно создать набор ключевых слов, вроде you
, I
и т.д., и привязать к каждому из них соответствующие правила декомпозиции (то есть, разложения исходной фразы) и трансформации (то есть, создания ответа). При этом, с ключевым словом может быть связано несколько правил декомпозиции и трансформации. Например, пользователь может написать It seems that you lie
, и описанный выше шаблон уже не подойдет. В таком случае можно воспользоваться более широким правилом декомпозиции
0 YOU 0
Однако, перед нами стоит еще один важный вопрос: какое ключевое слово использовать. Расмотрим фразу I know everybody laughed at me
. Первое ключевое слово, попадающееся в ней - I
, стало быть мы должны воспользоваться одним из шаблонов, связанных с ним и построить фразу навроде You say you know everybody laughed at you
. Однако, если мы посмотрим внимательнее на фразу, то увидим, что в ней есть слово everybody
. Зачастую, когда люди используют это слово, на деле они имеют в виду конкретных людей. Поэтому, было бы логично выстроить ответ вокруг этого слова и уточнить, кого имеет в виду собеседник:
Для того, чтобы справиться с подобными спорными ситуациями, каждому из ключевых слов присваивается ранг, и чем он выше, тем больше приоритет слова. Слово everybody
несет большую смысловую нагрузку, чем местоимения, поэтому его ранг будет выше
Подводя итог сказанному, можно представить работу ELIZA следующим образом:
Почему психотерапевт?
Причиной, по которой ELIZA симулирует диалог с психотерапевтом, стало то, что такие разговоры возможны в ситуации, когда один из собеседников ничего не знает об окружающем мире. Одна из главных целей психотерапевта - разговорить пациента наводящими вопросами, чтобы он сам распутал клубок переживаний и нашел причину страданий. Поэтому, когда терапевт слышит "у меня проблемы с матерью", ему не обязательно знать, кто мать пациента, и даже смысл этого понятия. Что от него требуется - это предложить подробнее рассказать о своих проблемах с /фраза, идущая после ключевого слова проблемы/
Почему это важно?
С точки зрения компьютерных наук, ELIZA стала примером практического применения теории автоматов, смысл которой в том, чтобы представить работу программ в виде простого набора переходов между несколькими состояниями. Например, в разборе фразы I am very unhappy
с помощью ELIZA после обработки каждого слова программа переходит в одно из двух состояний: в первом начнется обработка следущего слова (если фраза совпадает с заданным шаблоном), во втором - закончит обработку. В конечном итоге, при помощи теории автоматов Стивен Клини создал популярный инструмент для работы с естественными языками - регулярные выражения
Однако, несмотря на прогрессивные идеи, лежащие в основе программы, ELIZA так и не удалось стать полноценным средством для диалога между компьютером и человеком. Главная проблема в том, что в отличие от литературного прототипа, ELIZA оказалась неспособна к самосовершенствованию и расширение словарного запаса можно было осуществить лишь вручную. Для преодоления этого несовершенства потребовалось разработать полноценные алгоритмы машинного обучения. Но это уже совсем другая история...