开源开放 | DeepKE发布新版本:支持低资源、长篇章、多任务的图谱抽取开源框架(浙江大学)...

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

GitHub地址:https://github.com/zjunlp/deepke

Gitee地址:https://gitee.com/openkg/deepke

DeepKE网站:http://deepke.zjukg.org/CN/index.html

开放许可协议:GPL 3.0

贡献者:浙江大学(张宁豫、陶联宽、徐欣、余海洋、叶宏彬、谢辛、陈想、黎洲波、李磊、梁孝转、姚云志、乔硕斐、邓淑敏、张文、郑国轴、陈华钧),阿里巴巴(熊飞宇、陈辉、陈强),阿里巴巴达摩院(张珍茹、谭传奇、黄非)

3f21c8e7275b828445c64c952f88e30f.gif

知识图谱以结构化的形式描述真实世界中实体间的复杂关系,是人工智能的底层支撑。依托于行业数据和深度学习技术,知识图谱已被广泛应用于诸多产业核心的场景。知识抽取是构建知识图谱的基石,一般由多个任务组成,包含如实体识别、关系抽取、属性抽取等具体抽取任务。现有的知识图谱构建工作大多假设知识图谱中的实体或关系有充足的三元组实例来训练向量表示,因此需要大量的人工标注样本。但在实际场景的知识图谱中,大量的实体或关系仅具有非常少的三元组,即存在低资源问题。对于大量垂直领域如医疗健康、金融风控等,大量的实体关系三元组知识蕴含在长篇章中不同句子的,且文档中的多个实体之间,往往存在复杂的相互关系。

0dbdac79051f0b4eea084d1fdb5402e7.png

针对以上挑战,基于原DeepKE工具,本文发布知识抽取工具包新版本。新增低资源、长篇章抽取能力,并扩展到实体识别、属性抽取等多个任务,以统一的接口实现了实体识别、关系抽取、属性抽取模型:

工具新增的主要功能有:

1. 重新封装了全新的Pytorh训练测试接口,并提供了详细的Notebook Tutorial

2. 新增低资源、长篇章(关系)抽取功能

3. 新增实体抽取、属性抽取功能,覆盖更多的知识抽取任务

e0cbbac82142baa2506cb78742ec31b3.png

工具总体设计架构图如下:

f6ce21f64f2338e633e725180accc520.png

1、应用场景

1.1 实体识别

实体识别的目的是从非结构化的文本中抽取出实体。比如对于句子“秦始皇兵马俑位于陕西省西安市,是世界八大奇迹之一。”“秦始皇”为人物实体,“陕西省西安市”为地点实体。本文提供常规和少样本这两个模块。

常规模块,即常用的预训练语言模型。少样本模块借鉴Prompt-tuning的思想,对于实体识别任务采用了低资源生成式的框架LightNER,通过增加模版来识别出实体,并且提出了一个全新的模版导向注意力层,即将模版加入到原有的自注意力层中。

1.2 关系抽取

关系抽取是从非结构化的文本中抽取出实体之间的关系。比如对于句子“《岳父也是爹》是王军执导的电视剧”“岳父也是爹”和“王军”这两个实体所抽取出来的关系是导演。本文提供了常规、少样本和文档级这三个模块。

常规模块,包括了六种常用的深度学习模型,有CNN、RNN、Capsule、GCN、Transformer以及预训练语言模型。

少样本模块借鉴prompt-tuning的思想,对于关系抽取任务采用KnowPrompt模型,将实体及其关系的这些知识注入到可学习的模版和答案的构造中,并且通过知识约束来协同优化模版和答案的表示。

文档级模块采用了DocuNet,首先将文本进行编码并基于实体之间的相关性来计算实体之间的初始关系矩阵。然后该初始关系矩阵通过U形分割模块得到最终的实体间关系矩阵,两实体以及该关系矩阵能够得到最终的关系。

1.3 属性抽取

属性抽取是从非结构化的文本中抽取出实体和属性值之间的属性。比如对于句子“杨缨,字绵公”需要抽取“杨缨”的属性为“绵公”。本文提供了常规抽取模块。常规抽取模块包括了六种常用的深度学习模型,有CNN、RNN、Capsule、GCN、Transformer以及预训练语言模型。

