基于Bot Framework与LUIS开发聊天机器人:能否创建模式识别实体?
当然可以创建模式匹配实体,完全不用手动录入所有ID!
你说的这种固定格式的ID(ESI-xxx-xxx,xxx是三位数字),LUIS专门提供了正则表达式实体来处理这类场景,完美适配你的需求,根本不用把所有可能的ID都手动加进去。
接下来具体说怎么做:
- 登录LUIS门户,打开你的机器人应用,进入「Entities」(实体)页面
- 点击「Create」创建新实体,选择「Regex entity」(正则表达式实体)类型
- 给实体起个好记的名字,比如
EsiId,然后在正则表达式框里输入:ESI-\d{3}-\d{3}- 简单解释下这个正则:
ESI-匹配固定前缀,\d{3}匹配任意三位数字,中间的-是固定分隔符,整体刚好匹配你提到的ESI-421-123这类格式
- 简单解释下这个正则:
创建完成后,这个实体就会自动识别所有符合该格式的ID了。而且你不需要在训练语句里把各种ID都列出来,只要在示例对话里包含几个符合格式的例子,LUIS就能准确匹配所有同格式的ID。
在Bot Framework里处理这个实体也很简单,举两个常用语言的示例:
C# 示例
// 从对话活动中提取目标实体 var esiIdEntity = turnContext.Activity.Entities.FirstOrDefault(e => e.Type == "EsiId"); if (esiIdEntity != null) { string targetId = esiIdEntity.Value.ToString(); // 这里就可以用这个ID做后续处理,比如查询关联数据、返回对应信息等 }
Python 示例
# 提取匹配到的ESI ID实体 esi_id_entity = next((e for e in turn_context.activity.entities if e.type == "EsiId"), None) if esi_id_entity: target_id = esi_id_entity.value # 执行你的业务逻辑
这种方式比手动录入所有ID高效太多,扩展性也极强——哪怕以后ID格式有小调整(比如把数字位数改成4位),只要修改正则表达式就行,不用重新整理所有ID列表。
内容的提问来源于stack exchange,提问作者user8366698
相关产品推荐
相关产品推荐

