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

本文主要是介绍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 网站。

这篇关于OpenKG开源系列 | 面向知识的推理问答编程语言KoPL(清华大学)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/851052

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP