Математические структуры и моделирование 2017. №4(44). С. 131-137
УДК 004.032.26 DOI: 10.25513/2222-8772.2017.4.131-137
ЭВРИСТИЧЕСКАЯ СЕТЬ ДЛЯ ПРОГРАММЫ CHATBOT
Институт математики им. С.Л. Соболева Сибирского отделения РАН
(Омский филиал)
Аннотация. Разработан эффективный алгоритм эвристической сети по некоторым свойствам аналогичный рекуррентной нейронной сети для программы виртуального собеседника. Алгоритм усовершенствован с использованием толкового словаря русского языка. В эвристическую сеть внедрён генератор новых ответов на базе статистической информации базы знаний.
Ключевые слова: чат-бот, виртуальный собеседник, рекуррентная нейронная сеть, эвристическая сеть.
Введение
При обучении рекуррентной нейронной сети на больших объёмах данных встречается проблема перезаписи и отсутствия качественного обучения сети [1]. Поэтому для программы чат-бот актуально создание эвристической сети по свойствам аналогичной рекуррентной сети, в частности, свойства взаимозаменяемости слов и статистической связи вопросов и ответов из базы знаний. Свойство рекуррентной нейронной сети к генерации новых текстов реализовано как отдельная процедура эвристической сети.
Часто в понимании входящих вопросов пользователей сеть ограничена в небольшой базе знаний, поэтому актуально внедрение толкового словаря русского языка для отображения исходных слов в слова-значения, возможно содержащиеся в вопросах базы знаний.
Алгоритм эвристической сети внедрен в новые режимы программы СЬа1Бо1;, созданной ранее с использованием Л1МЬ-разметки базы знаний [2].
1. Рекуррентная нейронная сеть
Рекуррентная нейронная сеть - вид многослойного перцептрона, у которого сигналы с нейронов выходного слоя поступают на дополнительные нейроны входного слоя, т. н. нейроны контекста [1,2]. Рекуррентная сеть для имитации речевого общения обладает рядом свойств:
1) статистическая связь вопросов и ответов в базе знаний,
2) взаимозаменяемость слов,
В.А. Шовин
научный сотрудник, e-mail: v.shovin@mail.ru
3) генерация новых текстов.
Поскольку при обучении рекуррентной нейронной сети на больших объёмах данных часто возникает проблема перезаписи и некачественного обучения, возможно реализовать основные свойства рекуррентной нейронной сети в виде эвристик.
2. Эвристическая сеть
Свойство статистической связи вопросов и ответов в базе знаний и выбор подходящего ответа из базы знаний на пользовательский вопрос может быть реализовано на базе следующего алгоритма:
1. Все вопросы в базе знаний обозначим словом patterns.
2. Соответствующие им ответы в базе знаний словом templates.
3. Каждый вопрос и соответствующий ответ разбивается на массив слов: pwords и twords.
4. Высчитываются корреляции между уникальными словами. Если слово tword встречается в массиве слов вопроса twords вместе со словом pword в массиве слов ответа pwords, тогда функции корреляции между словами tword и pword прибавляется 1: R(tword, pword) += 1.
5. Новый пользовательский вопрос обозначим словом question.
6. Пользовательский вопрос разбивается на слова qwords.
7. Осуществляется перебор ответов templates из базы знаний с целью найти максимум суммы корреляций между словами из ответа twords и словами
пользовательского вопроса qwords: max R (twordsk[i],qwords[j]) ,
k L j J
где индекс k пробегает по всем ответам templates в базе знаний, i и j -индексы слов в массивах слов.
8. Чтобы уменьшить влияние часто встречаемых слов, поиск максимум можно ограничить из сумм, не больших определённого порога porog.
Приведём пример свойства взаимозаменяемости слов при поиске ответа на пользовательский вопрос. Например, такая AIML-структура в базе знаний:
<category>
<pattern>^ любишь мир?</pattern> <template> <random>
<Ы>Да люблю</^> </random> </template> </category>
<category>
<pattern^ люблю мир</pattern> <template> <random>
Математические структуры и моделирование. 2017. №4(44)
133
<^>В мире полно женщин</^> </random> </template> </category>
должна приводить к ответу: «Да, люблю» на пользовательский вопрос: «Ты любишь женщин?». Т. е. слова «мир» и «женщин» становятся взаимозаменяемыми.
Соответствующий алгоритм учёта взаимозаменяемости слов из базы знаний может быть реализован в следующей форме.
1. Вводится внутренняя функция корреляции между словами. Для этого слова из массива слов вопроса pwords и ответа twords базы знаний объединяются в массив ptwords. Вводится функция rk (ptwords[i],ptwords[j]) = j-, где j > i. Тогда функция внутренней корреляции между словами Rin (tword,pword) определяется либо как сумма функций rk, либо как их максимум, либо как их среднее по всем категориям из базы знаний.
2. Для слова qword из пользовательского вопроса выбираются все слова ptword, коррелирующие с ним по функции Rin (qword,ptword). На выбор ответа из базы знаний на пользовательский вопрос влияет с коэффициентом а максимум суммы функций внутренней корреляции между словами Rin (qword,ptwordk), где индекс k пробегает по всем парам вопрос плюс соответствующий ответ из базы знаний.
Генерация нового текста может быть реализована с помощью следующего алгоритма:
1. Задаётся число влияющих слов k.
2. Подаётся на вход k слов {i\,i2,... ,ik} и для них ищется новое слово s с наибольшей суммой Rin (ij,s). Функция Rin должна учитывать, что слово ij стояло в предложении раньше слова s. Функция Rin просчитывается на предложениях типа pattern + « » + template j + « _end_»,
где pattern и templatej взяты из одной категории, а слово «_end_»
символизирует конец обучающего предложения.
3. После того как найдено новое слово s, k входящих слов заменяется на слова {i2,... ,ik, s} и ищется новое слово по шагу 2.
4. Процесс поиска новых слов завершается, когда найдено слово «_end_»,
либо начинается повторение последовательности слов (последовательности типа 1, 2, 3, 4, 5, 4, 5), либо превышено необходимое число слов d.
3. Внедрение толкового словаря
Когда в пользовательском вопросе встречаются слова, которых не было в базе знаний, оказывается возможным использование толкового словаря русского языка по следующему алгоритму:
1. Составить базу определений слов из толкового словаря.
2. Развернуть все слова из пользовательского вопроса по определениям. Т. е. вместо каждого слова из пользовательского вопроса взять наборы слов из определений.
3. Все слова, найденные в вопросе pattern из базы знаний и соответствующие словам пользовательского вопроса, оценить по коэффициенту, например, 100. Все слова пользовательского вопроса, соответствующие 1-му уровню определений, оценить по коэффициенту, например, 50.
4. Найти суммы таких оценок и выбрать такой вопрос pattern из базы знаний, который набрал максимум.
5. Ответ template из базы знаний, соответствующий найденному вопросу pattern, взять за ответ на пользовательский вопрос.
4. Морфологический анализатор
Для приведения слов в базовую форму и улучшения качества всех алгоритмов имитации речевого общения возможно использовать морфологический анализатор.
5. Программная реализация
Программа чат-бота была реализована в качестве Android-приложения с возрастным ограничением 18+. В приложении доступны несколько новых режимов чат-бота на базе эвристической сети.
В качестве морфологического анализатора была использована свободная JavaScript-библиотека для обработки текстов на русском языке Az.js. Приложение доступно по адресу:
https://play.google.com/store/apps/details?id=svlab2.chatbot3 [2].
6. Заключение
Программно реализованы режимы чат-бота на базе эвристической сети, имитирующей свойства рекуррентной нейронной сети. Алгоритм усовершенствован с помощью толкового словаря русского языка для слов, не представленных в базе знаний. Приложение ChatBot доступно для платформы Android в магазине приложений Google Play.
Литература
1. Vinyals O., Le Q. A Neural Conversational Model. arXiv:1506.05869, 22 Jul 2015.
2. Шовин В.А. Программа ChatBot — чат-бот или виртуальный собеседник // Математические структуры и моделирование. 2016. № 4(40). С. 96-101.
Математические структуры и моделирование. 2017. №4(44)
135
HEURISTIC NETWORK FOR CHATBOT PROGRAM
V.A. Shovin
Scientist Researcher, e-mail: v.shovin@mail.ru
The Institution of the Russian Academy of Sciences Institute of Mathematics. S. Siberian
Branch of RAS (Omsk Branch)
Abstract. An efficient algorithm for the heuristic network, with some properties similar to a recurrent neural network, for a virtual companion program is proposed in the article. The algorithm is improved with the use of an explanatory dictionary of the Russian language. A generator of new responses on the basis of statistical information knowledge base is introduced in the heuristic network.
Keywords: chatbot, virtual companion, recurrent neural network, heuristic network.
Дата поступления в редакцию: 12.02.2017