文档章节

AIML实现智能聊天机器人

北极心
 北极心
发布于 2017/06/02 15:57
字数 813
阅读 687
收藏 2

最近在做个智能聊天机器人『我知道大家肯定要说对接图灵,小黄鸡啊,但是有时候我们需要根据自己的业务和专业领域内的一些东西做智能聊天,那这里又有人说了,用他们的添加词库啊,那我想说的对应自己业务相关的一些动态数据你咋添加.......自行补脑吧,如果您有啥高见欢迎反馈』,经过google baidu的一番搜索发现了一个aiml的智能聊天机器人,当然也在国内找到了一些教程,都写的非常好^_^

首先给大家提供一些资源的下载地址

首先是AIML网址:http://www.alicebot.org/

以及相关下载地址和文档:

http://www.alicebot.org/downloads/programs.html

http://www.geocities.ws/phelio/chatterbean/

另外附上chatterbean的源码 http://pan.baidu.com/s/1o7QwsFS,下载后解压在Sources目录里面

Sources目录里面的源码可直接加入你自己工程,就两个依赖jar  bsh.jar  junit.jar

maven pom如下

        <dependency>
		    <groupId>bsh</groupId>
		    <artifactId>bsh</artifactId>
		    <version>2.0b4</version>
		</dependency>
		<dependency>
		    <groupId>junit</groupId>
		    <artifactId>junit</artifactId>
		    <version>4.12</version>
		</dependency>

加入源码和配置好jar后你会发现有个类JavascriptInterpreter报错,原因是

import netscape.javascript.JSObject 这个引入找不到,这里有两种解决方法

第一种是直接干掉这个类,对,你没看错就是干掉JavascriptInterpreter这个类

干掉这个类之后你会发现ChatterBean这个类报错那么解决方法就是注释掉

//private final Interpreter javascript = new JavascriptInterpreter(this);  66行

//context.property("javascript.interpreter", javascript);   154行

然后就一切正常咯

最后工程就是这样的。

第二种是你去找对应的jar加入,话说是jdk里面,我是第一种方案,所以就没管了

 

到此我们的准备工作已经完成了

然后开始我们的编码了

一共两个类

public class AliceBotMother {

	private ByteArrayOutputStream gossip;

	public void setUp() {
		gossip = new ByteArrayOutputStream();
	}

	public String gossip() {
		return gossip.toString();
	}

	public AliceBot newInstance() throws Exception {
		Searcher searcher = new Searcher();
		AliceBotParser parser = new AliceBotParser();
		
		System.out.println(ClassLoader.getSystemResource("Bots/Alice/").getPath());
		
		AliceBot bot = parser.parse(
				new FileInputStream(ClassLoader.getSystemResource("Bots/context.xml").getPath()), 
				new FileInputStream(ClassLoader.getSystemResource("Bots/splitters.xml").getPath()),
				new FileInputStream(ClassLoader.getSystemResource("Bots/substitutions.xml").getPath()), 
				searcher.search(ClassLoader.getSystemResource("Bots/Alice/").getPath(), "/*.aiml"));
		
		Context context = bot.getContext();
		context.outputStream(gossip);
		return bot;
	}
}

需要注意的就是这些文件的路径

我这就是这么摆放的,仅供参考。

这些文件在http://pan.baidu.com/s/1o7QwsFS 这个里面下载后都有 您可以下载后瞄一下

第二个类,这个类就是我们的测试类咯,可以说是异常的简单

public class Test {
	public static void main(String[] args) throws Exception {
		AliceBotMother mother = new AliceBotMother();
		mother.setUp();
		AliceBot bot = mother.newInstance();

        //这里你可以自己搞个循环然后输入
		String reMsg = "推荐";
		//reMsg = AnalyzerHelp.spaceStr(reMsg);这里分词大家就自己折腾吧我使用的是lucene
		//System.out.println("分词结果:" + reMsg);
		String result = bot.respond(reMsg);
		System.out.println("AI:" + result); 
	}
}

 

哈哈,看看效果吧

 

没太多时间排版,凑合看下吧。。。。。

这里只是个简单的例子后续的自己业务一些相关动态数据包括一些标签扩展(标签类只需扩展TemplateElement即可)感兴趣的同学可以研究一下。

 

容我吟诗一首:

写字楼里写字间,写字间里程序员。

程序人员写程序,又拿程序换酒钱。

 

欢迎讨论交流哈,我邮箱:lwcloud@vip.qq.com

 

© 著作权归作者所有

共有 人打赏支持
北极心
粉丝 34
博文 39
码字总数 16464
作品 0
深圳
后端工程师
AI人工智能-Python实现人机对话

【前言】   AI   在人工智能进展的如火如荼的今天,我们如果不尝试去接触新鲜事物,马上就要被世界淘汰啦~   本文拟使用Python开发语言实现类似于WIndows平台的“小娜”,或者是IOS下的...

柒小栈主
2017/07/27
0
0
扣丁学堂解析Spring中自定义Schema如何解析生效详解

  今天扣丁学堂给大家介绍一下关于如何使用Python开发AIML搭建聊天机器人的方法,首先你可以在AIMLWikipediapage了解更多AIML的内容以及它能够做什么。借助Python的AIML包,我们很容易实现...

扣丁学堂
07/09
0
0
使用Python创建AI比你想象的轻松

您可能对AI领域,主要开发阶段,成就,结果和产品使用感兴趣。有数百个免费源和教程描述使用Python的AI。但是,没有必要浪费你的时间看他们。这里是一个详细的指南,你需要知道在使用Python构...

Lunaqi
2017/07/27
0
0
微软沈向洋等人长文:从Eliza到小冰,社交对话机器人的机遇和挑战

  选自arXiv   机器之心编译   机器之心编辑部      近日,微软全球执行副总裁沈向洋、微软研究院首席研究员何晓东、微软(亚洲)互联网工程院副院长李迪(小冰项目负责人)共同提...

机器之心
01/11
0
0
使用图灵机器人快速开发智能聊天机器人

聊天机器人现在已经成为一个流行的话题,无论微信公共帐号,还是qq聊天机器人,可以智能交互聊天的机器人帐号越来越多,相信很多开发人员也想自己实现这样一个好玩的智能聊天机器人。 下面就...

maolv11
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

es6

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'};console.l...

不负好时光
14分钟前
0
0
叮!您收到一份超值Java基础入门资料!

摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例...

全部原谅
15分钟前
0
0
web.xml容器加载顺序

容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet

Aeroever
17分钟前
1
0
Docker容器日志查看与清理

1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。 2. 解决方法 2.1 找出Docker容器日志 在linux上,容器日...

muzi1994
18分钟前
0
0
J2Cache 和普通缓存框架有何不同,它解决了什么问题?

不少人看到 J2Cache 第一眼时,会认为这就是一个普普通通的缓存框架,和例如 Ehcache、Caffeine 、Spring Cache 之类的项目没什么区别,无非是造了一个新的轮子而已。事实上完全不是一回事!...

红薯
21分钟前
414
14

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部