Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программы классификации 49 9 Программа классифи...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
944 Кб
Скачать
☆

Упражнения

1. Разработайте систему грамматического разбора для построения интерфейса на ограниченном естественном языке для вопросно-ответной системы. Фразы языка примерно следующие:

Where is the white block?

On the table.

Pick up yellow block!

Is there a block at the table?

Which block supports the cube?

Small black block.

Is there anything on that block?

The box.

2. Разработайте систему грамматического разбора для перевода правил некоторой базы знаний во внутреннюю форму представления. Правило базы знаний имеет структуру:

<type> <name>

DISPLAY <display string>

<function name> <function parameters>,

где

<type> – одно из hypothesis, intermediate или data;

<name> – идентификатор правила, любое допустимое имя Пролога;

DISPLAY – ключевое слово;

<display string> – строка, заключенная в кавычки;

<function name> – имя функции, может быть одно из AND, OR, NOT, YESNO;

<function parameters> – имена других правил, которые обрабатываются функцией.

Форма внутреннего представления должна быть следующая:

rule(type_string, name_string, display_sting, function_info).

Например, для правил

hypothesis car

DISPLAY “use a car”

AND

intermediate car_speed

DISPLAY “speed car”

OR car_factor car_map

data drive_yourself

DISPLAY “Do you want to drive yourself?”

YESNO

форма внутреннего представления должны быть следующая:

rule(“hypothesis”, “car”, “use a car”, and_rule([“car_speed”, “car_dist”, “car_cost”]).

rule(“intermediate”, “car_speed”, “speed car”, or_rule([“car_factor”, “car_ map”]).

rule(“data”, “drive_yourself”, “Do you want to drive yourself?”, yesno_rule).

Указание 1. Исходные правила хранятся в файле. Для перевода файла в строку используйте стандартный предикат file_str.

Указание 2. Для выделения первой подстроки из строки используйте стандартный предикат fronttoken.

4. Стандартные предикаты

Одной из основных причин, которые помогли Прологу стать "реальным" языком программирования, было введение в язык элементов, лежащих за пределами чистой логики. В Турбо-Прологе такие элементы реализованы как стандартные (встроенные) предикаты.

Большинство стандартных предикатов выполняет несколько функций в зависимости от состояния параметров, входящих в предикат. В одном случае заранее определен какой-либо один параметр, в другом случае известны другие параметры, иногда к моменту обращения могут быть известны все параметры. Известные параметры предиката называются входными, неизвестные – выходными. Совокупность входных и выходных параметров определяет работу предиката. Эта совокупность называется поточным шаблоном. Если предикат будет вызываться с двумя аргументами, имеется четыре варианта поточного шаблона:

(i,i) (i,o) (o,i) (o,o),

где i – входной параметр, о – выходной параметр. Однако не для каждого предиката все возможные варианты поточного шаблона имеют смысл.

Hиже приводятся некоторые наиболее часто употребляемые стандартные предикаты, сгруппированные в отдельные классы по их функциональному назначению. Более полный список стандартных предикатов можно найти в [3].