如何解决Python NLTK ResolutionProver 找到了一个解决方案,而实际上没有
我有这样的格式规则“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 举报,一经查实,本站将立刻删除。