首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pyswip检索prolog知识库

如何使用pyswip检索prolog知识库
EN

Stack Overflow用户
提问于 2021-09-26 22:17:18
回答 1查看 47关注 0票数 0

我想使用语音命令来搜索我的prolog知识库,我使用pyswip,它是有效的,但我必须为每个可能的查询写一个if语句,我有一个超过100行的巨大知识库,如果我这样做,我将不得不写超过100个if语句。我想知道的是有没有更好的方法。例如,我可以编写一个语音激活的函数,它只是放置要搜索的查询,并说明搜索返回的内容

我的意思是,如果我必须为所有事件编写这段代码,那么使用pyswip就没有意义了:

代码语言:javascript
复制
if "son" in commands:
    test12 = list(prolog.query("father(michael, B)"))
    print(test12)
elif "daugher" in commands:
    test12 = list(prolog.query("father(dory, B)"))
    print(test12) 

现在我已经尝试了这样的东西:

代码语言:javascript
复制
def prolog_search(A, B):
    value1 = '('
    value2 = ', '
    value3 = 'X'
    value4 = ')\"'
    value5 = '\"'
    tot_value = value5 + A + value1 + B + value2 + value3 + value4
    tot_value = str(tot_value)
    print(tot_value)
    # tot_value would be "asd(sa, B)"
    test12 = list(prolog.query(tot_value))
    #test12 = list(prolog.query())
    print(test12)

prolog_search("asd", "sa") 

理论上是以后用实际语音替换"asd“和"sa”,但现在我不能让它运行。

运行此命令后,我得到以下错误:

代码语言:javascript
复制
raise PrologError("".join(["Caused by: '", query, "'. ", pyswip.prolog.PrologError: Caused by: '"asd(sa, X)"'. Returned: 'error(type_error(callable, b'asd(sa, X)'), context(/(pyrun, 2), Variable(74)))'. 

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-26 23:10:05

忘记添加

代码语言:javascript
复制
prolog.consult("knowledgebase.pl")

在开始的时候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69339386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档