Введение На кафедре вычислительных систем и информатики Государственного университета морского и речного флота им. адм. С. О. Макарова (ГУМРФ им. адм. С. О. Макарова) была разработана и успешно внедрена в эксплуатацию распределенная информационная система для оценки соответствия профессиональным компетенциям [1, 2] работников морских специальностей. Реализация работы осуществлялась на платформе «1С: Предприятие 8» на основе адаптированной типовой конфигурации «1С: Электронное обучение. Экзаменатор», что позволило включить в процесс профессиональной подготовки, повышения квалификации и переподготовки кадров оценку знаний и умений сотрудников или претендентов на должность на основе электронного тестирования. Одной из основных особенностей реализованной системы является возможность внесения необходимых корректировок в организацию процесса тестирования, что важно для дальнейшего совершенствования учебных материалов и тестов. В связи с этим наибольшее внимание при создании программного продукта было отведено статистическому анализу данных, получаемых из стандартного набора отчетов информационной системы. Следует отметить, что в процессе эксплуатации довольно часто встречается ситуация, когда либо полученной информации недостаточно, либо требуется более детальная расшифровка полученных результатов, не входящих в объект типа «Отчет» системы 1С. Обычно для решения задач такого рода необходимо использовать средства программирования системы, что требует от пользователя достаточно высокой квалификации, четкого понимания структуры и наполнения базы данных, ее динамически изменяющейся структуры и объема. Пользователи системы, которыми являются как работники или претенденты на должность, так и организаторы тестирований и руководители организаций, не являются специалистами в компьютерной области и испытывают сложности при получении выборки данных. Именно поэтому в информационной системе был реализован формальный механизм [3] обработки запросов [4], который предполагает интерактивный ввод запроса пользователем в виде произвольного текста на некотором проблемно-ориентированном подмножестве естественного языка с целью получения необходимой выборки. Постановка задачи В общем виде постановку задачи можно сформулировать следующим образом: создание формального механизма обработки запросов, который предполагает интерактивный ввод запроса пользователем в виде произвольного текста на некотором проблемно-ориентированном подмножестве естественного языка с целью получения необходимой выборки. Важно, чтобы программный продукт мог с максимальной точностью распознавать текст, независимо от сложности, возможной двусмысленности, используемого стиля изложения, слов, синтаксических взаимосвязей и идиом. Для этого предлагается использовать расслоенные семантические сети, позволяющие выявлять основные семантические структуры языка запросов. Для упрощения автоматической генерации программного запроса с целью предоставления требуемых данных следует задать также шаблоны программного кода, содержащие основные сведения о синтаксисе языка. Организация работы механизма обработки запросов на естественном языке Алгоритм функционирования предлагаемого формального механизма обработки запросов состоит из следующих этапов [5]: - интеллектуальный ввод пользователем запроса на естественном языке с возможностью задания параметров; - лексический анализ; - синтаксический анализ; - семантический анализ; - автоматическая генерация текста запроса на язык запросов 1CQ среды «1С: Предприятие 8»; - выполнение сгенерированного программного запроса информационной системой, вывод конечных результатов пользователю или сообщения об ошибке с осмысленными причинами ее возникновения, возможность конвертации запроса на язык SQL. Проблема лексического, синтаксического и семантического разбора пользовательского запроса на естественном языке не зависит от специфики предметной области. Однако получить обобщенный вариант формализации, подходящий одновременно для различных предметных областей (подмножеств языка) не представляется возможным ввиду потенциально неограниченного количества выражений. Именно поэтому в качестве ограниченной предметной области был выбран процесс подготовки морских специалистов в ГУМРФ им. адм. С. О. Макарова. Одной из главных задач реализованного формального механизма является улучшение понимания истинного смысла запроса на естественном языке, введенного пользователем. Для этого следует определить форму представления описанных данных для использования в процессе анализа текста. В качестве такой формы была выбрана лингвистическая онтология с заданным тезаурусом. Это позволяет эффективно описать отношения между концептами семантической сети, что облегчает обработку запроса. В отличие от большинства разработчиков подобных механизмов [6], исследования которых в области лингвистики естественных языков, включая русский, ориентированы на построение полных семантических словарей, нами реализован ограниченный словарь, т. к. термины и объекты характеризуются строгой предметной направленностью, обобщенной лексикой и упрощенным синтаксисом. Они загружаются из метаданных информационной системы или осознанно генерируются пользователями. Заранее определены ключевые слова, которые полностью идентифицируют текст в заданном подмножестве (например, специфические термины, названия должностей). Для наполнения словаря в информационной системе использовался находящийся в свободном доступе словарь открытого корпуса русского языка[1] в формате XML, предназначенный для автоматической обработки текстов, машинного обучения или тестирования. В настоящее время словарь включает в себя более 1 300 000 словоформ. Этого вполне достаточно для реализации формального механизма обработки запросов в рамках предложенной информационной системы. С целью сокращения количества заведомо очевидных ошибок используются также некоторые ограничения, относящиеся к проблемно-ориентированному подмножеству естественных языков. Вся совокупность входных запросов была задана двумя классами предложений [7]: простые вопросительные предложения (например: «Каков…?») и побудительные предложения (например: «Показать…»). Изначально в информационной системе пользователь вводит некоторый произвольный текст в специально отведенные поля формы (рис. 1). Сложность данного этапа заключается в том, что полученный запрос может содержать последовательности символов, которые часто просто невозможно идентифицировать средствами информационной системы. Возникает необходимость обработки возможных опечаток и определения в тексте исходного запроса основных слов и их взаимосвязей [8]. Для корректности ввода информационная система предоставляет пользователю интеллектуальную подсказку на основе ранее заполненных словарей, которая в значительной степени ограничивает круг возможных ошибок. Рис. 1. Форма для ввода пользователем запроса на естественном языке (ЕЯ) Разбор исходного запроса на естественном языке начинается с этапа лексического анализа, представляющего собой процесс определения границ слов и дальнейшего заполнения на их основе таблицы лексем, где каждой лексеме в соответствие ставится набор определенных характеристик, таких как часть речи, род, число и т. д. Выходная информация, полученная на этапе лексического анализа, передается для дальнейшей обработки на этап синтаксического анализа, основной задачей которого является сопоставление линейной последовательности лексем с формальной входной грамматикой языка в виде синтаксического дерева. На этапе семантического анализа осуществляется анализ результатов, полученных при синтаксическом анализе. Данный этап не имеет устоявшихся моделей и подходов к его реализации. В большинстве систем роль семантического анализатора играет отдельный модуль, решающий задачу семантического анализа на основе некоторых эвристических соображений [9]. Сложность проблемы состоит в разработке достаточно эффективного алгоритма, который позволял бы извлекать полезную смысловую информацию из запроса на естественном языке. Одним из возможных вариантов реализации семантического анализа является использование семантических сетей и дальнейшее сопоставление текста запроса на естественном языке с базовыми шаблонами языка 1CQ. На завершающем этапе работы формального механизма производится автоматическая генерация кода на языке запросов 1CQ в специально разработанном модуле, где последовательно происходит обработка поступающей на вход информации о структуре семантической сети и об имеющихся шаблонах запросов. На их основе выполняется автоматическая генерация программного кода. Например, запрос пользователя на естественном языке «Показать результаты теста участников на должность капитан» породит следующий программный код: ВЫБРАТЬ УчастникиТестирований.ФИО КАК ФИО, УчастникиТестирований.Результат КАК Результат ИЗ РегистрСведений.УчастникиТестирований.СрезПоследних КАК УчастникиТестирований ГДЕ УчастникиТестирований.ТестДолжность = "капитан" УПОРЯДОЧИТЬ ПО УчастникиТестирований.ФИО ВОЗР В конце работы механизма организуется предоставление результатов пользователю или сообщение об ошибке. Информационная система обладает также возможностью конвертации запроса на язык SQL [10, 11]. Работа транслятора осуществляется по описанной выше схеме. Запрос на естественном языке, введенный пользователем, последовательно проходит стадии лексического, синтаксического и семантического анализа. В завершение, на основе структуры семантической сети и заданных шаблонов, формируется программный код. Например, запрос пользователя на естественном языке «Показать результаты теста участников на должность капитан» породит следующий программный код: SELECT TestParticipants.User AS User, TestParticipants.Result AS Result FROM TestParticipants WHERE TestParticipants.Test = "captain" ORDER BY TestParticipants.User ASC Применение семантических сетей и шаблонов для обработки запросов на естественном языке Любой язык, в том числе и язык запросов 1CQ платформы «1С: Предприятие 8», можно смоделировать на некоторой семантической сети [12] с концептами, типы которых четко заданы предметной областью или идеологией языка. Это позволяет освободить пользователя от необходимости иметь дело с нагромождением деталей представления данных, а также сохранить их смысловую часть, предоставляя при этом независимость от выбранного метода реализации информационной системы. Еще одно преимущество семантической сети данных - ее ориентация на распознавание семантики, что дает возможность информационной системе более осмысленным образом отвечать на поступающие входные запросы на естественном языке. Такая модель служит более эффективным посредником между многочисленными вариациями запроса пользователя с одной стороны и многочисленными внутренними представлениями данных - с другой [13]. Для создания семантической сети изначально в качестве основы выделяется база [14] - начальная система связанных концептов, которая расширяется путем добавления в нее слоев. В свою очередь, под слоем понимаются отдельные фрагменты семантической сети сильно взаимосвязанные между собой и слабо связанные с остальными. Для начала следует определить общую базу сети запросов (рис. 2) на кортежах, т. е. некоторый набор элементов, из которых она будет состоять. В данном случае к базе относятся две обязательные секции - это секция описания запроса и секция источника данных запроса, а также одна необязательная - секция задания условий выборки запроса, которая указана в квадратных скобках, что дополнительно отмечает факт ее возможного отсутствия. Рис. 2. Общая база сети запросов информационной системы В секции описания запроса определяется список полей, которые будут содержаться в результатах выполнения запроса и являться шапкой для таблицы результата; в секции источника данных запроса - список источников данных - таблиц, которые являются поставщиками данных; в секции задания условий выборки запроса - условия, влияющие на выборку данных в запросе. Все это в совокупности образует единую семантическую сеть. Список полей, список таблиц - источников данных и список условий задаются множеством слов из входного запроса пользователя на естественном языке после этапов лексического и синтаксического анализа с использованием словаря. На рис. 3 представлено множество концептов и множество отношений между ними в реализованной информационной системе. Рис. 3. Семантическая сеть информационной системы Все слои модели языка 1CQ образуют довольно сложную сеть, небольшой фрагмент которой для самого простого запроса представлен на рис. 4. В случае, когда у слоя имеется более одного предшественника, возможны коллизии в реализации сходных или зависимых концептов, введенных изначально в предыдущих слоях. Рис. 4. Фрагмент сети слоев информационной системы Реализованная семантическая сеть построена на основе анализа запроса на естественном языке, введенного пользователем, и является формализованным представлением содержащихся в нем знаний, поэтому каждому ее элементу соответствует некоторый фрагмент исходного текста запроса. Концептам, отражающим одинаковые по смыслу данные, соответствуют аналогичные по синтаксическому строению фрагменты исходного текста запроса. Это позволяет использовать шаблоны для дальнейшей работы по обработке запроса на естественном языке. Каждый шаблон описывает синтаксическую структуру части исходного текста запроса на естественном языке и создаваемые элементы семантической сети. При описании синтаксической структуры указываются не только связи слов в предложении, но и условия, накладываемые на каждое из слов. Эти условия могут проверять как лексические или семантические характеристики слова, так и смысловые пометки этого слова, заданные при поиске в других шаблонах. Если какая-то часть текста удовлетворяет всем условиям, указанным в шаблоне, то происходит ее формализация. Это в значительной степени облегчает процесс перевода запроса на язык 1CQ с сохранением смысловой составляющей. Наполнение информационной системы набором шаблонов для основных типов запросов на языке 1CQ позволяет определить: - правила распознавания шаблонов; - правила сочетания шаблонов; - семантику запросов на естественных языках. Любой запрос на языке 1CQ имеет вид, который можно свести к шаблону. Так, самый простой запрос к одной таблице имеет следующий вид: ВЫБРАТЬ список_полей ИЗ таблица_источник После выполнения запроса информационной системой пользователю выводится результат в виде таблицы. Для заполнения столбцов используются данные, приведенные в секции источника данных, что в дальнейшем позволяет определить составные части шаблона [15]. Использование шаблонов в процессе разбора запроса пользователя, введенного на естественном языке, реализует запись новой строки в его таблицу. При этом в столбцах таблицы помещаются либо соответствующие фразы, либо идентификаторы простых шаблонов, описывающие вложенные подзапросы, либо идентификаторы рекурсивных шаблонов. Из связанных строк, записанных во всех использованных таблицах шаблонов, становится возможным собрать единую инструкцию для языка запросов 1CQ. На основании шаблонов можно представить общую схему возможных вариантов запросов, которые не содержат в себе подзапросов (рис. 5). Рис. 5. Варианты запросов информационной системы без использования подзапросов Основное отличие между шаблонами заключается в наличии или отсутствии: - фильтра; - упорядочения: - группирования. Определение одного из представленных видов шаблонов в информационной системе происходит без особых трудностей. По умолчанию сначала информационная система в исходном состоянии начинает работу с использования самого простейшего шаблона "ВЫБРАТЬ … ИЗ … ГДЕ …". По мере уточнения и разбора входного запроса на естественном языке шаблон может изменяться на другой. При этом в новый шаблон передаются все данные из предыдущего. Однако следует отметить, что рассмотренные шаблоны могут применяться только к простым запросам, при разборе сложного запроса они работают следующим образом. Сначала происходит процесс фрагментации, т. е. разделение одного усложненного запроса на несколько более простых, объединенных конструкциями внутреннего языка запросов 1CQ. Для объединения фрагментов изначального запроса используется конструкция "ОБЪЕДИНИТЬ" ("UNION"). Для единовременного обращения информационной системы к различным источникам данных используются различные варианты "ИЗ … СОЕДИНЕНИЕ … ПО" ("FROM … JOIN …"), такие как внутреннее соединение "ИЗ … СОЕДИНЕНИЕ … ПО" ("FROM … JOIN …"), правое внешнее соединение "ИЗ … ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ … ПО" ("FROM … RIGHT OUTER JOIN …"), левое внешнее соединение "ИЗ … ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ … ПО" ("FROM … LEFT OUTER JOIN …"). В случае если структурная фрагментация сложного запроса невозможна, алгоритм пытается провести иерархическую дефрагментацию, формально реализуемую средствами вложенных запросов вида "ВЫБРАТЬ … ИЗ … ГДЕ … (ВЫБРАТЬ … ИЗ … ГДЕ …)". Каждый простой подзапрос отдельно рассматривается информационной системой на всех этапах работы механизма. Именно благодаря фрагментации становится возможным использование шаблонов и для сложных запросов. Заключение Для практической реализации результатов исследования в качестве программного продукта была выбрана платформа «1С: Предприятие 8» и адаптированная под нужны кафедры вычислительных систем и информатики ГУМРФ им. адм. С. О. Макарова типовая конфигурации «1С: Электронное обучение. Экзаменатор». Разработка предназначена для профессиональной подготовки, повышения квалификации и переподготовки морских специалистов на основе электронных тестирований. Кроме того, был реализован формальный механизм обработки запросов, который предполагает интерактивный ввод запроса пользователем в виде произвольного текста на некотором проблемно-ориентированном подмножестве естественных языков с целью получения необходимой выборки. Для этого использовались расслоенные семантические сети, позволяющие выявить основные семантические структуры языка запросов 1CQ платформы «1С: Предприятие 8» и связать их с синтаксисом описания запроса. Данный лингвистический аспект позволяет внести в язык структуры, удобные для обычного пользователя, которые облегчают процесс обработки входного запроса на естественном языке и его перевода в машинный запрос к информационной системе. При этом семантические сети позволяют довольно точно передавать смысловую часть данных. Созданная база знаний языка 1CQ, для которой по имеющимся сведениям о синтаксисе языка построена целая система шаблонов, позволяет также упростить разбор запроса на естественном языке. Все это существенно сокращает и упрощает процесс получения информации, необходимой пользователю, при этом не требуется обладать навыками в области программирования. Информационная система выполнит все действия по преобразованию и предоставлению данных самостоятельно.