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

摘要:
智能问答应当是未来智能化发展中人机交互的主要方式,目前无论是在开源社区或者企业应用中,都有广泛的应用。本地模式是开发环境的调试模式,主要用于测试准确性问题;远程模式主要应用于正式线上环境,通过TCP的方式提供对外服务。智能问答的核心在于聊天语料和知识推理两个部分,由于知识推理涉及到数据分析以及知识图谱的构建,因此本次开源版本重点在于聊天语料库。

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

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

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

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

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

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,例如在问“你好,我是刘凡平”的时候,则“*”指向的内容是“刘凡平”,则返回结果为“你好,很高兴认识刘凡平“。<star index=”1”/>表示取用户模糊匹配的第一个*号的内容。

(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,即上次和当前次的连续匹配。

扩展

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

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

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

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

免责声明:文章转载自《【开源】一个基于智能问答的聊天机器人实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇分布式环境下基于redis解决在线客服坐席动态分配的问题JFreeChart画折线图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python将被加入高考科目?你怎么看?

今天看到这样的一则新闻:不禁感叹,人工智能这股风来的太快,已经掀起全民学习Python的浪潮。 2017年中观察:看上去这个大纲内容基本是这样了,但是实行年份可能要往后推了,不在2017年执行了(据说技术科目的另一部分,通用技术,也在进行教改)。 2017年初消息:浙江省信息技术新教材,即将在2017级(2017年9月入学)高中新生中开始使用。 据了解,与...

[转]几个常见的语音交互平台的简介和比较

1.概述 最近做了两个与语音识别相关的项目,两个项目的主要任务虽然都是语音识别,或者更确切的说是关键字识别,但开发的平台不同, 一个是windows下的,另一个是android平台的,于是也就选用了不同的语音识别平台,前者选的是微软的Speech API开发的,后者则选用 的是CMU的pocketsphinx,本文主要将一些常见的语音交互平台进行简单的介绍...

“FPGA+云"助力高性能计算

用AI防鲨鱼、用AI学写中国书法、用AI预测人类死亡时间、用AI审判罪犯……在人工智能方兴未艾的今天,越来越廉价和普及的AI领域真的是什么都不值钱,除了想象力。那在这无所不能的AI盛世,一定没道理让算力限制我们的想象力,更没道理让算力限制了我们的生产力。 从CPU到CPU+,从+GPU到+FPGA 随着通用处理器(CPU)的摩尔定律已入暮年,从美国的微...

人工智能?.netcore一样胜任!

提起AI,大家都会先想到Python,确实Python作为一门好几十年的老语言,上一波的AI大流行使它焕发了青春。大家用Phtyon来做AI,最主要的原因无非就是编码量更少,很多数学和AI相关的Api都是现成的。但是随着ML.net的问世,我们现在可以在.netcore平台上使用比Python更少的代码来实现AI的功能了。 ML是Machine Learn...

如何通过7个步骤构建机器学习模型

  如何通过7个步骤构建机器学习模型      组织构建一个可行的、可靠的、敏捷的机器学习模型来简化操作和支持其业务计划需要耐心、准备以及毅力。      各种组织都在为各行业中的众多应用实施人工智能项目。这些应用包括预测分析、模式识别系统、自主系统、会话系统、超个性化活动和目标驱动系统。每一个项目都有一个共同点:它们都基于对业务问题的理解,并且数据和机器...

自动写文章的智能软件(基于AI写作)

今天,我们想和你分享一个可以自动写原创文章的软件,理论是基于人工智能科学家乔姆斯基变换生成语法,我是基于这个AI写作进行封装的。发展的原则其实很简单。它与互联网上人工智能平台的应用编程接口接口,实现了自动写文章的功能! 软件使用的文章渲染算法也是基于:乔姆斯基变换生成语法,效果还是不错的!通过这个软件,你每天可以生成数万篇文章,这些文章应该是超越文字和原创...