prolog - Prolog:未捕获的异常:错误(existence_error(procedure,s/3),top_level/0)
问题描述
我知道以前有人问过这个问题,但我仍然无法弄清楚出了什么问题。我正在尝试创建一个 DCG,它可以处理主语/宾语区分、单数/复数区分、能够生成解析树并使用单独的词典。
我有这个代码:
lex(the,det,_).
lex(a,det,singular).
lex(man,n,singular).
lex(men,n,plural).
lex(apple,n,singular).
lex(apples,n,plural).
lex(eat,v,plural).
lex(eats,v,singular).
lex(i,pronoun,singular,subject).
lex(we,pronoun,plural,subject).
lex(me,pronoun,singular,object).
lex(us,pronoun,plural,object).
lex(you,pronoun,_,_).
lex(he,pronoun,singular,subject).
lex(she,pronoun,singular,subject).
lex(him,pronoun,singular,object).
lex(her,pronoun,singular,object).
lex(they,pronoun,plural,subject).
lex(them,pronoun,plural,object).
lex(it,pronoun,singular,_).
s(s(NP, VP), Q, P) --> np(NP, Q, P), vp(VP, Q).
np(np(DET, N), Q, _) --> det(DET, Q), n(N, Q).
np(np(PRONOUN), Q, P) --> pronoun(PRONOUN, Q, P).
vp(vp(V, NP), Q) --> v(V, Q), np(NP, _, object).
vp(vp(V), Q) --> v(V, Q).
det(det(W), Q) --> [W], {lex(W, det, Q)}.
pronoun(pronoun(W), Q, P) --> [W], {lex(W, pronoun, Q, P)}.
n(n(W), Q) --> [W], {lex(W, n, Q)}.
v(v(W), Q) --> [W], {lex(W, v, Q)}.
当我用 s(X,[he,eats,the,apple],[]) 测试它时。我想得到输出 X = s(np(pronoun(he,singular,subject)), vp(v(eats,singular),np(det(the,singular),n(apple,singular,object))) )。
但是我得到了错误,未捕获的异常:error(existence_error(procedure,s/3),top_level/0)。和错误:未定义的过程:s/3 但是,有定义:s/5
错误:流用户输入:6:1 语法错误:文件意外结束
我尝试将其更改为
s(s(NP, VP)) --> np(NP, Q, P), vp(VP, Q).
但后来我得到输出: X = s(np(pronoun(he)),vp(v(eats),np(det(the),n(apple)))) 我不知道我在哪里出错了。任何建议表示赞赏。
解决方案
使用phrase/2
接口谓词调用 DCG:
?- 短语(s(A,B,C), [he,eats,the,apple])。 A = s(np(代词(he)), vp(v(eats), np(det(the), n(apple)))), B = 单数, C = 主题; 错误的。
推荐阅读
- yugabyte-db - YugabyteDB 中的最大表大小?
- reactjs - jsx-pdf :根元素必须解析为
, 实际上解析为 undefined - python - “[ERROR] OSError: [Errno 38] Function not implemented” - 通过 Lambda 访问趋势 deepsecurity.ComputersApi
- typescript - 如何将一个函数的返回类型用作另一个函数的参数类型?
- blazor - ASP.NET Core Blazor Server 其他安全方案
- vue-component - 找不到与路径匹配的位置 - Vue 3 + Vue Router 4
- python - dask.bag.read_text 中的 files_per_partitions 关键字
- unity3d - 如何调试 AnchorStatus “NotLocatedAnchorDoesNotExist”?
- rust - 限制超级服务器中的并发传入连接数
- prestashop - 未定义索引:从 1.7.7.5 更新到 1.7.7.7 后出现属性价格错误