aiml java_AIML实现智能聊天机器人
最近在做個智能聊天機器人『我知道大家肯定要說對接圖靈,小黃雞啊,但是有時候我們需要根據自己的業務和專業領域內的一些東西做智能聊天,那這里又有人說了,用他們的添加詞庫啊,那我想說的對應自己業務相關的一些動態數據你咋添加.......自行補腦吧,如果您有啥高見歡迎反饋』,經過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如下
bsh
bsh
2.0b4
junit
junit
4.12
加入源碼和配置好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
總結
以上是生活随笔為你收集整理的aiml java_AIML实现智能聊天机器人的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs下载慢问题
- 下一篇: 全国省市区数据SQL - 2017年数据