Научная статья на тему 'Результаты машинного эксперимента в целях автоматизированной генерации правил фрагментарного анализа'

Результаты машинного эксперимента в целях автоматизированной генерации правил фрагментарного анализа Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
63
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Результаты машинного эксперимента в целях автоматизированной генерации правил фрагментарного анализа»

Результаты машинного эксперимента в целях автоматизированной генерации правил фрагментарного анализа

А.В. Востриков, А.М. Ермолаев, Э.С. Клышинский, С.Н. Морозов, А.В. Пационов Московский государственный институт электроники и математики, каф. ИТАС

На данный момент системы автоматической обработки текстов (АОТ) являются быстро развивающейся отраслью науки, которой присуща повышенная сложность. Классический подход решения задач АОТ обладает экспоненциальным ростом вычислительных затрат. Кроме того, создание систем правил для АОТ сопоставимо со сложностью создания программного обеспечения для таких систем. Количество правил в реальных задачах таково, что в них также легко запутаться как в многочисленном и объемном программном коде. В связи с этим в последнее время начали активно развиваться методы, позволяющие автоматически генерировать правила для АОТ. Это произошло благодаря тому, что в сети Интернет накопилось достаточное количество параллельных текстов, в которых одна и та же информация примерно одними и теми же словами изложена на разных языках.

Однако системы, полностью основанные на автоматически сгенерированных правилах, не дают нужного качества обработки текста, так как параллельные тексты содержат в себе целый ряд лингвистических разночтений, начиная с отступления от точности перевода в пользу его красоты и заканчивая некорректным переводом. В связи с этим сгенерированные наборы правил нуждаются в дальнейшей ручной обработке.

На данный момент накоплены достаточно большие объемы правил, созданных усилиями лингвистов. Нам представляется более оптимальным использовать эти базы как основу для автоматизированного создания правил АОТ.

Одной из наиболее сложных задач при АОТ является синтаксический анализ, который отвечает за определение связей между словами. Для ускорения работы синтаксического анализа обычно используется предшествующий ему этап фрагментарного анализа, который пытается выделить информацию о структуре предложения на основе выделения его фрагментов. Одной из задач фрагментарного анализа является определение границ фрагментов предложения. Если границы фрагментов определять в соответствии с границами правил синтаксического анализа, то можно получить существенный прирост в скорости работы последнего. Однако на

практике выделение и написание правил фрагментарного анализа является

и и и т~ч и

трудоемкой и сложной задачей. В связи с этим встает проблема автоматическом генерации правил фрагментарного анализа на основе имеющихся правил синтаксического анализа.

Для начала изложим некоторые теоретические сведения, необходимые для дальнейшего изложения.

Грамматикой называется четверка 0={УЫ, УТ, Р, Е}. Здесь УК - множество нетерминалов, УТ - множество терминалов, Р - набор правил, описывающих цепочки, принадлежащие описываемому языку, Е - начальный символ грамматики. В нашем случае терминалом будет являться некоторый шаблон, который будет применяться для поиска слова, отвечающего заданным требованиям, на заданном месте. Для унификации знаки препинания также будем считать словами.

Продукцией или правилом подстановки называется упорядоченная пара (и,х) записываемая как и::=х, где и - некоторый символ (левая часть правила), а х -цепочка символов (правая часть правила). и либо является единственным символом и является нетерминалом, либо произвольной цепочкой терминалов и нетерминалов, содержащей хотя бы один нетерминал. Множество всех левых частей правил составляет множество нетерминальных символов грамматики. Символы, входящие в х могут принадлежать как УТ, так и УК. В нашем случае продукция будет задавать порядок следования слов в фразе.

Если а любая строка символов грамматики, то Б1Я8Т(а) - это множество терминалов, с которых могут начинаются строки, выводимые из а. Если а ^е, то ее Б1Я8Т(а).

Б1Я8Т(Х) вычисляется для всех символов X грамматики с применением следующих правил.

1. Если X - терминал, то Б1Я8Т(Х) = {X}

2. Если Х=е, то добавляем е к Б1Я8Т(Х)

3. Если X - нетерминал и Х^У1У2_Ук - продукция, то помещаем а в Б1Я8Т(Х)

