老刘说知识图谱实践指引:知识图谱代表性全流程开源项目NER/RE关键模型与开放课程概述

一个比较具有实操性的知识图谱项目来练手,或者明确的路线做牵引对于知识图谱入门而言很重要,尤其是对于刚入门的人来说,对如何构建知识图谱还是相对陌生,这一需求更需要明确的指引。

而当前,知识图谱开源的东西较多,我们可以充分利用好开源的项目,借鉴前人的经验,进行实操,这也是老刘说NLP技术社区多个朋友的一些建议。

而就路线而言,我们可以不妨采用这样的路线:

首先,先了解知识图谱开源课程课件,对知识图谱各项技术有个大致的了解;

然后,实操一些常用的知识抽取关键模块开源项目,掌握目前性能较好的实体识别模型和关系抽取模型;

最后,再实践相对完整的知识图谱开源项目,以及开放性知识抽取开源项目完成整个知识图谱生命周期的全流程。

因此,解决“利用开源项目”来较快地认识知识图谱这一工作,本文主要从相对完整的知识图谱开源项目集合、一些常用的知识抽取关键模块开源项目、一些代表性的开放性知识抽取开源项目以及一些知识图谱开源课程课件四个角度出发,通过收集整理的方式给大家介绍,供大家参考。

目前开源的知识图谱项目主要包括医疗领域、农业领域、金融领域知识图谱,项目相对来说比较完整。

但需要注意的是,目前开放的项目基本上都是采用爬虫方法,经本体定义后存储相应图数据库,最后进行问答、可视化等操作,通过事件操作,可以对知识图谱的全流程能有个比较好的认识,并未涉及到抽取等细节。

项目主要介绍star较多的几个开源项目,包括QASystemOnMedicalKG医疗知识图谱问答、Agriculture_KnowledgeGraph农业知识图谱、Financial-Knowledge-Graphs小型金融知识图谱、stock-knowledge-graph小型的证券知识图谱等四个。

1、QASystemOnMedicalKG医疗知识图谱问答

项目收益:基于该项目,可以了解到如何针对现有的医药网站数据,如何设计知识图谱schema,如何使用cpyher语句插入neo4j数据库,以及如何基于特定领域图谱数据设计图谱问答问题类型,并进行实现。

2、Agriculture_KnowledgeGraph农业知识图谱

本项目是上海市《农业信息服务平台及农业大数据综合利用研究》子课题《上海农业农村大数据共享服务平台建设和应用》的研究成果。华师大课题组在前期国家重点研发计划《大数据知识工程基础理论及其应用研究》研究基础上,在本项目中,基于碎片化农业大数据,构建面向智慧农业的知识图谱及其应用系统。

项目收益:该项目给出了一些农业知识图谱的构建项目案例,包括其中的技术架构,包括数据的定义、基于Neo4j的数据导入、关系抽取、基于knn的实体分类以及数据导入的语句,从中可以熟悉如何设计知识图谱架构,如何进行实体分类以及实体关系抽取的实操;

3、Financial-Knowledge-Graphs小型金融知识图谱

Financial-Knowledge-Graphs小型金融知识图谱构建示例由作者jm199504开源共享,里面介绍了如何使用Tushare工具包获取开源金融数据,包括股票基本信息、股票持有股东信息、股票概念信息、股票公告信息、财经新闻信息、概念信息、沪股通和深股通成分信息、股票价格信息等数据,安装neo4j图数据库,读取csv文件进行图谱读写操作。

项目收益:通过该项目可以大致熟悉如何通过抓取线上数据,然后基于neo4j数据库进行数据导入,生成图谱,可以强化对neo4j图数据库的使用能力,包括如何使用neo4j图数据库的恶内置图算法能力;

4、stock-knowledge-graph小型的证券知识图谱

该项目与2中的项目类似,利用网络上公开的数据构建一个小型的证券知识图谱(知识库)。

