ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА
Сер. 10. 2012. Вып. 4
ИНФОРМАТИКА
УДК 681.3.067 А. Е. Журавлев
МЕХАНИЗМ СЕМАНТИЧЕСКОГО АНАЛИЗАТОРА ЗАПРОСОВ К БАЗАМ ДАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ
С постоянно растущим уровнем информатизации общества и накоплением знаний возрастает и сложность систем хранения этой информации. На современном этапе развития многие глобальные хранилища данных уже являются частью распределенных систем управления базами данных. Для управления такими хранилищами применяются различные технологии и специализированные средства доступа. Необходимость формирования распределенной базы данных возникает уже на начальной стадии функционирования таких систем, когда, например, необходим синхронизированный доступ к данным территориально распределенных филиалов одного предприятия. Для реализации хранения, обработки и анализа данных в распределенных средах чаще всего используются различные ERP- и OLAP-системы, которые позволяют визуальными графическими средствами запрашивать данные из хранилища, агрегировать их и визуализировать результаты и т. д. Однако средств, которые предоставляли бы возможность исполнять запросы аналитика, сформулированные на естественном языке (ЕЯ), до сих пор реализовано не было. В полной мере такими средствами нельзя считать и специализированные языки 1CQ (язык запросов платформы 1С: Предприятие), SQL (Structured Query Language), MDX (Multidimensional Expressions) и другие, поскольку они для практического использования требуют достаточно высокой квалификации специалиста. В статье предлагается и иллюстрируется механизм, который позволил бы на подмножестве ЕЯ без специализированных знаний получать требуемую информацию из баз данных и OLAP-хранилищ [1].
Постановку задачи в общем виде можно сформулировать следующим образом: разработать формальный механизм преобразования запроса к данным на подмножестве ЕЯ в язык запросов к базе данных (БД) или хранилищу данных (ХД) и его реализацию. Далее этот запрос должен быть выполнен информационной системой и возвращен результат или сообщение об ошибке с осмысленными пояснениями причин ее возникновения.
Журавлев Антон Евгеньевич — аспирант кафедры вычислительных систем и информатики факультета информационных технологий Санкт-Петербургского государственного университета водных коммуникаций. Научный руководитель: кандидат технических наук, доц. Н. В. Крупенина. Количество опубликованных работ: 7. Научные направления: информационные технологии в образовании, проблемно-ориентированные АИС и СУБД, интеллектуальные интерфейсные технологии. E-mail: [email protected].
© А. Е. Журавлев, 2012
В качестве предметной области выберем оперативный учет успеваемости студентов Санкт-Петербургского государственного университета водных коммуникаций.
Рассмотрим особенности реализации механизма семантического анализатора на примере языка 1CQ. Его выбор обусловлен следующими причинами:
1. Язык запросов 1CQ по синтаксису подобен языку SQL, поэтому не требует глубокой переквалификации программиста. Язык SQL является стандартом для ERP-систем и OLAP-хранилищ, потому что в прочих сферах часто используются ROLAP-системы или Rational OLAP, а многомерные БД пока не так сильно развиты.
2. Запросы на этом языке могут быть записаны с помощью как русского, так и английского алфавита, что имеет немаловажное значение для упрощения механизмов семантического анализа.
3. Язык 1CQ поддерживается динамично развивающейся в России платформой 1С: Предприятие 8, что обеспечивает широкую востребованность разрабатываемого механизма.
4. На языке платформы создается экспериментальная автоматизированная информационная система (АИС), предоставляющая дополнительные возможности по тестированию разрабатываемого механизма семантического анализа.
Рассмотрим алгоритм функционирования предлагаемого механизма семантического анализатора в виде блок-схемы (рис. 1).
Рис. 1. Блок-схема механизма семантического анализатора
Прокомментируем работу алгоритма.
1. При инициализации система анализирует БД или ХД и на основе анализа описания данных, представленного при помощи XML-файла либо встроенного механизма платформы АИС, строит структуру используемых объектов.
2. На основе построенной структуры объектов и их связей формируется проблемно-ориентированное подмножество ЕЯ.
3. Удаленный пользователь или оператор консоли (далее по тексту используется термин «оператор терминала» - ОТ) вводит запрос на ЕЯ на основе заполненных словарей.
4. Используя механизм семантического анализатора выполняется анализ введенного ОТ запроса на ЕЯ и строится соответствующий ему запрос на языке 1CQ.
5. Если АИС не поддерживает язык запросов 1CQ, то запрос конвертируется в стандарт языка SQL (переводится на английский язык, корректируется синтаксис и т. п.)
6. Имея в распоряжении код на языках запросов 1CQ или SQL - машинный запрос, платформа АИС выполняет его и выдает результат ОТ.
В соответствии с описанным алгоритмом работы механизма семантического анализатора на запрос на ЕЯ, «какой средний балл студентов группы ГТ-21?», АИС производит лексический (рис. 2), синтаксический (рис. 3), семантический анализы (рис. 4) и строит ^Q-запрос вида
ВЫБРАТЬ
КЗЭСрезПоследних.Студент КАК Студент, СРЕДНЕЕ(КЗЭСрезПоследних.Оценка) КАК Оценка ИЗ
РегистрСведений.КЗЭ.СрезПоследних КАК
КЗЭСрезПоследних
ГДЕ
КЗЭСрезПоследних.Группа = "ГТ-21" СГРУППИРОВАТЬ ПО КЗЭСрезПоследних.Студент
'$ АНАЛИЗАТОР _„ □ X
Действия т ?
Запрос на ЕЯ |Лексика | Синтаксис ; Семантика Запрос на 1С Параметры
| Но.., | Лексема Часть Речи Характеристика
Какой Местоимение Разряд местоимения: вопросительное; Падеж: именит
2 Средний Прилагательное Род: мужской; Число: единственное; Падеж: именител!
3 шшшшшш Существительное Одушевленность: неодушевленный; Род: мужской; Чис
4 Группы Существительное Одушевленность: одушевленный; Род: мужской; Число
5 Существительное Одушевленность: одушевленный; Род: женский; Число
< >
1« Назад | | Дзиее а\
Сформировать Закрыть
Рис. 2. Форма лексического анализатора
Вся совокупность запросов на ЕЯ ограничена двумя классами предложений: простые вопросительные предложения («какой... ?») и побудительные предложения («показать. ..»). Таким образом, эти ограничения можно использовать для упрощения механизмов разбора предложения на каждом из этапов.
Сформировать Закрыть
Рис. 3. Форма синтаксического анализатора
Синтаксический анализатор осуществляет контроль целостности и корректности введенного запроса на ЕЯ. Дерево, полученное в результате синтаксического анализа (в случае положительного заключения о правильности введенного запроса) применяется как источник данных для следующего этапа анализа.
Семантический разбор предложения - это механизм интеллектуального сопоставления результатов предыдущих этапов анализа, представленных в сформированных словарях со справочниками АИС. Таким образом, семантический анализатор является полноценной системой анализа текста, опирающейся на оригинальную функциональную теорию языка.
Рассмотренный пример иллюстрирует процесс преобразования запроса пользователя на ЕЯ в запрос на языке 1CQ. При этом надо последовательно выполнить этапы лексического, синтаксического, семантического анализов и генерации запроса на языке 1CQ.
Следует отметить, что предлагаемый подход к построению семантического анализатора использует идеи В. А. Тузова и, развивая их, предлагает адаптацию, в основе
АНАЛИЗАТОР
Действия 1
Запрос на £Я1 Лексика Синтаксис | Семантика | Запрос на 1С Параметры
|Но.,.|Триада Функция
т Пре дложение{По длежащее. Ск... <ВнутренняяКонструкция> <Выбрать>$<Источник>
2 Подлежащее [Существительно... =: Внутренняя Конструкция > ГДЕ$сГде>
3 Сказуемое{Глагол, Прямое До... сВнутренняя Конструкция > В Ы БРАТЬШЗ$<Из >
4 Существительное (Существите... S11D1 Б(! Род\! Дат, !за Вин, !по Дат) И 35=: Источник >5КЗЭ .Оцен 1
5 Определение{ОДестоимение, П... ^Внутренняя Конструкция > ГДЕ$<Где >Ш 3$<Из>
6 Глагол [Глагол, БЫЛ) Copul [! Им, !Тв\! Крат) ИЗ$=:Из>
7 Прямое Дрполнение{Существи... <Параметр> ГДЕ <Источник> *
В Местоимение [Местоимение, К... 512/D152[Н E4T0S1 ^ !%1. Юто.! Д... ВЫБРАТЬ
э При лагате льное{При лагате льн... Caus_a 1 (Н E4TOS1 П%.1 JncepFu... СРЕДИ ЕЦ<Опреранд?>)
1D Существительное (ГРУППЫ, П... S124112D4(! Po д\! Из} ГДЕ =: Источник > *
11 Параметр 1 (Параметр 1. ДАТА) $1е021!Род) ГДЕ <Источник>.Дата = <С
12 Параметр2[Параметр2, ГТ-21) i Параметр > ГДЕ ^Источник>.Группа = =
Назад | Даше Q]
Сформировать Закрыть
Рис. 4- Форма синтаксического анализатора
которой лежит применение семантического словаря, формируемого в автоматическом, полуавтоматическом и ручном режимах и пополняемого по мере необходимости. Запрос на ЕЯ в итоге представляется в виде суперпозиции семантических функций, исходя из того, что адекватная грамматика приписывает каждому предложению структурное описание в виде суперпозиции функций [2, 3].
Рассмотрев популярные подходы к реализации механизмов семантического анализа конструкций на естественном (русском) языке, остановимся на модели И. А. Мельчука «смысл-текст» [4], суть которой позволяет согласиться с утверждением В. А. Тузо-ва, что «абсолютно правильная лингвистическая интуиция И. А. Мельчука находилась в явном противоречии с используемым им формальным аппаратом. Для того, чтобы снять это противоречие, необходимо было, прежде всего, создать адекватную математическую модель русского языка... » [2, с. 3].
В отличие от многих разработчиков семантических анализаторов [2], работы которых в области лингвистики ЕЯ, включая сюда и русский язык, основаны на построении полных семантических словарей, в предлагаемом подходе достаточно построить ограниченный семантический словарь в силу того, что термины и объекты предметной области ограничены проблемно-ориентированным подмножеством ЕЯ. Эти термины и объекты предметной области загружаются из метаданных БД (ХД) или осознанно генерируются ОТ.
За синтаксическую и морфологическую обработку запросов на ЕЯ отвечают соответствующие модули лингвистического процессора, идеи функционирования которых частично позаимствованы у И. А. Волковой [5] и адаптированы для работы с объектами заданной предметной области.
Нетривиальной представляется задача семантического разбора запросов на ЕЯ с выборкой данных из таблиц со сложными связями (один-ко-многим, многие-ко-многим).
Рассмотрим несколько примеров работы семантического анализатора. Пусть ОТ АИС обратился с запросом:
выбрать всех студентов
В соответствии с алгоритмом функционирования анализатора, при котором игнорируется лексема «всех», получаем синтаксическое дерево (рис. 5). Для выбранной предметной области часто корневой вершиной дерева будет являться семантическая единица, указывающая на то, что требуется что-либо выбрать (отобрать, отобразить, вывести, показать и т. п.).
Рис. 5. Результат работы анализатора
' Справочник Словарь основной _ □ X !
! Действия - - -Ь ^ ^ 1Й 0 ?
Код Нзшиинямлйяамий 1 10И1*№| - lUDOTWIC
- 1 Выбрать
- 4 Справочник Группы. Наименование КАК Группа
- 5 Справочник Дисциплины. Наименование КАК Дисциплина
- е Справочник Кафедры. Наименование КАК Кафедра
3 СправочникППС.Наименование КАК ППС
- 2 СправочникСгуценты. Наименование КАК Студент М
Рис. 6. Основной семантический словарь
Семантическая единица «выбрать» описана в семантическом словаре (рис. 6). В результате определяются действия для вершин потомков. В примере рассматриваемого запроса присутствует лексема «студентов» (рис. 7), которой соответствует одна вершина построенного синтаксического дерева. Выделяем грамматическую основу этой лексемы - «студент».
Первый проход синтаксического анализатора осуществляет поиск указанной грамматической основы «студент» в названиях таблиц и их полей в БД (ХД). В результате поиска будет найдена таблица студентов. Пусть реляция «Студент» состоит из следующих полей: код, наименование и курс.
Так как больше никаких вершин в синтаксическом дереве нет и никакие особые условия выборки в запросе не были указаны, то синтаксический анализатор транслирует запрос на ЕЯ в язык 1CQ:
Рис. 7. Лексема «студент»
ВЫБРАТЬ Студенты.Код, Студенты.Наименование, ИЗ
Справочник.Студенты КАК Студенты
Рассмотрим чуть более сложный запрос пользователя:
показать всех студентов пятого курса
Система, как и в рассмотренном выше примере запроса, удаляет избыточную информацию из запроса, а именно, лексему «всех». При этом получается последовательное синтаксическое дерево (рис. 8). В таком случае до вершины «студенты» система повторяет действия из предыдущего примера. Но теперь у данной вершины есть дочерние вершины, которые характеризуют уточнение запроса, а именно, фильтрацию запрашиваемых данных по курсу.
Система заменяет лексему «курса» на следующую:
Студенты.Курс = 5
Таким образом, считается, что пользователь хочет видеть студентов V курса - именно этого года обучения, а не, например, прошлого. Параметр вычисляется из дочерних
ПОКАЗАТЬ
СТУДЕНТОВ i
КУРСА +
ПЯТОГО
Рис. 8. Усложненное синтаксическое дерево
узлов корня. Соответственно получаем значение «5», проанализировав «курса», как безразмерный показатель. В результате система выдает запрос:
ВЫБРАТЬ
Студенты.Наименование ИЗ
Справочник.Студенты КАК Студенты ГДЕ
Студенты.Курс = 5
Но это тоже относительно простой запрос. Попробуем разобрать механизм работы анализатора в более сложном случае с неоднозначной связью таблиц. Имеем структуру данных следующего типа: факультет университета. Есть документы, сопровождающие учебный процесс (приказы на зачисление, отчисление, перевод на курс и т. п.), которые отражаются в регистре сведений (таблице) «Студенты» и детальной информацией об аттестации (таблица «КЗЭ», что является сокращением от «КурсовикЗачетЭкзамен») со связью один-ко-многим соответственно. В аттестационной информации есть ссылка на студента и дисциплину, которая ссылается на запись в таблице дисциплин (справочник «Дисциплины»). Заголовочная часть документа-приказа содержит ссылку на факультет (справочник «Факультеты»). В целом данная упрощенная структура означает абстракцию паттерна ведения учета документооборота в учебном подразделении вуза.
Рассмотрим механизм работы системы при запросе к совокупности взаимосвязанных таблиц. На ЕЯ пользователь вводит следующий запрос:
показать студентов пятого курса и их средние оценки за осенний семестр 2010 года
После предварительной обработки запроса системой получаем синтаксическое дерево, представленное на рис. 9.
Для анализа запроса на ЕЯ и генерации текста запроса на языке 1CQ система составляет временный список объектов основного глагола действия запроса (лексема «показать»). В данном случае это лексемы «студентов» и «оценки». Далее перебираются все таблицы в поисках одновременного вхождения объектов «оценка» и «студент». Каждый из внешних ключей в таблицах подвергается особой обработке анализатора. Последний раскрывает поиск сущности, пробегая по описанию таблицы, на которую эти внешние ключи ссылаются. Например, в таблице КЗЭ нет студентов как таковых, но, так как это внешний ключ к таблице студентов, то его обнаружит анализатор, результатом чего явится выбор полей и записей, удовлетворяющих запросу. Более того, перебрав
Рис. 9. Сложное синтаксическое дерево
все таблицы, система установит, что такой вариант является единственно возможным, и не будет применять дополнительную семантическую обработку результата. Затем анализатор объединяет лексемы «средние» и «оценки» на «средние оценки» в связи с совпадением семантики подчинения данного набора лексем со словарной семантикой сущности. Завершающим этапом работы анализатора является добавление условия выборки «за осенний семестр 2010 года». Здесь проблема не возникает, поскольку система просто заменяет фразу следующей группой условий:
ГДЕ
КЗЭ.Семестр = Перечисления.Семестр.Осенний И Студенты.Год = 2010
Сложность для дальнейшего анализа представляет определение того, к чему собственно указанная дата относится. Так как в синтаксическом дереве дата относится к оценкам, а в реляции «КЗЭ» поля даты нет, то система начинает просматривать связанные таблицы, имеющие ключевое поле типа «Дата». В результате, поднимаясь по иерархическому дереву подчиненности таблиц, выявляется связь с реляцией «Студенты», в которой есть дата. Именно с этой датой начинает работать система, так как дальнейший анализ больше никаких дат не выявил. Однако до конца проблема связи таблиц при построении запросов еще не решена. При соединении таблиц «Факультеты» и «КЗЭ» данные реляции соединяются при помощи полей «КЗЭ.Факультет» и «Фа-культеты.Код», которые были определены при поиске таблиц.
Для вычисления среднего значения поля «КЗЭ.Оценка» воспользуемся агрегирующей функцией СРЕДНЕЕ. В результате система сформирует следующий запрос:
ВЫБРАТЬ
СтудентыСрезПоследних.Студент КАК Студент, СРЕДНЕЕ(КЗЭСрезПоследних.Оценка) КАК Оценка ИЗ
РегистрСведений.КЗЭ.СрезПоследних КАК КЗЭСрезПоследних,
РегистрСведений.Студенты.СрезПоследних КАК
СтудентыСрезПоследних
ГДЕ
КЗЭСрезПоследних.Семестр = Перечисления.Семестр.Осенний И КЗЭСрезПоследних.Год = 2010
И СтудентыСрезПоследних.Курс = 5 СГРУППИРОВАТЬ ПО СтудентыСрезПоследних.Студент
Ввиду отсутствия дополнительных условий и альтернативных вариантов запроса сформированный текст запроса на языке 1Q является окончательным и отправляется на исполнение СУБД.
Если целевая платформа механизма отлична от 1С: Предприятие 8, то существует возможность преобразования запроса на языке 1CQ в запрос SQL. В этом случае аналогом последнему запросу, т. е. результатом его конвертирования, станет следующий запрос на языке SQL:
SELECT
TableStudent.StudentName AS Student, AVG(TableRating.Rating) AS Rating FROM
TableStudent,
TableRating
WHERE
TableRating.Term = "A" AND TableRating.Year = 2010 AND TableStudent.Course = 5 GROUP BY
TableStudent.StudentName
В заключение следует отметить, что в рамках поставленной задачи разработаны механизмы семантического анализа предложений на ЕЯ, результаты которого позволяют реализовать интеллектуальный доступ к реляционным данным в рамках АИС «ВУЗ».
Литература
1. Дейт К. Дж. Введение в системы баз данных. 7-е изд. / пер. с англ. В. С. Минаева, И. А. Мас-лаковской. М.: Вильямс, 2001. 1072 с. (Date C. J. An Introduction to Database Systems).
2. Тузов В. А. Компьютерная семантика русского языка. СПб.: Изд-во С.-Петерб. ун-та, 2003. 392 с.
3. Хомский Н. А. Аспекты теории синтаксиса / пер. с англ.; под ред. В. А. Звегинцева. М.: Изд-во Моск. ун-та, 1972. 259 с. (Chomsky A. N. Aspects of the Theory of Syntax).
4. Мельчук И. А. Опыт теории лингвистических моделей «смысл-текст». М.: Школа «Языки русской культуры», 1999. 346 с.
5. Волкова И. А. Введение в компьютерную лингвистику. Практические аспекты создания лингвистических процессоров. М.: Изд-во Моск. ун-та, 2006. 43 с.
Статья рекомендована к печати проф. Л. А. Петросяном. Статья принята к печати 21 июня 2012 г.