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)的实现

此用例不过滤用户会话,仅将输入的会话再次返回,但却是[无脑]系统的基础所在。

代码如下:

ChatbotPanel:
JAVA中 人工无脑 系统(chatbot)的实现package org.test;
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现
/** *//**
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Title: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Description:</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Copyright: Copyright (c) 2007</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Company: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * 
@author chenpeng  
JAVA中 人工无脑 系统(chatbot)的实现 * @email:[email protected] 
JAVA中 人工无脑 系统(chatbot)的实现 * 
@version 0.1
JAVA中 人工无脑 系统(chatbot)的实现 
*/

JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.BorderLayout;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.Dimension;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.Frame;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.Panel;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.ScrollPane;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.TextArea;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.TextField;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.event.ActionEvent;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.event.ActionListener;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.event.WindowAdapter;
JAVA中 人工无脑 系统(chatbot)的实现
import java.awt.event.WindowEvent;
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现
/** *//**
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Title: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Description:[人工无脑]系统的初步实现。</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Copyright: Copyright (c) 2007</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Company: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * 
@author chenpeng  
JAVA中 人工无脑 系统(chatbot)的实现 * @email:[email protected] 
JAVA中 人工无脑 系统(chatbot)的实现 * 
@version 0.1
JAVA中 人工无脑 系统(chatbot)的实现 
*/

JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现
public class ChatbotPanel extends Panel implements ActionListener ...{
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
/** *//**
JAVA中 人工无脑 系统(chatbot)的实现     * 
JAVA中 人工无脑 系统(chatbot)的实现     
*/

JAVA中 人工无脑 系统(chatbot)的实现    
private static final long serialVersionUID = 1L;
JAVA中 人工无脑 系统(chatbot)的实现    
private static final int WIDTH = 480;
JAVA中 人工无脑 系统(chatbot)的实现    
private static final int HEIGHT = 480;
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现    
// 用于信息显示
JAVA中 人工无脑 系统(chatbot)的实现
    private TextArea dialogueArea;
JAVA中 人工无脑 系统(chatbot)的实现    
// 用于信息输入
JAVA中 人工无脑 系统(chatbot)的实现
    private TextField inputField;
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现    
private Chatbot chatbot = new Chatbot(Chatbot.NAME);
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public ChatbotPanel() ...{
JAVA中 人工无脑 系统(chatbot)的实现        setPreferredSize(
new Dimension(WIDTH, HEIGHT));
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        init();
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
/** *//**
JAVA中 人工无脑 系统(chatbot)的实现     * 初始显示
JAVA中 人工无脑 系统(chatbot)的实现     
*/

JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
private void init() ...{
JAVA中 人工无脑 系统(chatbot)的实现        setLayout(
new BorderLayout());
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        
// 创建文本框
JAVA中 人工无脑 系统(chatbot)的实现
        dialogueArea = new TextArea();
JAVA中 人工无脑 系统(chatbot)的实现        dialogueArea.setEditable(
false);
JAVA中 人工无脑 系统(chatbot)的实现        dialogueArea.append(
"人机通信模拟  ");
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        
//初始信息
JAVA中 人工无脑 系统(chatbot)的实现
        inputField = new TextField("要与["+Chatbot.NAME+"]进行的对话。");
JAVA中 人工无脑 系统(chatbot)的实现        inputField.selectAll();
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        
//设定滚动条
JAVA中 人工无脑 系统(chatbot)的实现
        ScrollPane scrollPane = new ScrollPane();
JAVA中 人工无脑 系统(chatbot)的实现        scrollPane.add(dialogueArea);
JAVA中 人工无脑 系统(chatbot)的实现        add(scrollPane, BorderLayout.CENTER);
JAVA中 人工无脑 系统(chatbot)的实现        add(inputField, BorderLayout.SOUTH);
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        inputField.addActionListener(
this);
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public void actionPerformed(ActionEvent e) ...{
JAVA中 人工无脑 系统(chatbot)的实现        
//获得输入的内容
JAVA中 人工无脑 系统(chatbot)的实现
        String input = inputField.getText();
JAVA中 人工无脑 系统(chatbot)的实现        dialogueArea.append(
"人类说: " + input + " ");
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        
//返回响应
JAVA中 人工无脑 系统(chatbot)的实现
        String response = chatbot.getResponse(input);
JAVA中 人工无脑 系统(chatbot)的实现        dialogueArea.append(chatbot.getName() 
+ ": " + response + " ");
JAVA中 人工无脑 系统(chatbot)的实现        dialogueArea.setCaretPosition(dialogueArea.getText().length());
JAVA中 人工无脑 系统(chatbot)的实现        inputField.setText(
"");
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现    
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public static void main(String[]args)...{
JAVA中 人工无脑 系统(chatbot)的实现        Frame frm
=new Frame();
JAVA中 人工无脑 系统(chatbot)的实现        frm.setSize(WIDTH, HEIGHT);
JAVA中 人工无脑 系统(chatbot)的实现        frm.setResizable(
false);
JAVA中 人工无脑 系统(chatbot)的实现        frm.setTitle(Chatbot.NAME);
JAVA中 人工无脑 系统(chatbot)的实现        frm.add(
new ChatbotPanel());
JAVA中 人工无脑 系统(chatbot)的实现        frm.setVisible(
true);
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现        frm.addWindowListener(
new WindowAdapter()...{
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现            
public void windowClosing(WindowEvent e)...{
JAVA中 人工无脑 系统(chatbot)的实现                System.exit(
0);
JAVA中 人工无脑 系统(chatbot)的实现            }

JAVA中 人工无脑 系统(chatbot)的实现        }
);
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现}

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现

Chatbot:
JAVA中 人工无脑 系统(chatbot)的实现package org.test;
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现
/** *//**
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Title: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Description:</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Copyright: Copyright (c) 2007</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Company: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * 
@author chenpeng  
JAVA中 人工无脑 系统(chatbot)的实现 * @email:[email protected] 
JAVA中 人工无脑 系统(chatbot)的实现 * 
@version 0.1
JAVA中 人工无脑 系统(chatbot)的实现 
*/

JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现
public class Chatbot ...{
JAVA中 人工无脑 系统(chatbot)的实现    
private String name;
JAVA中 人工无脑 系统(chatbot)的实现    
JAVA中 人工无脑 系统(chatbot)的实现    
public static final String NAME="无脑0号机"
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public Chatbot(String name) ...{
JAVA中 人工无脑 系统(chatbot)的实现        
this.name = name;
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public String getResponse(String message) ...{
JAVA中 人工无脑 系统(chatbot)的实现        
return message; 
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现  
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public String getName() ...{
JAVA中 人工无脑 系统(chatbot)的实现        
return name;
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现}

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现
 

在[人工无脑]系统中,真正关键的技术在词条的检索和回复方式,比如我略微扩充Chatbot类后,将变成这样。
JAVA中 人工无脑 系统(chatbot)的实现

变更后Chatbot如下:

JAVA中 人工无脑 系统(chatbot)的实现package org.test;
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现
import java.io.BufferedReader;
JAVA中 人工无脑 系统(chatbot)的实现
import java.io.FileNotFoundException;
JAVA中 人工无脑 系统(chatbot)的实现
import java.io.IOException;
JAVA中 人工无脑 系统(chatbot)的实现
import java.io.InputStreamReader;
JAVA中 人工无脑 系统(chatbot)的实现
import java.util.ArrayList;
JAVA中 人工无脑 系统(chatbot)的实现
import java.util.Random;
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现
/** *//**
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Title: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Description:</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Copyright: Copyright (c) 2007</p>
JAVA中 人工无脑 系统(chatbot)的实现 * <p>Company: LoonFramework</p>
JAVA中 人工无脑 系统(chatbot)的实现 * 
@author chenpeng  
JAVA中 人工无脑 系统(chatbot)的实现 * @email:[email protected] 
JAVA中 人工无脑 系统(chatbot)的实现 * 
@version 0.1
JAVA中 人工无脑 系统(chatbot)的实现 
*/

JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现
public class Chatbot ...{
JAVA中 人工无脑 系统(chatbot)的实现    
private String name;
JAVA中 人工无脑 系统(chatbot)的实现    
JAVA中 人工无脑 系统(chatbot)的实现    
public static final String NAME="无脑0号机"
JAVA中 人工无脑 系统(chatbot)的实现    
private ArrayList dic;
JAVA中 人工无脑 系统(chatbot)的实现    
private Random rand;
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public Chatbot(String name) ...{
JAVA中 人工无脑 系统(chatbot)的实现        
this.name = name;
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        dic 
= new ArrayList();
JAVA中 人工无脑 系统(chatbot)的实现        rand 
= new Random(System.currentTimeMillis());
JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现        
//加载字典
JAVA中 人工无脑 系统(chatbot)的实现
        loadDic();
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public String getResponse(String message) ...{
JAVA中 人工无脑 系统(chatbot)的实现        String response 
= (String)dic.get(rand.nextInt(dic.size()));
JAVA中 人工无脑 系统(chatbot)的实现        
return response; 
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现  
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
public String getName() ...{
JAVA中 人工无脑 系统(chatbot)的实现        
return name;
JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现    
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现    
private void loadDic() ...{
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现        
try ...{
JAVA中 人工无脑 系统(chatbot)的实现            BufferedReader br 
= new BufferedReader(
JAVA中 人工无脑 系统(chatbot)的实现                    
new InputStreamReader(getClass().getResourceAsStream("dic.txt")));
JAVA中 人工无脑 系统(chatbot)的实现            String line;
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现            
while ((line = br.readLine()) != null...{
JAVA中 人工无脑 系统(chatbot)的实现                dic.add(line); 
//写入list
JAVA中 人工无脑 系统(chatbot)的实现
            }

JAVA中 人工无脑 系统(chatbot)的实现            br.close();
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现        }
 catch (FileNotFoundException e) ...{
JAVA中 人工无脑 系统(chatbot)的实现            e.printStackTrace();
JAVA中 人工无脑 系统(chatbot)的实现JAVA中 人工无脑 系统(chatbot)的实现        }
 catch (IOException e) ...{
JAVA中 人工无脑 系统(chatbot)的实现            e.printStackTrace();
JAVA中 人工无脑 系统(chatbot)的实现        }

JAVA中 人工无脑 系统(chatbot)的实现    }

JAVA中 人工无脑 系统(chatbot)的实现    
JAVA中 人工无脑 系统(chatbot)的实现}

JAVA中 人工无脑 系统(chatbot)的实现
JAVA中 人工无脑 系统(chatbot)的实现

dic.txt内容如下:
[中国人民是不可战胜的。
一切反动派都是纸老虎。
人民万岁!
庆祝17大胜利召开。
共建和谐社会。]


虽然没有经过更多处理,但已经能体现出人机对话的[假象了],若通过网络的字典数据库系统,甚至能够完成以假乱真的弱AI聊天机器人呢。
           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.****.net/jiangjunshow