【发布时间】:2018-03-14 15:44:10
【问题描述】:
我一直在使用 Python 中的 NLTK 包,特别是 nltk.chat.util。
通过定义我的pairs 例如,我已经能够创建一些简单的聊天机器人。如果你说“嗨”,聊天机器人会回复“嗨”或“你好”:
pairs = (
(r'Hi',
("Hey",
"Hello")
)
)
这里一个有用的特性是你可以使用通配符和宏变量,例如:
pairs = (
(r'My name is (.*)',
("Hey %1",
"Hello %1")
)
)
因此,如果我说“我的名字是 Grace”,它会返回“Hey Grace”或“Hello Grace”。
我想要做的是一些很酷的宏变量。我的目标是让聊天机器人根据我输入的内容向我读取文件的某一行。我想要的代码是:
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中的宏变量的使用与其他命令/函数结合起来?
谢谢!
【问题讨论】: