最近写了一个聊天机器人,叫小笼包,一是为了好玩,二是可以做客服,帮我管理下我之前找低估楼盘的项目的客户。
开始的时候,先玩了一圈市面上的AI聊天机器人,发现话都说不好的太多了。别说回答问题和上下文了。那么基于以上,我开始着手自己写了一个。
我们来看几个例子:
比较出名的有微软cortana,siri, 国产的有小黄鸡,和小i
从单句解析上,效果都还不错。单是多重对话表现非常不尽如人意。
我们作为人类,我们能够理所当然的联想,来对缺省的语法做补充或替换。
如:
同义替换:姚明身高多少,那郭敬明呢-》郭敬明身高多少 主宾省略:你会游泳吗,那擅长吗-》你擅长游泳吗 主语省略:郭敬明是作家吗,写过什么书-》郭敬明写过什么书 宾语省略:你喜欢玩狼人杀吗,那小明会玩吗-》小明会玩狼人杀吗 定语补充:你喜欢项链吗,那男友送的吗-》你喜欢男友送的项链吗 主谓省略:你喜欢什么(回答:电脑),怎么样的电脑-》你喜欢怎么样的电脑
但是对机器来说这十分困难。造成现在市面上的机器人上下文能力都很缺失。
我虽然在一定程度上实现了这个弱记忆系统,但本质上和人类还是有差距的。因为上述所有句子都是简单句,我们看看我的机器人在简单句的上下文识别上可以做出哪些正确判断:
上述测试用例可以全过:
这些测试用例过了,不代表他真的可以解决所有上下文分析。因为这个算法本身的局限性。(会在第六部分,技术实现上讲)
这个记忆系统主要用于处理,用户在和客服交流的时候,其实会暴露一些信息偏好,我希望可以有效的记录这些偏好。那么从最简单的入手。比如我告诉聊天机器人,我喜欢苹果。过了很久后,我问他我喜欢什么,他可以告诉我,你喜欢苹果。类似于这样的在线学习。
人和人的聊天其实除了抒情就是信息交换了。那么我们来看看小笼包的长期记忆系统。
这个记忆系统,只能简单的记住一些信息。和短期记忆系统一样,不会有推理能力。只能叠加记忆,像上述图片一样。但是不能推理。
比如,我不吃苹果因为苹果很酸——》我喜欢苹果吗,机器人是回答不上来的。
这里用的都是别人的轮子,拿来和我的机器人集成一下。
1. 支持定向群发图片,分享,文件,语音,名片(包括所有好友,一个或多个好友,一个或多个群聊,用备注名或群聊名,用逗号隔开)如向客户一群,客户二群群发。
下面我用向自己群发来展示:
2. 支持定时任务(如每晚11点给好友发晚安,每年生日的时候自动发祝福,每周三和周五自动向群发群纪律介绍等)定时任务支持,查询发送状态,和中途停止任务。
别乱用,消息轰炸会被拉黑。
(最多发送次数)向{谁(可以是多个人或群)}定时(taskcron with ,)发送{内容}
3. 支持起自定义任务(当一种对话是重复的,可以写进自定义模板里)
如:
上述任务就是说,先问王涛,小张要不要订餐,然后收集他们的回复,(回复数字1-5就是要,10分钟不回或者没回数字就是不要)随后发给店老板,如果店老板的回复里含有,没有,抱歉,不好意思,换的意思。则任务失败。否则会告诉主人任务成功。订餐完成。订餐成功失败都会告诉主人(任务发起者),并且返回聊天记录。
很多时候说话是有固定模式的,那么就可以写进文件里,机器人会自动去做。
我这里把发送者全改为自己,来演示下这个流程:
用Q。。。,A。。。的形式:
写累了之后会更新完的。