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

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

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


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

这篇博客涵盖的知识点

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

以下为需要用到的Jar

Jar备注
JSONObject用于解析JSON

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

创建机器人

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

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 {//存储APIkeypublic 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-8try {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()));}}
}

效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/72631.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能对话机器人开发实战案例剖析(2)

一、前言 本文是《智能对话机器人开发实战案例剖析》系列的第2篇:智能对话机器人分类标准,旨在对智能对话系统的进行一个系统性的介绍。相关内容已同步录制成视频课程,发布在网易云课堂。 二、正文 2.1 分类标准 2.2 闲聊型智能问答机器人…

智能对话机器人实战开发(1)- 体系结构和分类

一、前言 人工智能时代,以智能对话机器人为最核心的技术应用方向之一,实现人机之间通过自然语言的沟通和交流,是智能人机对话机器人的核心目标之一。尤其是Google Assistant 语音助手近期的卓越表现,如何开发智能对话机器人系统&…

智能对话机器人开发实战案例剖析(3)

一、前言 本文是《智能对话机器人开发实战案例剖析》系列的第3篇:智能对话机器人典型案例,旨在对智能对话系统的进行一个系统性的介绍。相关内容已同步录制成视频课程,发布在CSDN学院。 二、正文 2.1 国内外主要智能音箱产品 2.2 智能音箱…

数据可视化工具是什么

智能手机的普及,互联网使用的增长,机器学习的快速发展,以及云计算技术和物联网的不断采用,都在推动全球数据可视化市场。此外,对智能工厂的日益倾向,以及视觉分析、信息可视化和科学可视化在小型和大型组织…

如何进行数据可视化图表设计?

如何进行数据可视化图表设计? 对数据人来说,数据可视化是分析理解数据,并最终呈现数据的必修课。本文从以下几个点来说明,如何进行数据可视化图表设计。1、数据背后的故事2、充分理解数据3、多种图表类型设计指南 1数据背后的故…

优秀的数据可视化,原来是这样做的!

大数据时代,数据驱动决策。处理不好庞大、复杂的数据,其价值将大打折扣。 可以想象一本没有图片的教科书。没有图表、图形或是带有箭头和标签的插图或流程图,那么这门学科将变得更加难以理解。人类天生就是视觉动物,而视觉效果对于…

数据可视化是什么,数据可视化怎么做最好?

数据可视化都有一个共同的目的,那就是准确而高效、精简而全面地传递信息和知识。可视化能将不可见的数据现象转化为可见的图形符号,能将错综复杂、看起来没法解释和关联的数据,建立起联系和关联,发现规律和特征,获得更…

如何完美实现数据可视化?

为什么要可视化数据? 在工作中,无论你在哪个场景,你都会接触到数据,需要表达出来。数据可视化的作用是通过结合图表和数据来更好地传达业务信息。目前,大多数公司正在逐步从传统的流程管理过渡到基于数据的管理。数据可视化可以…

为什么会看到IP地址相同的两台电脑?附查询自己公网IP的方法

为什么会看到IP地址相同的两台电脑? 我们会询问这个问题的原因是因为我们经常看到在两个不同的地方可以配置相同的类似于192.168.xxx.xxx的IP地址,或者在实验室机房里可以随意配置类似于192.168.xxx.xxx的IP地址,这时我们就会产生疑问了&…

今天排查一个网关IP冲突的问题

问题概述:近几天,无线wifi发现总是出现随机断网,ping包外网发现不定时的丢包十几个,后排查是不是DNS出现了问题,经查外线不通时ping网关也能通,其实这是一种假像,当我打开网关的web地址时&#…

同一个ip,不同端口号,session失效

背景 我有两个工程projectA、projectB,projectA放在TomcatA中,projectB放在TomcatB中,TomcatA、TomcatB在一台server上。 工程都映射的根路径,不用project名字就可以访问,如下 http://ip1:7777/ http://ip1:8080/ …

chatgpt赋能python:Python如何取出表格中的两列数据

Python 如何取出表格中的两列数据 在数据处理过程中,我们常常需要从表格中提取某些特定的数据。Python提供了许多方便的库来处理和操作数据,其中pandas库是一个非常常用的库。在本文中,我们将会介绍如何使用pandas库来取出表格中的两列数据。…

chatgpt赋能python:Python如何创建表格

Python如何创建表格 在数据处理和数据可视化中,表格是常见的一种数据展示方式。而Python作为一种非常强大的编程语言,自然也可以用来创建各种各样的表格。接下来,我们就来介绍一下Python如何创建表格。 Python创建表格的库 Python创建表格…

chatgpt赋能python:Python操作表格的全面指南

Python操作表格的全面指南 表格是一种非常实用的数据展示方式,程序员在处理数据以及展示数据时也经常使用表格。Python提供了多个强大的库操作表格,本文将为你介绍一些常见的Python操作表格的方式——包括读取、写入、处理和操作。 读取表格 Python提…

chatgpt赋能python:Python做表格的优势及应用

Python做表格的优势及应用 在数据处理与可视化的领域,表格是最常见的形式之一,也是经常被用来展示数据的有效方式。Python作为一种流行的编程语言,在数据处理方面有着强大的功能,同时也提供了许多生成表格的库与工具。本文将会介…

【Unity 导出 WebGL 通过Linux宝塔的 Nginx 连接数据库】使用 UnityWebRequest 与 WebAPI (php服务) 执行mysql命令

【Unity 导出 WebGL 通过Linux宝塔的 Nginx 连接数据库】使用 UnityWebRequest 与 WebAPI {php服务} 执行mysql命令 前言方案一,MySql.Data.MySqlClient前置准备数据库部分代码部分结论 方案二:创建中间php服务,通过UnityWebRequest调用&…

小白的GPT入门指南 - 技巧篇

前言 要想用好ChatGPT, 还是有一些技巧可以让我们是事半功倍的, 下面就列出常见的一些技巧和工具 翻译 ChatGPT母语是英语, 所以最符合逻辑的自然是英语提问, 当遇到英语能力不足的咱们, 一款优秀的翻译软件就显得格外重要 这里推荐deepl, 翻译会比某道翻译更加精准. Promp…

包学习(一款安卓端小学到高中全部课程精讲APP)

简介 【包学习】是一款拥有小学至高中九个学年的全套学习资料的APP,名校名师重点、难点精讲 软件简单介绍 软件分为首页、必刷课、动态教辅、在学、我的五大模块。 进入软件会让你选择对应的年级,小编这里就以高三年级课程给大家截图演示&#xff0…

学堂在线课程字幕下载

事情起因 学堂在线 工程伦理课程 在线学习,没有课件, 考试的时候可能会不方便,做一解决此类问题 字幕下载 合成为Txt 文件或者word 文件以供学习使用 事情经过 首先想到的是自己写一个爬虫 怕区相应的字幕, 发现是文本形式存储和, 很好做, 但是涉及到登录的cookie信息, 暂时…

课堂派资料PDF文件下载

课堂派资料PDF文件下载 前排提示,本文没有什么技术含量,大佬轻喷 因为暂时要上网课,但是年前走得着急其实是懒 ,课本没有带回来,所幸有的老师会发一些课本、习题的PDF到课堂派的“资料”里。但是有的时候会限制不让下…