Скачиваний:
71
Добавлен:
01.05.2014
Размер:
427.52 Кб
Скачать

8.7.1. Вывод цепочечных грамматик

На рис. 8.10 представлена модель вывода цепочечных грам­матик. Задача, показанная на этом рисунке, заключается в том, что множество выборочных цепочек i подвергается обработке с помощью адаптивного обучающего алгоритма, представленного на рисунке блоком. На выходе этого блока в конечном счете воспроизводится грамматика G, согласован­ная с данными цепочками, т. е. множество цепочек i} яв­ляется подмножеством языка L{G). К сожалению, ни одна из известных нам схем не в состоянии решить эту задачу в общем виде, представленном на рис. 8.10. Вместо этого предлагаются

многочисленные алгоритмы для вывода ограниченных грам­матик. Алгоритм, рассматриваемый в этом пункте, является во многих отношениях типичным отражением результатов, полу­ченных в данной области. Этот алгоритм, являющийся модифи­кацией процедуры, разработанной Фельдманом [1967,1969], для заданного множества терминальных цепочек выводит автомат­ную грамматику. Основная идея метода Фельдмана заключается в том, чтобы сначала построить нерекурсивную грамматику, порождающую в точности заданные цепочки, а затем, сращи­вая нетерминальные элементы, получить более простую рекур­сивную грамматику, порождающую бесконечное число цепочек. Алгоритм можно разделить на три части. Первая часть форми­рует нерекурсивную грамматику. Вторая часть преобразует ее в рекурсивную грамматику. Затем в третьей части происходит упрощение этой грамматики. Эту процедуру лучше всего пояс­нить на примере.

Рассмотрим выборочное множество терминальных цепочек {саааЬ, ЬЬааЬ, сааЬ,ЬЬаЬ, cab, ЬЬЬ, сЬ}. Требуется получить ав­томатную грамматику, способную порождать эти цепочки. Ал­горитм построения грамматики состоит из следующих этапов.

Часть I. Строится нерекурсивная грамматика, порождающая в точности заданное множество выборочных цепочек. Выбороч­ные цепочки обрабатываются в порядке уменьшения длины.

Правила подстановки строятся и прибавляются к грамматике по мере того, как они становятся нужны для построения соот­ветствующей цепочки из выборки. Заключительное правило подстановки, используемое для порождения самой длинной вы­борочной цепочки, называется остаточным правилом, а длина его правой части равна 2. Остаточное правило длины п имеет вид

где А—нетерминальный символ, а a1, a2 .... anтерминаль­ные элементы. Предполагается, что остаток каждой цепочки максимальной длины является суффиксом (хвостовым концом) некоторой более короткой цепочки. Если какой-либо остаток не отвечает этому условию, цепочка, равная остатку, добав­ляется к обучающей выборке. Из последующих рассуждений будет ясно, что выбор остатка длины 2 не связан с ограниче­нием на алгоритм. Можно выбрать и более длинный остаток, но тогда потребуется более полная обучающая выборка в связи с условием, что каждый остаток является суффиксом некото­рой более короткой цепочки.

В нашем примере первой цепочкой максимальной длины в обучающей выборке является цепочка саааЬ. Для порожде­ния этой цепочки строятся следующие правила подстановки:

где A3 — правило остатка. Вторая цепочка — ЬЬааЬ. Для по­рождения этой цепочки к грамматике добавляются следующие

Поскольку цепочка ЬЬааЬ И предыдущая цепочка саааЬ имеют одинаковую длину, требуется остаточное правило длины 2. За­метим также, что работа первой части алгоритма приводит к некоторой избыточности правил подстановки. Например, вто­рая цепочка может быть с равным успехом получена введением следующих правил подстановки: S—>bA4, A4->bA2. Но в пер­вой части мы занимаемся лишь определением множества пра­вил подстановки, которое способно в точности порождать обу­чающую выборку, и не касаемся вопроса избыточности. В слож­ных ситуациях трудно соблюдать выполнение этого условия и одновременно уменьшать число необходимых правил подста­новки. Значительно проще просматривать введенные правила слева направо, чтобы определить, будут ли они порождать но­вую цепочку, не стремясь при этом минимизировать число пра­вил подстановки. Об устранении избыточности речь пойдет в третьей части алгоритма.

Для порождения третьей цепочки caab требуется добавле­ние к грамматике только одного правила

Рассмотрев остальные цепочки из обучающей выборки, уста­навливаем, что окончательно множество правил подстановки, построенных для порождения обучающей выборки, выглядит следующим образом:

Часть 2. В этой части, соединяя каждое правило остатка длины 2 другим (неостаточным) правилом грамматики, полу­чаем рекурсивную автоматную грамматику. Это происходит в результате слияния каждого нетерминального элемента пра­вила остатка с нетерминальным элементом неостаточного пра­вила, который может порождать остаток. Так, например, если Аrостаточный нетерминал вида Ar ->a1a2 и Аn—неостаточ­ный нетерминал вида An ->a1Am где Am —> a2, все встречаю­щиеся Ar, заменяются на An, a правило подстановки Ar ->a1a2 отбрасывается. Таким способом создается автоматная грамма­тика, способная порождать данную обучающую выборку, а также обладающая общностью, достаточной для порождения бесконечного множества других цепочек.

В рассматриваемом примере A6 может сливаться с A5, a A3 может сливаться с A2, образуя следующие правила подстановки.

Рекурсивными правилами являются A2 —> aA2 и A5 —> aA5.

Часть 3. Здесь грамматика, полученная во второй части, упрощается объединением эквивалентных правил подстановки, Два правила с левыми частями Ai и Aj эквивалентны, если со­блюдены следующие условия. Предположим, что, начиная с Ai можно породить множество цепочек {x}i. Аналогичным образом предположим, что, начиная с Aj, можно породить множество {x}j. Если {x}i== [x}j, то два правила подстановки считаются эквивалентными, и каждый символ Aj может быть заменен на Ai, без ущерба для языка, порождаемого этой грамматикой. Формально два правила подстановки эквивалентны, если

порождается из Ai, соответствующим применением правил под­становки.

В приведенном примере эквивалентны правила с левыми частями А1 и A2. После слияния А1 и A2 получаем

где исключены многократные повторения одного и того же пра­вила. Точно так же, заметив, что А1 и A5, эквивалентны, по­лучаем

где

Дальнейшее слияние правил невозможно, поэтому алгоритм в процессе обучения строит следующую автоматную грам­матику:

Легко проверить, что эта грамматика может порождать обу­чающую выборку, использованную в процессе ее вывода.

Соседние файлы в папке lecture7