Листинг 19.1. Определение задачи изучения предиката has_daughter
% Изучение предиката по фактам, определяющим семейные отношения
% Фоновые знания
backliteraK parent(X,Y), [X,Y]) . % Фоновый литерал с переменными [X,Y]
backliteraK male(X) , [X]) .
backliteraK female(X), [X]).
prolog_predicate( parent(_,_)). % Цель parent(_,_) выполняется
% непосредственно интерпретатором Prolog prolog_predicate( male(_)). prolog_predicate( female(_)).
parent ( pam, bob) .
parent ( torn, bob) .
parent ( torn, liz) .
parent ( bob, ann) .
parent ( bob, pat) .
parent ( pat, jim) .
parent ( pat, eve) .
female ( pam) . male ( torn) . male( bob) . female( liz) . female( ann) . female ( pat) . male( jim). female( eve) .
% Положительные примеры
ex( has_daughter(torn)). % Том имеет дочь ex( has_daughter(bob)). ex( has_daughter(pat)).
% Отрицательные примеры
nex( has_daughter(pam)). % Пэм не имеет дочери nex( has_daughter(jim)).
start^hyp( [ [has_daughter (X) ] / [X] ] ) . % Начальная гипотеза
Глава19. Индуктивное логическое программирование
Отрицательные примеры представлены с помощью предиката nex (Example), например, как показано ниже. nex( has_daughter(pairi) 1 . % Пэм не имеет дочери
Предикат backliteral (сокращение от background literal - фоновый литерал) задает форму литералов, которые могут использоваться в программе ILP в качестве целей при формировании предложений Prolog. В частности, предикат backliteral( parent(X,Y), ~X,Y',).
указывает, что в состав языка гипотез входят литералы в форме parent (X,Y), в которых переменные X и Y могут быть переименованы. Вторым параметром предиката backliteral является список переменных в этом литерале. Такие фоновые литералы могут добавляться в качестве целей в тела формируемых предложений. Фоновые литералы представляют собой вызовы фоновых предикатов, которые могут быть заданы непосредственно на языке Prolog. Предикат prolog_oredicate определяет цели, которые должны быть непосредственно выполнены интерпретатором Prolog1. Например, предикат prolog^predicate( parent(X,Y)) .
указывает, что цели, которые согласуются с предикатом parent (X, Y), обрабатываются интерпретатором Prolog непосредственно, путем выполнения фонового предиката parent. Другие цели, такие как has daughter (torn;, могут быть выполнены с помощью интерпретатора, подобного Prolog, но с особыми свойствами, который будет реализован специально для использования в методе ILP.