智能客服对话平台ICS

    规则模板


    在意图、问答和复合实体中,允许通过配置规则模板的方式来定义可以匹配的用户表述(query)的内容,从而可以实现通过规则的方式快速建立识别能力,对于一些特殊的case有比较好的针对性处理效果。

    基本语法

    NGD中建立了一套规则识别的语法,其基本语法定义如下:

    序号 语法名称 语法规则 语法说明 举例
    1 通配符 [W:a-b] 表示a-b位文本,a、b为0-20自然数,且b大于等于a 例如:[W:5-10]表示适配5-10字符长度的文本,可以匹配“同学,你好”,不可匹配“你好”
    2 任意数字 [N:a-b] 表示a-b位数字(阿拉伯数字、罗马数字),a、b为0-20自然数,且b大于等于a 例如:[N:3-3],表示适配3位数字的文本,可以匹配“123”,不可以匹配“1234”
    3 任意字母 [L:a-b] 表示a-b位英文字母,不区分大小写,a、b为0-20自然数,且b大于等于a 例如:[L:0-5],可以匹配“”、“aBc”、“A”,可匹配“abcdefg”中小于5个字符的部分
    4 任意标点 [P:a-b]] 表示a-b位标点符号,a、b为0-20自然数,且b大于等于a 例如:[P:1-3],可以匹配“?”,“。。。”
    5 任意符号 [S:a-b] 表示a-b位ASCII符号,例如数学符号,货币符号,a、b为0-20自然数,且b大于等于a 例如:+、-、=、¥等
    6 任意分隔符 [Z:a-b] 表示a-b位分隔符,例如空格、换行,a、b为0-20自然数,且b大于等于a 直接输入空格或换行即可。注意虽然本工具支持调试,但在真实进行语义识别中往往会对句首句尾的分隔符进行去除
    7 否定语法 [W:a-b^{xxx}] 表示长度为a-b位不包含的xxx的文本,a、b为0-20自然数,且b大于等于a 例如:[W:5-10^{不要}],表示最小5位最长10位且不包含“不要”的文本
    8 符合文本 xxx 表示必须完全符合xxx,xxx可以是语法支持的任何内容 例如:额度 表示文本必须完全符合“额度”这两个字
    9 模糊匹配语法 ~xxx 表示只要包含xxx即可匹配,xxx可以是语法支持的任何内容 例如:~额度,表示文本中只要包含“额度”这两个字即可匹配
    10 非必选文本 [xxx?] 表示文本中可以存在或不存xxx 例如:[一辆?]表示语句中可以存在“一辆”,也可以不存在
    11 可选对象 [AAA|BBB] 表示符合AAA或者BBB中的一个,AAA/BBB可以是语法支持的任何内容,例如文本、实体、词库 例如:[查询|查找|@check] 表示语句中必须符合“查询”或“查找”或“@check”中的实体值
    12 实体引用 [@实体id] 表示符合某实体中任意一条实体值;仅支持引用普通实体和规则实体,不支持引用复合实体 例如:[@sys_location] 表示用户语句中符合地点实体值,例如“北京”即可识别
    13 词库引用 [$词库ID] 表示符合某词库中任意一个词条 例如:用户创建了一个ID为abc的专业词库,则[$abc]表示该词库下的词条均可识别到配置该模板的意图上
    14 值抽取 {} 支持模板通过配置{}抽取某些值,此功能主要用于复合实体命中模板 例如"[W:0-10]{[@sys_number],name='number'}",输入"我要买123",返回结果{'number':123}

    注意:语法中使用到的符号均为英文符号,例如请注意区分英文"~"和中文"~",

    模板规则调试工具

    在意图模板、问答模板、复合实体命中模板中,可以通过文本框右侧图标唤起模板规则测试工具。通过该工具,可以先验证模板识别的正确性再保存到相应模块中。

    image.png

    image.png

    常见规则模板写法

    意图/问答规则模板使用案例

    【case1】设立了一个信用卡办理的意图,希望表达相关信用卡时可以直接命中办理意图。

    首先,建一个信用卡的实体,将相关信用卡的名称和俗称添加到实体的实体值和同义词中。然后为该意图添加一个模板,这样只要包含该实体的表达都会识别为信用卡办理意图:

    ~[@creditCard]

    但是这样的模板显然过于宽泛,用户可能希望更精准地控制,那么可以分析办理信用卡的表达还有什么特点。不难发现,如果用户表达办理的诉求,往往会加上一些动词,因此可以枚举常见的办理相关的动词,使模板具备一定的限定能力,例如:

    ~[办|办理|开][@creditCard]

    进一步分析还可以发现,不同场景用户的表达会更加口语化,所以可以进一步添加一些限定以更好支持:

    ~[办|办理|开][个?|张?][@creditCard]

    【case2】模版片段组合使用

    • “|”关系可与“?”关系混合使用,“|”优先级较高

        例如:
        写法:[查询?|查看?|查查?]天气
        含义:“查询”“查看”“查查”存在或不存在均可,但不同时存在。“天气”为必须字段。
        可命中语句:查询天气;查看天气;查查天气;天气
    • [W:a-b]、[@实体ID]、xx可与“?”、“|”混用

        例如1:
        写法:[@card_type?]额度  (@card_type包含信用卡、借记卡两个实体值)
        含义:@card_type中的任一实体值存在或不存在均可,“额度”为必须字段。
        可命中语句:信用卡额度;借记卡额度;额度
      
        例如2:
        写法:[W:0-2|帮我看看]余额
        含义:任意0-2个字符或“帮我看看”存在,“余额”为必须字段
        可命中语句:帮我看看余额;查查余额;余额;查余额;xx余额
      
        例如3:
        写法:[卡片|@card_type?]额度  (@card_type包含信用卡、借记卡两个实体值)
        含义:(1)“卡片”存在  或 (2) @card_type中的任一实体值存在或不存在,“额度”为必须字段。
        可命中语句:卡片额度;信用卡额度;借记卡额度;额度

    复合实体规则模板使用案例

    【case1】一句话中有两个相同的实体需要做标记,例如,标记出发地(start)和目的地(end):

    **~我要[从?]{[@sys_location],name='start'}[前往|到|去]{[@sys_location],name='end'}**

    【case2】一句话中有多个属性信息需要采集,例如机场航线实体,需要采集出发地、出发机场、目的地、目的机场四个信息:

    **[W:0-7]从{[@City],name='startCity'}[的?]{[@airport],name='startAirport'}[出发?][开始?][启程?][至|到达|到|往|去|飞|飞到|飞往|飞去|前往|回]{[@City],name='endCity'}[的?]{[@airport],name='endAirport'}[W:0-7]**

    模板书写Tips:先定义模板书写思路,可以使模板书写得更精准,以上述模板为例:

    泛化宽度+出发前缀词+出发地(地名+机场)+出发后缀词+航线连接词+目的地(地名+机场)+泛化宽度

    • 前缀泛化宽度:[W:0-7]
    • 出发前缀词:从
    • 出发地:{[@City],name='startCity'}[的?]{[@airport],name='startAirport'}
    • 出发后缀词:[出发?][开始?][启程?]
    • 航线连接词:[至|到达|到|往|去|飞|飞到|飞往|飞去|前往|回]
    • 目的地:{[@City],name='endCity'}[的?]{[@airport],name='endAirport'}
    • 后缀泛化宽度:[W:0-7]

    注:事实上用户表达会有更多可能,因此可能需要在命中规则中添加多组,此处仅以标准表达为示例

    使用提示

    1.规则模板常常用来解决冷启动阶段语料较少的问题,其利用规则的方式定义文本的格式,有较高识别效率,但是也会遇到一些错误案例。复杂情况的模板配置可能比较复杂。

    2.当前可以通过模板配置实现手动指定澄清功能。例如,在意图a和问答b下配置一个一模一样的模板,若用户表述符合模板内容,则会触发澄清。

    3.复合实体的命中模板需要考虑更多实体属性组合的情况。假设有一个机场航线的复合实体,具有四个属性(出发城市、出发机场、到达城市、到达机场),那么其命中模板要考虑用户表述中对一些值的省略。例如,用户可能会说“我要从北京到广州”,而省略了机场的表达,此时模板规则要考虑到这种情况也能识别为机场航线实体。

    上一篇
    表达式说明
    下一篇
    规则实体与复合实体