Применение деревьев синтаксического анализа для извлечения смысла

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

1. Формирование дерева синтаксического анализа заданной фразы.

2. Обработка дерева синтаксического анализа для определения смысла.



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

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

Проиллюстрируем этот двухэтапный метод на несложном примере. Для упроще­ния снова будем рассматривать движения робота. Грамматика с описанием движений робота, позволяющая вырабатывать дерево синтаксического анализа, приведена ниже.

move( move( Step)) -> step{ Step).

move( move( Step, Move)) -> step( Step), move I Move).

step( step( up)) -> [ up] .

step( step( down)) -> [ down].

Теперь определим смысл движения как расстояние между положением робота пе­ред выполнением движения и после него. Пусть каждый шаг имеет длину 1 мм в по­ложительном или отрицательном направлении. Поэтому смысл движения "up up down up" составляет 1 + 1 - 1 + 1 = 2. Расстояние перемещения (distance) в ре­зультате выполнения движения можно вычислить на основании дерева синтаксиче­ского анализа движения, как показано на рис. 21.4. Ниже приведены соответствую­щие арифметические расчеты.

distance ( 'up up down up') =

distance('up') + distancet'u p down up') =1 + 1 = 2

Применение деревьев синтаксического анализа для извлечения смысла - student2.ru

Рис. 21.4. Извлечение смысла движения как расстояния перемещения в ре­зультате его выполнения

Ниже приведена процедура, которая определяет смысл движения (как соответст­вующего расстояния перемещения) на основании дерева синтаксического анализа движения.

Ч meaning{ Ра^эеТгее, Value) r.ieaning( move ( Step, Move), Dist) :-

meaning) Step, Dl),

meaning! Move D2)

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

Dist is Dl + D2 .

meaning! move{ Step), Dist) :-meaning! Step, Dist) .

meaning! step! up) , 1 ) . meaning! step( down), -1) .

Этой процедурой можно воспользоваться, например, для вычисления смысла движения "up up down up" следующим образом:

?• move[ Tree, ( up, up, down, up], [)), meaning[ Tree, Dist), Dist = 2

Tree = move( step ( up), move( step( up), move( stept down), move) step t up)))))

Упражнение

21.4. Эта грамматика и процедура meaning могут использоваться для решения про­тивоположной задачи, т.е. для поиска движения, позволяющего переместить манипулятор робота на заданное расстояние, например, как показано ниже. ?- move( Tree, Move, []), meaning( Tree, 5), Обсудите перспективы применения такого подхода.

Наши рекомендации