KoPL: 面向知识的推理问答编程语言

2021 年 11 月 10 日 学术头条












































关注我们

了解更多知识图谱前沿信息



总体介绍

问答系统是自然语言处理领域的一个重要研究方向。一方面,图灵测试的场景本身就是问答。如果我们有了和人一样智能的问答系统,那么就相当于通过了图灵测试。因此问答相关研究始终受到人工智能学者的重视。从知识工程、推理机、专家系统,到搜索引擎,智能助手甚至机器人,问答系统贯穿了人工智能的整个发展历程。另一方面,问答作为人类最自然的交互方式,有非常广泛的应用需求。在信息浩如烟海的互联网时代,问答系统可以帮助用户快速并准确地获取信息,让人们的生活更加便利,甚至可以部分地替代人工劳动,例如替代人工客服对客户进行自动回答,更加高效经济地解决现实问题。


如图1所示,在早期的研究中,研究者主要关注单个关系型知识,即问题中仅涉及单个三元组,如“勒布朗·詹姆斯的父亲是谁”,只需要在知识资源中进行检索和匹配,就可以得到答案。这一类问答被称为简单问答。然而在很多情况下,问题不能通过检索和匹配直接得到答案,而是需要处理多跳关系、集合操作、属性比较等情况。例如问题“布朗尼·詹姆斯和他的父亲谁更高”,需要找到布朗尼·詹姆斯的父亲,并比较两个人的身高属性。这类针对复杂问题的问答任务称为推理问答。处理这些复杂问题要求计算机实现知识的表示和推理,并且能够处理Wikidata等结构化知识和Wikipedia等百科资源。


图 1 推理问答及对应的KoPL表示


为此,我们设计了面向知识的推理问答编程语言KoPL,抽象了一组面向知识的基本函数,复杂的自然语言问题都可以表示为由基本函数组合而成的KoPL程序,程序运行的结果就是问题的答案。例如,图1中的自然语言问题“布朗尼·詹姆斯和他的父亲谁更高”可以解析为由基本函数Find,Relate和SelectBetween组合而成的KoPL程序,运行结果“勒布朗·詹姆斯”为问题的答案。

目前,KoPL为面向知识的复杂推理问答任务抽象和总结了27个基本函数,覆盖对多种知识元素(如概念、实体、关系、属性、修饰符等)的操作,并支持多种问题类型(如计数、事实验证、比较等)的查询。KoPL具有如下特点:

1. 提供显式、透明的推理过程。不同于SPARQL将查询图和知识库进行图模式匹配来得到答案,KoPL将复杂问题转化为推理函数的组合,以代表推理过程,具有显式和透明的特点。

2. 易于理解,便于人机交互。如图2所示,KoPL程序以流程图的形式呈现给用户,推理过程清晰明了,对于推理错误的部分可以更加容易地修改。如只需把QueryRelationQualifier函数的第二个参数”followed by”修改为”follow”,就可以得到正确的KoPL程序。


图 2 KoPL更易于理解,便于用户进行修改。修改过程用红色标出。


3. 面向知识库、文本等不同形式的知识,可扩展性强。KoPL是一个为面向知识的复杂推理问答而设计的编程语言,不仅局限在知识库问答。目前开源的KoPL工具包中已实现对任意知识库的支持,未来,我们会将KoPL扩展为同时支持知识库和文本的推理问答工具。




KoPL特色

问答系统的实现需要强大和全面的知识作为基础。目前互联网拥有海量的知识资源,包括维基百科,百度百科,搜狗百科这些基于用户协同生成的文本内容,以及被精心设计的以自动或半自动方式生成的知识库(如Wikidata、 Freebase、YAGO、DBpedia 等)。如何将这些大规模的知识资源融合在一起,转换为计算机可以处理的形式,进行表示、理解和推理,是一个关键的研究问题。虽然知识资源的形式不同,但其蕴含的知识元素是一致的。KoPL将知识总结为7种基本元素,作为知识表示、理解和推理的基础。进一步地,KoPL抽象了一组基本函数,包括14个知识操作函数和13个查询函数,以支持对多种知识元素的操作和不同类型的问答。由基本函数组合而成的KoPL程序提供显式、透明的推理过程。下面将详细介绍KoPL的四个特色:(1)面向多种知识元素;(2)覆盖多种知识操作;(3)支持多种问答类型;(4)提供透明的推理过程。


(一)面向多种知识元素

KoPL将知识总结为7种基本元素,具体包含:

(1)实体 (entity),表示一个独一无二的事物,如图3中的勒布朗·詹姆斯 (LeBron James);

(2)概念 (concept),一组具有相同特征的实体组成的集合,如图3中的篮球队 (basketball team);

(3)属性 (attribute),表示实体的属性信息。由属性键和属性值两部分组成,属性值有字符串、数字、日期和年份4种类型。如身高(height)是一个属性,206厘米(206 centimetre)是对应的属性值;

(4)关系 (relation),表示两个实体之间的关系。特殊地,实体通过 instance of 关系链接到相应的概念上,概念之间通过 subclass of 关系来组织成层次结构。如父亲(father)和出生地(place of birth)都是关系;

(5)属性型事实 (literal fact),表示一个实体属性信息的三元组,由(实体,属性键,属性值)组成。如(勒布朗·詹姆斯,身高,206厘米)是一个属性型事实;

(6)关系型事实 (relational fact),表示两个实体间关系的三元组, 由(实体,关系,实体)组成。如(勒布朗·詹姆斯,出生地,阿克伦)是一个关系型事实;

(7)修饰型事实 (qualifier fact),对一个关系型或属性型的三元组进行进一步的修饰,包含一个修饰键(qualifier key)和一个修饰值(qualifier value)。由(三元组,修饰键,修饰值)组成,如((勒布朗·詹姆斯,被挑选,克利夫兰骑士队),时间,2003年)是一个修饰型事实。


图 3 知识元素


(二)覆盖多种知识操作

KoPL设计了14个基本函数,以支持对上述7种知识元素的操作。如Find函数找出具有特定名字的所有实体;FilterConcept函数找出属于特定概念的实体;Relate函数找出与输入实体有特定关系的所有实体。另外,KoPL还支持And和Or函数,通过两个实体集合的交和并来实现逻辑推理。图4展示了部分知识操作函数的功能描述、示例和输入输出。每个函数有两部分输入:一部分是函数输入( functional input),来自于其他函数的输出;另一部分是文本输入( tex tual i nput),来自于问题所指定的条件。


图 4 部分知识操作函数


(三)支持多种问答类型

KoPL设计了13个基本函数,以支持多种类型的问答,包括查询某种知识元素、比较、事实验证、计数等。如QueryName查询实体的名字;SelectAmong在一个实体集合中,查询特定属性值最大/最小的实体;VeiryStr验证某一属性值是否等于给定的字符串;Count函数查询集合中的实体数量。图5展示了部分查询函数的功能描述、示例和输入输出。


图 5 部分查询函数


(四)提供透明的推理过程

KoPL将复杂问题分解成多个推理步骤,每个步骤选择一个基本函数,对某种类型的知识进行操作,每个基本函数的输出都会写到内存里,作为后续函数的输入。KoPL的推理过程很容易被人类所理解,具有良好的可解释性。图6展示了两个自然语言问题及其对应的KoPL程序。


图 6 KoPL提供透明的推理过程




KoPL开源工具包

我们基于Python开发了KoPL工具包,方便用户进行面向知识的推理问答。目前,用户可以自定义知识库,通过调用KoPL的API来操作知识库中的元素,最终实现多跳、逻辑推理、比较、计数、事实验证等多种问答。


KoPL主页:

https://kopl.xlore.cn


KoPL工具包:

https://github.com/THU-KEG/KoPL




上手教程

KoPL工具包的使用非常方便。首先安装KoPL及其依赖:

接下来,我们在程序中加载知识库,创建可以在这个知识库上执行的引擎,调用KoPL的基本函数,就可以实现面向知识的推理问答编程。图9是一个具体的例子,实现对“布朗尼·詹姆斯和他的父亲谁更高?”这个复杂问题的推理问答,KoPL程序给出了正确的答案: 勒布朗·詹姆斯!


图 9 KoPL使用样例




结语和扩展

KoPL工具包将会长期维护并保持更新,欢迎大家使用KoPL作为复杂推理问答研究和应用开发的工具。大家在使用过程中有任何问题、意见或建议都欢迎提出。也欢迎大家加入我们,共同开发、完善KoPL工具包。


此外,在KoPL的基础上,我们构建了一个大规模的复杂知识库问答数据集KQA Pro,数据集中的每个自然语言问题都有对应的KoPL程序,来显式地表达解决这个问题的推理过程。更多信息请访问KQA Pro主页 http://thukeg.gitee.io/kqa-pro/




研发团队

指导老师

李涓子:清华大学计算机系教授,

http://keg.cs.tsinghua.edu.cn/persons/ljz/

侯磊:清华大学计算机系助理研究员,

https://www.cs.tsinghua.edu.cn/info/1113/3938.htm


开发团队

曹书林:清华大学计算机系博士生,

https://github.com/ShulinCao

史佳欣:清华大学计算机系博士生,

https://github.com/shijx12

姚子俊:清华大学计算机系硕士生,

https://github.com/TranSirius

吕鑫:清华大学计算机系博士生,

https://github.com/davidlvxin

聂麟骁:清华大学计算机系硕士生,

https://github.com/Flitternie

逄凡:清华大学计算机系工程师,

https://github.com/pf95

吴茜凤:清华大学计算机系工程师,

https://github.com/beeho



参考文献

