天天看點

python百度unit_Python——在調用Baidu的unit接口時,如何設定意向置信度,使其始終傳回第一個say,實作,百度,UNIT,意圖,總是...

前言

今天打算用python實作利用百度UNIT實作多輪對話時發現了一個問題,首先機器人已經創造完了,也給機器人加上了各種技能,但是在運作程式的時候總是給不到自己想要的回答,或者說給我已經設定好的答案的時候簡直少之又少,多次輸入之後我發現了問題所在,原來傳回給我這一端的回答有很多種,我這一端的程式最後隻會取很多種回答的其中一種,而且是随機的,再次觀察我發現我想要的回答總是在第一個 say 裡面,嘶,該如何解決這個問題呢?找尋辦法ing…等我發現了解決的辦法再回快來更新,嘿嘿嘿

————————————————————————————————————————————

解決辦法

當當當當,我回來啦,經過不懈努力終于找到了問題根源,上代碼:

unit_chat_obj_result = unit_chat_obj["result"]

unit_chat_response_list = unit_chat_obj_result["response_list"]

# 随機選取一個"意圖置信度"[+response_list[].schema.intent_confidence]不為0的技能作為回答

unit_chat_response_obj = random.choice(

[unit_chat_response for unit_chat_response in unit_chat_response_list if

unit_chat_response["schema"]["intent_confidence"] > 0.0])

unit_chat_response_action_list = unit_chat_response_obj["action_list"]

unit_chat_response_action_obj = random.choice(unit_chat_response_action_list)

unit_chat_response_say = unit_chat_response_action_obj["say"]

return unit_chat_response_say

上面代碼的意思呢差不多就是從傳回的答案清單裡面随意選一個答案交給 unit_chat_response_obj ,然後呢巴拉巴拉列印出來,嗯,差不多是這個意思,困擾我的就是這條語句:

unit_chat_response_obj = random.choice(

[unit_chat_response for unit_chat_response in unit_chat_response_list if

unit_chat_response[“schema”][“intent_confidence”] > 0.0])

在這裡面用了一個随機數選擇函數

random.choice();

是以最後的結果就是會傳回一個不确定的答案,該死,讓我找了好幾個小時,我想要的隻有第一個答案,那麼在這個清單裡,大家也都知道,我隻要選擇

list[0]

就好啦,是以我做了如下改動:把上面的黑色字型函數改成:

unit_chat_response_obj = unit_chat_response_list [0]

輕松解決,嘿嘿嘿。

加油!