Системы искусственного интеллекта. Гудков П.А. - 16 стр.

UptoLike

Составители: 

16
В некоторых ситуациях на запрос может быть выдано несколько
ответов, что обеспечивается главной программой путем вложения eval в
предложение findall, которое собирает все ответы в список:
findall(A,eval(Q,A),L), где L – список ответов.
Эта функция должна быть определена с помощью ряда правил. Для
наглядности поясним их на тех же примерах, которые использовались при
демонстрации высокоуровневого функционирования подпрограммы анализа
(pars).
Пример 1. Запрос: Какие имеются города? (What cities do you have?)
Программа анализа преобразует этот вопрос в стандартную форму,
представленную заполненным шаблоном:
q_e("city")
Правило eval, запускаемое этим вводом, таково:
eval(q_e(E),ANS):-
ent(E,ANS).
Иными словами, мы можем вычислить выражение, если найдем в базе
данных что-нибудь наподобие
ent("city",ANS)
Эту задачу выполняет правило сущности (объекта), рассмотренное
выше. При каждом его запуске из базы данных извлекается название одного
города.
Пример 2. Запрос: Какова длина Гудзона? (How long is the Hudson?)
Ниже приводится правило eval, которое будет выполнено:
eval(q_eaec(E1,A,E2,C),ANS):-
db(E1,A,E2,ANS,C).
db является функцией доступа для получения связей, поэтому в базе
данных должно иметься что-нибудь наподобие
db(length,of,river,ANS,C)
Большинство запросов требует обработки в правилах eval.
Пример вложенного запроса:
      В некоторых ситуациях на запрос может быть выдано несколько
ответов, что обеспечивается главной программой путем вложения eval в
предложение findall, которое собирает все ответы в список:
findall(A,eval(Q,A),L), где L – список ответов.

      Эта функция должна быть определена с помощью ряда правил. Для
наглядности поясним их на тех же примерах, которые использовались при
демонстрации высокоуровневого функционирования подпрограммы анализа
(pars).
      Пример 1. Запрос: Какие имеются города? (What cities do you have?)
      Программа анализа преобразует этот вопрос в стандартную форму,
представленную заполненным шаблоном:
q_e("city")

      Правило eval, запускаемое этим вводом, таково:
eval(q_e(E),ANS):-
  ent(E,ANS).

      Иными словами, мы можем вычислить выражение, если найдем в базе
данных что-нибудь наподобие
ent("city",ANS)

      Эту задачу выполняет правило сущности (объекта), рассмотренное
выше. При каждом его запуске из базы данных извлекается название одного
города.
      Пример 2. Запрос: Какова длина Гудзона? (How long is the Hudson?)
      Ниже приводится правило eval, которое будет выполнено:
eval(q_eaec(E1,A,E2,C),ANS):-
  db(E1,A,E2,ANS,C).

      db является функцией доступа для получения связей, поэтому в базе
данных должно иметься что-нибудь наподобие
db(length,of,river,ANS,C)

      Большинство запросов требует обработки в правилах eval.
      Пример вложенного запроса:
                                                                           16