日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java unit包_Java接入UNIT文本对话处理源码详解

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java unit包_Java接入UNIT文本对话处理源码详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應邀一位網友的想法,想實現調用UNIT接口,實現文字對話功能,特整理一下內容分享給大家。

此功能對于大神來說非常簡單,但是對于新手理解代碼處理邏輯,并且如何解析UNIT返回參數的處理,還是有一定的幫助的。

嘿嘿~文章最下方有源碼下載地址喲~

如果您還不了解UNIT的使用,請移步到UNIT文檔,請認真閱讀~

http://ai.baidu.com/docs#/UNIT-sample/top

并且能夠訓練出該場景的機器人,本文例子就是利用這個天氣機器來做對接的。

接下來看下對話交互的頁面效果,請看下方圖片

以上是整體的交互效果,那么現在簡單的來說說怎么搭建這個項目的步驟:

1.訓練出UNIT場景模型(此處為天氣查詢場景)

2.導入此例子的源碼項目(java開發)

3.修改token配置

4.啟動項目即可

按照以上步驟一步一步進行,先看看該項目的包結構

注意:獲取token類之后,把token復制到UNIT核心類中,并且還需要記得修改場景ID,以下是核心類的作用:解析UNIT返回的JSON數據,獲取我們需要的數據

此處能力有限,只能一步一步利用JSON解析,hhhh~

//獲得返回的json數據

String str = HttpUtil.post(talkUrl, accessToken, "application/json", params);

System.out.println(str);

//獲得result

JSONObject jsonobject = JSONObject.fromObject(str);

String result = jsonobject.getString("result");

System.out.println(result);

//獲得會話session_id

JSONObject jsonobject2 = JSONObject.fromObject(result);

session_id = jsonobject2.getString("session_id");

map.put("session_id", session_id);

//獲得動作列表

String action_list =jsonobject2.getString("action_list");

JSONArray json = JSONArray.fromObject(action_list); // 首先把字符串轉成 JSONArray 對象

if(json.size()>0){

for(int i=0;i然后在分享控制層的作用:

1.首先用一個Map接收解析的數據,傳到控制層,然后

2.判斷是否命中意圖,

3.如果命中意圖,該意圖是否完成還是未完成,

4.既然是命中意圖,那么命中的是那個意圖,需要做什么樣的邏輯處理.

//調用unit分析語音

Map map = UnitService.utterance(session_id, msg);

//判斷是否命中意圖

if(!"fail_action".equals(map.get("action_id"))){

//判斷是否意圖結束

if("satisfy".equals(map.get("act_type"))){

session_id="";//意圖結束,清空session_id

/**

* 以下是意圖處理邏輯,根據命中的意圖,判斷進入當前意圖的對話處理 current_qu_intent字段為意圖

*/

switch (map.get("current_qu_intent")) {

case "RAIN": //查詢是否下雨

//解析是否刮風的詞槽列表

String companyParams = getCompany(map.get("bot_merged_slots"));

if(!companyParams.equals("")){

modelMap.put("companyParams", companyParams);

}else{

modelMap.put("companyParams", map.get("raw_query"));

}

modelMap.put("queryType", "COMPANY");

break;

case "WIND": //查詢是否刮風

//解析是否刮風的詞槽列表

String companyParams2 = getCompany(map.get("bot_merged_slots"));

if(!companyParams2.equals("")){

modelMap.put("companyParams", companyParams2);

}else{

modelMap.put("companyParams", map.get("raw_query"));

}

modelMap.put("queryType", "COMPANY");

break;

default:

break;

}

}else{

//意圖未完成 需要傳入session_id 用戶下一次對話

session_id = map.get("session_id");

}

//返回機器人說的bot 不管意圖有沒有命中

modelMap.put("msg", map.get("say"));

}else{

modelMap.put("msg", "我好像不太明白");

}

接下來咋們看前臺的一個處理,這是頁面上的發送消息的一個函數,作用:

1.獲取文本消息,加載到聊天頁面樣式中

2.ajax調用后臺控制層,然后判斷是否正常返回數據

3.加載機器回復消息樣式

//發送消息

function sendMessage(event, from_name){

//獲得發送的消息

var msg = $("#message").val();

// alert(msg);

//自己回復的樣式加載

var htmlData = '

'

+ '

'

+ '

'

+ '

' + msg + ''

+ '

' + from_name + ' · 30秒前'

+ ''

+ '';

$("#message_box").append(htmlData);

$('#message_box').scrollTop($("#message_box")[0].scrollHeight + 20);

$("#message").val('');

var session_id = $("#session_id").val();

$.ajax({

type:"POST",

url:"${pageContext.request.contextPath}/unit/common.do",

// datatype: "json",

data:{

"session_id":session_id,

"msg":msg

},

success:function(data){

var mes = eval(data);

if (mes.success) {

var msg = data.msg;

var session_id = data.session_id;

$("#session_id").val(session_id);

//機器人回復樣式加載

var htmlData = '

'

+ '

'

+ '

'

+ '

' + msg + ''

+ '

' + '機器人 ' + '· 30秒前'

+ ''

+ '';

$("#message_box").append(htmlData);

$('#message_box').scrollTop($("#message_box")[0].scrollHeight + 20);

$("#message").val('');

} else {

alert("返回數據失敗");

}

},

error: function(){

//請求出錯處理

alert("出情況了");

}

});

}

經過前臺和后臺的一些講解,不知道大家清楚不,如果有任何問題,可以在下方回復我

感謝支持~

附加源碼下載:https://gitee.com/liyingming/unitTest

總結

以上是生活随笔為你收集整理的java unit包_Java接入UNIT文本对话处理源码详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。