Система семантического разбора для естественно-языковых текстов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



видности дескриптора ЛЕ и ИЛЕ

aaпризнак того, что все символы лексемы - малыемамаAaпризнак того, что первый символ лексемы - большойМамаAAпризнак того, что все символы лексемы - большиеМАМА

Теперь опишем дескрипторы, которые появляются на строке в зависимости от контекста, т.е. они вычисляются не только из текущей строки, но и из номера текущей строки и строк, которые находятся выше и ниже вычисляемой. Контекстные дескрипторы описаны в таблице 3.7.

Кроме этого, используются дескрипторы, относящиеся к макросинтаксическому анализу (анализу расположения абзацев, заголовков). В макросинтакксическом анализе абзацы, заголовки и т.д. называются условно предложениями (УП). Макросинтаксические дескрипторы ставятся на конце УП в зависимости от типа УП, они описаны в таблице 3.8.

Таблица 3.7

Контекстные дескрипторы

BEGставится на начале текста (входного файла), т.е. всегда стоит на нулевой строке таблице. Причем, важно сказать, что нулевая строка таблицы используется как служебная ( содержимое первого столбца нулевой строки не входит во входной текст)EOPставится на конце фразы.Концом фразы считается только ";"SENT_ENDконец предложенияNAM?признак того, что лексема, возможно, является частьюимени собственного. Присваивается лексеме, начинающейся с большой буквы и не имеющей перед собой символа конца предложенияBULставится на начале пункта перечисленияПродолжение таблицы 3.7.INDENTставится на начале абзацаEXPR1ставится на начале оборотатипа "во взаимодействии с"EXPR2ставится на конце оборотаFAM1ставится на начале ФИОтипа "Иванов И.И."FAM2ставится на конце ФИОFILE1начало имени файлаc:\test.txtFILE1конец имени файлаABB1начало сокращенияи т.п.ABB2конец сокращениеKEY1начало последовательности обозначений клавишCtrl-FKEY2начало последовательности обозначений клавишEAэлектронный адресwww.aot.ru

sokirko@yandex.ru

Таблица 3.8

Макросинтаксические дескрипторы

CS?ставится на конце УП, тип которого не определенCSставится на конце простого УПHDNGставится на конце заголовкаCS_AUXставится на конце УП, заключенного в скобкиCS_PRNTставится на конце УП, заканчивающегося на двоеточиеDOCставится на нулевой строке графематической таблицы3.1.3Деление на предложения

Этот алгоритм включен в модуль графематики, поскольку на результаты его работы опирается макросинтаксический анализ. На вход алгоритма подаются два числа StartPos и EndPos, которые обозначают первую и последнюю строки входного текста.

Программа ищет конец предложения, а потом после него ищет начало предложения. Алгоритм основывается на постулатах, приведенных далее.

1.Начало текста совпадает с началом первого предложения, конец текста - с концом последнего.

2.Предложение всегда начинается с большой буквы.

.Предложение не бывает больше одного абзаца.

.Предложение не может состоять только из знаков препинания.

Определим вспомогательный примитив IsSentenceEndMark. На вход подается номер строки. На выходе примитив возвращает истину, если эта строка содержит символ "?", "!", "." или многоточие.

Определим вспомогательный примитив IsSentenceEndSeq. На вход подается номер строки. Примитив возвращает истину в двух следующих случаях описанных ниже.

1.Если для этой строки верна функция IsSentenceEndMark и если контактно справа нет закрывающей кавычки (если предложение закавычено, закрывающая кавычка входит в это предложение).

2.Если строка является закрывающей кавычкой, а контактно слева стоит строка, для которой верно IsSentenceEndMark.

Используя эти примитивы, программу поиска предложений можно грубо описать пятью этапами.

1.Пусть i - текущая строка между StartPos и EndPos.

2.Если на строке i стоит помета начала абзаца, тогда нужно пройти назад все пробелы и длинные разделители (PLP) и дойти до конца предыдущего абзаца. Если в конце абзаца (до первого слова) стоит строка, которая удовлетворяет IsSentenceEndSeq, тогда нужно поставить SENT_END этой строке, иначе нужно поставить SENT_END на конец предыдущего абзаца.

.Если на строке i стоит помета макросинтаксическая помета УП, тогда нужно сделать то же самое, что и в пункте 2, только надо учесть, что помета УП ставится на конце абзаца, а не начале (как в пункте 2).

.Если до начала текущего предложений стояла открывающая скобка (кавычка), и текущая строка указывает на слово до соотв. закрывающей скобки(кавычки), тогда нужно поставить SENT_END на закрывающую скобку(кавычку), а i сместить на ближайшее после закрывающей кавычки(скобки) слово.

.Если текущая строка удовлетворяет функции IsSentenceEndSeq и не стоит внутри графематических групп (FIO1-FIO2 и т.д.), тогда проходим все знаки препинания от текущей строки. Проверяем, что знак препинания, который заканчивает предложения, не должен стоять в самом начале строки. Далее ищем первое слово от текущей строки и считаем его началом нового предложения.

.2 Морфологический анализ

Морфологический компонент осуществляет морфоанализ и лемматизацию русских словоформ. Морфоанализ - приписывание словоформам морфологической информации, лемматизация - приведение текстовых форм слов к словарным. При лемматизации для каждого слова входного текста морфологический процессор выдает множество морфологических интерпретаций следующего вида:

-лемма;

-морфологическая часть речи;

-набор общих граммем (которые относятся ко всем словоформам парадигмы слова);

-множество наборов граммем.

Полный перечень русских частей речи описаны в таблице 3.9.

Таблица 3.9

Перечень русских частей речи