Google Action中如何处理槽值的空格识别偏差与特殊字符适配问题
Google Action 站点名槽值识别异常规模化落地方案
核心解决思路
放弃逐个站点手动配置同义词的高成本模式,结合平台原生能力、自动化规则和后端兜底逻辑,零人工成本覆盖全量站点的识别错误场景。
具体可落地操作
1. 用实体批量导入能力替代手动同义词配置
直接通过Dialogflow提供的实体管理API,把全量站点名按固定规则自动生成识别映射,批量同步到自定义站点实体中,整个流程可做成自动化定时任务,不需要人工介入。
- 针对无空格连续站点名被错加空格的场景:写脚本对接用户的站点库,对所有无空格的连续站点名,结合通用英文常用词库做最大匹配拆分,把拆分生成的多词组合(比如无空格站点
demosite拆分为“demo site”)自动作为该站点条目的同义词,完成批量导入。 - 针对特殊字符被转写为英文单词的场景:提前固化特殊字符和ASR常见转写结果的映射表:
+→ 对应转写结果“plus”_→ 对应转写结果“underscore”-→ 对应转写结果“hyphen”&→ 对应转写结果“and”
脚本遍历全量站点名,自动把转写生成的多词组合(比如站点demo+site对应转写“demo plus site”)作为同义词同步到实体库。
- 同步时将该自定义实体的匹配优先级设为最高,让ASR在识别到相似发音时,优先匹配实体库的完整条目,避免默认拆分为独立单词。
2. 后端增加槽值模糊匹配兜底逻辑
不完全依赖前端ASR的识别结果,在Action后端接收到识别到的site_name槽值后,增加一层和当前用户自有站点库的匹配校验流程,从根源覆盖未配置到实体的识别错误:
- 先对ASR返回的槽值做标准化预处理:把所有转写出来的特殊字符对应英文词替换为实际特殊字符,再移除所有空格,生成标准化匹配字符串。比如ASR识别到的“demo underscore site”,先把“underscore”替换为
_,再去掉空格,得到和站点demo_site完全一致的匹配串。 - 匹配规则按梯度设置:
- 预处理后的字符串和用户站点库条目完全匹配的,直接返回结果
- 编辑距离小于2、文本相似度超过80%的,取相似度最高的站点作为最终匹配结果,不需要触发用户确认
- 相似度低于阈值的,再触发语音确认流程
这套逻辑不需要提前配置任何同义词,只要站点存在于用户的自有站点库,无论ASR是多识别了空格、还是把特殊字符转写为了对应英文词,都能被正确匹配到。
3. 优化槽值配置减少ASR拆分错误
- 不要使用
@sys.any这类无边界的系统实体承接site_name槽值,全部替换为提前导入的全量站点自定义实体,从源头给ASR提供明确的匹配范围,减少无意义的拆分。 - 定期收集线上识别失败的样本,把高频的错误映射补充到自动生成同义词的规则表里,迭代预处理的转写映射规则,持续提升匹配准确率。
内容的提问来源于stack exchange,提问作者ConextInsight2 Admin
相关产品推荐
相关产品推荐

