精华内容
下载资源
问答
  • dialog串起整个对话。 以预定餐厅为例:用户意图为 “我想订位置”;entities为星期几、时间、几个人这些元素;dialog告诉机器人接收到“我想订位置” 这个意图时,需要问什么、答什么。 Creating Intents 参考教程...

    整体步骤

    注册一个IBM账户,http://console.bluemix.net

    在控制台(Dashboard)创建资源(Create resource)

    点击 Watson Assistant 服务

    填写服务名称、想要部署的区域,创建一个Watson Assistant服务

    启动工具(Launch tool)

    65c9b55522ed6c14caf1bda173bb8c7a.png

    创建Skill

    2382534d3099624c472bb3930d9c5971.png

    创建Assistants

    创建一个assistant,并把之前建立好的skill添加进assistant。

    assistant详情页中包含一个分享链接可以在网页上试用,也包含了API调用所需的id、url、username、password。

    我的watson asistant 分享试用地址:https://assistant-chat-jp-tok.watsonplatform.net/web/public/c24919e6-ff48-42c1-99c2-63a66df7f75b

    07bf2d7e9d1720bbe8a362cc6c34ca7a.png

    Skill 构建步骤

    构建一个skill大致需要创建intents、entities、dialog。

    intents为用户意图;entities为需要理解的一些实体;dialog串起整个对话。

    以预定餐厅为例:用户意图为 “我想订位置”;entities为星期几、时间、几个人这些元素;dialog告诉机器人接收到“我想订位置” 这个意图时,需要问什么、答什么。

    Creating Intents

    参考教程:https://cloud.ibm.com/docs/services/assistant?topic=assistant-intents#intents

    Creating Entities

    参考教程:https://cloud.ibm.com/docs/services/assistant?topic=assistant-entities#entities

    Build Dialog

    参考教程:https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-overview#dialog-overview

    我参考教程视频建立的Skill的json配置文件:

    http://note.youdao.com/noteshare?id=4fb9d8bd65c31c23f1f6a2866bb952c5

    机器人发布到web上

    参考教程:http://www-31.ibm.com/ibm/cn/ur/event/pdf/integrate_to_web.pdf

    Java调用

    参考 demo:https://github.com/watson-developer-cloud/java-sdk

    demo 中关于 assistant 的说明:https://github.com/watson-developer-cloud/java-sdk/blob/master/assistant/README.md

    我用的是v2接口,但 demo 没有说明参数都是哪里来的、缺少Endpoint设置、缺少sessionId获取,调试过程中出现过如下问题:

    Unauthorized: Access is denied due to invalid credentials. Tip: Did you set the Endpoint?

    {“code”:401, “error”: “Unauthorized”}

    {“error”:“Resource not found”,“code”:404}

    最终运行通过的代码如下:

    Gradle

    compile group: 'com.ibm.watson.developer_cloud', name: 'assistant', version: '6.14.0'

    测试函数

    public static void main(String[] args) throws Exception {

    String assistantId = "XXXXXXXXXXXXXXXXXXX"; // Assistant 详情页的Assistant ID

    String url = "https://gateway-tok.watsonplatform.net/assistant/api"; // Assistant 详情页的Assistant URL的一部分

    String username = "apikey"; // Assistant 详情页的 Service Credentials 的 Username

    String password = "XXXXXXXXXXXXXXXXXXX"; // Assistant 详情页的 Service Credentials 的 Password

    Assistant service = new Assistant("2019-03-15"); // 随意

    service.setEndPoint(url);

    service.setUsernameAndPassword(username, password);

    CreateSessionOptions createSessionOptions = new CreateSessionOptions.Builder()

    .assistantId(assistantId)

    .build();

    SessionResponse sessionResponse = service.createSession(createSessionOptions).execute();

    String sessionId = sessionResponse.getSessionId();

    MessageInput input = new MessageInput.Builder()

    .text("Hi")

    .build();

    MessageOptions messageOptions = new MessageOptions.Builder()

    .assistantId(assistantId)

    .sessionId(sessionId)

    .input(input)

    .build();

    MessageResponse messageResponse = service.message(messageOptions).execute();

    System.out.println(messageResponse);

    }

    展开全文
  • 如何用Java实现智能对话机器人

    千次阅读 2018-08-27 22:14:15
    如何用Java实现智能对话机器人 前言 这个时代人工智能如此火爆,身为圈内人我们应该多少对他有些了解,为了靠他近一些今天我们动手用Java实现一个智能聊天机器人,当然此处我们需要依赖图灵机器人的Api 点...

    如何用Java实现智能对话机器人

    前言 这个时代人工智能如此火爆,身为圈内人我们应该多少对他有些了解,为了靠他近一些今天我们动手用Java实现一个智能聊天机器人,当然此处我们需要依赖图灵机器人的Api


    点我进入图灵机器人官网注册帐号

    这篇博客涵盖的知识点

    • HTML网页源代码抓取
    • JSON字符串解析

    以下为需要用到的Jar

    Jar 备注
    JSONObject 用于解析JSON

    首先我们要注册一个图灵机器人的帐号 并创建我们自己的机器人

    在这里插入图片描述

    这里可以根据个人需求填写
    然后拿到我们刚刚创建的机器人的APIkey

    从这里我们可以拿到我们的api请求地址,和我们的机器人的APIkey


    图灵机器人现在维护的请求方式为POST 但是GET请求还能使用,这里我们使用GET请求接口。
    接口的请求地址为 http://www.tuling123.com/openapi/api?key= [APPkey]&info=[你需要发送的消息]

    准备完毕后 我们开始代码部分

    • 第一步,编写的工具类
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLEncoder;
    
    /**
     * @author 4everlynn
     * @date 2017/12/17
     */
    public class Util {
        //存储APIkey
        public static final String API_KEY = "填写你的APPKEY";
        //存储接口请求地址
        public static final String API_URL = "http://www.tuling123.com/openapi/api";
    
        /**
         * 拼接出我们的接口请求地址
         *
         * @param msg 需要发送的消息
         * @return
         */
        private String setParameter(String msg) {
            //在接口请求中 中文要用URLEncoder encode成UTF-8
            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对象
                URL u = new URL(url);
                //打开连接
                HttpURLConnection connection = (HttpURLConnection) u.openConnection();
                //从连接中拿到InputStream并由BufferedReader进行读取
                bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String line = "";
                //循环每次加入一行HTML内容 直到最后一行
                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();
        }
    }
    
    

    • 第二步,编写测试类
    package com.disware;
    
    import java.util.Scanner;
    
    /**
     * @author 4everlynn
     * @date 2017/12/17
     */
    public class Main {
    
        public static void main(String[] args) {
            //声明并实例化我们刚刚封装好的工具类
            Util util = new Util();
            //接收用户输入
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()){
                //直接输出机器人的回复
                System.err.println("Ta 对你说 -> " + util.getMessage(scanner.nextLine()));
            }
        }
    }
    
    

    在这里插入图片描述

    展开全文
  • 人工智能 目前人工智能与深度学习顺应了互联网时代潮流,人机对话已经成为目前人工...机器人人机对话系统主要涉及深度学习、机器学习、特征过程、自然语言处理等核心知识。 技术领域 在此,先推荐一下学习的主...

    人工智能

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

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

    技术领域

    在此,先推荐一下学习的主要技术领域:

    数学

    矩阵计算主要研究单个矩阵或多个矩阵相互作用时的一些性质。机器学习的各种模型都大量涉及矩阵相关性质,比如PCA其实是在计算特征向量,MF其实是在模拟SVD计算奇异值向量。人工智能领域的很多工具都是以矩阵语言来编程的,比如主流的深度学习框架,如Tensorflow、PyTorch等无一例外。

    概率统计是机器学习的基础。常用的几个概率统计概念:随机变量、离散随机变量、连续随机变量、概率密度/分布(二项式分布、多项式分布、高斯分布、指指数族分布)、条件概率密度/分布、先验密度/分布、后验密度/分布、最大似然估计、最大后验估计。

    最优化方法被广泛用于机器学习模型的训练。机器学习中常见的几个最优化概念:凸/非凸函数、梯度下降、随机梯度下降、原始对偶问题。

    机器学习与深度学习

    周志华的西瓜书《机器学习》

    自然语言处理

    《统计自然语言处理基础》、王斌老师翻译的中文版《信息检索导论》

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

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

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

    开发步骤:

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

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

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

    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:控制台测试结果,进行智能聊天对话:

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

    原文发布于微信公众号 - 码神联盟(lkchatspace)

    原文发表时间:2018-08-18

    展开全文
  • Java编写的安卓语音对话机器人,界面和手机上的语音助手差不多,实现的功能包括智能问答、天气查询、百科查询、打开APP、创建日程等,直接在导入eclipse就可以运行,但是要配置安卓环境,具体步骤请自行百度
  • 如何用Java实现智能对话机器人前言 这个时代人工智能如此火爆,身为圈内人我们应该多少对他有些了解,为了靠他近一些今天我们动手用Java实现一个智能聊天机器人,当然此处我们需要依赖图灵机器人的Api这篇博客涵盖的...

    如何用Java实现智能对话机器人

    前言 这个时代人工智能如此火爆,身为圈内人我们应该多少对他有些了解,为了靠他近一些今天我们动手用Java实现一个智能聊天机器人,当然此处我们需要依赖图灵机器人的Api

    这篇博客涵盖的知识点

    HTML网页源代码抓取

    JSON字符串解析

    以下为需要用到的Jar

    Jar

    备注

    JSONObject

    用于解析JSON

    首先我们要注册一个图灵机器人的帐号 并创建我们自己的机器人

    dc390aa9af5b888e0a2050bd52343d71.png

    这里可以根据个人需求填写

    然后拿到我们刚刚创建的机器人的APIkey

    fbf4926c05457bd9e1d1b0eabdf931f5.png

    从这里我们可以拿到我们的api请求地址,和我们的机器人的APIkey

    图灵机器人现在维护的请求方式为POST 但是GET请求还能使用,这里我们使用GET请求接口。

    接口的请求地址为 http://www.tuling123.com/openapi/api?key= [APPkey]&info=[你需要发送的消息]

    准备完毕后 我们开始代码部分

    第一步,编写的工具类

    import org.json.JSONException;

    import org.json.JSONObject;

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.UnsupportedEncodingException;

    import java.net.HttpURLConnection;

    import java.net.MalformedURLException;

    import java.net.URL;

    import java.net.URLEncoder;

    /**

    * @author 4everlynn

    * @date 2017/12/17

    */

    public class Util {

    //存储APIkey

    public static final String API_KEY = "填写你的APPKEY";

    //存储接口请求地址

    public static final String API_URL = "http://www.tuling123.com/openapi/api";

    /**

    * 拼接出我们的接口请求地址

    *

    * @param msg 需要发送的消息

    * @return

    */

    private String setParameter(String msg) {

    //在接口请求中 中文要用URLEncoder encode成UTF-8

    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对象

    URL u = new URL(url);

    //打开连接

    HttpURLConnection connection = (HttpURLConnection) u.openConnection();

    //从连接中拿到InputStream并由BufferedReader进行读取

    bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

    String line = "";

    //循环每次加入一行HTML内容 直到最后一行

    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();

    }

    }1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94[/code]

    第二步,编写测试类

    package com.disware;

    import java.util.Scanner;

    /**

    * @author 4everlynn

    * @date 2017/12/17

    */

    public class Main {

    public static void main(String[] args) {

    //声明并实例化我们刚刚封装好的工具类

    Util util = new Util();

    //接收用户输入

    Scanner scanner = new Scanner(System.in);

    while (scanner.hasNext()){

    //直接输出机器人的回复

    System.err.println("Ta 对你说 -> " + util.getMessage(scanner.nextLine()));

    }

    }

    }1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22[/code]

    6b82f3946859b8ae0b1c2e77308d24c8.png

    阅读更多

    展开全文
  • IBM “基于 Watson Assistant 的聊天机器人”大赛技术助攻 http://www-31.ibm.com/ibm/cn/ur/event/watson-build_tech.html 高校“基于 Watson Assistant 的聊天机器人”大赛获奖作品展示 ...
  • 对话机器人代码 服务器端代码: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * UDP 服务器端 */ public class UDPServer { // 端口号 private static ...
  • 它首先在文本上训练,然后使用该训练中的数据生成对话者输入的响应 . 训练过程创建一个字典,其中每个键都是一个单词,值是在训练文本中的任何位置顺序跟随该单词的所有单词的列表 . 如果一个单词在此列表中不止一次...
  • UDP编程实现一个对话机器人 UDP服务端的信息: 1、启动一个UDP服务器端(ip默认电脑的ip,端口号要设置) 2、初始化数据包 3、等待客户端的连接(正式执行)receive方法需要DatagramPacket,客户端有这个的包才能链接 ...
  • 图灵机器人挺有意思,结合语音识别和合成,可以做成简单的对话机器人,可玩性很强,当然,树莓派支持了Java,移植后可以做成一个机器人~挖个坑,回头再写~ 这里附上图灵机器人的简单应用示例,参考链接在后文。 ...
  • 大数据是目前互联网流行的技术语言,处理大数据的编程语言比较有优势的也很多,比如java、python、go、R语言、Hadoop等等,按道理来说每种编程语言都可以处理大数据,只是处理的规模不一样而且,但是现在比较受欢迎...
  • 随着AI技术的突破性发展,聊天机器人出现在我们的生活和工作中:IBM的Watson、Apple的Siri,Echo音箱...Watson Assistant,是一个集成了机器学习,自然语言分析和对话工具的认知服务平台。我们可以在 Watson 提供的...
  • Android周末 第一周-图灵聊天对话机器人小项目1.获取api2.准备工作1.添加权限2.更改网络安全配置3.添加依赖3.布局文件1.主界面2.左聊天框3.右聊天框4.java逻辑代码1.圆形图片类-CircleImageView2.时间格式化工具类-...
  • java对接图灵机器人

    2019-04-28 19:26:19
    2、作为一个 java 初学者,可以利用图灵的 Api ,搭建一个智能对话系统,玩一点有意思的东西,哈哈。 3、此文件为一个客服系统demo:图灵机器人支持自定义词库,这样的话就可以做一个智能的客服系统,淘宝机器人大家...
  • 一个简单的对话机器人

    千次阅读 2014-08-12 15:00:11
    使用java开发,需要添加三个包 public class wether_req { public void weatherReq() throws ClientProtocolException, IOException{ String INFO = URLEncoder.encode("杭州今日天气", "utf-8");  ...
  • Java对接图灵机器人

    2019-11-26 16:08:12
    Java对接图灵机器人 在对应的方法传入与机器人对话即可得到机器人回应 需要在图灵的官网注册图灵进行认证,非认证用户一天只能调用一次 已对官网文档进行封装,调用方法即可得到回应,傻瓜式操作 <!--导入图灵...
  • 页面代码<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request....
  • java socket网络编程 模拟2个机器人对话 上一篇: 下一篇: 文章目录java socket网络编程 模拟2个机器人对话前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 前面1.8 节,介绍了2个线程的通信,...
  • 如何使用Java处理Selenium WebDriver中的聊天机器人如何使用Java处理Selenium WebDriver中的聊天机器人聊天机器人是一种可以模拟对话或聊天的人工智能(AI)软件服务。 在此使用自然语言处理。 如今,它们经常在消息...
  • 【实例简介】参考了别人的一些微信开发方法,自己实现了一个简单的微信机器人,部署在百度云上,能够点歌,查询天气,调教对话。可关注微信公众号:奇迹蛋。实现说明:...
  • 模拟2个机器人对话 前言 这一节体验1种多线程程序的写法,需要用到java内置的Thread对象,用户的对象继承至Thread对象,重写run方法,就可以实现一个可启动的线程类。 分3步: 1、创建一个对象,继承至Thread; 2...
  • java 聊天猜拳机器人

    2016-11-23 18:35:00
    JAVA JDK; 语言:java 时间:2016.11.23 作者:潇洒鸿图 地址:http://www.cnblogs.com/xuehx/p/6094785.html 一、 备注:采用最简单if语句能够实现最简单的人机对话,但是程序只能回复一次,一次之后结束...
  • 关于arraylist删除的问题 ...[java] view plain copy package com.utils.collection;    import java.util.ArrayList;  import java.util.Iterator;  import java.util.List;    public

空空如也

空空如也

1 2 3 4 5
收藏数 87
精华内容 34
关键字:

java对话机器人

java 订阅