УДК 681.3.07
В.В.МАРАСАНОВ, ИИ. БОРОХОВИЧ, И.А.КОСЕНКО
Херсонский национальный технический университет
ИССЛЕДОВАНИЕ МЕТОДОВ СИНТЕЗА ЛИНГВИСТИЧЕСКОГО
АНАЛИЗАТОРА
Рассмотрены структура и функции лингвистического анализатора, методы синтаксического анализа текста при помощи DCG-грамматик языка Пролог. Составлен алгоритм программы, осуществляющей проверку корректности предложений текса с точки зрения грамматики. Разработана программа, осуществляющая анализ простых распространённых предложений русского языка и построение их синтаксической структуры на основе контекстно-свободных грамматик.
Ключевые слова: анализ, синтез, алгоритм, синтаксис, семантика, естественно-языковой, контекстно-свободный, лингвистический процессор.
В.В.МАРАСАНОВ, I.I. БОРОХОВИЧ, 1.О.КОСЕНКО
Херсонський нацюнальний техшчний ушверситет
ДОСЛ1ДЖЕННЯ МЕТОД1В СИНТЕЗУ Л1НГВ1С ТИЧНОГО АНАЛ1ЗАТОРА
Розглянуто структуру i функци лiнгвiстичного аналiзатора, методи синтаксичного аналiзу тексту за допомогою DCG-граматик мови Пролог. Складено алгоритм програми, що здшснюе перевiрку коректностi пропозицш текса з точки зору граматики. Розроблена програма, що здшснюе аналiз простих поширенихречень росшсько! мови та побудова 1х синтаксичноi структури на основi контекстно-выьних граматик.
Ключовi слова: аналiз, синтез, алгоритм, синтаксис, семантика, природно-мовний, контекстно-выьний, лiнгвiстичний процесор.
V.V.MARASANOV, I.I. BOROHOVYCH, I.A.KOSENKO
Kherson National Technical University
RESEARCHING OF METHODS OF SYNTHESIS OF THE LINGUISTIC ANALYZER
The structure and function of linguistic analyzer, text-parsing methods with DCG-Prolog grammars are observed. An algorithm of the program, which check the correctness of the proposed text in terms of grammar is composed. The program that carrying out an analysis of simple common proposals of the Russian language and the construction of their syntactic structure based on context-free grammars is developed.
Keywords: analysis, synthesis, algorithms, syntax, semantics, natural language, context-free, linguistic processor
Постановка проблемы
В конце 60-х годов в исследованиях по искусственному интеллекту сформировалось самостоятельное направление, получившее название «обработка естественного языка», задачей которого является исследование методов и разработка систем, обеспечивающих реализацию процесса общения с компьютерными системами на естественном языке. Задачи автоматической обработки текстов возникли практически сразу после появления вычислительной техники. Так, развитие хранилищ данных делает актуальными задачи поиска и извлечения информации, формирования корректно построенных текстовых документов, создания средств полнотекстового поиска, автоматической классификации и реферирования текстов, автоматизированного машинного перевода. Таким образом, область применения систем анализа естественно-языковых (ЕЯ) текстов достаточно разнообразна, а в виду большого роста объемов текстовой информации и сложной структурированности ЕЯ-текстов, анализ текстов представляет собой очень актуальную проблему. [1]
Анализ последних исследований и публикаций
Лингвистический анализатор - это набор программных средств, предназначенных для целевого (структурного, смыслового и т.д.) анализа текстов на естественном языке.
Лингвистический процессор представляет собой преобразователь, состоящий из трёх уровней представления текста - морфологический, синтаксический и семантический. Каждый из уровней обслуживается соответствующим компонентом модели - массивом правил и определенным словарем. На каждом из уровней предложение имеет формальный образ, именуемый в дальнейшем его структурой -морфологической (МорфС), синтаксической (СинтС) и семантической (СемС). Синтез представляет собой обратный переход от СемС предложения к его записи в обычном орфографическом виде.
Под морфологической структурой (МорфС) понимается последовательность входящих в анализируемое предложение слов с указанием части речи и морфологических характеристик (падежа, числа, рода, одушевленности, вида).
Под синтаксической структурой (СинтС) понимается дерево зависимостей, в узлах которого стоят слова данного естественного языка с указанием части речи и грамматических характеристик, а дуги соответствуют специфичным для данного естественного языка отношениям синтаксического подчинения.
Под семантической структурой (СемС) понимается дерево зависимостей, в узлах которого стоят либо предметные имена, либо слова универсального семантического языка, а дуги соответствуют универсальным отношениям семантического подчинения, таким, как аргументное, атрибутивное, конъюнкция, дизъюнкция, равенство, неравенство, больше, меньше, принадлежит и т.п. Существенным компонентом является информация о кореферентности узлов, то есть в каких случаях речь идет об одном и том же объекте, а в каких - о разных.
Лингвистический процессор при анализе должен обеспечивать выполнение следующих преобразований [1,2,3]:
предложение на ЕЯ МорфС СинтС СемС (1)
При синтезе:
СемС СинтС МорфС предложение на ЕЯ (2)
Функциями анализатора являются:
■ распознавание правильно построенных предложений ЕЯ;
■ фиксация, локализация и возможность исправления ошибок в ЕЯ-тексте;
■ декомпозиция предложения на составляющие (фрагменты) и построение соответствующей синтаксической структуры предложения;
■ семантическая интерпретация фрагментов ЕЯ-предложения во фрагменты машинного языка;
■ композиция фрагментов машинного языка в структуру, описывающую ситуацию проблемной среды. [1]
Формулирование цели исследования
Грамматика языка — это множество правил, позволяющих определить, какие последовательности слов приемлемы в качестве предложений этого языка. Она определяет, как из слов образуются словосочетания и какие последовательности этих словосочетаний допустимы.
Очень простой класс грамматик составляют так называемые контекстно-свободные (КС) грамматики.
Имея грамматику языка, можно построить деревья разбора для предложений этого языка, чтобы показать их структуру. Задача построения дерева разбора предложения по заданной грамматике называется задачей синтаксического разбора (анализа). [4]
Подобные программы синтаксического анализа достаточно легко могут быть написаны на языке логического программирования Prolog (сокр. от французского PROgrammation en LOGique). Задача синтаксического анализа может быть решена с помощью языка Рго1оg особенно изящно благодаря использованию специальной системы обозначений правил грамматики, называемой DCG (Definite Clause Grammar — грамматика определенных предложений). Любая грамматика, оформленная с помощью системы DCG, может непосредственно использоваться в качестве программы синтаксического анализа фраз, сформированных с помощью этой грамматики.
Процесс распознавания (анализа) фраз, по сути, является обратным по отношению к процессу их формирования. Распознавание начинается с заданной строки символов, к которой применяются грамматические правила в направлении, противоположном формированию: если текущая строка содержит подстроку, равную правой части некоторого правила грамматики, то эта подстрока заменяется левой частью такого правила. Процесс распознавания завершается успешно после того, как вся заданная фраза приводится к начальному нетерминальному символу грамматики. (В данном случае, нетерминальным символом является терм «предложение», а синтаксическим разбором называется процесс полного покрытия правилом грамматики всех слов предложения). Если способ приведения заданной фразы к начальному нетерминальному символу не обнаружен, механизм распознавания отбрасывает эту фразу. [5]
Изложение основного материала исследования
Ряд задач обработки ЕЯ требует анализа лексико-синтаксической структуры введенного предложения. Анализ заключается в выделении подлежащего, сказуемого, дополнений, определений, обстоятельств и порядка следования членов предложения. Если выясняется, что структура предложения
корректна, значения составляющих предложение слов могут послужить программе сигналом предпринять определенные действия.
Анализ предложения включает два этапа: лексический и синтаксический. На этапе лексического анализа определяется принадлежность слов предложения занесенному в память словарю. На этапе синтаксического анализа строится модель предложения в соответствии с описанной посредством КС-грамматики синтаксической структуры фраз рассматриваемого ЕЯ. [6]
Для программы синтаксического анализа текста, осуществляющей проверку корректности предложений текста с точки зрения грамматики, составлен следующий алгоритм (рис.1). [7]
Для реализации программы синтаксического анализа предложений русского языка в средах DOS и Windows использованы языки Turbo Prolog и Visual Prolog соответственно. Изначально программа разрабатывалась как DOS-приложение, затем на ее основе написана идентичная программа с более наглядным и удобным оконным интерфейсом под Windows.
DOS - версия синтаксического анализатора имеет простой и понятный однооконный интерфейс. Главное меню программы представлено на рис.2. Здесь пользователю предлагается 2 варианта действий (при нажатии клавиши с соответствующей цифрой):
1) непосредственно ввод предложения на русском языке и построение его синтаксической модели.
2) выход из программы.
D:\CFG_AN~1.EXE 1—1 [н] ■еаш
Синтаксический анапиз Фраз русского языка с применением КС-грамматики 1 - ввод и построение модели предложения. 2 - выход из программы.
Рис.2. Меню программы синтаксического анализа в среде DOS
На рис.3 показано главное окно Windows-версии программы синтаксического анализа. Для ввода фразы нужно нажать кнопку «Синтаксический анализ» главного меню.
0 1НЁЫ 1
Ля, Синтаксический анализ фраз русского языка i=i
Синтаксическим анализ О программе Выход шниоот
|о|я|н| МЕЗ| №|Я| |?|
îi, Messages s S ||i ES -1
1
< H h
1 1
1 -J
Рис.3. Интерфейс программы синтаксического анализа в среде Windows
Структура программы представлена на рис.4. В ее основу положен принцип работы с резидентной базой данных (в данном случае - работа базой слов русского языка). В динамически подгружаемой базе-словаре содержатся слова из исследуемой тематики, с указанием принадлежности их к той или иной части речи.
Предикат do_cfg является главным правилом (модулем) программы (а также ее целевым утверждением). Он вызывает предварительную загрузку динамической базы данных (БД) слов (словаря), затем передает управление модулю Меню, который осуществляет интерфейс с пользователем.
Модуль Меню, в свою очередь, позволяет пользователю выбрать между двумя модулями:
■ process(1) для ввода фразы русского языка, последующего ее анализа и вывода результата на экран;
■ process(2) для удаления данных из динамической БД и выхода из системы.
Модуль ввода, построен. модели предлож.
Интерфейс с пользователем
assert database
Process(l)
toklist
do_cfg
Меню Синтакс. анализ рус. яз.
с использ. КС-
analyze_it
ч г
/ Ввод фразы / readln(Line)
на рус. яз.
analyze_sentence
sentex
Process(2)
clear_database, exit
- Модуль выхода из программы
Очистка БД,
- Выход
print_list
Рис.4. Структурная схема резидентной БД
Процесс анализа начинается с ввода предложения. Программа считывает введенную с клавиатуры (или буфера обмена) текстовую строку. Затем анализируемое предложение проходит следующие этапы (модули) обработки:
■ йк^ - построение списка слов с проверкой наличия их в словаре,
■ 8еп1ех - построение модели предложения,
■ - вывод синтаксической структуры предложения, либо сообщения об ошибке.
Модуль toklist представляет собой своеобразный конвейер, состоящий из нескольких обработчиков
(рис.5):
■ токенизации;
■ символьной фильтрации;
■ фильтрации полученных токенов. [8]
Рис.5. Конвейер токенизатора
На начальном этапе анализа возможен перевод текста в нижний регистр и применение других фильтров. Полученный результат передается токенизатору. Здесь предложение очищается от знаков препинания, разбивается на отдельные слова - токены. Затем выполняется сопоставление слов с имеющимся словарем. Если введенное слово отсутствует в словаре, будет выдано соответствующее предупреждение. В случае успешной проверки (все слова найдены в базе) выдается сообщение со списком обнаруженных слов.
Модуль sentex выполняет построение модели предложения. Структура анализируемого предложения наглядно отображена в доменной схеме (рис.6):
Рис.6. Доменная схема программы синтаксического анализа на языке Пролог.
Последовательность разбора простых распространенных предложений русского языка отображена в предикатной схеме (рис.7):
Рис.7. Предикатная схема построения модели предложения
Разработанная программа осуществляет:
■ анализ простых распространенных предложений русского языка (с возможным наличием однородных подлежащих и определений)
■ построение синтаксической структуры предложений на основе контекстно-свободных грамматик.
К числу задач, для решения которых может быть задействована данная программа можно отнести: машинный перевод, установление семантической эквивалентности высказывания. Планируемая сфера применения - анализ технических текстов.
В основе данного анализатора применен метод, основная идея которого заключается в создании набора правил, которые определяют, как проставлять связи в предложении. Встроенные средства декларативного языка Пролог позволяют быстро и компактно описывать подобные правила и вложенные предикатные структуры.
Разработанный интерфейс очень прост и удобен в использовании, несложная навигация позволяет быстро и продуктивно применять систему любому пользователю.
Недостатки:
1. Данный подход довольно ресурсоемок, т.к. для разбора множества предложений русского языка требуется огромное множество правил, описывающих их структуру.
2. При разборе предложений с помощью грамматики составляющих, возможна проблема в снятии неоднозначностей, т.к. одному и тому же предложению могут соответствовать несколько синтаксических деревьев.
Для дальнейшего усовершенствования программы предлагается:
1. Расширение имеющейся словарной базы. Загрузка его из внешнего файла или БД.
2. Написание модуля, позволяющего добавлять новые слова в словарь в полуавтоматическом режиме (с указанием их грамматической категории).
3. Расширение базы правил (синтаксических структур или деревьев) для анализа.
4. Подключение модуля морфологического анализа даст возможность более корректно анализировать связность слов в предложении, позволит помимо правил применить «антиправила», которые указывают, когда не нужно проставлять связи (например, если у существительного и глагола различаются род или число, то между ними нет связи). Однако это приведет к усложнению как самих правил, так и словаря.
Синтаксические группы, лежащие в основе этих шаблонов, описаны правилами той же грамматики (непосредственно-составляющих), что и основной анализатор. Это обстоятельство позволит использовать их (шаблоны) без дополнительных преобразований.
Анализ текстов с применением указанных шаблонов дает возможность эффективно использовать их для описания терминологии технических текстов, извлечения дискурсивной структуры текста (его поверхностного понимания), а также в качестве инструмента создания баз знаний интеллектуальных систем и организации данных.
Выводы
Рассмотрено свойство проективности как основа грамматической правильности построенных подструктур в предложении. Обоснованы методы синтаксического анализа текста с помощью DCG-грамматик языка Пролог (как формальной системы описания естественного языка).
Для программы синтаксического анализа текста составлен алгоритм, осуществляющий проверку корректности предложений текста с точки зрения грамматики. Разработана программа, осуществляющая анализ простых распространенных предложений русского языка (с возможным наличием однородных подлежащих и определений) и построение их синтаксической структуры на основе контекстно-свободных грамматик.
Список использованной литературы
1. Евдокимова И.С. Естественно-языковые системы: курс лекций. / И.С. Евдокимова. - Улан-Удэ:
Изд-во ВСГТУ, 2006. - 92 с.
2. Мельчук И.А. - Опыт теории лингвистических моделей ''Смысл-Текст''. / И.А. Мельчук. - М.: Наука,
1999 - 346 с.
3. Апресян Ю.Д. и др. Лингвистический процессор для сложных информационных систем. / Ю.Д.
Апресян, И.М. Богуславский, Л.Л. Иомдин. - М.: Наука, 1992. - 256 с.
4. Клоксин У., Меллиш К. Программирование на языке Пролог. / У. Клоксин, К. Меллиш. -
Кембридж, 1984. - 334 с.
5. Братко И. Алгоритмы искусственного интеллекта на языке Prolog. 3-е издание. / И. Братко. - М.:
Издательский дом "Вильяме", 2004. - 640 с.
6. Логическое программирование (практикум, Д.В.Михайлов). - [Электронный ресурс]:- Режим
доступа:
http://www.machinelearning.ru/wiki/index.php?title=Логическое_программирование_(практикум,_Д.В. Михайлов)
7. Борохович И.И. Марасанов В.В. Исследование методов лингвистического анализа (на примере синтаксического анализа текста). В трудах III Всеукраинской студенческой научно-практической конференции по автоматическому управлению ХНТУ ТК - 2015 посвящённой дню космонавтики. -Херсон: ХНТУ, 2015. - с.25-34.
8. Чумак Д. Нерезиновый поиск. Хакер, 2015, №196, с.132 - 137.