2、总体结构

DeepKE整体代码结构如下图所示:

de048e4b16f255ea3c79061a62c4f038.png

3、基本用法

pip install deepke

1. 关系抽取

cd example/re/standard

模型配置

可根据自己需求修改conf文件夹中的参数,修改config.yaml中的model可以选择使用的模型,model文件夹中可以修改具体模型的参数。

bd33d33126aa9850983e58b7dd31101f.png

训练模型

conf文件夹中各参数可修改,训练过程可修改train.yaml中的参数,python run.py进行训练。

252de9c75f36e66117896c584157091b.png

预测

修改predict.yaml中的参数,python predict.py进行预测

2. 属性抽取

cd example/ae/standard

剩下的流程同关系抽取

3. 实体抽取

cd example/ner/standard

剩下流程同关系抽取

4、实验效果

我们对新版本的DeepKE在多个实体识别、关系抽取、属性抽取数据集上进行了常规设定、低资源设定和长篇章设定测试,如下表所示,我们的工具可以达到甚至超越不少传统的基线模型的效果。

e8ebab7fdf3fe2e4e78c31723c884697.png

如上表所示,DeepKE可以使用和各种不同的编码器进行抽取。DeepKE还能够基于优秀的低资源抽取模型实现较好的少样本抽取性能和支持篇章级的关系抽取。如下表所示,DeepKE可以取得较好的少样本和篇章级抽取性能。

671f9de01847701eeaa97ee1ee4044fb.png

3f68e2b45deb654d4f880c87115c236d.png

5、小结和展望

新版本的DeepKE是一个基于Pytorch实现命名实体识别、关系抽取和属性抽取功能,支持低资源、长篇章的知识抽取工具。我们同时也开发了一个在线demo展示页面,对于部分功能,无需训练和部署即可满足实时的在线知识抽取功能。在使用过程中有任何问题或是意见和建议都欢迎提出,在今后我们还将继续开发丰富模型,支持多模态知识抽取,使得未来的DeepKE功能变得更丰富更强大。

OpenKG

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

85fc4b63a9b2c074d531b73bcd2b2bbc.png

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

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

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

相关文章

LeetCode 478. 在圆内随机生成点(概率)

1. 题目 给定圆的半径和圆心的 x、y 坐标,写一个在圆中产生均匀随机点的函数 randPoint 。 说明: 输入值和输出值都将是浮点数。圆的半径和圆心的 x、y 坐标将作为参数传递给类的构造函数。圆周上的点也认为是在圆中。randPoint 返回一个包含随机点的x坐标和y坐标…

11月AI大事件回顾:GPT3开放使用/女娲视觉大模型/AE文艺复兴/...

编 | iven感谢提供本期内容的 ZenMoore、 jxyxiangyu、付瑶大家好~ 11月的新闻速报来啦!上个月不知道大家有没有忙着写文章,反正小编是这样的:好啦,让我们快来回顾上个月的 AI 大新闻吧!学术进展何恺明 Mas…

开源开放 | 开源立体化漏洞情报知识图谱(四维创智)

OpenKG地址:http://openkg.cn/dataset/vuln-sprocket开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:四维创智(李德斌,孙基栩,鲍晨阳)1. 前言随着时间的推移&#xff0…

LeetCode 515. 在每个树行中找最大值(层序遍历)

1. 题目 您需要在二叉树的每一行中找到最大的值。 示例: 输入: 1/ \3 2/ \ \ 5 3 9 输出: [1, 3, 9]来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row 著作…

GBDT是如何成为推荐系统顶级工具人的?

文 | 水哥源 | 知乎Saying1. 集成学习的ensemble注意一定要读作昂三姆包而不是印三姆包,一天一个算法工程师装x小技巧2. 区别bagging和boosting的准则是,先训练的模型对于后训练的模型是否有影响3. GBDT中,B(boosting)…

会议交流 | 如何提升推荐系统的可解释性?——DataFunSummit2022知识图谱在线峰会...

背景介绍知识图谱及特征学习结合智能推荐,可解决数据稀疏性及冷启动问题,更好的提升推荐决策场的准确性、多样性及可解释性,进而提升各个场景的推荐决策效率和体验。3月12日13:30-16:50,在DataFunSummit2022:知识图谱在…

