RASA智能聊天机器人,理论与技术
一,智能聊天机器人
一种通过自然语言模拟人类进行对话的程序可以代替企业中相对固话、重复的人力密集型任务或流程
-问题咨询:基于业务知识库进行业务问题解答
-数据检索:纵跨各业务系统或数据库,检索数据或文档
-业务处理:对接相关业务系统转达指令,完成相应业务操作
典型业务场景∶-业务咨询问答机器人、智能客服机器人、行政助理机器人、产品推荐机器人
….对外提供客户服务,对内进行业务辅助智能化的机器人可以带来全方位的效能提升,降本增效------------------------------------------------------------------------------
聊天机器人的本质:会话式UI
提供了一种新的交互方式:会话式UI(CUI,ConversationalUserInterface)会话式UI:通过会话形式将已有数据、功能、服务展示给用户目前聊天机器人分为两大类:基于检索 VS 生成模型
.尽管目前生成式模型是学术界的研究热点,但是在实践中使用检索模型是更加合适的选择
-------------------------------------------------------------------------------
趋势:会话式UI与业务集成
由于具有高度一致的基础:--交互媒介(基于自然语言)
--交互模式(聊天会话)
不同系统的CUI具有高度可集成性业务会话式UI集成,一统各类业务系统,打造专属业务助理----问题咨询、数据查询、指令执行、个人行政业务支持等等
二,机器人核心技术
聊天机器人最核心部分是对话引擎,对话引擎包括:自动语音识别(ASR)自然语言理解(NLU)对话管理(DM)自然语言生成(NLG)文本到语音合成(TTS)本质是自然语言处理技术(NLP,NaturalLanguageProcessing)--研究如何让计算机读懂人类语言,既要能让计算机理解自然语言文本的意义,也能以自然语言文本来表达给定的深层的意图、思想等。
--自然语言(中/En)→模型→机器能处理的数据形式(向量)
--模型通常经机器学习在大量数据基础之上归纳得到,反应了领域数据的规律
--向量中每个数值的大小、顺序编码了自然语言的语义信息
--基于NLP,计算机可以计算文本的相似度、提取其中关键信息、进行文本分类等
机器人原理
智能机器人是由多个子机器人(问答机器人,闲聊机器人,任务机器人等),人工后台以及文档库之间协作完成任务,最终选择最有答案进行返回
------------------------------------------------------------------------------
QA机器人
假设用户输入问题为Q,QA数据库中的QA对为(Q1,A1)(Q2,A2)……(Qn,An)QQ相似度计算:计算Q’与每个QA对中问题的相似程度QA匹配度计算:计算Q’与每个QA对中答案的匹配程度综合相似度和匹配度,找到最合适的一组QA对(Qi,Ai)本质:基于检索的问答模型
核心问题:文本语义相似度问题
文本相似度
解决1:
NN模型(RNN/CNN)
双层编码(Decoder)的长短期记忆模型(LSTM)
需要一定文本数量
解决2:
拆分成子问题(小规模语料)
短文本语义表征(TF-IDF,word2vec)
语义距离计算(余弦COS,Feed-forwardNN)
QA机器人原理(QQ匹配)
原理:句向量化、相似度计算、相似度排序
word2vec------词向量化
doc2vec,bert-----句向量化
simbert---句子相似度
-------------------------------------------------------------------------------
闲聊机器人原理
闲聊机器人:主要是进行客观话题讨论,用户对聊天机器人进行一些情感表达,回答问候,情感和娱乐等信息
基于预置规则匹配:公司合规用语要求基于海量闲聊语料:满足大多数闲聊应答可以用文本生成,对于回答的准确没什么要求
需求:简单闲聊,结果可控,快速开发
任务机器人原理
任务机器人(Task-Bot):基于意图识别与语义槽提取的任务机器人
意图识别关键参数提取多轮会话&对话管理 配置化对接外部系统多轮会话—用插槽slot实现-----location,time时间地点都满足才会提交这个插槽
任务机器人原理:
意图识别设置可能问法槽值提取设置槽值和提示问法触发任务返回值提取和返回答案多轮对话上下文自动补全话题追踪---------------------------------------------------------------------------
场景机器人原理
基于预置规则驱动完成场景任务事先根据业务制定好的,引导
KG机器人原理
基于知识图谱推理给出结果,也是基于检索机器人的一种
定义领域知识图谱模型提取表单条款导入知识图谱分析查询转换,图查询---------------------------------------------------------------------------智能客服机器人 财富智能助手机器人 保险智能机器人 AIOps运维机器人
文章内容未更新完,会持续更新,个人理解。
浅析聊天机器人的技术和前景
最近利用业余时间,团队开发了一个简单的聊天机器人雏形(http://robot.ly863.com)。对聊天机器人的技术和前景有了简单的了解。大概的整理下,期望与大家分享和交流,能在这个领域内进一步的发展,能把聊天机器人做的更加完善。
目前聊天机器人的大概水平:
国内外目前聊天机器人我们认为最先进的应该非苹果的siri莫属。从效果上来看siri会有很好的知识匹配,同时有一定的自动学习功能,同时有简单的上下文理解功能。在体验度上使用了语音识别和自然语音两个功能,很好的让聊天机器人有更高的用户体验。关于语音识别和自然语音功能不在我们讨论范围,本文主要讨论聊天部分的功能。目前最成熟,最可以学习和观摩的机器人应该是aliceBot.具体网址:http://www.alicebot.org/ 他使用了AIML一种用来表示语义的XML语料库。通过一问一答的形式来形成机器人的大脑,来决定机器人在什么情况下回答什么问题。为了更好的回答,他规定了一些简单的语法和格式,可以实现简单的随机回复、部分词语的抽取、加入javascrip命令可以完成检索、计算等功能、同时可以做一些简单的上下文匹配的功能。然后通过模式识别,从AIML中寻找最适合的回答,把问题的答案回复给人们。目前最流行的聊天机器人应该非小黄鸡莫属,他使用了韩国人开发的系统,进行了简单的外挂。根据测试和推测,韩国人的机器人应该是简单的模式匹配,甚至要比aliceBot更加弱一些。国内的聊天机器人也有很多款,比如淘宝的千牛,小i机器人等等,当然还有我们开发的小机器人。
目前主流的核心技术和优缺点
1、直接把一问一答写入数据库。
优点:简单易用,任何能写一个动态网站的人就可以写出来。就可以施展一番。
缺点:难以模糊匹配,需要去模仿和模拟大量的语句,少一个字或者多一个字就可能难以匹配,知识库的添加会一个很大的工程,只适合玩玩,不适合聊天。
2、使用AliceBot类似的AIML方式。
优点:开源,任何人都可以下载,了解和学习,甚至可以稍加修改就成为自己的产品。
缺点:aliceBot使用空格进行分词,非常适合西文,但是不适合亚洲文字,所以必须自己写分词库。此外AliceBot有大量的英文语料库,而中文的为空白,即便有,大家也没开源,自己去整理和翻译这些语料库,会累死人的。
3、使用搜索引擎的方式进行检索
优点:可以模糊识别,而且有部分开源的组建可以学习或者拿来主义
缺点:过度的模糊会导致答非所问,同时无法对接命令,只能简单的聊天,而且无法实现随机回答,让人感觉跟搜索引擎一样。
4、目前高端大气上档次未知技术,据推测可以为:神经网络、语义识别、深度学习等等。
优点:你可以展开自己的想象力,推测可以做到有情感,可以上下文理解,懂得语义,可以自己造句,总之更人一样。
缺点:目前真实的产品我没简单过,相信多数人也没看到过。所以技术高深,而且没得参考,研究许久,也许只能写一个不可行报告。
我们认为未来聊天机器人应该具备以下特点:
1、可以通过互联网进行自动学习和获取知识,而非一问一答的方式进行学习。
2、语义化的理解,而非靠词语和词频去匹配
3、有上下文理解功能
4、有一定的情感和情绪
5、有自己造句的能力
6、可以归纳和总结,有自己的知识和观点
概括的说基本上等于人脑,但是比人脑有更快更优秀的学习能力。
如果能达到上述的特点,那么这个机器人可以做以下的事情。
1、迅速建立专家库,成为某个领域的专家,比如医疗、程序等等
2、能更加精准的理解人的需求,取代搜索引擎
3、可以进行情报的整理和分析,进行统计和决策
……
我们的机器人:
用到的技术:
1、中文分词
2、lucene等开源的搜索引擎知识
3、AliceBot类似的模式识别技术
4、自己写的一些语句筛选和过滤算法
5、自己写的命令模块,提取一次词语,执行匹配以外的命令,比如搜索百度,或者执行某个其他程序
6、自己写的一个简单的上下文词语匹配来达到上下文理解(效果很差)
目前我们的缺点:
1、语料库太少,如果语料库足够多,可以做到比aliceBot优秀的效果
2、添加语料库太过麻烦,需要一问一答的形式来添加
3、没有语义识别
4、基本没有很好的上下文识别
5、没有情感识别
6、还有很多缺点,就无法一一列出了
我们正在或者打算做的:
1、增加和完善命令模块,让机器人可以搜索天气、城市、指定搜索信息和未知信息。
2、增加计算模块,让机器人真的懂得数学。
3、我们正在做一个很便捷的语料库获得方式,比如爬虫走过,自己生成问答。
4、我们打算在做一个爬虫,爬去一些权威的资料,然后进行语素统计和语义的简单匹配和识别,企图通过这些信息让我们更好的掌握中文语义,为下一步做出来语义机器人做准备。
5、我们在观察婴儿学习,从根本上理解语义机器人。
我们下一步能做到
目前我们机器人做到的仅仅是词语的匹配和模糊的检索,以及一些小小的技巧和算法,以便让机器人可以更加圆滑的回答,或者挑选最好的回复。我们认为我们简单可以实现的功能:
1、对一些词语进行褒贬赋值,可以实现机器人的情绪积累,进而产生情绪效益。比如你一直说机器人好,机器人对你和蔼,你一直对机器人说坏话,机器人对你不客气。
2、简单的语句分析,可以从一段文章中自己对原话进行分析和匹配,产生语料库。
3、可以加上语音识别和语音播放功能,实现类似siri一般的效果。当然需要借助别人的sdk
4、完善命令模块,不知道的知识可以通过搜索引擎获得知识,比如百度百科、百度知道等等。
5、尝试一些简单的语义识别和回复。
Nonebot QQ机器人插件七:智能聊天机器人
OpenCV数字图像处理基于C++:图像分割梦幻棉花糖:分水岭算法的比喻相当精彩啊,一下就领悟了
OpenCV数字图像处理实战二:模板匹配(C++)guofei9987:缩放的模版可以匹配到吗
NonebotQQ机器人插件一:实时天气获取夏洛特:这咋用阿
NonebotQQ机器人插件五:随机网易云音乐qq_24896281:ffmpeg已安装,环境路径也设置了,但是用record()发送MP3格式的文件就会报错
NonebotQQ机器人插件九:qq群聊天记录词云图聪明的西瓜:按步骤操作完showdatabse为什么没有聊天记录啊