装饰工程网站模板下载,仿制别人的竞价网站做竞价犯法吗,网络seo是什么意思,wordpress 5.1对话状态管理器
核心逻辑是解决键冲突和验证范围有效性#xff0c; 但需依赖外部输入的正确性。在实际应用中#xff0c; 可能需要结合用户提示或自动修正逻辑以提高鲁棒性。
NLU 槽 值 对儿
NLU的目的是把自然语言解析成结构化语义。结构化语义有多种表示方式#xff0c…对话状态管理器
核心逻辑是解决键冲突和验证范围有效性 但需依赖外部输入的正确性。在实际应用中 可能需要结合用户提示或自动修正逻辑以提高鲁棒性。
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.upper300。此时我们就需要根据检索结果对状态做二次更新将最优的检索结果中也不能满足的槽清空。
对话状态跟踪
对话状态跟踪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