需要帮助理解Jurafsky&Martin对简单聊天的解释吗

2024-10-01 05:03:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习Jurafsky&;的《语音和语言处理》;马丁。他们的练习之一是“使用替换实现一个类似于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”与任何内容都不匹配,它只会一次又一次地打印出用户输入的内容

我觉得可能有一个(半)简单的解决办法,但我想不出来


Tags: reyou内容stringresponsecomment语音are