*

если для некоторого 1 аеР1Я8Т(У;) и ееР1Я8Т(У;) VI, так что У1У2^Ук ^е. В последнем случае добавляем е к Б1Я8Т(Х).

Правила применяются до тех пор, пока не окажется больше терминалов и e, для которых их можно применить.

Если b любая строка символов грамматики, то LAST(b) - это множество

*

терминалов, которыми могут заканчиваться строки, выводимые из b. Если b ^е, то ее LAST(b).

Правила построения LAST(Y) для символов Y грамматики аналогичны правилам построения FIRST(X) для X символов грамматики.

Заметим, что для грамматик, не содержащих и не порождающих е-цепочки, правила вычисления FIRST, LAST и вводимых ниже FIRST2 и LAST2 будут значительно проще.

Поясним вышесказанное на примере.

Пусть имеется набор продукций:

SENT::=<A1>

A1::=<A3><A4>|<A4>

A3::=[1]|[1]<A3>

A4::=[2]|[3]|[4][5][6]

Тогда FIRST и LAST для продукций будут следующими:

FIRST(SENT) = {[1],[2],[3],[4]}

FIRST(A1) = {[1],[2],[3],[4]}

FIRST(A3) = {[1]}

FIRST(A4) = {[2],[3],[4]}

LAST(SENT) = {[2],[3],[6]}

LAST(A1) = {[2],[3],[6]}

LAST(A3) = {[1]}

LAST(A4) = {[2],[3],[6]}

На основе полученной информации можно рассчитать значения функций FIRST2 и LAST2, показывающих с каких двух терминалов могут начинаться цепочки, генерируемые при помощи правила или какими двумя терминалами такие цепочки могут заканчиваться. При этом будем считать, что грамматике не содержит е-символов.

Если а любая строки символов грамматики, то FIRST2(a) - это множество пар терминалов, с которых могут начинаются строки, выводимые из а.

Если b любая строки символов грамматики, то LAST2(b) - это множество пар терминалов, которыми могут заканчиваться строки, выводимые из b. FIRST2 в данной программе считается по следующему алгоритму:

1. Если первый символ рассматриваемого правила грамматики является терминалом, то к FIRST2 добавляются все сочетания, состоящие из данного терминала, стоящего в первой позиции, и

a. второго символа рассматриваемого правила грамматики, если он также является терминалом

b. FIRST от второго символа рассматриваемого правила грамматики, если он является нетерминалом

2. Если первый символ рассматриваемого правила грамматики является нетерминалом, то к FIRST2 добавляются

a. FIRST2 от этого символа

b. все сочетания, формируемые из терминалов, из которых может состоять данный нетерминал, являясь одиночным терминалом, стоящих в первой позиции и

i. второго символа рассматриваемого правила грамматики, если он является терминалом

ii. FIRST от второго символа рассматриваемого правила грамматики, если он является нетерминалом

LAST2 в программе считается по следующему алгоритму:

3. Если последний символ рассматриваемого правила грамматики является терминалом, то к LAST2 добавляются все сочетания, состоящие из данного терминала, стоящего во второй позиции, и

a. предпоследнего символа рассматриваемого правила грамматики, если он также является терминалом

b. LAST от предпоследнего символа рассматриваемого правила грамматики, если он является нетерминалом

4. Если последний символ рассматриваемого правила грамматики является нетерминалом, то к LAST2 добавляются

а. LAST2 от этого символа

b. все сочетания, формируемые из терминалов, из

которых может состоять данный нетерминал, являясь одиночным терминалом, стоящих во второй позиции и

i. предпоследнего символа рассматриваемого правила грамматики, если он является терминалом

ii. LAST от предпоследнего символа рассматриваемого правила грамматики, если он является нетерминалом

Для пояснения вернемся к примеру. FIRST2(SENT) = {[1][1],[1][2],[1][3],[1][ 4],[4][5]} FIRST2(A1) = {[1][1],[1][2],[1][3],[1][4],[5][6]} FIRST2(A3) = {[1][1]} FIRST2(A4) = {[4][5]}