该项目分成几个任务:

一个是从页中抽取董事会的信息,如给定的html文件中,需要对每一个股票/公司抽取董事会成员的信息,这部分信息包括董事会成员“姓名”、“职务”、“性别”、“年龄”共四个字段;一个是获取股票行业和概念的信息;一个是设计知识图谱,如创建“人”实体,这个人拥有姓名、性别、年龄;一个是创建可以导Neo4j的csv文件;一个是利用上面的csv文件生成数据库;一个是基于构建好的知识图谱,通过编写Cypher语句回答问题;

项目收益:该项目是个不涉及具体抽取的项目,但其中的图谱构建思想值得大家进行事件,例如,在图谱设计环节,

设计一个这样的图谱:

设计思想如下,可以通过抓取的数据进行设计

所以需要做些处理,并生成能够直接导入Neo4j的csv格式,即需要生成这个文件:executive.csv,stock.csv,concept.csv,industry.csv,executive_stock.csv,stock_industry.csv,stock_concept.csv

最后,在利用上面的csv文件生成数据库任务中,可以学习到如何使用neo4j-import的命令,来进行数据导入:

neo4j_home$bin/neo4j-adminimport--id-type=STRING--nodesexecutive.csv--nodesstock.csv--nodesconcept.csv--nodesindustry.csv--relationshipsexecutive_stock.csv--relationshipsstock_industry.csv--relationshipsstock_concept.csv

知识图谱构建中的关键步骤包括ner实体识别、实体关系抽取、事件抽取等,其中大家讨论最多的就是如何实现即插即用的实体识别和实体关系抽取,下面对一些代表性开源组件进行论述:

1、实体识别NER项目

实体识别模型当前比较主流的是两种,一种是BERT-NER系列,包括BERT+Softmax、BERT+CRF、BERT+Span、BERT+MRC等方法,另一种是基于指针网络的方法,如GlobalPointer、TPlinker:

1)BERT-NER-Pytorch实体识别

以下两个项目提供了BERT+Softmax、BERT+CRF、BERT+Span、BERT+MRC三种算法下的ner方法;

2)GlobalPointer_pytorch实体识别

类似于多头机制来做实体抽取,可以解决嵌套实体和非嵌套实体的问题,抽取的特征是头尾节点的点乘结果,TPlinker是加性特征,另外通过引入旋转位置编码RoPE可以提高了效果。

2、实体关系抽取项目

实体关系抽取,可以分成基于联合的方法以及基于pipeline串行的方法,前者代表的方法为pure,后者比较流行并且验证可行的方法包括casrel以及GPLinker。

1)casrel实体关系抽取

CasRel本质上也是基于参数共享的联合实体关系抽取方法,它通常被大家称作层叠指针网络,将关系作为主语到宾语的映射函数。具体分为两步:第一步识别句中所有可能的主语;第二步针对每个主题探测各种关系及其对应的宾语。最终设计了一个端到端的级联双标签(主语标签,关系宾语标签)框架。有点像多轮问答来做关系抽取,他这里先抽取subject,然后来预测每个p的起始位置。

2)GPLinker实体关系抽取

GPLinker是一种实体与关系联合抽取的方法,与casrel方法有可以匹敌的效果,先利用GlobalPointer抽取subject的首尾(i,j)和object的首尾位置(i,j),然后利用GlobalPointer抽取每一种关系p的实体的head的match的位置(hi,hj)和实体的尾部tail的match的位置(ti,tj)组合,最终输出交集的结果。

3)PURE实体关系抽取

PURE,是pipeline式关系抽取的模型,首先为每一个实体类型生成4个标记token,然后给定一组实体对,取出该实体对对应的4个标记token,接着顺序拼接所有实体对的标记token到文本token后面,之后将token传给特征提取器(一般为Bert),拿到每个token的隐向量输出,最后每4个标记token选择第1个和第3个标记token的隐向量进行拼接,传给分类层进行分类。

