我需要在prolog数据集中找到关系。我有不同类型的列车具有不同的功能,例如Train1:
has_car(rel_east1,car_11).
has_car(rel_east1,car_12).
has_car(rel_east1,car_13).
infront(car_11,car_12).
infront(car_12,car_13).
size(car_11,long).
size(car_12,long).
size(car_13,short).
shape(car_11,hexagon).
shape(car_12,rectangle).
shape(car_13,hexagon).
load(car_11,rectangle).
load(car_12,circle).
load(car_13,triangle).
我有十种不同的火车。现在我使用Metagol算法,它将学习不同列车内的不同关系。结果我得到一个包含不同子句的列表。这是我的问题:我不理解条款之间的归纳步骤。例如:
relational(A):-has_car(A,B),relational_1(B).
relational_1(A):-relational_2(A,rectangle).
relational_2(A,B):-relational_3(A),shape(A,B).
relational_3(A):-infront(A,B),relational_4(B).
relational_4(A):-load(A,triangle).
我唯一知道的是,整个条款都说:"有一辆火车,其中包含一个形状为矩形的汽车。这辆车在另一辆包含三角形的汽车前面。" 但有人可以向我解释代码吗?线路? 例如,我不明白如何阅读第二行:"如果与A有关系1,那么A和矩形之间也存在关系2"?
答案 0 :(得分:1)
我不是百分百肯定,但我认为关系_x谓词,是发明的关系(谓词)'通过metagol为您的学习任务。 由于命名发明谓词是一项艰巨的任务(对此没有很好的解决方案),您可以获得这些类型的名称。
例如,如果你使用了`kinship1'在这里:https://github.com/metagol/metagol
?- [kinship1].
Warning: /media/sam/9bb6ab40-5f17-481e-aba8-7bd9e4e05d66/home/sam/Documents/Prolog_practise/metagol/metagol.pl:250:
Local definition of metagol:list_to_set/2 overrides weak import from lists
true.
?- a.
% learning grandparent/2
% clauses: 1
% clauses: 2
% clauses: 3
grandparent_1(A,B):-father(A,B).
grandparent_1(A,B):-mother(A,B).
grandparent(A,B):-grandparent_1(A,C),grandparent_1(C,B).
true .
通过学习grandparent/2
来学习grandparent_1/2
关系。我们和人类会称之为parent/2
。
所以relational_4(A):-load(A,triangle).
你可以打电话给车载三角形的负载' 。然后relational_3(A):-infront(A,B),relational_4(B).
将车载在一辆载有三角形负载的汽车前面。等
relational_4(A):-load(A,triangle).
如果对象A加载了三角形,则A为relational_4 要么 有一辆车的载荷为三角形。
relational_3(A):-infront(A,B),relational_4(B).
如果对象A在对象B的前面并且B是relational_4则A是relational_3 要么 轿厢A位于轿厢B的前方,轿厢B的负载为三角形
relational_2(A,B):-relational_3(A),shape(A,B).
如果A是relational_3并且具有形状B则A关系为_2 B. 要么 汽车A是另一辆装有三角形车的汽车,汽车A的形状不规则。
relational_1(A):-relational_2(A,rectangle).
如果对象A是relational_2矩形,则A是relational_1 要么 有一辆车有一个长方形的形状,它是一辆载有三角形负载的汽车的前面。
relational(A):-has_car(A,B),relational_1(B).
如果对象A有汽车B而B是关系_1,那么关系为A.
有一辆有车的火车,这辆车是一个长方形的形状,它是一辆三角载重的汽车前面