ELIZA 是一个计算机程序,并且是原始自然语言处理的一个早期例子。ELIZA 通过处理用户对脚本的响应来运行,其中最著名的是 DOCTOR,这是一个罗杰·尼尔森心理治疗师模拟。几乎不使用有关人类思维或情感的信息,DOCTOR 有时提供了惊人的类似人类交互。ELIZA 是由 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
单入口点!使用 TGPChatBot
包装器,您只需要提供(与项目一起提供的)BBSCHAT.txt
// TGPChatBot * elisa;
self.eliza = [[TGPChatBot alloc] init];
...然后与 Eliza 聊天的界面如下
// NSSting * input = textField.text;
NSString * output = [self.eliza talk:input];
TGPChatBot
设计为只对传入的消息做出响应,绝不会发送未经请求的消息。因此,第一个传入的 -talk:
消息被忽略,仅仅引发问候。
这就结束了。
如果您更喜欢对 Eliza 聊天机器人有更多控制,您可以直接使用它而无需使用包装类。
[[TGPEliza alloc] init]
创建一个新的 TGPEliza 实例
- (void)read_script:(NSString *)filePath
使用您自己的脚本初始化 TGPEliza。遵循原始 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
典型的交流。