До сих пор в этой главе изложение было в основном сосредоточено на синтаксическом анализе языка, а не на его производстве. Но тема производства языковых конструкций является не менее интересной. Для выбора правильного фрагмента речи, позволяющего выразить некоторое высказывание, приходится использовать во многом такие же средства, как и при синтаксическом анализе фрагмента речи. Напомним, что DCG — это система логического программирования, определяющая ограничения, которыми связаны между собой некоторая строка и вариант синтаксического анализа этой строки. Как известно, определение в формате логического программирования предиката Append может использоваться и для выяснения того, что в выражении Append ( [ 1, 2 ] , [ 3 ] , χ) задано значение х= [ 1, 2 , 3 ], и для составления списков значений χ и у, после подстановки которых выражение Append (х, у, [ 1, 2 , 3 ] ) становится истинным. Аналогичным образом можно записать определение предложения S, которое может применяться двумя способами — для синтаксического анализа, с целью поиска ответа на запрос S(sem, [John, Loves, Mary] ) и получения sem=Loves (John, Mary), и для производства синтаксической конструкции путем выдачи запроса S (Loves (John, Mary) , words) и получения words- [John, Loves, Mary]. Можно также проверить грамматику, введя запрос S(sem, words) и получив ответ в виде потока пар [sem, words], которые производятся с помощью этой грамматики. Такой подход является вполне применимым в отношении простых грамматик, описанных в этой главе, но может стать более затруднительным при распространении его масштабов на более крупные грамматики. При этом важную роль играет то, какая стратегия поиска используется в машине логического вывода; в частности, применение стратегии поиска в глубину может привести к возникновению бесконечных циклов. Аналогичные предосторожности необходимо принимать, определяя точные детали семантической формы. Может оказаться, что в данной конкретной грамматике не предусмотрен способ выражения логической формы для некоторого значения X и Y, но есть возможность выразить; такая ситуация свидетельствует о том, что требуется некоторый способ создания канонического представления семантических форм или нужно дополнить процедуру унификации так, чтобы можно было унифицировать выражениес выражением Если в центре внимания находится задача производства синтаксических конструкций, то, как правило, используются более сложные модели производства, которые отличаются от грамматик синтаксического анализа и обеспечивают больший контроль над тем, как именно выражаются компоненты семантики. Одним из подходов, который упрощает задачу переноса центра сосредоточения усилий на наиболее важные части семантической формы, является применение системной грамматики.
|