Обработка относительных предложений

В роли грамматических определений существительных могут выступать относи­тельные предложения (relative clause), например, как во фразе "Every man that paints admires Monet" (Каждый мужчина, который рисует, обожает Моне). В этой

Глава 21. Обработка лингвистической информации с помощью грамматических правил 527


фразе синтаксическая конструкция "every man that paints" представляет собой именную конструкцию, в которой "that paints" является относительным предло­жением. Для охвата такой синтаксической конструкции можно переопределить грамматические правила, относящиеся к именной конструкции, следующим образом:

noun phrase --> determiner, noun, rel clause.

rel_clause --> [ that], verb_phrase. _

rel_clause -->{]. I Пустое относительное предложение

Теперь рассмотрим смысл подобных именных конструкций. С точки зрения логи­ки фраза "Every man that paints admires Monet" означает следующее:

Для всех Х,

если X - мужчина и X рисует, то X обожает Моне.

Эту формулировку можно представить в виде такого терма Prolog: all( X, man( X) and paints! X) => admires! X, monet)]

Здесь предполагается, что оператор "and" связывает сильнее, чем оператор "=>". Таким образом, подходящая форма для представления логического смысла именной конструкции "every man that paints" является следующей: all( X, man( X) and paints [ X} => Assn)

В целом эта форма имеет вид all! X, Propl and Ргор2 => Assnl

Здесь смысл переменной Propl определяется именной конструкцией, Prop2 -глагольной конструкцией относительного предложения, a Assn - глагольной конст­рукцией фразы. Правила DCG для этой именной конструкции, которые обеспечивают соответствующее определение смысла, приведены ниже.

"tSS-SJA №»Propl and Prop2) ^> [ t Propl2, Assn, S], Xr Prop2).

noun c [ X, ProplWopl, Propl2].

Для охвата того случая, когда относительное предложение является пустым, не­обходимо добавить такое правило: r e l_ c l au s e ( X, Propl, Propl) -> [j.

В листинге 21.1 приведено полное определение DCG с возможностями, описанны­ми в этом разделе, включая определяющие слова "а" и "every", а также относитель­ные предложения. Эта грамматика способна извлекать логический смысл фраз, по­добных приведенным ниже.

John paints.

Every man that paints admires Monet. Annie admires every man that paints. Every woman that admires a man that paints likes Monet.

Листинг 21.1. Правила DCG, которые обеспечивают обработку синтаксиса и смысла небольшого подмножества естественного языка

:- ор [ 100, xfy, and) . :- ор( 150, Kfy, =>) .

sentence! 3) -->

nounj)hrase( X, P, S) , verb_phrase( X, P) ,

nounj)hrase( X, P, S) -->

determiner! X, P12, P, S), noun( X, P1J, rel_clause( X, PI, P12).

nounjhrase [ X, P, pj -> proper_noun( X) .

verbjhrase ( X, P) ->

528 Часть II, Применение языка Prolog в области искусственного интеллекта


trans_verb[ X, Y, PI) , noim_phrase ( Y, PI, P) .

verbjhrase ( X, P) -> intrans_verb( x, P) .

rel_clause[ X, PI, PI and P2) -> [that) , verb_phrase[ X, P2) .

rel_clause[ X, PI, PI) --> [],

determiner) x, PI, P, all[ X, PI => P)) --> [every].

determiner!X, PI,p, existst x, PI and pj} -> [aj .

noun[ X, man(X) ) ~> [man] .

noun[ X, woman(X)) --> [woman).

proper_rtoun[ John) -> tjohnj .

proper_noun[ annie) --> [annie).

proper_noun( monet) -> [monet].

trans_verb( X, Y, likes ( X, Y) ) --> [ likes] .

trans_verb{ X, Y, admires! X, Y) ) -> [admires],

intran5_verb( X, paintS{X>] -> [paints].

% Некоторые проверки

testl( M> :-

sentence! M, [John,paints],[]).

test2 [ M) :-

sentence! M, [a, man, paints!, П) •

test3{ M) :-

sentence! M, [every,man,that,paints,admirea,manet] , [] ) .

test4( M):-

sentence! M, [annie,admires,every,man,that,paints],[]),

test5( Mi :-

..,.sentence( M, [every, woman, that,admires,a,man, that,.paints,likes,monet], []}.

Например, эти фразы могут быть переданы на обработку в рассматриваемой грамматике в виде следующих вопросов:

?- sentence( Meaningl, [ every, man, that, paints, admires, monet], []). Meaningl = alii X, man( X) and paints [ X) => admires( X, monet)]

7- sentence! Meaning2, 1 annie, admires, every, man,that, paints], []). Meaning2 = all! X, man( X) and paints! X] => admires( annie, X))

?- sentence ( Meaning3, [ every, -woman, that, admires, a, man, that, paints,

likes, monet] , [] ) . Meaning3 • all ( X, woman! X) and exists ( Y { man! V) and paints! IT J! and admires( X, Y)) -> likes! X, monet))

Еще одна интересная проблема касается использования смысловых значений, из­влеченных из текста на естественном языке, для формулировки ответов на вопросы. Например, рассмотрим, как изменить рассматриваемую программу, чтобы после об­работки заданных фраз она могла отвечать на вопросы такого типа: "Does Annie

