Press "Enter" to skip to content

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

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

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

 

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

 

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

 

开放许可协议:MIT License

 

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

 

总体介绍

 

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

 

如图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),来自于其他函数的输出;另一部分是文本输入(textual input),来自于问题所指定的条件。

 

 

图 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/。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注