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 网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端组件化开发实践

前言 一位计算机前辈曾说过: Controlling complexity is the essence of computer programming.随着前端开发复杂度的日益提升,组件化开发应运而生,并随着 FIS、React 等优秀框架的出现遍地开花。这一过程同样发生在美团,面临业务…

LeetCode 937. 重新排列日志文件(自定义排序)

1. 题目 你有一个日志数组 logs。每条日志都是以空格分隔的字串。 对于每条日志,其第一个字为字母数字标识符。然后,要么: 标识符后面的每个字将仅由小写字母组成,或;标识符后面的每个字将仅由数字组成。 我们将这…

预训练时代微调新范式,高性能加速2800%,NLPer赶紧看过来!

一、导读PaddleNLP 是兼具科研学习和产业实践能力的 Python NLP 工具包,提供中文领域丰富的预训练模型和部署工具,被高校、企业开发者广泛应用。近日,PaddleNLP v2.1正式发布,为开发者带来三项重要更新:开箱即用的工业…

论文浅尝 | GaussianPath: 用于知识图谱推理的贝叶斯多跳推理框架

笔记整理:谭亦鸣,东南大学博士生来源:AAAI’21链接:https://ojs.aaai.org/index.php/AAAI/article/view/16565多跳推理由于对下游任务例如问答和图谱补全的可解释性受到关注。多跳推理是一个典型的顺序决策过程,可表述…

AllenAI 发布万能问答系统 MACAW!各类题型样样精通,性能大幅超越 GPT-3!

文 | python前言GPT-3 等超大规模预训练语言模型,在少监督任务(few-shot tasks)上取得了令人瞩目的成绩。而这篇文章中,AllenAI的研究员提出了大规模生成式问答模型,MACAW。基于多角度预训练,MACAW可以用于…

论文浅尝 | SMBOP: Semi-autoregressive Bottom-up Semantic Parsing

笔记整理:陈永锐,东南大学博士来源:NAACL 2021概述近年来语义解析的事实上的标准解码方法是使用自顶向下的深度优先遍历对目标程序的抽象语法树进行自回归解码。该工作提出了一种替代方法:半自回归自底向上解析器(SMBO…

美团酒店Node全栈开发实践

前后端分离的背景 “前后端分离”显然已不是什么新鲜的话题,Zakas在2013年10月份就曾发表过一篇博客《Node.js and the new web front-end》讨论Node背景下新时代的前端。毫无疑问,Node的出现给JavaScript语言带来了新的生机,也使得前端开发者…

统计学习方法总结

统计学习方法总结 阅读目录(Content)0. 相关知识点0x1: 监督学习1. 模型假设空间2. 生成模型与判别模型的联系与区别 3. 学习策略4. 分类问题与回归问题5. 利用模型进行预测和分析0x2:模型评估与模型选择1. 训练误差与测试误差2. 过拟合与模型选择0x3:正…

LeetCode 997. 找到小镇的法官(图的出度和入度)

1. 题目 在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。 如果小镇的法官真的存在,那么: 小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有…

哈工大|NLP数据增强方法?我有15种

文 | rumor源 | 李rumor卷友们好,我是rumor。十一假期过的太快了,不知道你们缓过来没有,没有的话今天我们就来一起读一篇综述缓缓,弥补假期没学习的遗憾。这篇40多页的综述出自哈工大车万翔老师的团队,一共总结了15种N…

论文浅尝 | Wordly Wise(WoW) - 用于语音视觉知识问答的跨语言知识融合模型

笔记整理: 谭亦鸣,东南大学博士生来源:NAACL’21链接:https://aclanthology.org/2021.naacl-main.153.pdf论文提出了一种新的知识图谱问答数据集命名为FVSQA,这是一种语音视觉知识问答类型的任务,即问题形式为音频&…

美团Android DEX自动拆包及动态加载简介

概述 作为一个android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能、添加新的类库,代码在急剧的膨胀,相应的apk包的大小也急剧增加, 那么终有一天,你会不幸遇到这个错误&a…

LeetCode 83. 删除排序链表中的重复元素(链表)

1. 题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2示例 2: 输入: 1->1->2->3->3 输出: 1->2->3来源:力扣(LeetCode) 链接&#…

用多模态信息做 prompt,解锁 GPT 新玩法

文 | 子龙编 | 小轶自多模态大火以来,井喷式地出现了许多工作,通过改造预训练语言模型,用图像信息来增强语义信息,但主要集中在几个 NLU 任务上,在 NLG 上的研究比较少。今天要介绍的这篇 paper Multimodal Conditiona…

论文浅尝 | 基于时序知识图谱的问答

笔记整理:姚云志,浙江大学在读博士,研究方向为自然语言处理。链接:https://arxiv.org/pdf/2106.01515.pdf时序知识图谱是一种多关系的知识图谱,相较于常规的知识图谱,时序知识图谱中的关系中会与时间段相关…

Logistic Regression 模型简介

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。本文作为美团机器学习InAction系列中的一篇,主要关注逻辑回归算法的数学模型和参数求解方法,最后也…

开源开放 | 中国近代历史人物知识图谱

OpenKG地址:http://openkg.cn/dataset/zgjdlsrw项目地址:http://www.zjuwtx.work/project/kg开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:浙江大学(王天笑)1、引言中国近代历史…

LeetCode 1071. 字符串的最大公因子(字符串的最大公约数)

1. 题目 对于字符串 S 和 T,只有在 S T … T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。 示例 1: 输入:str1 &q…

大模型炼丹无从下手?谷歌、OpenAI烧了几百万刀,总结出这些方法论…

文 | Yimin_饭煲都1202年了,不会真有深度学习炼丹侠还没有训练/推理过大模型吧“没吃过猪肉,还没见过猪跑吗?”在深度学习算力高度增长的今天,不论是学术界还是工业界的从业者,即使尚未达到从头预训练一个百亿级别参数…

Linux资源管理之cgroups简介

引子 cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制,目前越来越火的轻量级容器 Docker 就使用了 cgroups 提供的资源限制能力来完成cpu,内存等部分的资源控…