Разработка алгоритма работы синтаксического анализатора текста, а также базы данных синтаксических правил русского языка
Курсовой проект - Иностранные языки
Другие курсовые по предмету Иностранные языки
187;, здесь ПРД1 будет стоять на Мама, а не на открывающей кавычке.
На самом деле, все дальнейшие анализаторы (постморфология, синтаксис) используют в своей работе только помету ПРД2, что означает, что текст разбивается полностью, все строки оказываются охваченными. Помета ПРД1 нужна лишь только для нужд графематики.
Определим вспомогательный примитив IsSentenceEndMark. На вход подается номер строки. Функция возвращает истину, если эта строка содержит символ?, "!,. или многоточие
Определим вспомогательный примитив IsSentenceEndSeq. На вход подается номер строки. Функция возвращает истину в двух следующих случаях:
1.Если для этой строки верна функция IsSentenceEndMark; и контактно справа нет закрывающей кавычки (если предложение закавычено, закрывающая кавычка входит в это предложение);
2.Если строка является закрывающей кавычкой, а контактно слева стоит строка, для которой верно IsSentenceEndMark.
Программа делает следующее:
1.Проходит все знаки препинания в начале текста и ставит первому слову помету ПРД1.
2.Пусть i - текущая строка между StartPos и EndPos.
.Если на строке i стоит помета начала абзаца, тогда нужно пройти назад все пробелы и длинные разделители (ДЗПР) и дойти до конца предыдущего абзаца. Если в конце абзаца (до первого слова) стоит строка, которая удовлетворяет IsSentenceEndSeq, тогда нужно поставить ПРД2 этой строке, иначе нужно поставить ПРД2 на конец предыдущего абзаца.
.Если на строке i стоит макросинтаксическая помета УП, тогда нужно сделать то же самое, что и в пункте 3, только надо учесть, что помета УП ставится на конце абзаца, а не начале (как в пункте 3).
.Если до начала текущего предложений стояла открывающая скобка, и текущая строка указывает на слово до соотв. закрывающей скобки, тогда нужно поставить ПРД2 на закрывающую скобку, а текущую строку сместить на ближайшее после закрывающей скобки слово.
.Если текущая строка удовлетворяет функции IsSentenceEndSeq и не входит в графематические группы (ФИ1-ФИ2, ДТ1-ДТ2 и т.д.) не последним словом, тогда проходим все знаки препинания от текущей строки. Проверяем, что знак препинания, который заканчивает предложения, не должен стоять в самом начале строки. Далее ищем первое слово от текущей строки и считаем его началом нового предложения.
Этот алгоритм работает избыточно, это означает, что он иногда ставит пометы ПРД2 и ПРД1 по многу раз на одной строке. Например, в конце абзаца ПРД2 может быть поставлена по пп 3. 4. и 6.
2.3Фрагментационный анализ
2.3.1Общие положения
Цель анализа
Задача фрагментационного анализа состоит в выделении в предложении синтаксических единств (фрагментов) больших или равных словосочетанию (синтаксической группе) и в установлении иерархии на множестве этих единств, не используя информации о модели управления. Иерархия отражает тот факт, что в предложении некоторые фрагменты синтаксически зависимы от других.
Мотивировка
Важная особенность фрагментов заключается в том, что их границы не пересекают синтаксические связи, соединяющие отдельные слова или словосочетания. Таким образом, при успешной работе фрагментационного анализа перед синтаксическим исключается возможность построения большого числа неправильных синтаксических связей, которые допускаются морфологией и синтаксисом.
2.3.2Объекты анализа
Входные данные
На вход фрагментационного анализа поступает текст, разбитый на предложения. Каждое предложение разбито на слова и знаки препинания. Каждому слову приписана морфологическая информация (все возможные пары , которым удовлетворяет слово. Подробнее смотри 3.4). При некоторых словах имеются графематические пометы пометы: начало / конец числового, букво-числового комплекса. Подробнее в 3.2.
Выходные данные
На выходе - текст, состоящий из предложений, разбитых на линейно неразрывные фрагменты. На фрагментах установлена иерархия, т.е. про каждый фрагмент известно, какие фрагменты в него непосредственно вложены и в какие он непосредственно вложен. Каждому фрагменту приписано множество типов и список союзов и союзных слов, входящих в фрагмент.
Структура фрагмента
Структура фрагмента устроена следующим образом:
Тип фрагмента
Глагол в личной форме, Краткое причастие, Краткое прилагательное, Предикативное слово, Причастие, Деепричастие, Инфинитив, Вводное слово, Пустыха.
Левая граница, Правая граница
Знаки препинания, стоящие слева и справа от фрагмента, и сочинительные союзы без знака препинания.
Союз
Неподчинительный союз, Подчинительный союз.
Все слова, стоящие в начале фрагмента, которые могут быть союзом, союзным словом или другой скрепой. При каждом таком союзе указывается, подчинительный он или нет.
Который, Чей
Наличие в фрагменте лексемы чей, какой или который.
2.3.3Алгоритм работы анализа
Правила в фрагментационном анализе
В фрагментационном анализе можно выделить три группы правил:
1.Правила, уничтожающие некоторые омонимы. В отличие от постморфологических они рассматривают не только ближайшее окружение слова, но весь фрагмент или все предложение.
2.Правила, устанавливающие иерархию. Это правила, которые включают данный фрагмент в непосредственно соседний.
.Правила, которые объединяют два дистантно расположенных фрагмента или группу контактных (непосредственных соседей). При этом все объединявшиеся ф