机器人之间对聊,您想试试么

这是借助图灵机器人提供的免费API实现的两个机器人对话的功能,系统自动提取图灵平台提供的智能聊天库,自己还能导入自己的知识库让机器人更具个性化,更符合你的胃口.


程序代码 程序代码

import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;

public class Main {
    private static final String KEY = "91e71ab13d4f1be71de4a7ef1c1ec2ef";
    private static final String BASEURL = "http://www.tuling123.com/openapi/api?key="+KEY+"&userid=";
    private static final String ALICE = "Alice";
    private static final String TITAN = "Titan";

    public static void main(String[] args) {
        //第一次交谈
        String first = "你好啊!";
        System.out.println(ALICE+"对"+TITAN+"说:"+first);
        new Main().communication(ALICE, first);
    }

    /**
     * ALICE 与 TITAN 交谈
     * @param user 用户
     * @param text 聊天室内容
     */
    public void communication(String user, String text) {
        // 构造 访问图灵的地址
        StringBuffer url = new StringBuffer("");
        url.append(BASEURL);
        url.append(user);
        url.append("&info=").append(text);
        // 输出日志
//        System.out.println(url.toString());
        // 取回交谈内容
        String msg = getRobotMsg(url.toString());
        if (ALICE.equals(user)) {//如果对ALICE说
            System.out.println(TITAN+"对"+ALICE+"说:"+msg);
            communication(TITAN, msg);
        } else if (TITAN.equals(user)) {//如果对TITAN说
            System.out.println(ALICE+"对"+TITAN+"说:"+msg);
            communication(ALICE, msg);
        }
    }

    /**
     * 取回机器人的回答
     * @param url 图灵机器人完全访问地址;带 userid和info
     * @return 机器人的回答
     */
    public String getRobotMsg(String url) {
        try {
            HttpResponse<JsonNode> jsonNodeHttpResponse = Unirest.get(url).asJson();
            String text = jsonNodeHttpResponse.getBody().getObject().get("text").toString();
            return text;
        } catch (Exception e) {
            return "我不知道!";
        }
    }
}


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 yihaomen 于 2016-02-23 09:53 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 机器人
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复小雨[2016-03-07 10:50 AM | del]
个人觉得像这样的机器人对聊,很大可能最终会出现的是一个死循环,虽然未必是一问一答那种死循环,有可能是大范围的——比如说100句为一个循环节的循环。
因为机器人的语料库是有限的,而对相同语句的应答也是有限的。前一个有限导致在足够长的对话中必然出现相同的语句,后一个有限导致相同的语句出现的次数足够多必然出现相同的应答,那么,循环就产生了,而一旦进入循环,机器人是无法脱离循环的,因为它不像人那样有意识。
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.