Использование:
1. Анализ вопроса: филиал, сотрудник, вопрос.
2. Выбор филиала.
3. Выявление наличия в указанном филиале фирмы сотрудника с указанной должностью.
4. Определение ответа сотрудника на заданный вопрос.
Администрирование:
1. Возможность импортирования сотруднику пары вопрос-ответ из области знаний другого сотрудника.
2. Редактирование областей знаний сотрудников.
3. Возможность просмотра заданных вопросов.
Глава 2. Проектирование системы
После того, как в предыдущей главе была описана предметная область и выдвинуты требования к системе, приступим к ее проектированию. В этой главе будут определены бизнес-процессы, в которых задействован разрабатываемый виртуальный собеседник, построены диаграммы в нотации UML для более наглядного их отображения и будут выбраны алгоритмы, на которых будет работать разрабатываемая система.
2.1 Анализ возможных проектных решений алгоритма реализации виртуального собеседника
Как уже было сказано, первые два года игра проводилась в ручном режиме. При этом были сохранены все заданные в ходе игры вопросы и данные на них ответы. Пары «вопрос-ответ» были привязаны к конкретным должностям в конкретных филиалах. Таким образом, была получена некоторая база четверок «филиал - должность - вопрос - ответ». Готовый входной файл содержал более 400 записей. Выбор проектных решений был скорректирован, с поправкой на размер составленного файла.
Были рассмотрены следующие варианты проектных решений:
1. Поиск по полному совпадению вопроса. Наиболее простой вариант, где введенный запрос пользователя дословно сопоставляется с одним из вопросов, имеющихся в базе. Такой вариант реализации не учитывает возможные вариации вопросов, использование синонимов и требует чрезвычайно большую базу вопросов-ответов. На практике этот вариант даже не пробовали реализовать.
2. Поиск по набору ключевых слов. Усложненная версия первого варианта, где в запросе пользователя производится поиск наборов ключевых слов, которые могут стоять в произвольном порядке и могут быть перемешаны с «шумовыми словами». На базе этой технологии была разработана версия виртуального собеседника для той же деловой игры. Однако ее работа имела очень низкую точность и для практического применения оказалась не пригодна.
3. Искусственные нейронные сети (ИНС). Искусственная нейронная сеть - упрощенная модель человеческого мозга. Сеть обучают на базе имеющихся вопросов, после чего она работает с запросами пользователя и выдается результат на основе ранее пройденного обучения. Разработка виртуального собеседника с использованием нейронных сетей рассматривалась, однако, база из 430 входных записей слишком мала для обучения ИНС, поскольку отношение элементов выборки к количеству признаков очень мало[2]. Исходя из следствия теоремы Арнольда-Колмогорова-Хехт-Нильсена[3], велика вероятность переобучения ИНС.
4. Онтологии. Онтология - способ формализации некоторой области знаний с помощью концептуальной схемы. Как правило такая схема состоит из структур данных, содержащей все релевантные классы объектов, их связи и правила, принятые в этой области. Этот метод решения рассматривался для решения поставленной задачи, однако был отвергнут в пользу лексико-синтаксических шаблонов в связи с опытом в использовании их.
5. Лексико-синтаксические шаблоны (ЛСШ). Лексико-синтаксический шаблон - структурный образец языковой конструкции, позволяющий обрабатывать исходный текст, учитывая лексические и синтаксические характеристики естественного языка. Для русского языка это падежи, времена, наклонения, склонения, числа и т.д. В основном шаблоны используются для автоматической обработки текста: выявления языковых конструкций, классификации текстов, поиска словоформ, изменения текстов с учетом заданных параметров (синонимов, выражений). Помимо этого, с помощью лексико-синтаксических шаблонов есть возможность распознавать альтернативы частей исходного текста, что дает возможность задавать синонимы определенным словам. Предельно упрощенной формой ЛСШ являются БНФ.
Год назад была разработана версия виртуального собеседника с использованием лексико-синтаксических шаблонов. Она имела почти такой же интерфейс, но была куда проще с технической точки зрения. Был взят список вопросов, которые студенты задавали в ходе проведения предыдущих деловых игр. Эти вопросы были несколькими студентами вручную преобразованы в ЛСШ (в расчете на то, что студенты будут и дальше задавать такие же вопросы). Это позволило в сжатые сроки получить набор из примерно сотни шаблонов. Версия была применена на практике, но точность работы собеседника было на уровне 30%, что не является достаточным показателем для имитации диалога.
Попытка использования первой версии собеседника выявила следующие проблемы:
1. Количество шаблонов. Было разработано всего около сотни шаблонов, количество альтернатив в которых было крайне ограничено.
2. Отсутствие концептуальной целостности. Не было установлено никаких правил или соглашений о построении шаблонов. Каждый из студентов составлял шаблоны на свое усмотрение.
3. Недостаточный учет многообразия словоформ и синонимии русского языка.
4. Помимо проблемы в самих шаблонах, отсутствовала возможность администрирования приложения. Любые административные действия (просмотр информационной базы и ее корректировка) мог выполнять только программист- автор системы средствами СУДБ SQL.
Была выдвинута гипотеза, что качество работы собеседника можно существенно улучшить, если увеличить количество ЛСШ и учесть словоформы и синонимию русского языка. Для этого было принято проектное решение разработать механизм автоматической генерации ЛСШ на базе онлайн словарей синонимов русского языка.
Вторая версия виртуального собеседника призвана решить проблемы предыдущей системы, разработанной на основе ЛСШ
2.2 LSPL - язык лексико-синтаксических шаблонов
Предполагается, что вопросы, обрабатываемые виртуальным собеседником, будут задаваться на русском языке, поэтому было решено взять за основу утилиту, которая также работает с шаблонами, которые бы сопоставлялись с русским текстом. Было решено использовать язык LSPL (Lexico-Syntaxic Pattern Language). Этот язык предназначен для описания конструкций русского языка с целью их представления в системах извлечения информации из текстов, однако помимо этого он может сравнивать текст с шаблоном, который представляет набор символов на любом языке. Разработка языка началась в 2007 году, но он продолжает изменяться и дополняться по сей день.
Ключевым в языке LSPL является понятие лексико-синтаксического шаблона, рассматриваемого как структурный образец языковой конструкции. Шаблон задает ее лексический состав и поверхностно-синтаксические свойства и тем самым может быть использован для распознавания ее в тексте и последующего извлечения.
Шаблон строится как последовательность элементов, описывающих соответствующие фрагменты языковой конструкции - в том порядке, в каком они встречаются в этой конструкции. Средства языка позволяют задавать вариативность конструкции, включая набор входящих в нее слов (лексем) и их морфологических характеристик (признаков).
Как выразительное средство, лексико-синтаксический шаблон удобен в первую очередь для формального описания именных словосочетаний русского языка, которые, как правило, являются грамматически согласованными. Для этого в языке LSPL предусмотрены средства задания синтаксической связи согласования слов.
Синтаксические связи могут задаваться в шаблоне следующим образом: согласование - путем указания равенства соответствующих морфологических признаков связанных элементов текста, управление - путем указания значений морфологических признаков подчинённого элемента.
Важной особенностью языка LSPL является возможность использовать при задании шаблона другие (уже определенные) шаблоны, что позволяет при формализации сложной языковой конструкции выделить ее составные части и описывать их по очереди в виде шаблонов, давая этим шаблонам имена и используя эти имена в других шаблонах.
В целом, язык шаблонов является достаточно гибким и мощным средством задания лексических и поверхностно-синтаксических свойств конструкций: LSPL-шаблоны могут описывать не только словосочетания, но и целые предложения и более крупные фрагменты текста на русском языке.
LSPL - продукт, свободный для некоммерческого использования.
2.3 Проектирование алгоритма работы системы
Поскольку было решено использовать ЛСШ, то вопрос системе будет считаться входными данными для обработки ЛСШ. Каждый из вопросов неделим и каждому из них соответствует один ответ, заложенный в систему. Это допущение создано исходя из того, что все вопросы достаточно простые по структуре и содержанию. Исходя из этого, было принято решений на каждый из вопросов создать один неделимый шаблон, который бы описывал вопрос. Исходя из этого, каждый из ответов системы является неделимым и в полной мере разрешает заданный вопрос.
Между вопросами отсутствуют сложные контекстные связи, за исключением двух: отделение и сотрудник. Отделение студент для каждого вопроса указывает явно. Список сотрудников, при этом, для каждого отделения свой: в одном ответы могут давать 6 разных сотрудников, а в другом лишь трое, должности могут иметь разные названия (например, директор, начальник, менеджер). При этом считаем, что в каждом отделении каждую должность занимает только один человек.
Названия должностей сотрудников известны системе, но не известны студенту. Студенту предлагается самостоятельно понять, какие сотрудники работают в каждом отделении фирмы, исходя из описания игры и отклика системы. Исходя из этого требования, в алгоритм системы заложена возможность использования синонимов для именования одной и той же должности. Словарь синонимов заготовлен в системе заранее.
После того, как были определены отделение фирмы и должность сотрудника остается обработать вопрос, который студент задает этому сотруднику. Происходит это следующим образом: для указанного сотрудника указанного филиала берутся все ЛСШ, описывающие компетенции этого сотрудника (то есть те вопросы, на которые он может дать ответ, и сами эти ответы). Затем заданный студентом вопрос сопоставляется с этими шаблонами, после чего выбирается тот шаблон, который наиболее полно соответствует заданному вопросу. И в качестве ответа на вопрос студенту выдается ответ из этого шаблона. В случае если ни один шаблон, описывающий компетенции данного сотрудника, не соответствует заданному вопросу, то будет сказано, что сотрудник не знает ответа. Если система определила несколько шаблонов, которые в одинаковой степени соотвествуют заданному вопросу, ответ выдается случайно.
К сожалению, нет гарантии, что шаблон, который распознан, как наиболее подходящий, действительно описывает именно заданный вопрос. Но к каждому шаблону в базе привязан некоторый ответ. Именно этот ответ и будет выдан. То есть в этом случае на вопрос будет дан неверный ответ.
Разработчики языка LSPL предоставили утилиту для анализа текста на соответствие ЛСШ. А именно, утилита позволяет сопоставить заданный текст с заданным набором шаблонов и выявить тот шаблон (или те шаблоны), которые соответствуют различным частям данного текста.
Поясним сказанное примером, в котором для прояснения смысла работы утилиты предельно упрощен синтаксис ее параметров и языка LSPL.
Пусть анализируемый текст равен: «Сколько в вашем отделении фирмы установлено компьютеров?»
Сопоставляемые шаблоны представлены в табл.2.1.
Результатом работы утилиты представлены в табл. 2.2.
Таблица 2.1. Упрощенные лексико-синтаксические шаблоны
|
Наименование ЛСШ |
Содержание ЛСШ |
Ответ |
|
|
SKF |
числительное <Сколько> {шумовые слова} существительное <Фирма> {шумовые слова} существительное <Компьютер> |
32 |
|
|
SSF |
числительное <Сколько> {шумовые слова} существительное <Фирма> {шумовые слова} существительное <Сотрудник> |
32 |
|
|
SOF |
числительное <Сколько> {шумовые слова} существительное <Отделение> {шумовые слова} существительное <Фирма > |
6 |
|
|
SO |
числительное <Сколько> {шумовые слова} существительное <Отделение> |
6 |
|
|
OF |
существительное <Отделение> {шумовые слова} существительное <Фирма> |
да |
Таблица 2.2. Результат работы утилиты
|
Наименование ЛСШ |
Границы текста |
Фрагмент текста |
|
|
SKF |
1-56 |
Сколько в вашем отделении фирмы установлено компьютеров |
|
|
SSF |
- |
- |
|
|
SOF |
1-32 |
Сколько в вашем отделении фирмы |
|
|
SO |
1-26 |
Сколько в вашем отделении |
|
|
OF |
17-32 |
отделении фирмы |