好友
阅读权限10
听众
最后登录1970-1-1
|
昨天在论坛内看到一个有意思的帖子 工具名叫 海王1.1 具体地址:海王1.1的地址, 使用的是百度AI 自然语言处理中的 对话情感分析 和 图灵机器人接口. 突然奇想改成了web版,手里正好有服务器就部署上了 ,简单页面内容如下:
图例1
图例2
图例3
图例4
代码使用nodejs编写接口,前端页面使用bootstrap4编写,使用ajax请求接口. 代码粗糙且简单....
代码中需要使用到 百度AI的appkey和秘钥 ,图灵机器人的appkey和用户id,代码中已经用汉字替换出你要填写的地发放.
使用nodejs做了web服务, 端口为3030(可以自行修改成其他的端口),可以自己配置下nginx用域名访问.
我会把代码打包放上来,首先要确保你的电脑安装了nodejs ,在目录下使用 npm install 安装所需要的包,使用 node (文件名).js 运行程序就可以了
服务端代码如下:
[JavaScript] 纯文本查看 复制代码
//1. 加载http模块
var uu = require('url');
var http = require('http');
var rp = require('request-promise');
var fs = require('fs')
var label1 = {
'pessimistic':'负向情绪','neutral':'中性情绪','optimistic':'正向情绪'
}
var label2 = {
'happy':'开心','thankful':'感谢','complaining':'抱怨','angry':'愤怒','like':'喜爱','disgusting':'厌恶','fearful':'恐惧','sad':'悲伤'
}
var qs = require('querystring');
const param = qs.stringify({
'grant_type': 'client_credentials',
'client_id': '你的百度accesskey',
'client_secret': '你的百度密钥'
});
var request = require('request');
const { decode } = require('punycode');
//获取百度access_token
async function getAct() {
var access_token = '';
await rp({
method: 'GET',
uri: 'https://aip.baidubce.com/oauth/2.0/token?' + param,
json: true // Automatically stringifies the body to JSON
}).then(d => {
access_token = d.access_token
})
return access_token
}
//获取情感分析内容
async function postData(text) {
var a = await getAct()
var rq = { }
var dd = [];
var tlr = await getTuling(text)
rq.tl = tlr
await rp({
method: 'POST',
uri: 'https://aip.baidubce.com/rpc/2.0/nlp/v1/emotion?charset=UTF-8&access_token=' + a,
json: true, // Automatically stringifies the body to JSON
headers: {
'Content-Type': 'application/json'
},
body: {
"text": text
}
}).then( body=> {
for (var i =0;i<body.items.length;i++){
var lb = '';
var pro = '';
if(body.items[i].subitems.length>0){
if(body.items[i].subitems[0].prob){
pro = body.items[i].subitems[0].prob
}
if(body.items[i].subitems[0].label){
lb = label2[body.items[i].subitems[0].label]
}
}
dd[i]={
'type':label1[body.items[i].label],
'prob':body.items[i].prob,
'pro':pro,
'lb':lb
}
}
rq.dd = dd
})
return rq
}
//获取图灵回复文本
async function getTuling(text) {
var dd = ''
await rp({
method: 'POST',
uri: 'http://openapi.tuling123.com/openapi/api/v2',
json: true, // Automatically stringifies the body to JSON
headers: {
'Content-Type': 'application/json'
},
body: {
"reqType": 0,
"perception": {
"inputText": {
"text": text
},
},
"userInfo": {
"apiKey": "填写你的机器人key",
"userId": "填写你的机器人用户名"
}
}
}).then(d => {
dd = d.results[0].values.text
})
return dd
}
var server = http.createServer(async function (request, response) {
var parseObj = uu.parse(request.url, true);
// console.log(parseObj);
var pathname = parseObj.pathname; //相当于无参数的url路径
// 这里将解析拿到的查询字符串对象作为一个属性挂载给 req 对象,这样的话在后续的代码中就可以直接通过 req.query 来获取查询字符串了
request.query = parseObj.query;
var t= request.query.text
var url= request.url;
if(pathname === '/'){
response.write('Hello, welcome!')
response.write('Behind every successful man, there is a woman. And behind every unsuccessful man, there are two.')
response.end()
}else if(pathname === '/getD'){
var d = await postData(t)
response.writeHead(200, {"Content-Type": "text/json;charset=UTF-8"});
response.end(JSON.stringify(d) );
}else if(pathname ==='/page'){
fs.readFile('./index.html',function(err, data){
if(!err){
response.writeHead(200, {"Content-Type": "text/html;charset=UTF-8"});
response.end(data);
}else{
throw err;
}
})
console.log('有人访问page')
}
})
//3. 绑定端口
server.listen(3030)
//4. 执行
console.log('执行了3030')
附件在这里:
web.zip
(10.35 KB, 下载次数: 69)
第一次发帖好紧张,请大哥大姐们指指点点
|
免费评分
-
查看全部评分
|