ELIZA对话程序

系列文章见: 《回忆AI时代-从图灵机到人工智能》

ELIZA是规则驱动的对话程序,由Joseph Weizenbaum在1964–1966年开发,ELIZA是人工智能发展史上的一个重要里程碑是最早展示人机自然语言对话可能性的程序之一,它代表了符号主义(规则驱动 AI)的早期成果,虽然它没有真正的语言理解能力,但证明了人机自然语言对话是可行的,也启发了后来的聊天机器人研究。

ELIZA主要的工作原理:

  • 关键词匹配(Keyword Matching)
  • 模式匹配(Pattern Matching)
  • 模板回复(Template Response)

用一个Python来解释它的工作原理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import re

rules = [
(r"I feel (.*)",
"Why do you feel {}?"),

(r"I need (.*)",
"Why do you need {}?"),

(r"My (.*)",
"Tell me more about your {}."),

(r".*",
"Please go on.")
]

while True:
text = input("You: ")

if text == "quit":
break

for pattern, reply in rules:
m = re.match(pattern, text, re.I)
if m:
if m.groups():
print("ELIZA:", reply.format(m.group(1)))
else:
print("ELIZA:", reply)
break

运行效果:

1
2
3
4
5
6
7
8
You: I feel tired
ELIZA: Why do you feel tired?

You: My father is strict
ELIZA: Tell me more about your father is strict.

You: Hello
ELIZA: Please go on.