OpenKG开源系列 | 面向知识的推理问答编程语言KoPL(清华大学)

OpenKG地址:http://openkg.cn/tool/kopl

GitHub地址:https://github.com/THU-KEG/KoPL

网站地址:https://kopl.xlore.cn

开放许可协议:MIT License

贡献者:清华大学(曹书林、史佳欣、姚子俊、吕鑫、聂麟骁、逄凡、吴茜凤、侯磊、李涓子)


总体介绍

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

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

 261a2aff07514cd18a5f9b32cd5cc53b.png

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

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

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

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

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

0a3d8f57c5d6a172d1849a0417411097.png

图 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年)是一个修饰型事实。

831d89eebc513ee0342bb48a5893c8b5.png

图 3 知识元素

(二)覆盖多种知识操作

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

1d0d986c7d8581efa9072af243fa9b0e.png

图 4 部分知识操作函数

(三)支持多种问答类型

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

e6482b6224dfe73fc17dff01ac286876.png

图 5 部分查询函数

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

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

23c21849f7e0033cdc0bff844c38763b.png

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

KoPL开源工具包

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

KoPL主页:

https://kopl.xlore.cn

3306470f0aa2fa5d68d0a1f32084ac66.png

KoPL工具包:

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

0973f319a7f7a6d5ce6e598cc61536fd.png

上手教程

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

f3d40e9b6b69ce1fc7ca891dcb2ac009.png

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

136c4337851a01f185ca2849fa41a396.png

图 9 KoPL使用样例

结语和扩展

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

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


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

e50c255d222db25439ffc65d48f1fd87.png

点击阅读原文,进入 OpenKG 网站。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值