人工智能

目前人工智能与深度学习顺应了互联网时代潮流,人机对话已经成为目前人工智能领域中非常热门的处理技术。其中基于深度学习的人机对话交换系统(智能机器人)是人工智能最有潜力的领域,甚至被称作人工智能的皇冠。相对于传统的页面简单交互,人机对话系统更能读懂你的内心世界与想法。

机器人人机对话系统主要涉及深度学习、机器学习、特征过程、自然语言处理等核心知识。


使用Java实现智能对话机器人

需求:使用Java实现智能对话机器人

技术点 & 开发工具: Myeclipse、JDK1.8、HTTPS、JSON、jsp、图灵

开发步骤:

1:首先注册图灵开发者账号,并创建机器人,如下图

java能开发人工智能吗 java可以搞人工智能吗_深度学习

java能开发人工智能吗 java可以搞人工智能吗_机器学习_02

2:创建机器人之后,获取机器人APIKEY值

java能开发人工智能吗 java可以搞人工智能吗_机器学习_03

3:新建一个maven project,如下图:

java能开发人工智能吗 java可以搞人工智能吗_机器学习_04

4:导入解析json格式的jar包


<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180130</version>
</dependency>


5:添加如下测试代码:

public class TalkUtil {

     //机器人对应的APIkey--图灵平台获取
    public static final String API_KEY = "922a7bfffcd9463fbafa58d88d64d988";
    public static final String API_URL = "http://www.tuling123.com/openapi/api";

    /**
     * @param msg 需要发送的消息
     * @return
     */
    private String setParameter(String msg) {
        try {
            return API_URL + "?key=" + API_KEY + "&info=" + URLEncoder.encode(msg, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 拿到消息回复的内容
     * @param json 请求接口得到的JSON
     * @return text的部分
     */
    private String getString(String json){
        try {
            JSONObject object = new JSONObject(json);
            return object.getString("text");
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 提供对外公开的方法用于最终拿到机器人回复的消息
     * @param msg 传入你需要发送的信息
     * @return 机器人对你的回复
     */
    public String getMessage(String msg){
        return getString(getHTML(setParameter(msg)));
    }


    private String getHTML(String url) {
        StringBuffer buffer = new StringBuffer();
        BufferedReader bufferedReader = null;
        try {
            URL u = new URL(url);
            HttpURLConnection connection = (HttpURLConnection) u.openConnection();
            bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line = "";
            while ((line = bufferedReader.readLine()) != null) {
                buffer.append(line);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return buffer.toString();
    }

    public static void main(String[] args) {
        TalkUtil util = new TalkUtil();
        Scanner scanner = new Scanner(System.in);//控制台输入
        while (scanner.hasNext()){
            //直接输出机器人的回复
            System.err.println("Ta 对你说 ----> " + util.getMessage(scanner.nextLine()));
        }
    }

}


6:控制台测试结果,进行智能聊天对话:

java能开发人工智能吗 java可以搞人工智能吗_机器学习_05

有兴趣的大佬,可以添加前端聊天窗口页面,进行聊天