JAVA中[人工无脑]系统(chatbot)的实现
所谓[人工无脑],根据本人在百度百科中的解释^^,即:
人工无脑“人工无脳(じんこうむのう)”,是日语中特有的说法,日文引用英文的舶来语,[人工无脑]在英文中被称为chatterbot、chatbot等,中文通常称其为“聊天机器人”。[人工无脑]与[人工智能]等[强AI]产物相反,是[弱AI]的代表产品。
世界上第一个[人工无脑]系统chatterbot, 诞生于1966年.名为ELIZA,由J. Weizenbaum开发。ELIZA会分解问话,再以问话检索事前录入好的答案。从而模拟人机通信,造成计算机与人沟通的[假象],这也是所有[弱 AI]系统的共同特点。初期的[人工无脑]实现,以ELIZA和PARRY为主流。此后Ractor、Verbot、A.L.I.C.E.、ELLA等陆 续登场,[弱AI]系统得以长足发展。
[人工无脑]与[人工智能]的最大区别在于,它仅是模拟人机数据交换,而根据简单的[表面现象]使之产生作用的程式,并没有[强AI]那种模拟生命智能的 需 求。只是应用编码好的程序,把提出的问题再以固定的方式回应,是一种[弱AI]。再简单地说,这是在暂时无法实现人工智能时,一种模拟人工智能的方式。
如绝大部分游戏编程中,关于[人机交互]这一部分,都是以[人工无脑]的方式来实现的。
在这里首先提供一个简单的Java用例:
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEwMC8zM2VjZGJiNDllMTBkZWY3Y2UyMDc3NDE2MzdlYTFlNC5naWY=)
此用例不过滤用户会话,仅将输入的会话再次返回,但却是[无脑]系统的基础所在。
代码如下:
ChatbotPanel:
packageorg.test;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE1Mi9hNDE5NTRhMjdkNmFkOTZmYTJjMmNmODE2ZTY3NzQ0OC5naWY=)
/***//**
*<p>Title:LoonFramework</p>
*<p>Description:</p>
*<p>Copyright:Copyright(c)2007</p>
*<p>Company:LoonFramework</p>
*@authorchenpeng
*@email:[email protected]
*@version0.1
*/
importjava.awt.BorderLayout;
importjava.awt.Dimension;
importjava.awt.Frame;
importjava.awt.Panel;
importjava.awt.ScrollPane;
importjava.awt.TextArea;
importjava.awt.TextField;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMi82ODEwMzU1YzJmNzhjMTJlOTFiNzk5N2E4ZThjNTgzYS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE1Mi9hNDE5NTRhMjdkNmFkOTZmYTJjMmNmODE2ZTY3NzQ0OC5naWY=)
/***//**
*<p>Title:LoonFramework</p>
*<p>Description:[人工无脑]系统的初步实现。</p>
*<p>Copyright:Copyright(c)2007</p>
*<p>Company:LoonFramework</p>
*@authorchenpeng
*@email:[email protected]
*@version0.1
*/
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE1Mi9hNDE5NTRhMjdkNmFkOTZmYTJjMmNmODE2ZTY3NzQ0OC5naWY=)
publicclassChatbotPanelextendsPanelimplementsActionListener...{
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
/***//**
*
*/
privatestaticfinallongserialVersionUID=1L;
privatestaticfinalintWIDTH=480;
privatestaticfinalintHEIGHT=480;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
//用于信息显示
privateTextAreadialogueArea;
//用于信息输入
privateTextFieldinputField;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
privateChatbotchatbot=newChatbot(Chatbot.NAME);
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicChatbotPanel()...{
setPreferredSize(newDimension(WIDTH,HEIGHT));
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
init();
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
/***//**
*初始显示
*/
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
privatevoidinit()...{
setLayout(newBorderLayout());
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
//创建文本框
dialogueArea=newTextArea();
dialogueArea.setEditable(false);
dialogueArea.append("人机通信模拟 ");
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
//初始信息
inputField=newTextField("要与["+Chatbot.NAME+"]进行的对话。");
inputField.selectAll();
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
//设定滚动条
ScrollPanescrollPane=newScrollPane();
scrollPane.add(dialogueArea);
add(scrollPane,BorderLayout.CENTER);
add(inputField,BorderLayout.SOUTH);
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
inputField.addActionListener(this);
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicvoidactionPerformed(ActionEvente)...{
//获得输入的内容
Stringinput=inputField.getText();
dialogueArea.append("人类说: "+input+" ");
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
//返回响应
Stringresponse=chatbot.getResponse(input);
dialogueArea.append(chatbot.getName()+": "+response+" ");
dialogueArea.setCaretPosition(dialogueArea.getText().length());
inputField.setText("");
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicstaticvoidmain(String[]args)...{
Framefrm=newFrame();
frm.setSize(WIDTH,HEIGHT);
frm.setResizable(false);
frm.setTitle(Chatbot.NAME);
frm.add(newChatbotPanel());
frm.setVisible(true);
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
frm.addWindowListener(newWindowAdapter()...{
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicvoidwindowClosing(WindowEvente)...{
System.exit(0);
}
});
}
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMi82ODEwMzU1YzJmNzhjMTJlOTFiNzk5N2E4ZThjNTgzYS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMi82ODEwMzU1YzJmNzhjMTJlOTFiNzk5N2E4ZThjNTgzYS5naWY=)
Chatbot:
packageorg.test;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE1Mi9hNDE5NTRhMjdkNmFkOTZmYTJjMmNmODE2ZTY3NzQ0OC5naWY=)
/***//**
*<p>Title:LoonFramework</p>
*<p>Description:</p>
*<p>Copyright:Copyright(c)2007</p>
*<p>Company:LoonFramework</p>
*@authorchenpeng
*@email:[email protected]
*@version0.1
*/
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE1Mi9hNDE5NTRhMjdkNmFkOTZmYTJjMmNmODE2ZTY3NzQ0OC5naWY=)
publicclassChatbot...{
privateStringname;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
publicstaticfinalStringNAME="无脑0号机";
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicChatbot(Stringname)...{
this.name=name;
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicStringgetResponse(Stringmessage)...{
returnmessage;
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicStringgetName()...{
returnname;
}
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMi82ODEwMzU1YzJmNzhjMTJlOTFiNzk5N2E4ZThjNTgzYS5naWY=)
在[人工无脑]系统中,真正关键的技术在词条的检索和回复方式,比如我略微扩充Chatbot类后,将变成这样。
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc2Ni85ZjRhZTQyZDEzY2I2ZWIxMmM4ZGZiNjY3MmM2MjE0ZS5naWY=)
变更后Chatbot如下:
packageorg.test;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMi82ODEwMzU1YzJmNzhjMTJlOTFiNzk5N2E4ZThjNTgzYS5naWY=)
importjava.io.BufferedReader;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
importjava.util.Random;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMi82ODEwMzU1YzJmNzhjMTJlOTFiNzk5N2E4ZThjNTgzYS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE1Mi9hNDE5NTRhMjdkNmFkOTZmYTJjMmNmODE2ZTY3NzQ0OC5naWY=)
/***//**
*<p>Title:LoonFramework</p>
*<p>Description:</p>
*<p>Copyright:Copyright(c)2007</p>
*<p>Company:LoonFramework</p>
*@authorchenpeng
*@email:[email protected]
*@version0.1
*/
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE1Mi9hNDE5NTRhMjdkNmFkOTZmYTJjMmNmODE2ZTY3NzQ0OC5naWY=)
publicclassChatbot...{
privateStringname;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
publicstaticfinalStringNAME="无脑0号机";
privateArrayListdic;
privateRandomrand;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicChatbot(Stringname)...{
this.name=name;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
dic=newArrayList();
rand=newRandom(System.currentTimeMillis());
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
//加载字典
loadDic();
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicStringgetResponse(Stringmessage)...{
Stringresponse=(String)dic.get(rand.nextInt(dic.size()));
returnresponse;
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
publicStringgetName()...{
returnname;
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
privatevoidloadDic()...{
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
try...{
BufferedReaderbr=newBufferedReader(
newInputStreamReader(getClass().getResourceAsStream("dic.txt")));
Stringline;
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
while((line=br.readLine())!=null)...{
dic.add(line);//写入list
}
br.close();
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
}catch(FileNotFoundExceptione)...{
e.printStackTrace();
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgxMS8zN2M4YmY2OGNkYzNjYzgxNzU5YzM0MTYwNzc2YmM1My5naWY=)
}catch(IOExceptione)...{
e.printStackTrace();
}
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzczNy82YTljMDcxYTA4ZjFkYWUyZDNlMWM1MTIwMDBlZWY0MS5naWY=)
}
![JAVA中[人工无脑]系统(chatbot)的实现 JAVA中[人工无脑]系统(chatbot)的实现](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUyMi82ODEwMzU1YzJmNzhjMTJlOTFiNzk5N2E4ZThjNTgzYS5naWY=)
dic.txt内容如下:
[中国人民是不可战胜的。
一切派都是纸老虎。
人民万岁!
庆祝17大胜利召开。
共建和谐社会。]
虽然没有经过更多处理,但已经能体现出人机对话的[假象了],若通过网络的字典数据库系统,甚至能够完成以假乱真的弱AI聊天机器人呢。
人工无脑“人工无脳(じんこうむのう)”,是日语中特有的说法,日文引用英文的舶来语,[人工无脑]在英文中被称为chatterbot、chatbot等,中文通常称其为“聊天机器人”。[人工无脑]与[人工智能]等[强AI]产物相反,是[弱AI]的代表产品。
世界上第一个[人工无脑]系统chatterbot, 诞生于1966年.名为ELIZA,由J. Weizenbaum开发。ELIZA会分解问话,再以问话检索事前录入好的答案。从而模拟人机通信,造成计算机与人沟通的[假象],这也是所有[弱 AI]系统的共同特点。初期的[人工无脑]实现,以ELIZA和PARRY为主流。此后Ractor、Verbot、A.L.I.C.E.、ELLA等陆 续登场,[弱AI]系统得以长足发展。
[人工无脑]与[人工智能]的最大区别在于,它仅是模拟人机数据交换,而根据简单的[表面现象]使之产生作用的程式,并没有[强AI]那种模拟生命智能的 需 求。只是应用编码好的程序,把提出的问题再以固定的方式回应,是一种[弱AI]。再简单地说,这是在暂时无法实现人工智能时,一种模拟人工智能的方式。
如绝大部分游戏编程中,关于[人机交互]这一部分,都是以[人工无脑]的方式来实现的。
在这里首先提供一个简单的Java用例:
此用例不过滤用户会话,仅将输入的会话再次返回,但却是[无脑]系统的基础所在。
代码如下:
ChatbotPanel:
Chatbot:
在[人工无脑]系统中,真正关键的技术在词条的检索和回复方式,比如我略微扩充Chatbot类后,将变成这样。
变更后Chatbot如下:
dic.txt内容如下:
[中国人民是不可战胜的。
一切派都是纸老虎。
人民万岁!
庆祝17大胜利召开。
共建和谐社会。]
虽然没有经过更多处理,但已经能体现出人机对话的[假象了],若通过网络的字典数据库系统,甚至能够完成以假乱真的弱AI聊天机器人呢。