对话时传入默认词槽的方法
半醉半醒半疯Z 发布于2020-10 浏览:1778 回复:3
1
收藏

功能介绍
多轮对话任务中经常需要添加默认词槽,如各种客服场景中,用户打进电话,系统能够拿到如电话号码等信息,从数据库中查到该用户的其他信息,此时可作为默认参数加到对话状态中,不需要再通过询问进行填槽。如图所示,加入了默认词槽『user_name:张三』。

 

实现方法
默认词槽可以通过updates字段传入,格式如下:

{
	"type":"MODIFY",
	"ops":
	[
	    //一个要传入的默认词槽信息
		{  
			"op":"ADD",
			"target":"SLOT",
			"value":{
				"begin":-1,  //词槽起始位置,字符技术,若词槽不在query中,则填-1   
				"length":-1,  //词槽长度,字符计数,若词槽不在query中,则填-1
				"original_word":"张三",    //词槽原值
				"normalized_word":"张三",   //词槽归一值
				"word_type":"",    //预留字段
				"name":"user_name"    //词槽名
			}
		},
		//一个要传入的默认词槽信息
		{  
			"op":"ADD",
			"target":"SLOT",
			"value":{
				"begin":-1,  //词槽起始位置,字符技术,若词槽不在query中,则填-1   
				"length":-1,  //词槽长度,字符计数,若词槽不在query中,则填-1
				"original_word":"13820306899",    //词槽原值
				"normalized_word":"13820306899",   //词槽归一值
				"word_type":"",    //预留字段
				"name":"user_phone_number"    //词槽名
			}
		}
	]
}

最后,updates字段的值要dump成字符串填入请求中,示例如下:

{
  "bot_session": "",
  "log_id": "logid123456",
  "request": {
    "bernard_level": 0,
    "query": "我要投诉",
    "query_info": {
      "asr_candidates": [],
      "source": "KEYBOARD",
      "type": "TEXT"
    },
    "updates":"{\"type\":\"MODIFY\",\"ops\":[{\"op\":\"ADD\",\"target\":\"SLOT\",\"value\":{\"begin\":-1,\"length\":-1,\"original_word\":\"张三\",\"normalized_word\":\"张三\",\"word_type\":\"\",\"name\":\"user_name\"}},{\"op\":\"ADD\",\"target\":\"SLOT\",\"value\":{\"begin\":-1,\"length\":-1,\"original_word\":\"13820306899\",\"normalized_word\":\"13820306899\",\"word_type\":\"\",\"name\":\"user_phone_number\"}}]}",
    "user_id": "userid1111"
  },
  "bot_id": "技能id",
  "version": "2.0"
}
收藏
点赞
1
个赞
共3条回复 最后由半醉半醒半疯Z回复于2020-12
#4半醉半醒半疯Z回复于2020-12
#3 射手散落一地回复
我这边试了一下,结果是直接命中意图,但是不会填词槽。。。。 [图片]

检查一下是否进行了转义,对比文档检查请求参数

0
#3射手散落一地回复于2020-12

我这边试了一下,结果是直接命中意图,但是不会填词槽。。。。

0
#2半醉半醒半疯Z回复于2020-10

欢迎大家测试与使用~

0
TOP
切换版块