Глава 21. Обработка лингвистической информации с помощью грамматических правил 529


admire anybody who admires Monet?" (Обожает ли Энни кого-либо, кто обожает Моне). Ответ на этот вопрос логически следует из приведенных выше фраз, и нам дос­таточно просто заставить данную программу проводить некоторые необходимые рассу­ждения. В общем нам требуется определенный механизм автоматического доказатель­ства теорем, обеспечивающий дедуктивный вывод ответов из смысловых значений, представленных в форме логических высказываний. Безусловно, с точки зрения прак­тики удобнее всего использовать в качестве такого механизма автоматического доказа­тельства теорем саму систему Prolog. Для этого достаточно преобразовать логические смысловые значения в эквивалентные предложения Prolog. В целом выполнение та­кого упражнения требует определенных усилий, но в некоторых случаях подобное преобразование является тривиальным. Ниже приведены некоторые легко преобра­зуемые смысловые значения, записанные в виде предложений Prolog. paints( John).

admires ( X, aionet) :

admires( annie, X) :-man( X), paints[ X) ,

Представленный выше в качестве примера вопрос "Does Annie admire anybody

who admires Monet?" можно преобразовать в следующий запрос Prolog:

?- admires( annie, X), admires( X, menet). X - John

Упражнения

21.6. Сформулируйте в виде логических высказываний смысл следующих фраз:

а) Mary knows all important artists (Мэри знает всех известных худож­
ников).

б) Every teacher who teaches French and studies music -understands
Chopin (Каждый учитель, который учит французскому и изучает музыку,
понимает Шопена).

в) A charming lady from Florida runs a beauty shop in Sydney (Оча­
ровательная леди из Флориды содержит салон красоты в Сиднее),

21.7. Грамматика, приведенная в листинге 21.1, может быть также вызвана на вы­
полнение в противоположном направлении. В таком случае по заданному смыслу
вырабатывается фраза с этим смыслом. Например, можно попытаться ввести за­
прос, обратный запросу tes~5, приведенному в листинге 21.1, таким образом:

?- М « all (X, woman (X) and exists (Y, (man (Y) and paints (Y) ) and

admir kes[X,monet)), sentence( M, S, [] I . Первый ответ системы Prolog состоит в следующем:

and admires C( )ac.JMFc; ) -> likes(_022C,monet))

Он соответствует ожидаемому. Но если мы потребуем предоставить еще одно решение, то получим такой непредвиденный результат:

М= aU{monet,woman[monet)and exists[ Q364,(man( 0364) and paints( 0364)) and admires (monet, _0364)) => likes [monet, monetj )

S = [monet,likes, every,woman,that,admiresa,man,that,paints] % Моне любит любую % женщину, которая восхищается некиммужчиной, который рисует



Часть II. Применение языка Prolog в области искусственного интеллекта


Объясните, почему он был получен, и предложите внести определенное изме­нение в грамматику для предотвращения его возникновения. Подсказка: про­блема состоит в том, что эта грамматика допускает возможность согласования переменной, на которую распространяется действие квантора всеобщности (например, X в предикате all {X, ...)), с именем собственным (monet}; такую ситуацию можно легко предотвратить. 21.8.Дополните грамматику, приведенную в листинге 21.1, чтобы она позволяла об­рабатывать составные фразы с союзами "if, "then", "and", "or", "neither", "nor" и т.д. В качестве примера таких фраз можно привести следующие:

John paints and Annie sings. * Джон рисует и Энни поет

If Annie sings then every teacher listens. Ъ Если Энни поет, то каждый

% учитель слушает

Проект

Модифицируйте грамматику, приведенную в листинге 21.1, чтобы она пред­ставляла смысл фраз в виде непосредственно выполняемых предложений Prolog. Напишите программу, которая читает фразы на естественном языке в обычном текстовом формате (а не в виде списков; см. подходящую программу в главе 6) и вводит их смысловые значения в базу данных системы в виде предложений Prolog. Дополните эту грамматику, чтобы она обрабатывала про­стые вопросы на естественном языке, что привело бы в конечном итоге к соз­данию законченной диалоговой системы для небольшого подмножества естест­венного языка. Можно также предусмотреть использование этой грамматики для выработки фраз с заданным значением, предоставляемых пользователю в качестве ответов на естественном языке.

Резюме

• Стандартные грамматические системы обозначений, такие как BNF, могут быть простейшим образом преобразованы в систему обозначений DCG (Definite Clause Grammar - грамматика определенных предложений). Грамматика, за­данная в системе обозначений DCG, может считываться и вызываться на вы­полнение непосредственно интерпретатором Prolog, осуществляющим функции системы распознавания для языка, определенного с помощью этой грамматики.

• Система обозначений DCG позволяет вводить параметры в нетерминальные символы грамматики. Это дает возможность учитывать в грамматике контек­стные зависимости и непосредственно включать в нее определения семантиче­ских значений языка.

• Разработаны интересные грамматики DCG, которые охватывают синтаксис и значение нетривиальных подмножеств естественного языка,