Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ninjas
7 лет назад

Моя прекрасная леди: как устроен первый в мире чат-бот

Всю  историю человечество стремится переступить грань, отделяющую его от Бога, и научиться создавать новую жизнь из неодушевленной материи.  Долгое время эти попытки не приносили успеха, но с развитием науки и техники эти стремления наконец стали обретать реальную форму. Одна из сложностей, стоящая на пути к успеху - создание полноценного разума, способного взаимодействовать с человеческим, и первые успехи в этой области стали появляться только к середине двадцатого века. Во многом это связано с появлением компьютеров, ведь лишь благодаря мощным вычислениям можно построить достаточно точную математическую модель работы человеческого мозга. В свою очередь, создание искусственного разума во многом связано с разработкой модели, которая позволит компьютеру понимать не только формальные компьютерные языки, но и естественные языки, на которых говорим мы с вами. Созданием подобных моделей занимается раздел компьютерных наук, называемый анализ естественных языков

И хотя успехи в этой области стали заметны  публике лишь в начале 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 оказалась неспособна к самосовершенствованию и расширение словарного запаса можно было осуществить лишь вручную. Для преодоления этого несовершенства потребовалось разработать полноценные алгоритмы машинного обучения. Но это уже совсем другая история...

0
252.939 GOLOS
На Golos с May 2017
Комментарии (10)
Сортировать по:
Сначала старые