【发布时间】:2015-01-19 23:06:44
【问题描述】:
给定一个字符串的解析树,我的目标是更新我的知识库。
来自一个可变长度的句子,如下所示:
"node 1 is near node 2 that is near node 3 that is near node 4 that..."
在我的表示中变成了句子的解析树表示,例如:
s(desc(np(noun(node),id(1)),vp(verb(is),prep(near),np(noun(node),id(2),rel_clause(rel(that)...
我想从中提取和断言以下信息:
edge(1,2),edge(2,3),edge(3,4).
我怎样才能实现这个目标?
我试图用类似的方法处理一些案件
:- dynamic edge/2.
extract(T):- T= s(desc(np(noun(node),id(A)),vp(verb(is),prep(near),np(noun(node),id(B)))),
assert(edge(A,B)).
extract(T):- T= s(desc(np(noun(node),id(A)),vp(verb(is),prep(near),np(noun(node),id(B),rel_clause(rel(that)...
等 但我想管理潜在的无限句子。
我正在使用 SWI-prolog。
编辑: 我输入的解析树的完整示例:
desc(np(noun(node), id(1)), vp(verb(is), prep(near), np(noun(node), id(2),
rel_clause(rel(that), vp(verb(is), prep(near), np(noun(node), id(3),
rel_clause(rel(that), vp(verb(is), prep(near), np(noun(node), id(4)))))))))
【问题讨论】:
-
能否请您拼出一个完整的示例,其中包含
rel_clause,以便清楚您的结构是什么? -
添加了一个可能的输入
标签: prolog