从即将停用的LUIS迁移至Azure CLU:实现gather_number意图100%识别
从LUIS迁移至Azure CLU后实现gather_number意图100%置信度的优化方案
在LUIS中可通过指定pattern实现意图100%置信度识别,现从即将停用的LUIS迁移至Azure CLU,但CLU不支持pattern,相关逻辑在迁移中丢失。我们需要在CLU中构建模型,实现对各类含数字语句的gather_number意图100%置信度识别,但当前测试中部分场景未达标——实体识别准确率为100%,仅意图置信度不足。
测试结果
| 输入内容 | 意图 | myNumber实体值 | 预期意图置信度 | 实际意图置信度 |
|---|---|---|---|---|
| 1 | gather_number | 1 | 100% | 67.33% |
| 100 | gather_number | 100 | 100% | 100% |
| its 100 | gather_number | 100 | 100% | 100% |
| its 3212.44 | gather_number | 3212.44 | 100% | 65.18% |
| willing to give 383.22 | gather_number | 383.22 | 100% | 62.24% |
| dummy text | None | 无实体预测 | 100% | 67.30% |
| blah | None | 无实体预测 | 100% | 100% |
| 200 may be | None | 无实体预测 | 100% | 76.86% |
当前CLU项目配置
{ "projectFileVersion": "2022-10-01-preview", "stringIndexType": "Utf16CodeUnit", "metadata": { "projectKind": "Conversation", "settings": { "confidenceThreshold": 0 }, "projectName": "TestNumbers", "multilingual": false, "description": "Testing any number", "language": "en-us" }, "assets": { "projectKind": "Conversation", "intents": [ { "category": "None" }, { "category": "gather_number" } ], "entities": [ { "category": "mynumber", "compositionSetting": "combineComponents", "prebuilts": [ { "category": "Quantity.Number" } ] } ], "utterances": [ { "text": "oh k 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "take 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "100 now 200 later", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "only 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "100 only", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "100", "language": "en-us", "intent": "gather_number", "entities": [ { "category": "mynumber", "offset": 0, "length": 3 } ], "dataset": "Train" }, { "text": "this time 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "no 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "yes 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "for now 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "great 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "its 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "it is 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "ok 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "how about 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "got to pay 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" }, { "text": "my number is 100", "language": "en-us", "intent": "gather_number", "entities": [], "dataset": "Train" } ] } }
优化方案
1. 补充多样化训练样本
- 新增单数字(如
"1"、"5")、带小数的数字(如"3212.44"、"383.22")的gather_number意图样本,覆盖测试中置信度不足的输入场景 - 补充
"200 may be"这类数字出现在句中但属于None意图的样本,明确区分“含数字但不属于收集数字意图”的边界情况 - 给
None意图添加更多无数字的多样化文本,比如"random words"、"no number here",强化模型对非目标意图的判断
2. 完善实体标注
- 给所有
gather_number意图的训练 utterance 标注mynumber实体,让模型建立“意图-实体”的强关联,而不是仅单个样本标注 - 对于包含多个数字的样本(如
"100 now 200 later"),也要标注所有数字实体,提升模型对多数字场景的意图判断准确性
3. 利用CLU规则引擎替代LUIS Pattern功能
在CLU中通过意图规则实现类似Pattern的强匹配逻辑:
- 创建规则:当文本中识别到
mynumber实体时,强制将gather_number意图的置信度设为100% - 创建反向规则:当文本中未识别到
mynumber实体时,强制将None意图的置信度设为100%
4. 后处理逻辑兜底
如果规则引擎配置受限,可在调用CLU模型后添加简单的后处理逻辑:
- 若返回结果中存在
mynumber实体,直接将gather_number意图的置信度改为100% - 若不存在
mynumber实体,直接将None意图的置信度改为100%
内容的提问来源于stack exchange,提问作者Athadu
相关产品推荐
相关产品推荐