开放性知识抽取与预定义schema的抽取不同,其不需要预先定义好知识图谱本体,而是直接通过模型训练或者句法规则进行抽取。

1、spo_extract_platform开放三元组抽取

本项目作为笔者在开放领域的三元组抽取的一次尝试,标注内容大部分为人物头衔,人物关系,公司与人的关系,影视剧主演、导演信息,以句子级别进行标注,标注出句子中的主语,谓语,宾语,形成标注序列;利用标注好的语料,采用bert+dl的方法进行训练;采用序列标注算法(ALBERT+BiLSTM+CRF)进行S,P,O识别,对新的语料,预测主语,谓语,宾语,然后利用一定的策略,如文本二分类(ALBERT+BiGRU+ATT)进行关系抽取,形成实体关系;

例如,给定:

接着,按照各个元素在句子出现的位置进行组合,比如华为的位置,离常务董事挨得近,那么形成一个三元组:

2、基于规则的开放因果抽取项目

基于因果关系知识库的因果事件图谱构建,用于构建因果事理图谱项目,本项目以构造和总结因果模板,结合中文语言特点,构建因果语言知识库的方式代替。本项目是对因果事件抽取以及因果知识图谱构建的一种尝试。

第1讲知识图谱概论、第2讲知识表示、第3讲知识建模、第4讲知识抽取基础:问题和方法、第5讲知识抽取:数据采集;

第6讲知识抽取:实体识别、第7讲知识抽取:关系抽取、第8讲知识抽取:事件抽取、第9讲知识融合;

第10讲知识图谱表示学习、第11讲知识存储、第12讲基于知识的智能问答、第13讲实体链接、第14讲知识推理共14个章节。

为了“利用开源项目”来较快地认识知识图谱这一工作,本文主要从相对完整的知识图谱开源项目集合、一些常用的知识抽取关键模块开源项目、一些代表性的开放性知识抽取开源项目以及一些知识图谱开源课程课件四个角度出发,通过收集整理的方式给大家介绍。

当然,开源的项目其实在复现的过程中兴许会出现一些实际的问题,如环境错误、数据缺失等,这时候我们可以进一步地动用搜索能力去补充,并加以耐心。

最后,感谢开源工作者的无私奉献。

就职于360人工智能研究院、曾就职于中国科学院软件研究所。

