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

UptoLike

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

17
Какие реки не протекают через Техас? (What rivers do not run through
Texas?)
Программа анализа выдает стандартизированную форму запроса:
q_not("river",q_eaec("river","in","state","texas"))
В данном случае выполняется правило eval:
eval(q_not(E,TREE),ANS):-
findall(X,eval(TREE,X),L),
ent(E,ANS),
not(member(ANS,L)).
Переменная TREE связывается с целым вопросом q_eaec. Затем вопрос
подвергается оценке внутри предиката findall и выдается список всех рек в
Техасе. Предикат ent генерирует название реки всякий раз, когда вызывается.
Он используется в качестве пробного ответа. Последнее предложение
оценивает ответ и, если река принадлежит к списку рек, протекающих через
Техас, ее название игнорируется. В противном случае оно выдается как ответ
на запрос.
Это пример так называемой стратегии «генерации и проверки»,
применяемой для получения ответов на запросы. Она не сложна, но высокой
скорости выполнения запросов при большом количестве данных не
обеспечивает. В нашем случае скорость вполне приемлема.
Во всех приведенных примерах заполненные шаблоны управляют
доступом к базе данных неявно. Правила eval являются особым случаем, в
них учитываются знания по способам обработки определенных типов
вопросов. Все правила eval принимают шаблоны как аргументы. Шаблоны
представляют собой сложные объекты данных, имеющие свои собственные
аргументы (на более низком уровне). Это именно те аргументы, которые в
конечном итоге появляются в правой части правила eval, и они управляют
выборкой данных. Глобальная архитектура правила eval позволяет
определить, как из разрозненных "кусочков" в конце концов получается
ответ.
     Какие реки не протекают через Техас? (What rivers do not run through
Texas?)
     Программа анализа выдает стандартизированную форму запроса:
q_not("river",q_eaec("river","in","state","texas"))

     В данном случае выполняется правило eval:
eval(q_not(E,TREE),ANS):-
  findall(X,eval(TREE,X),L),
  ent(E,ANS),
  not(member(ANS,L)).

     Переменная TREE связывается с целым вопросом q_eaec. Затем вопрос
подвергается оценке внутри предиката findall и выдается список всех рек в
Техасе. Предикат ent генерирует название реки всякий раз, когда вызывается.
Он используется в качестве пробного ответа. Последнее предложение
оценивает ответ и, если река принадлежит к списку рек, протекающих через
Техас, ее название игнорируется. В противном случае оно выдается как ответ
на запрос.
     Это пример так называемой стратегии «генерации и проверки»,
применяемой для получения ответов на запросы. Она не сложна, но высокой
скорости выполнения запросов при большом количестве данных не
обеспечивает. В нашем случае скорость вполне приемлема.
     Во всех приведенных примерах заполненные шаблоны управляют
доступом к базе данных неявно. Правила eval являются особым случаем, в
них учитываются знания по способам обработки определенных типов
вопросов. Все правила eval принимают шаблоны как аргументы. Шаблоны
представляют собой сложные объекты данных, имеющие свои собственные
аргументы (на более низком уровне). Это именно те аргументы, которые в
конечном итоге появляются в правой части правила eval, и они управляют
выборкой     данных.   Глобальная   архитектура   правила   eval   позволяет
определить, как из разрозненных "кусочков" в конце концов получается
ответ.



                                                                          17