问题描述
我有这样的格式规则“if A&B then C”:如果b is_man和s issister_of b,然后 b 是 s 的兄弟
我添加了一个事实,即 is_man(luc) 并且我请求 brother_of(b,leia)
是否有任何“b”我希望答案是否定的,因为并没有说 leia 是 luc 的妹妹,所以在我的规则中“如果 A&B 则 C” B 部分不正确,但 ResolutionProver 出人意料地回答'卢克' ??!?
import nltk.inference
rexp = nltk.sem.Expression.fromstring
p1 = rexp('is_man(luc)')
p2 = rexp('(is_man(b) & sister_of(s,b)) -> brother_of(b,s)')
answer = rexp('brother_of(b,leia) -> ANSWER(b)')
tp = nltk.ResolutionProverCommand(None,[p1,p2,answer])
if list(tp.find_answers()):
for ans in list(tp.find_answers()): print(ans,end=' ')
else: print('No answer')
它不应该回答 Luc 而是 False,我怎样才能得到 False ?并且只有在我另外声明sister_of(leia,luc) 时才得到'luc'。谢谢!
PS:有关信息,这里是证据:
[1] {is_man(luc)} A (that is p1)
[2] {-is_man(z368),-sister_of(z369,z368),brother_of(z368,z369)} A (that is p2)
[3] {-brother_of(z370,leia),ANSWER(z370)} A (that is answer)
[4] {-sister_of(z369,luc),brother_of(luc,z369)} (1,2) (combination of 1 & 2)
[5] {ANSWER(z370),-is_man(z370),-sister_of(leia,z370)} (2,3)
[6] {-sister_of(leia,ANSWER(luc)} (1,5)
[7] {-sister_of(leia,ANSWER(luc)} (3,4)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)