THE END
1.大数据之—知识图谱(一)本文为在知识图谱领域研读陈华均老师的书籍,与会CCKS2020、华为网络天下2020,结合相关知识在一些具体算法场景做出一定程度的应用后的个人知识总结笔记。在学习过程中看了很多paper或教程,整理起来放到这里备忘,列表会随着我的学习不断更新。 书籍推荐: 《知识图谱——方法、实践与应用》陈华钧 https://zhuanlan.zhihu.com/p/3734030772
2.知识图谱入门篇(一)xiaoyufutureNeo4j和知识图谱:从基础入门到精通全栈教程 【知识图谱】——实现流程讲解(完结)从数据收集到知识图谱可视化的毕设流程 知识图谱的应用 1. 搜索引擎 2. 智能问答 3. 推荐系统 4. 语义理解 5. 决策分析 6. 智慧物联 7. 知识图谱构建流程 1. https://www.cnblogs.com/xiaoyufuture/p/18433627
3.知识图谱入门笔记知识图谱(Knowledge graph):由结点和边组成,是结构化的语义知识库。 结点可以是实体,如一个人、一本书等,或是抽象的概念,如人工智能、知识图谱等。 边可以是实体的属性,如成绩、书名,或者是实体之间的关系,如朋友、家人。 理解为图状具有关联性的知识集合,可以由三元组(实体-关系-实体)表示。 https://blog.csdn.net/Moliay/article/details/140191096
4.一文速学知识图谱从零开始构建实战:知识图谱搭建构架实践Neo4j 是一个开源的图数据库管理系统,它以图形结构存储数据,能够高效处理复杂的连接和关系数据。Neo4j 使用图数据模型来表示数据中的节点、边和属性,使其特别适合构建和存储知识图谱。 1.2. 知识图谱存储的发展历程 早期数据库:在知识图谱发展的初期,数据存储主要依赖关系型数据库(如MySQL、PostgreSQL),这些数据库以表https://cloud.tencent.com/developer/article/2462755?policyId=20240000
5.知识图谱模型的教程及使用方法知识图谱模型是用于构建和表示知识图谱的数学模型和算法。常见的知识图谱模型包括基于图的表示学习方法(如GNN、GCN)、基于事实三元组的表示学习方法(如TransE、DistMult)等。这些模型可以帮助我们从结构化的知识图谱数据中学习到实体和关系的向量表示,进而可以用于推理、问答等任务。 二、知识图谱模型的教程 1.数据准备 https://wenku.baidu.com/view/21a7d25b7075a417866fb84ae45c3b3566ecdd59.html
6.知识图谱构建流程知识图谱(Knowledge Graph)源于语义网、图数据库等相关学术研究领域,不同领域对知识图谱研究的侧重有所不同,如自然语言处理、知识工程、机器学习、数据库和数据管理等领域都有不同的研究与应用。 自然语言处理领域:“信息抽取”是其核心,如何从非结构文本数据中抽取知识图谱所需要的三元组数据是一项极富挑战性的工作。https://ir.sdu.edu.cn/~zhuminchen/KG/6.htm
7.手把手教你用“知识图谱+大模型”完成知识抽取下面我们将以“IAEA2011 在维也纳总部举行的第五十五届常委会”为例,带大家具体演示如何通过“知识图谱+大模型”技术,将pdf版的会议记录进行知识的高效、精准地抽取。 1. 准备数据 如下链接可查看并下载原始会议记录: https://www.iaea.org/sites/default/files/gc/gc55or-3_ch.pdf https://www.modb.pro/db/1793948691626807296
8.知识图谱算法python教程知识图谱的算法知识图谱算法python教程 知识图谱的算法 在当前大数据行业中, 随着算法的升级, 特别是机器学习的加入,“找规律”式的算法所带来的“红利”正在逐渐地消失,进而需要一种可以对数据进行更深一层挖掘的方式,这种新的方式就是知识图谱。下面我们来聊一下知识图谱以及知识图谱在达观数据中的实践。https://blog.51cto.com/u_16213670/9360099
9.知识图谱入门(一)允许各网站基于一定的方式如RDFa、JASON-LD等方式在网页和邮件等数据源中嵌入语义化数据,让个人和企业定制自己的知识图谱信息。 Ref 王昊奋知识图谱教程 Previous Kaldi thchs30手札(八) Next 知识图谱入门 (二) 知识图谱与语义技术概览。主要介绍知识表示、知识抽取、知识存储、知识融合、知识推理、知识众包、语义搜索http://www.360doc.com/content/20/0404/18/30846730_903842218.shtml
10.知识图谱系列教程awesome-knowledge-graph 整理知识图谱相关学习资料,提供系统化的知识图谱学习路径 知识图谱是什么 徐超-三个角度理解知识图谱 从数据治理,语义连接,智能https://www.jianshu.com/p/547e80f33b24
11.知识图谱完整教程码农集市专业分享IT编程学习资源知识图谱完整教程Lo**ly 上传82.95 MB 文件格式 rar 大数据 算法与数据结构 第一讲 知识图谱概览;第二讲 知识表示和知识建模;第三讲 知识抽取与挖掘I 点赞(0) 踩踩(0) 反馈 所需:3 积分 电信网络下载 可达性分析算法visio软件画图 2024-12-21 23:23:24 积分:1 https://www.coder100.com/index/index/content/id/852608