当前位置: 首页 > news >正文

【对话状态跟踪】关心整个对话过程用户完整意图变化

对话状态管理器

核心逻辑是解决键冲突和验证范围有效性
但需依赖外部输入的正确性。在实际应用中,
可能需要结合用户提示或自动修正逻辑以提高鲁棒性。

NLU 槽 值 对儿

NLU的目的是把自然语言解析成结构化语义。结构化语义有多种表示方式,常用的表示方式为Dialogue Act和槽-值对儿的形式

如图下方State即槽-值对儿形式
在这里插入图片描述
在这个场景中,我们可以假设DST更新时每轮是增量补充检索条件或覆盖原有检索条件。根据这个思路,我们设计一个最简单的DST:

func stateUpdate(state, nlu_semantics):

#更新当前槽

for slot in nlu_semantics:

state[slot] = nlu_semantics[slot]

检索后再更新△:仔细推想不难发现,当检索条件堆叠后,会有搜不到满足条件的酒店的情况(比如"type=豪华型,price.range.upper=300")。此时,我们就需要根据检索结果对状态做二次更新,将最优的检索结果中也不能满足的槽清空。

对话状态跟踪

对话状态跟踪(Dialogue State Tracking, DST):
作用是根据多轮对话,维护用户的完整意图。

NLU与DST的区别在于,前者重在解析当前轮输入的语义,
而后者关心的是整个对话过程中用户完整意图的变化。

举一个简单的例子,用户第一轮说"评分高的酒店",
这时已知的意图只有"评分=高",

而当第二轮用户补充说"豪华型的",
用户的完整意图就成了"评分=高 AND 类型=豪华型"。

注意,用户意图在对话过程中不一定只是按增量补充的方式变化的,
用户也能修改或重置之前的查询条件,
所以当某一项意图变化时会连带其它项跟随变化

商品价格对话管理

class DialogManager:def __init__(self):self.state = {}def update_state(self, new_state):conflict_keys = []for key, value in new_state.items():if key in self.state and self.state[key] != value:conflict_keys.append(key)for key in conflict_keys:del self.state[key]self.state.update(new_state)if ("price.range.low" in self.stateand "price.range.high" in self.state):if self.state["price.range.low"] > self.state["price.range.high"]:del self.state["price.range.low"]del self.state["price.range.high"]if "price.range.low" in new_state:self.state["price.range.low"] = new_state["price.range.low"]if "price.range.high" in new_state:self.state["price.range.high"] = new_state["price.range.high"]if ("rating.range.low" in self.stateand "rating.range.high" in self.state):if (self.state["rating.range.low"]> self.state["rating.range.high"]):del self.state["rating.range.low"]del self.state["rating.range.high"]if "rating.range.low" in new_state:self.state["rating.range.low"] = new_state["rating.range.low"]if "rating.range.high" in new_state:self.state["rating.range.high"] = new_state["rating.range.high"]def get_state(self):return self.state
http://www.lryc.cn/news/545969.html

相关文章:

  • 【分享】网间数据摆渡系统,如何打破传输瓶颈,实现安全流转?
  • TikTok创作者市场关闭!全新平台TikTok One将带来哪些改变?
  • LeetCode hot 100—矩阵置零
  • 部署Windows Server自带“工作文件夹”实现企业网盘功能完整步骤
  • 植物大战僵尸杂交版v3.3最新版本(附下载链接)
  • 非关系型数据库和关系型数据库的区别
  • CPU负载高告警问题的定位与优化建议
  • 2月28日,三极管测量,水利-51单片机
  • 批量提取 Word 文档中的图片
  • C#—Settings配置详解
  • UI自动化框架介绍
  • 【工具推荐】在线提取PDF、文档、图片、论文中的公式
  • 帮我设计一个c语言学习阶段
  • 解决windows npm无法下载electron包的问题
  • 网络编程 day01
  • 【三.大模型实战应用篇】【4.智能学员辅导系统:docx转PDF的自动化流程】
  • 2915. 和为目标值的最长子序列的长度
  • 谷仓的安保
  • vcredist_x64 资源文件分享
  • MySQL零基础教程14—子查询
  • 使用mermaid查看cursor程序生成的流程图
  • L1-031 到底是不是太胖了
  • 服务器时间同步
  • 01. HarmonyOS应用开发实践与技术解析
  • 【大厂AI实践】清华:清华古典诗歌自动生成系统“九歌”的算法
  • JS基础之函数
  • 基于java SSM springboot学生信息管理系统设计和实现
  • 【MongoDB】在Windows11下安装与使用
  • HTML在网页开发中的应用与重要性
  • 深度学习-140-RAG技术之Agentic Chunking分块技术的实现细节和完备实现