【开源】一个基于智能问答的聊天机器人实现

【技术讲堂开课啦】人工智能商业化应用是下一个风口,机器学习算法很枯燥,进阶高级遥遥无期,怎么办?学习“阿里云机器学习算法应用实践”公开课,10月27日20:00~21:00,阿里云产品经理教你构建专业体系,点击文末“阅读原文”进行学习~


智能问答应当是未来智能化发展中人机交互的主要方式,目前无论是在开源社区或者企业应用中,都有广泛的应用。

项目名称是Iveely.Brain,本次源码可以在Github的这里下载,,是主要用于聊天服务的一个项目,本次开源版本的示例如下所示:

整个开源版本分为两种模式:本地模式和远程模式。本地模式是开发环境的调试模式,主要用于测试准确性问题;远程模式主要应用于正式线上环境,通过TCP(默认端口8001)的方式提供对外服务(也可改为restful API的形式)。智能问答的核心在于聊天语料和知识推理两个部分,由于知识推理涉及到数据分析以及知识图谱的构建,因此本次开源版本重点在于聊天语料库。当您下载源码之后,可以通过修改corpus中的example.aiml改进聊天语料,如下图所示:

AIML格式是一种人工智能标记语言,聊天语料主要包括如下几种类型:

(1) 直接匹配模式

<category> <pattern>你好</pattern> <template>你好!</template> </category>

此种模式将会在命中“你好”之后直接返回“你好!”。

(2) 随机匹配模式

<category> <pattern>今天天气真好</pattern> <template> <random> <li>是呀,天气不错。</li> <li>要不出去走走?</li> <li>希望每天天气都这么好!</li> </random> </template> </category>

随机模式在命中Pattern之后,将会从template中的li元素中随机选择一条返回。

(3) 记忆替代模式

<category> <pattern>你好,我是*</pattern> <template>你好,很高兴认识<star index="1"/>。 </template> </category>

记忆替代模式,将会在template中替换star,例如在问“你好,我是刘凡平”的时候,则“”指向的内容是“刘凡平”,则返回结果为“你好,很高兴认识刘凡平“。表示取用户模糊匹配的第一个号的内容。

(4) 递归推理模式

<category> <pattern>您好,我是*</pattern> <template> <srai>你好,我是<star index="1"/>。 </srai> </template> </category>

递归模式采用”srai“标识,表示不直接返回答案,而是将问题替换为另外一个问题继续寻找。例如用户问”您好,我是刘凡平”的时候,template中将会替换为”你好,我是刘凡平“的问题,这个问题将会再次在AIML中进行匹配,直至直接返回结果”你好,很高兴认识刘凡平“。

(5) 约束匹配模式

<category> <pattern that="你好">你好啊</pattern> <template> <random> <li>你好,我们刚刚说过一遍了。</li> <li>你好,客气啥!</li> </random> </template> </category>

上述示例中,并不会直接命中”你好啊“,而是在上一次是匹配的”你好“,当又匹配了”你好啊“才会命中上述category,即上次和当前次的连续匹配。

扩展

上述过程是按照传统的方式进行模式匹配,聊天语料库的构建是一个复杂的过程,可以通过互联网的数据进行分析,借助分布式计算平台分析有效数据,形成新的语料库,将聊天机器人的后端服务扩展。在补充内容源以及加入知识图谱相关的分析之后,可以将该服务应用于移动客户端,改造后的结果如下图所示(对话图中,左边为聊天机器人,右边为用户的提问):

Iveely Brain是Iveely搜索引擎下基于上下文搜索服务的应用,交互式搜索以及精准性问答是搜索引擎在未来一段时间中的发展趋势,目前行业中出现了不少聊天机器人,但是真正能够把聊天机器人做好的要么是大型互联网公司(Facebook、百度等一类),要么是占据行业优势的企业(银行、政务等一类)。Iveely是“I void everything,except love you!”的简写,包括了Iveely.Computing\Iveely.Database\Iveely.Framework等,或者直接在Maven中搜索“iveely”获得对项目的直接使用。

最后,谢谢一直对Iveely搜索不断关注的同学!

原文:http://www.cnblogs.com/liufanping/p/5879822.html 作者:Iveely Liu

原文发布于微信公众号 - 人工智能头条(AI_Thinker)

原文发表时间:2016-10-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏无原型不设计

UI / UX设计师如何玩转用户心理学原理?

以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具。 ? 众所周知,心理学在APP的用户体验设计中起着非常...

3307
来自专栏贾老师の博客

【笔记】抽象泄漏

1083
来自专栏PPV课数据科学社区

对5种主流编程语言的吐槽

接下来要为大家,介绍五款让我又爱又恨的编程语言! 不可否认,想要成为一名优秀的程序员确实是需要掌握多种编程语言。通过这几年的自虐式学习,我也慢慢的掌握了这些编程...

49010
来自专栏Java学习网

程序员面试技巧总结

程序员面试技巧总结 闲聊 在深入代码之前,大多数面试官喜欢聊聊你的背景。他们想知道: 你对编码认知。你是否知道如何编写好代码? 个人能力/领导力。你是否经历过...

2486
来自专栏python小白到大牛

一行代码结果叹为观止,能做到这么极致的也只有python了

Python 这门语言非常的有趣,不仅可以做高大上的人工智能、大数据、机器学习。还可以用来做 Web、爬虫。还有其它很多的应用。今天我就给大家展示下一行 Pyt...

1463
来自专栏编程

设计模式六大原则(3):依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过...

1857
来自专栏阮一峰的网络日志

几种计算机语言的评价

今天在网上看到一篇《Eric Raymond对于几大程序开发语言的评价》。 我对编程懂的很少,一直想加强学习,就把它转贴过来了。 我的感受是学习程序语言,一定必...

3514
来自专栏程序人生

如何用正确的姿势打开 TDD?

TDD(Test Driven Development)一直是程序界追求的一种开发境界。要想真正做到对项目有帮助的 TDD,并不是一件容易的事情。我见过不少团队...

28710
来自专栏程序员互动联盟

编程大牛都有哪些基本功

第一部分:什么是基本功 先说说我所理解的基本功是什么:在讨论,计划,工作,策略以及其他一切相关于这个事物的活动时候,可以不用拿出来讨论的“技能”,但是却又是必...

4056
来自专栏子勰随笔

基于命令行的照片整理及查看工具

1655

扫码关注云+社区

领取腾讯云代金券