需要帮助来理解Jurafsky和Martin给一个简单的聊天机器人的解释

时间:2018-07-30 02:34:55

标签: python regex chatbot

我正在尝试通过Jurafsky&Martin的语音和语言处理工作。他们的练习之一是“使用替代来实现类似ELIZA的程序”。他们的建议答案如下:

import re, string
patterns = [
(r"\b(i’m|i am)\b", "YOU ARE"),
(r"\b(i|me)\b", "YOU"),
(r"\b(my)\b", "YOUR"),
(r"\b(well,?) ", ""),
(r".* YOU ARE (depressed|sad) .*",
r"I AM SORRY TO HEAR YOU ARE \1"),
(r".* YOU ARE (depressed|sad) .*",
r"WHY DO YOU THINK YOU ARE \1"),(r".* all .*", "IN WHAT WAY"),
(r".* always .*", "CAN YOU THINK OF A SPECIFIC EXAMPLE"),
(r"[%s]" % re.escape(string.punctuation), ""),
]
while True:
    comment = raw_input()
    response = comment.lower()
    for pat, sub in patterns:
        response = re.sub(pat, sub, response)
        print response.upper()

我不知道它是如何工作的(当我在python中尝试时,它不起作用),因为它只会在模式中循环遍历每个元组,并且如果“ pat”不匹配任何内容,它将只需打印出用户一次又一次输入的内容即可。

我觉得可能有一个(半)简单的修复程序,但我无法弄清楚。

0 个答案:

没有答案