我想使用wordNet关系进行近似匹配, 所以有两个项目大致匹配,如果 (i)根据wordnet,一个人的头部包含另一个的头部 (ii)(a)每个近似匹配的第一个dtr (b)我们跳过第二棵树的第一个dtr并再试一次
要做到这一点,你需要近似和近似值。
[love, [peter], [susan], [in, [january]] |- [like, [peter], [susan]]
我试图以这种方式解决它,但它无法正常工作:
subsynset([] ,_).
subsynset([H0 | ARGS0], [H1 | ARGS1]) :-
wordnetsubsumes(H0, H1),
subsynset(ARGS0,ARGS1).
subsynset(L, [_ | ARGS]):-
subsynset(L, ARGS).
wordnetsubsumes(H0, H0).
wordnetsubsumes(H0, H1):-
\+list(
s(I,_,H0,_,_,_),
(hyp(I, J) ->
s(J,_,Hyp,_,_,_),
Hyp = H1 ;
subsynset(Hyp, H1))).
我发现我的wordnetsubsumes只检查第一个单词,我不确定它是否在我的代码中检查列表。
通过这种方式,如果在此代码中它与SWI之间存在某些不同,我将使用sicstus prolog。