Prolog自然语言解析器,参数未充分实例化

时间:2019-01-12 17:05:42

标签: prolog instantiation-error natural-language-processing

我正在尝试制作序言语言解析器。当我去加载脚本时,出现错误

 ERROR: Arguments are not sufficiently instantiated
 ERROR: In:
 ERROR:   [13] throw(error(instantiation_error,_1940))
 ERROR:    [7] <user>
 ERROR: 
 ERROR: Note: some frames are missing due to last-call optimization.
 ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

我的代码如下

sentence(Sentence,sentence(np(Noun_Phrase),vp(Verb_Phrase))):-
  np(Sentence,Noun_Phrase,Rem),
  vp(Rem,Verb_Phrase,[]).

np([X|T],np(det(X),NP2),Rem):-
  det(X),
  np2(T,NP2,Rem).

np(Sentence,Parse,Rem):- np2(Sentence,Parse,Rem).

np(Sentence,np(NP,PP),Rem):-
  np(Sentence,NP,Rem1),
  pp(Rem1,PP,Rem).

np2([H|T],np2(noun(H)),T):- noun(H).

np2([H|T],np2(adj(H),Rest),Rem):- adj(H),np2(T,Rest,Rem).  

pp([H|T],pp(prep(H),Parse),Rem):-
  prep(H),
  np(T,Parse,Rem).

vp([H|[]],verb(H),Rem):-
  verb(H).

vp([H|Rest],vp(verb(H),RestParsed),Rem):-
  verb(H),
  pp(Rest,RestParsed).

vp([H|Rest],vp(verb(H),RestParsed),Rem):-
  verb(H),
  np(Rest,RestParsed).

det(the).
noun(cat).
noun(mat).
verb(sat).
prep(on).
adj(big).
adj(fat).
adj(comfy).

我已经阅读了其他一些文章,但是我仍然不确定我哪里出错了。

检查np ppvp是否正常工作,我正在使用电话; np([the,cat,sat,on,the,mat],O,L).pp([on,the,mat],P,L).vp([the,cat,sat,on,the,mat],O,L).。一个呼叫出现错误ERROR: Undefined procedure: vp/3 (DWIM could not correct goal),这3个呼叫都是相同的错误,唯一的区别是vp/3np/3pp/3

期望的目标是使用调用sentence(some_sentence),并使程序输出np ppvp的结果。

0 个答案:

没有答案