LeetCode 143. 重排链表(链表反转+快慢指针)

1. 题目 给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 给定链表 1->2->3->4, 重新排列为…

论文浅尝 | 采用成对编码的图卷积网络用于知识图谱补全

笔记整理:姚祯,浙江大学在读硕士,研究方向为知识图谱表示学习,图神经网络。论文引用:Liu S, Grau B, Horrocks I, et al. INDIGO: GNN-based inductive knowledge graph completion using pair-wise encoding[J]. Adva…

调研了下 AI 作曲,顺便做了期视频...快进来听歌!

文 | 白鹡鸰编 | 小轶视频 | 白鹡鸰嗨,大家好!这里是卖萌屋,我是白鹡鸰。今天和大家聊聊人工智能作曲。人工智能在音乐领域的应用已经非常常见了,像听歌识曲、曲风分类、自动扒谱等等,而 利用机器来替代人类作曲 &…

LeetCode 1275. 找出井字棋的获胜者(位运算)

1. 题目 A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。“X” 和 “O” 只能放在空方格中,而…

论文浅尝 | DSKReG:基于关系GNN的推荐知识图谱可微抽样

笔记整理:李爽,天津大学硕士链接:https://dl.acm.org/doi/pdf/10.1145/3459637.3482092动机在信息爆炸的时代,推荐系统被广泛研究和应用,以发现用户的偏好信息。RS在冷启动时性能较差,如果将知识图谱(Knowl…

数据开放平台的配置管理

背景 美团是数据驱动的技术公司, 非常重视使用数据的效率。为了达到这个目标,我们将数据以开放平台的形式开放给需求方。例如,帮助需求方开发报表的报表开放平台,帮助需求方获取数据的自助查询平台,让需求方参与数据建…

LeetCode 1271. 十六进制魔术数字(进制转换)

1. 题目 你有一个十进制数字,请按照此规则将它变成「十六进制魔术数字」:首先将它变成字母大写的十六进制字符串,然后将所有的数字 0 变成字母 O ,将数字 1 变成字母 I 。 如果一个数字在转换后只包含 {“A”, “B”, “C”, “…

评测任务征集 | 全国知识图谱与语义计算大会(CCKS 2022)

评测任务征集全国知识图谱与语义计算大会(CCKS 2022)2022年8月25-28日,秦皇岛http://sigkg.cn/ccks2022/全国知识图谱与语义计算大会(CCKS: China Conference on Knowledge Graph and SemanticComputing)由中国中文信息…

SegmentFault 美团云采访实录

约半年前,美团悄然上线了美团云(Meituan Open Services,简称MOS),这是美团网根据自身虚拟化平台开发和运维经验开放的云计算服务,类似AWS。 美团 CEO 王兴可能是中国最知名的连续创业者,曾创办校…

开局一段扯,数据全靠编?真被一篇“神论文”气到了

文 | 苏剑林(追一科技)编 | 智商掉了一地看来以后我们看论文的时候,不仅要关心论文成绩的可复现性,还要留意它们的求和、均值、方差等有没有算错,否则真的是“无奇不有”!!这篇文章谈一下笔者被…

LeetCode 147. 对链表进行插入排序(链表)

1. 题目 对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到…

征稿 | 软件学报专刊征文:知识赋能的信息系统

伴随着人工智能的浪潮,智慧信息系统的发展方兴未艾,正处于由感知智能到认知智能转变的关键时期。要实现认知智能的系统跃升,离不开知识的赋能。在数字化转型背景下,数据对象和交互方式的日益丰富和变化,对以知识图谱为…

基于Flume的美团日志收集系统(二)改进和优化

在《基于Flume的美团日志收集系统(一)架构和设计》中,我们详述了基于Flume的美团日志收集系统的架构设计,以及为什么做这样的设计。在本节中,我们将会讲述在实际部署和使用过程中遇到的问题,对Flume的功能改进和对系统做的优化。 …

LeetCode 462. 最少移动次数使数组元素相等 II(数学)

1. 题目 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。 例如: 输入: [1,2,3] 输出: 2说明: 只有两个动作是必要的(记得每一步仅可…