浅析聊天机器人的技术和前景
最近利用业余时间,团队开发了一个简单的聊天机器人雏形( 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、尝试一些简单的语义识别和回复。