一、约束挂载
本文内容主要讲解通过语义角色标注实现约束挂载的流程。
1.1 约束词识别
query中的约束词如:
- 过滤类型:大于、小于、超过、不超过等
- 最值类型:最大、最小等
- …
从query中识别出这些约束词可以简单的使用词表进行识别,那么识别出这些约束词之后,怎么挂载到相应的位置呢?
1.2 约束挂载
带约束问题是KBQA中常见的复杂问题之一,如:“身高超过1米8的篮球运动员”。约束词为“超过”,在这个例子中需要召回身高超过1米8的篮球运动员,这时候就涉及约束挂载。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m91kQm4p-1663570936522)(D:\资料\微信公众号\imgs\image-20220908203756585.png)]
二、语义角色标注进行约束挂载流程
2.1 语义角色标注(SRL)定义
语义角色标注是一种浅层语义分析技术,以句子为单位,分析句子的谓词-论元结构,其理论基础来源于Fillmore(1968)年提出的格语法,不对句子所包含的语义信息进行深入分析。具体来说,语义角色标注的任务就是以句子的谓词为中心,研究句子中各成分与谓词之间的关系,并且用语义角色来描述他们之间的关系。例如如下所示:
标签释义:
- A0:施事者、主体、触发者
- A1:受事者
- PSR:持有者
- PSE:被持有者
2.2 SRL进行约束挂载流程
案例:”身高超过1米8的篮球运动员“
-
分词
cws=['身高', '超过', '1', '米', '8', '的', '篮球', '运动员']
-
获取SRL标注
srl=[{'predicate': '超过', 'arguments': [('A0-PSE', '身高'), ('A1', '1米8'), ('A0-PSR', '篮球运动员')]}]
-
使用约束词表从query中获取约束词
['超过']
-
实现基于角色标注的约束挂载
def build_arguments_dict(arguments): arguments_dict = dict() for k, v in arguments: arguments_dict[k] = v return arguments_dict def extraction(query): cws = ['身高', '超过', '1', '米', '8', '的', '篮球', '运动员'] op_list = ['超过'] srl_list = [{'predicate': '超过', 'arguments': [('A0-PSE', '身高'), ('A1', '1米8'), ('A0-PSR', '篮球运动员')]}] data = [] succ_PSE = dict() for srl in srl_list: key = '' entity = '' val = '' predicate = srl['predicate'] arguments = srl['arguments'] arguments_dict = build_arguments_dict(arguments) if predicate in op_list: op = predicate if 'A0-PSR' in arguments_dict: entity = arguments_dict['A0-PSR'] if 'A0' in arguments_dict: entity = arguments_dict['A0'] if 'A0-PSE' in arguments_dict: key = arguments_dict['A0-PSE'] if entity in succ_PSE: key = succ_PSE[entity] val = arguments_dict['A1'] if 'A1' in arguments_dict else '' deny = True if 'ARGM-ADV' in arguments_dict else False succ_PSE[entity] = key data.append({ "entity_type": entity, "condition": [{ "key": key, "val": val, "op": op, "deny": deny }] }) return data if __name__ == '__main__': query = '身高超过1米8的篮球运动员' print(extraction(query))
-
结果
[ { "entity": "篮球运动员", "condition": [ { "key": "身高", "val": "1米8", "op": "超过", "deny": false } ] } ]
附录
语义角色类型表: