天天看点

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]

轻松解决,嘿嘿嘿。

加油!