ELIZA
ELIZA是一个计算机程序,是原始自然语言处理的一个早期例子。ELIZA通过处理用户对脚本的反应来工作,其中最著名的是DOCTOR,一个罗杰斯派心理治疗师的模拟。几乎不使用关于人类思维或情感的信息,DOCTOR有时提供了惊人的类似于人类的互动。ELIZA由马萨诸塞理工学院(MIT)的约瑟夫·魏森鲍姆(Joseph Weizenbaum)于1964年至1966年间编写。当“病人”超越非常小的知识库时,DOCTOR可能会提供一种通用的回应,例如,用“我的头疼”来回应“你为什么说你头疼?”对于“我妈妈恨我”的可能回应是“还有谁在你家里恨你?”ELIZA使用简单的模式匹配技术实现,但有几个用户对此认真起来,甚至在他们弄清楚它是如何工作之后也是如此。它是最早的聊天机器人之一。
示例对话
Hi there.
-- so how are you doing today?
not bad, how about yourself?
-- why do you ask?
I am just curious!
-- how long have you been just curious?
etc.
高级使用方式
- (NSString *)talk:(NSString *)text
单个入口点!使用ChatBot
包装器,您只需提供(项目提供的)BBSCHAT.txt
// ChatBot * elisa;
self.eliza = [[ChatBot alloc] init];
...然后与Eliza聊天看起来就像这样
// NSSting * input = textField.text;
NSString * output = [self.eliza talk:input];
ChatBot
是为专门响应传入的消息而设计的,绝不发送未经请求的消息。因此,第一条传入的-talk:
消息被忽略,仅触发问候。
就这么多。
低级使用
如果您更喜欢对Eliza Chatbot有更多控制,您可以直接使用它而不是wrapper类。
[[Eliza alloc] init]
创建Eliza的新实例。
- (void)read_script:(NSString *)filePath
使用您自己的脚本初始化Eliza。遵循原始ELIZA脚本格式。
; FORMAT:
; Sxxxxxxxxx - DEFINE SIGNON MESSAGE
; Txxxxx
; Txxxxx - DEFINE PAIR OF WORDS TO TRANSPOSE
; Nxxxxx - RESPONSE FOR NULL ENTRY
; Mxxxxx - DEFINE RESPONSE FOR LATER USE OF "MY"
; Xxxxxxx - DEFINE RESPONSE FOR NO KEYWORD FOUND
; Kxxxxxx - DEFINE KEYWORD
; Rxxxxxx - DEFINE RESPONSE FOR PREVIOUS KEYWORD
- (NSString *)greet_eliza
返回问候消息。
- (NSString *)chat_with_eliza:(NSString *)message
一次典型的对话。