Главная arrow книги arrow Копия Глава 22. Общение arrow Семантическая интерпретация
Семантическая интерпретация

До сих пор в данной главе рассматривался только синтаксический анализ языка. В этом разделе обратимся к семантике — извлечению смысла фрагментов речи. В данной главе в качестве языка представления используется логика первого порядка, поэтому семантическая интерпретация представляет собой процесс связывания с некоторым словосочетанием некоторого выражения логики первого порядка. Интуитивно ясно, что смысл словосочетания "the wumpus" — это образ большого, мохнатого животного, который может быть представлен в логике в виде логического терма Wumpus а смыслом словосочетания "the wumpus is dead" является логическое выражение Dead {Wumpus1) . В этом разделе такие интуитивные представления будут определены более точно. Начнем с простого примера — с правила для описания позиций в решетке:

Дополним данное правило, добавив к каждой составляющей параметр, который представляет семантику этой составляющей. Будет получено следующее:

Это правило гласит, что строка, состоящая из цифры с семантикой х, за которой следует еще одна цифра с семантикой у, образует словосочетание NP с семантикой [х,у], которое представляет собой применяемое нами обозначение квадрата в решетке — в мире вампуса.

Обратите внимание на то, что семантика всего словосочетания NP в основном формируется на основе семантики составляющих частей. Мы уже сталкивались с подобной идеей композиционной семантики и раньше: в логике смысл выражения PaQ определяется значениями р, Q и л, а в арифметике смысл выражения х+у определяется значениями х, у и +. В листинге 22.6 показано, как можно воспользоваться системой обозначений DCG, чтобы дополнить грамматику арифметических выражений с семантикой, а на рис. 22.6 показано дерево синтаксического анализа выражениясогласно этой грамматике. Корнем данного дерева синтаксического анализа является выражение Ехр (5), семантической интерпретацией которого становится 5.

Листинг 22.6. Грамматика арифметических выражений, расширенная с учетом семантики. Каждая переменнаяпредставляет семантику одной из составляющих. Обратите внимание на использование обозначения операции проверки {test} для определения логических предикатов, которые должны быть удовлетворены, но не являются составляющими