我一直在使用Python中的NLTK包,特别是nltk.chat.util
。
我已经能够通过定义pairs
来创建一些简单的聊天机器人。如果你说'嗨',聊天机器人会说'嘿'或'你好'回来:
pairs = (
(r'Hi',
("Hey",
"Hello")
)
)
这里有用的功能是您可以使用通配符和宏变量,例如:
pairs = (
(r'My name is (.*)',
("Hey %1",
"Hello %1")
)
)
所以,如果我说'我的名字是格蕾丝',它会回归'嘿格蕾丝'或'你好恩惠'。
我希望能做的是宏变量的一些很酷的东西。我的目的是让聊天机器人根据我输入的内容读取文件的某一行。我想要的代码是:
ExpP = open("ExpensePolicy.txt", "r")
pairs = (
(r'Read me line (.*) of the expenses policy',
(ExpP.readline(%1),
"No")
)
)
但是当%1
从引号中取出时,它不再将其识别为变量。此外,当它在函数内部的引号内时,它只是将其视为字符串"%1"
。
我试图做的另一件事是更改宏变量的第一个字母。因此,如果有人输入'你很有趣','有趣'是%1
,我希望聊天机器人返回'你是小姐'(例如)。我尝试使用%1.replace(%1[:1], "p")
,但同样,它不喜欢使用%1
。
有没有办法在nltk.chat.util
和其他命令/函数中结合使用宏变量?
谢谢!