文档章节

AIML实现智能聊天机器人

北极心
 北极心
发布于 2017/06/02 15:57
字数 813
阅读 782
收藏 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

 

© 著作权归作者所有

共有 人打赏支持
北极心
粉丝 35
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

android -------- MVP+DataBinding 的使用

天来说说MVP+DataBinding 的使用 以一个登录案例来讲解 布局:(ConstraintLayout 作为根布局) <layout> <data> <variable name="onClick" ......

切切歆语
33分钟前
1
0
阿里十年Java架构经验总结,这几点尤为重要!

你有没有静下心来思考过:同样是做了x年Java开发,为什么你的技术比别人差很多?为什么别人每月28K你却只有10K? 其实技术水平的高低和个人智商关系不大(毕竟能做Java编程开发大家都不会差)...

别打我会飞
37分钟前
1
0
Ubuntu 中安装和配置 Caddy 服务

首先访问:https://caddyserver.com/download 选择操作系统、插件和授权类型,点击 Download 下载编译好的文件包,或者执行页面最下面的一键安装脚本,完成 caddy 的安装。 安装完成后,/us...

八风不动
52分钟前
2
0
java代码效率优化

1、 尽量指定类的final修饰符 带有final修饰符的类是不可派生的。 2、 尽量重用对象。 3、 尽量使用局部变量,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较...

踏破铁鞋无觅处
今天
3
0
程序员的几款利器

1. 作为程序员,最希望的就是自己的代码能够在一个云平台上保留下来,gitlab等等这些很多。但是我这里推荐“码云平台”码云平台和开源中国可以直接关联起来。开源中国可以记录博客,当然也是...

ChinaHYF
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部