功能定位
通过对模版的标注实现对用户输入文本内容进行解析的能力,可以根据用户标注实现一定的泛化能力。 模版看作是一组模版片段的组合。模版片段是符合一定规则的语义片段的抽象表达,可由词槽、特征词和特定文本单独或组合而成。模版片段间可以无序,也可以指定相互之间的顺序;还可以指定在该模版中,某一模版片段是否必须存在。用户通过模版的不同用法,可以实现对不同形态的 query 的解析。
名词解释
模版:用于表述某一个或某一类特定需求的、抽象的语言表述规则,由一个或多个模版片段组成。
模版片段:符合一定规则的语义片段的抽象表达,如“到”、“到[目的地]”等。
意图:模版所表述的用户中心需求。如“[S:location][S:time]天气”的中心需求是查天气,可表示为“WEATHERINFO”。
词槽:一类词的抽象,用于对意图进行限定和约束;如所有地点可抽象表示为“[S:location]”。
特征词:由口语化词、辅助表述词、标点符号等对用户输入的文本内容真实理解无影响的词组成,支持多个,例如[F:think]。特征词词表需要用户自己上传或添加。
通配符:可以匹配指定长度的任意字符串;可表示为“[W:0-10]”标识,表示可匹配总字节数在 0 到10 之间的任意字符串,一个汉字占一个字节。
词槽通配符:以匹配指定长度的任意字符串;可表示为“[S:location:U(1-4)]”标识,表示可匹配总字节数在 1 到4之间的任意字符串,一个汉字占一个字节。它与通配符的区别为它可以将识别到的字符作为词槽值进行抽取。
模版顺序:模版之间是有序的,越靠前的模版,优先级越高。
模版片段顺序:query 所需满足的一组模版片段之间的相对顺序,在匹配 query 时,位置小的模版片段在位置大的模版片段的左侧,其中位置为 0 表示可匹配 query 中的任意位置。
模版片段是否必须匹配:query 在匹配当前模版时,是否必须存在当前模版片段所描述的局部语义片段。
解析返回所有词槽:默认选“是”,解析返回用户 query 中可以识别的所有词槽。如果选“否”,则只解析返回用户 query 中当前模版里插入的词槽。
#@start@#
:限定当前模版片段在匹配用户输入 query 时仅可从最左侧开始匹配。
#@end@#
:限定当前模版片段在匹配用户输入 query 时仅可匹配最右侧部分。
使用示例
精确匹配
特点:准确率高,可匹配query范围小
效果:仅可解析完全匹配该模版的query。
普通文本
标注意图:MOVIE
标注模版:
模版片段 | 位置 | 必须匹配 |
---|---|---|
#@start@#我想看电影#@end@# | 0(默认) | 是(默认) |
标注含义解读:上述标注仅可将“我想看电影”这一 query 解析为 MOVIE 意图,无词槽。
说明:该标注可定义某个特定 query 的解析结果。
普通文本(模版片段需标注词槽)
标注意图:MOVIEINFO
标注模版:
模版片段 | 位置 | 必须匹配 |
---|---|---|
#@start@#我想看[S:movie:星际穿越]#@end@# | 0(默认) | 是(默认) |
解析返回所有词槽:是。
标注含义解读:上述标注仅可将“我想看星际穿越”这一 query 解析为 MOVIEINFO 意图和user_movie 词槽(词槽内容是“星际穿越”)。
说明:该标注可定义某个特定 query 的解析结果。
词槽+普通文本
标注意图:WEATHER_INFO
标注模版:
模版片段 | 位置 | 必须匹配 |
---|---|---|
#@start@#[S:loc][S:time]天气如何#@end@# | 0(默认) | 是(默认) |
解析返回所有词槽:是。
标注含义解读:上述标注表示可以将所有满足“[地点]+[时间]+天气如何”这一规则的 query 解析为 WEATHERINFO 意图。如“北京今天天气如何”,“天津明天天气如何”等。其中“[S:loc]”表示所有地点组成的集合,“[S:time]”表示所有时间描述组成的集合。
说明:该标注仅能对满足该模版的所有用户输入文本内容生效。
注意:当一条模版片段开头和结尾部分分别有#@start@#和#@end@#限定时,所有其他配置项失效,模版仅匹配符合该模版片段所表述模式的 query。
特征词+词槽+普通文本
标注意图:WEATHERINFO
标注模版:
模版片段 | 位置 | 必须匹配 |
---|---|---|
#@start@#[F:wantkey][S:loc][S:time] 天 气 如 何#@end@# | 0(默认) | 是(默认) |
解析返回所有词槽:是,
标注含义解读:该模版新增了特征词,且该特征词不会展示在解析结果中。若[F:wantkey]特征词中包含词汇“我想查”,则上述模版可匹配“我想查北京今天天气如何”、“我想查天津明天天气如何“等。
说明:[F:wantkey]属于用户自定义的特征词,特征词名和特征词词典都需要用户自定义,与词槽唯一区别就是解析结果中不会展示。
通配符+特征词+词槽+普通文本
标注意图:WEATHERINFO
标注模版:
模版片段 | 位置 | 必须匹配 |
---|---|---|
#@start@#[W:0-10][F:loc][S:time] 天气如何#@end@# | 0(默认) | 是(默认) |
解析返回所有词槽:是。
标注含义解读:该模版新增了通配符,上述标注表示可以将所有满足“*+[城市]+[时间]+天气如何”这一规则的文本内容解析为 WEATHERINFO 意图,但是可通配的字符串总字节数为 0-10 之间。如“帮我查下北京今天天气如何”,“查查北京今天天气如何”等。
说明:通配符、特征词、词槽、普通文本用户可根据需要任意组合,不限定组合顺序。
泛化匹配
特点:可匹配 query 范围大(可减少模版的配置工作量)。
功能:可匹配所有符合该模版描述规则的 query。
唯一模版片段
标注意图为:LOC
标注模版为:
模版片段 | 说明 | 位置 | 必须匹配 |
---|---|---|---|
[S:loc] | 地点 | 0(默认) | 是(默认) |
解析返回所有词槽:是。
标注含义解读: query 必须包含[地点]。
多个模版片段
标注意图:WEATHERINFO
标注模版:
模版片段 | 说明 | 位置 | 必须匹配 |
---|---|---|---|
[S:loc] | 地点 | 0(默认) | 是(默认) |
[S:time] | 时间 | 0(默认) | 是(默认) |
天气 | 0(默认) | 是(默认) |
解析返回所有词槽:是。
标注含义解读:该模版可匹配满足以下条件的 query:
(1).query 必须包含“[地点]”、“[时间]”和"天气。
(2).“[地点]”、“[时间]”和"天气"三者之间顺序不做限制。
说明:该标注可覆盖以下精确匹配模版:
#@start@#[W:0-*][S:loc][W:0-*][S:time][W:0-*]天气[W:0-*]#@end@#
#@start@#[W:0-*][S:time][W:0-*][S:loc][W:0-*] 天气[W:0-*] #@end@#
#@start@#[W:0-*][S:loc][W:0-*]天气[W:0-*][S:time][W:0-*]#@end@#
#@start@#[W:0-*][S:time][W:0-*]天气[W:0-*][S:loc][W:0-*]#@end@#
#@start@#[W:0-*]天气[W:0-*][S:loc][W:0-*][S:time][W:0-*]#@end@#
#@start@#[W:0-*]天气[W:0-*][S:time][W:0-*][S:loc][W:0-*]#@end@#
可设置模版片段间顺序及必须匹配
标注意图:ROUTE
标注模版:
模版片段 | 说明 | 位置 | 必须匹配 |
---|---|---|---|
[S:start] | 出发地 | 1 | 否 |
[F:to] | 到达词 | 2 | 是 |
[S:end] | 目的地 | 3 | 是 |
标注含义解读:该模版可匹配满足以下条件的 query:
(1).query 中必须包含“[到达词]”、“[目的地]”,且在 query 中到达词必须在目的地前面。
(2).query 中可以没有“出发地”。
(3).若 query 中有“[出发地]”,则“[出发地]”、“[到达词]”、“[目的地]”之间相对位置必须为“[出发地] -> [到达词] -> [目的地]”。
说明:该标注可覆盖以下精确匹配模版:
#@start@#[W:0-*][F:to] [W:0-*][S:end][W:0-*]#@end@#
#@start@#[W:0-*][S:start][W:0-*][F:to][W:0-*][S:end][W:0-*]#@end@#
模版片段支持通配符
标注意图:ROUTE
标注模版:
模版片段 | 说明 | 位置 | 必须匹配 |
---|---|---|---|
[S:start] | 出发地 | 1 | 否 |
[F:to][W:0-4][S:end] | 2 | 是 |
解析返回所有词槽:是
标注含义解读:该模版可匹配所有满足以下条件的 query:
(1).query 中必须存在满足“[F:to][W:0-4][S:end]”模式的片段
(2).“[F:to]”与“[S:end]”之间,仅允许存在 0-4 个其他字符
(3).query 中可以没有“出发地”
(4).若 query 中有“[出发地]”,则“[出发地]”、“[到达词]”、“[目的地]“之间相对位置必须为” [出发地] -> [到达词][W:0-4][目的地]”
说明:该标注可覆盖以下精确匹配模版
#@start@#[W:0-*][F:to][W:0-4][S:end][W:0-*]#@end@#
#@start@#[W:0-*][S:start][W:0-*][F:to][W:0-4][S:end][W:0-*]#@end@#
模版片段中位置可设置为 0(任意位置)
标注意图:NEARBY
标注模版:
模版片段 | 说明 | 位置 | 必须匹配 |
---|---|---|---|
[F:recomm] | 推荐词 | 0 | 否 |
[F:nearby] | 附近词 | 1 | 是 |
[S:target] | 查询目标 | 2 | 是 |
解析返回所有词槽:是。
标注含义解读:该模版可匹配满足以下条件的 query:
(1).query 中必须存在[附近词]和[查询目标],且 query 中必须存在[附近词]在[查询目标]之前的片段
(2).query 中可以没有[推荐词],若有,[推荐词]的顺序可以在 query 中任意位置。
说明:该标注可覆盖以下精确匹配模版:
#@start@# [W:0-*][F:recomm][W:0-*][F:nearby][W:0-*] [S:target][W:0-*]#@end@#
#@start@#[W:0-*][F:nearby][W:0-*][F:recomm][W:0-*][S:target] [W:0-*]#@end@#
#@start@#[W:0-*][F:nearby][W:0-*][S:target][W:0-*][F:recomm] [W:0-*]#@end@#
#@start@#和#@end@#可出现在不同的模版片段中
标注意图:URL
标注模版:
模版片段 | 说明 | 位置 | 必须匹配 |
---|---|---|---|
#@start@#http | 匹配开头 | 1 | 是 |
movie | 2 | 是 | |
com#@end@# | 匹配结尾 | 3 | 是 |
解析返回所有词槽:是。
标注含义解读:该模版可匹配以 http 开头,以 com 结尾且 http 和 com 之间存在 movie 字符串的query。
说明:#@start@#仅可在模版开头出现,#@end@#仅可在模版结尾出现,在模版中#@start@#和#@end@#分别最多只能出现一次,且允许出现在同一模版中。
#@start@#和#@end@#可单独出现在模版中
标注意图:EMAIL
标注模版:
模版片段 | 说明 | 位置 | 必须匹配 |
---|---|---|---|
[S:letter] | 字母 | 1 | 否 |
[S:num] | 数字 | 1 | 否 |
com#@end@# | 2 | 是 |
解析返回所有词槽:是。
标注含义解读:该模版可匹配以 com 结尾,可能包含字母和数字的 query,其中字母和数字之间顺序不作限制,但字母和数字必须在 com 前面。
说明:位置相同的模版片段之间无序,位置小的模版片段在匹配时必须在位置大的模版片段前面。
模版中可以对通配符设置词槽
若模版中需要对通配符[S:content:U(1-10)]标注词槽,则可通过如下方式实现:
新建词槽"content",将意图中添加content词槽,在标注模版时,即可使用该词槽,使用方式为[S:content:U(1-10)]。
标注模版:
模版片段 | 位置 | 必须匹配 |
---|---|---|
给[S:per]发短信 说[S:content:U(1-10)] | 0 | 否 |
标注含义解读:该模版可匹配 query:"给刘德华发短信说你的歌唱得很好听","给张学友发短信说你上次开的演唱会很棒"等 query。
说明:此种标注方式支持对模版中的通配符标注词槽,词槽值内容不限,仅对长度有限制,长度即[S:content:U(1-10)]中1-10表示的长度。
模版片段标注说明
模版片段的组成部分
普通文本
即不包含“[S:”、“[W:”、 “[F:”、“]”、“:”的文本,例如“我想看”。
词槽或特征词
格式为[S:词槽名]或[F:特征词名],例如“[S:movie]”或“[F:wantkey]”。
通配符
格式为[W:自然数-自然数],第一个自然数≤第二个自然数,例如“[W:0-10]”。
词槽加词槽值
格式为[S:词槽名:普通文本],例如“[S:movie:星际穿越]”。
词槽加通配符
格式为[S:词槽名:U(-)],例如“[S:movie:U(1-9)]”。
模版片段整体格式要求如下:
(1).模版片段可以由元素 a、b、c、d、e 自由组合,但是c和e不能位于模版片段的开始或者结尾,除非有#@start@#或者#@end@#进行限定;
(2).元素 b 和 d 中的词槽名/特征词名必须是用户在该场景下已配置的词槽或特征词;
(3).模版片段中,“[S:”及后面连着的片断必须符合元素 b 、d或 e 的格式,“[W:”及后面连着的片断必须符合元素 c 的格式。
(4).同一个模版中不允许出现重复的词槽名。
合法模版片段的示例:
我想看星际穿越
[S:movie]
#@start@#[W:2-10][S:movie:星际穿越]
我想看[S:movie]
我想看[S:movie][S:version] 我想看
我想看[W:1-10]的[W:2-8]#@end@#
我想看[S:movie]的[W:2-8]
我想看[S:movie:星际穿越]
我想看[S:movie:星际穿越][S:version:U(1-4)]
非法模版片段的示例:
我想看[S:movie:星际穿越][W:0-10]
我想看[S:movie:星际穿越][S:movie] 我想看
我想看[W:0~10]