LAST2(SENT) = {[1][1],[1][2],[1][3],[1][ 4],[5][6]} LAST2(A1) = {[1][1],[1][2],[1][3],[1][ 4],[5][6]} LAST2(A3) = {[1][1]} LAST2(A4) = {[5][6]}

Итак, функции FIRST (LAST) показывают, с каких терминалов могут начинаться (заканчиваться) правила. При этом на основании результатов вычисления этих функций можно решить обратную задачу - определить какие правила могут начинаться или заканчиваться данным терминалом. При этом гипотетически возможен случай, когда с данного терминала будет начинаться небольшое количество правил. В этом случае можно будет говорить о том, что данный терминал является характеристическим. То есть, обнаружив данный терминал на входе можно выдвинуть гипотезу или небольшое количество гипотез о структуре данного фрагмента. На основе этой информации можно будет попытаться построить правила фрагментарного анализа в автоматизированном или автоматическом режиме. При этом вероятность того, что комбинация терминалов, получаемая с помощью функций FIRST2 и LAST2, является характеристической, должна возрастать при одновременном возрастании количества комбинаций.

Исходя из вышеизложенных предположений, нами был проведен вычислительный эксперимент. Была разработана программа, которая вычисляла значения функций FIRST, LAST, FIRST2 и LAST2. На вход программы были поданы

реально действующие грамматики русского и английского языков, разработанные для системы машинного перевода «Кросслятор 2.0». По результатам вычислений были выделены наборы правил, соответствующие терминалам или парам терминалов.

Работу программы можно разделить на 3 этапа.

На первом этапе работы ПО проводится преобразование исходной грамматики. Здесь вычленяются терминалы и записываются в список. Терминалы нумеруются. Продукции преобразуются в простой вид, где терминалы пронумерованы.

На втором этапе проводится расчет FIRST и LAST для каждой продукции. Расчет основан на методе рекурсивного спуска по продукциям, описанном выше.

На третьем этапе проводится расчет FIRST2 и LAST2. Расчет также основан на методе рекурсивного спуска по продукциям, также описанном выше.

Для экспериментов использовалась грамматика английского языка, содержащая в себе более 550 правил и порядка 250 уникальных терминалов. В результате генерации множеств FIRST2 и LAST2 было обнаружено, что более 500 пар терминалов однозначно идентифицируют начало правила и порядка 50 пар терминалов однозначно идентифицируют окончание правила. Кроме того, было обнаружено более 20 терминалов, однозначно идентифицирующих окончание правила, а примерно такое же количество терминалов не может заканчивать ни одно правило. Аналогичные результаты были получены и для функции FIRST.

Однако полученные результаты обладают рядом неточностей. Так, с одной стороны, если мы имеем правило вида A^Ba и teFIRST(B), то teFIRST(A), то есть один и тот же терминал будет встречаться несколько раз у разных правил. Аналогичные рассуждения применимы к LAST. Если изменить алгоритм расчета FIRST так, чтобы символ входил только в правило, непосредственно порождающее цепочку, начинающуюся с данного терминала, то количество правил, однозначно идентифицируемых единственным терминалом, может увеличиться.

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

морфологическую омонимию. В связи с этим вероятность применения нескольких терминалов к одному и тому же слову существенно возрастает.

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

Еще одной проблемой является тот факт, что парное сочетание терминалов может встретиться не только в начале или в конце цепочки, генерируемой правилом, но ив середине. Это может произойти для правил вида Л^аР, Б^у таких, что аЪеР1Я8Т2(у) или аЪеЬЛ8Т2(у) и аеЬЛ8Т(а) и ЪеР1Я8Т(Р). В этом случае парное сочетание не будет однозначно идентифицировать начало или окончание цепочки, выводимой из правила. В связи с этим эксперимент необходимо продолжить и найти и исключить все пары, попадающие под описанный случай.

Однако количество кандидатов на правила позволяет предположить, что количество сгенерированных правил может быть все равно достаточно велико. В связи с этим полученные результаты позволяют надеяться на практическую разрешимость задачи автоматической и автоматизированной генерации правил фрагментарного анализа.

i Надоели баннеры? Вы всегда можете отключить рекламу.