[1] Wikidata: a free collaborative knowledgebase. Denny Vrandečić, Markus Krötzsch. Communications of the ACM 2014.

[2] Freebase:  a collaboratively created graph database for structuring human knowledge. K. Bollacker, Colin Evans, Praveen K. Paritosh, TimSturge, J. Taylor. SIGMOD 2008.

[3] Dbpedia - a large-scale, multilingual knowledge base extracted from wikipedia. Jens Lehmann, Robert Isele, Max Jakob, Anja Jentzsch, D. Kontokostas, Pablo N. Mendes, Sebastian Hellmann, M. Morsey, Patrick van Kleef, S. Auer, C. Bizer. Semantic Web 2015.

[4] HOTPOTQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. Zhilin Yang, Peng Qi, Saizheng Zhang, Yoshua Bengio, William W. Cohen, Ruslan Salakhutdinov, Christopher D. Manning. EMNLP 2018.

[5] KQA Pro: A Large-Scale Dataset with Interpretable Programs and Accurate SPARQLs for Complex Question Answering over Knowledge Base. Jiaxin Shi, Shulin Cao, Liangming Pan, Yutong Xiang, Lei Hou, Juanzi Li, Hanwang Zhang, Bin He. Arxiv 2020.

[6] Program Transfer and Ontology Awareness for Semantic Parsing in KBQA. ShulinCao, Jiaxin Shi, Zijun Yao, Lei Hou, Juanzi Li, Jinghui Xiao. Arxiv 2021.

[7] 从图灵测试到智能信息获取中国人工智能学会通讯第6卷第1期.

登录查看更多
1

相关内容

自动问答(Question Answering, QA)是指利用计算机自动回答用户所提出的问题以满足用户知识需求的任务。不同于现有搜索引擎,问答系统是信息服务的一种高级形式,系统返回用户的不再是基于关键词匹配排序的文档列表,而是精准的自然语言答案。近年来,随着人工智能的飞速发展,自动问答已经成为倍受关注且发展前景广泛的研究方向。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
常识知识的获取与推理,171页ppt
专知会员服务
61+阅读 · 2021年11月9日
面向知识图谱的知识推理综述
专知会员服务
147+阅读 · 2021年11月1日
专知会员服务
89+阅读 · 2021年6月13日
专知会员服务
124+阅读 · 2021年6月12日
【北京大学冯岩松】基于知识的自然语言问答
专知会员服务
44+阅读 · 2020年11月15日
专知会员服务
193+阅读 · 2020年10月14日
【人大】大规模知识图谱补全技术的研究进展
专知会员服务
86+阅读 · 2020年5月2日
图谱实战 | 医学知识图谱的价值与应用场景
开放知识图谱
5+阅读 · 2022年4月6日
“C 不再是一种编程语言!”
CSDN
0+阅读 · 2022年4月4日
“C不再是一种编程语言”
AI前线
1+阅读 · 2022年4月2日
开源开放 | 计算机科学示意图问答数据集CSDQA(CCKS2021)
干货 | 知识图谱的技术与应用
深度学习与NLP
18+阅读 · 2018年6月15日
漆桂林 | 知识图谱的应用
开放知识图谱
37+阅读 · 2017年9月26日
漆桂林 | 知识图谱之语义网络篇
开放知识图谱
19+阅读 · 2017年8月12日
国家自然科学基金
12+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
5+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年4月16日
Towards Fine-grained Causal Reasoning and QA
Arxiv
0+阅读 · 2022年4月15日
Arxiv
10+阅读 · 2020年6月12日
VIP会员
相关VIP内容
常识知识的获取与推理,171页ppt
专知会员服务
61+阅读 · 2021年11月9日
面向知识图谱的知识推理综述
专知会员服务
147+阅读 · 2021年11月1日
专知会员服务
89+阅读 · 2021年6月13日
专知会员服务
124+阅读 · 2021年6月12日
【北京大学冯岩松】基于知识的自然语言问答
专知会员服务
44+阅读 · 2020年11月15日
专知会员服务
193+阅读 · 2020年10月14日
【人大】大规模知识图谱补全技术的研究进展
专知会员服务
86+阅读 · 2020年5月2日
相关资讯
图谱实战 | 医学知识图谱的价值与应用场景
开放知识图谱
5+阅读 · 2022年4月6日
“C 不再是一种编程语言!”
CSDN
0+阅读 · 2022年4月4日
“C不再是一种编程语言”
AI前线
1+阅读 · 2022年4月2日
开源开放 | 计算机科学示意图问答数据集CSDQA(CCKS2021)
干货 | 知识图谱的技术与应用
深度学习与NLP
18+阅读 · 2018年6月15日
漆桂林 | 知识图谱的应用
开放知识图谱
37+阅读 · 2017年9月26日
漆桂林 | 知识图谱之语义网络篇
开放知识图谱
19+阅读 · 2017年8月12日
相关基金
国家自然科学基金
12+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
5+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员