Создание чат-ботов на основе семантических моделей

Компания «ТриниДата» на основе продукта "АрхиГраф.Логос" разработала сервис для обработки вопросов на естественном языке, который позволяет задавать вопросы и получать на них ответы в режиме прямого диалога.

В отличие от традиционных чат-ботов, по большей степени раздражающих пользователей неадекватностью своих ответов, чат-бот от «ТриниДата» использует семантические технологии (онтологии). Это означает, что при обработке вопроса чат-бот обращается к модели предметной области, максимально точно описывающей тот фрагмент реальности, о котором идет диалог. Например, это может быть описание какого-либо производственного комплекса: его составляющие части и их параметры, связи между ними, отношения по поводу каких-либо состояний или процессов, ограничения и диапазоны допусков и т. д. Предметная область описывается в виде семантической модели специалистами и профильными экспертами. Это делает ее точной и подробной настолько, насколько того требует бизнес.

Разумеется, конечный пользователь чат-бота не взаимодействует напрямую с семантической моделью – такие модели достаточно сложны технологически и методологически. Наше решение для работы с фактами на естественном языке позволяет абстрагироваться от этой сложности и оставить ее аналитикам, специалистам по работе с данными (дата-стюардам).

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

Лексическая модель необходима, потому что говорящий не обязательно задает свой вопрос в тех терминах, какие использованы в модели предметной области – он о ней попросту может ничего не знать. Пользователь может использовать синонимы, неточные выражения и др. Для одного и того же объекта/явления предметной области в языке может быть несколько синонимов или близких понятий; возможна омонимия или лексическая многозначность. Для работы с различными вариантами формулирования вопросов, а в некоторых случаях и для достраивания лексического контекста не обойтись без лексического слоя данных.

В обобщенном виде схема обработки вопроса пользователя выглядит так:

Схема обработки вопроса пользователя к чат-боту

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

Рассмотрим работу чат-бота на следующем примере.

Пусть в модели предметной области содержится информация о том, что на некотором предприятии работает Иванов И.И., который использует несколько телефонных номеров. Представим, что нам неизвестен не только номер этого телефона, но и тип телефона (сотовый/стационарный). В таком случае мы можем задать чат-боту вопрос: Какой телефон у Иванова? В ответе мы получим всех найденных работников предприятия – физических лиц с фамилией Иванов (имя и отчество мы в вопросе не указывали), и всеми принадлежащими им номерами телефонов:

Вопрос пользователя и ответ системы

Этот ответ получен благодаря связям между лексемами и сущностями предметной области, обладающими значениями определенных параметров. В упрощенном виде результат процесса обработки вопроса выглядит так:

Схема разбора структуры и смысла фразы

Как видно на рисунке, «разобранные» лексемы исходного текста сопоставлены атрибутам и объектам модели предметной области. Они, в свою очередь, взаимосвязаны, что позволяет выдать в ответе не только один (основной) телефон И.И.Иванова, но и номер его сотового.

Такая модель сущностей и их связей - это граф, в котором «упакована» информация об определенном фрагменте действительности. Запрос к этому графу, который строит и выполняет чат-бот, позволяет на основе большого графа построить граф существенно меньшего размера – достаточного, чтобы ответить на вопрос пользователя.

Более того, этот частный граф может переиспользоваться чат-ботом в том случае, если пользователь вслед за первым вопросом задаст следующий вопрос о том же объекте. Пусть пользователь продолжил диалог новым вопросом: А какой у него e-mail? Для носителя языка этот вопрос вполне правилен и логичен – если мы начали спрашивать об Иванове, следовательно не нужно каждый раз повторять его фамилию. Однако для сервиса чат-бота разбор такого вопроса является непреодолимым препятствием, если только он не держит в памяти контекст разговора. В данном случае то, что предыдущий вопрос касался объекта «Иванов И.И.». Контекст здесь – это тот самый частный граф, который был построен при поиске ответа на предыдущий вопрос. При обработке второго вопроса он позволяет не только правильно определить, о каком объекте предметной области идет речь, но и сэкономить время на обработку. В результате выдается ответ:

Ответ чат-бота на вопрос пользователя

Фактически такой вариант реализации чат-бота предоставляет интерфейс для поиска информации по графу знаний, который описывает как структуру представлений о предметной области (типы сущностей, типы связей между ними), так и конкретную информацию о тех или иных объектах. Поиск проводится с учетом контекста и в ряде случаев позволяет «предсказать» ожидания пользователя. Валидность поисковой выдачи приближается к 100%, потому что обрабатываются данные, организованные в виде логически выверенной семантической модели или данные, связи которых могут быть установлены «на лету».

Вот типовые сценарии, в которых может использоваться созданный нами сервис:

  1. Корпоративная поисковая система, обрабатывающая большие массивы корпоративных данных, полученные в результате консолидации из множества источников информации.
  2. Интеллектуальная система поддержки принятия решений.
  3. Система анализа каталогизированной информации (нормативно-справочная документация, архивы конструкторской документации, библиотеки структурированных и полуструктурированных записей и пр.).

Лексическая модель, которая выступает в качестве терминологической «обвязки» по отношению к модели предметной области, при необходимости может быть расширена. Это позволит более гибко обрабатывать поисковые запросы и, следовательно, получать более полные поисковые результаты на выходе.