如何使用宏变量定制NLTK聊天机器人的响应(Python)

时间:2018-03-14 15:44:11

标签: python chat nltk chatbot

我一直在使用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和其他命令/函数中结合使用宏变量?

谢谢!

0 个答案:

没有答案