功能定位

通过对模版的标注实现对用户输入文本内容进行解析的能力,可以根据用户标注实现一定的泛化能力。 模版看作是一组模版片段的组合。模版片段是符合一定规则的语义片段的抽象表达,可由词槽、特征词和特定文本单独或组合而成。模版片段间可以无序,也可以指定相互之间的顺序;还可以指定在该模版中,某一模版片段是否必须存在。用户通过模版的不同用法,可以实现对不同形态的 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]