-
2021-03-30 10:07:01
目录
知识图谱
- 知识图谱的概念
知识图谱是对事实的一种结构化表示方法,由实体、关系和语义描述组成。知识图谱的数据结构以图形式存在,由实体(节点)和实体之间的关系(边)组成。本质上,它是一种表示实体间关系的语义网络,以“实体-关系-实体”的三元组来表达。
- 知识图谱中数据语义的表达方式RDF
RDF( Resource Description Framework,资源描述框架)是一种资源描述语言。大部分知识图谱使用RDF描述世界上的各种资源,并以三元组的形式保存到知识库中。
RDF通过使用简单的二元关系模型来表示事物之间的关系,即使用三元组集合的方式来描述事物和关系。三元组是知识图谱中知识表示的基本单位,简称SPO ,三元组被用来表示实体与实体之间的关系,或者实体的某个属性的属性值是什么。
- 知识图谱构建流程
序号
论文名称
发表日期
发表刊物
作者
作者单位
1
基于 Neo4j 的《伤寒论》知识图谱构建研究
2021
计算机与数字工程
王菁薇
肖 莉
晏峻峰
湖南中医药大学信息科学与工程学院
湖南中医药大学中医学院
2
影评情感分析知识图谱构建研究
2020
计算机仿真
许智宏
于子琪
董永峰
闫文杰
河北工业大学人工智能与数据科学学院
河北省大数据计算重点实验室
3
基于企业知识图谱构建的实体关联查询系统
2020
计算机应用
敦 辉
万 鹏
王 社
湖北大学 计算机与信息工程学院
湖北省教育信息化工程技术中心
武汉城市职业学院
4
支持临床决策的医学知识图谱的构建与应用
2020
重庆医学
郑少宇
滕 飞
马 征
陈泽君
马 虹
吴 洁
西南交通大学信息科学与技术学院
四川省成都市第六人民医院
5
基于知识图谱的广西文化旅游问答系统研究与实现
2020
广西科学
何国对
黄容鑫
黄伟刚
李 航
覃 晓
元昌安
施 宇
廖兆琪
南宁师范大学计算机与信息工程学院
八桂学者创新团队实验室
广西科学院
6
中文医学知识图谱CMeKG 构建初探
2019
中文信息学报
奥德玛
杨云飞
穗志方
代达劢
常宝宝
李素建
昝红英
北京大学 计算语言学教育部重点实验室
鹏城实验室
郑州大学 信息工程学院
7
基于多特征实体消歧的中文知识图谱问答研究
2021
计算机工程
张鹏举
贾永辉
陈文亮
苏州大学 计算机科学与技术学院
8
基于大数据的软件项目知识图谱构造及问答方法
2021
大数据
邹艳珍
王 敏
谢 冰
林泽琦
北京大学信息科学技术学院
高可信软件技术教育部重点实验室(北京大学)
1、实体抽取(命名实体识别)
实体抽取是指在文本数据集中抽取自动识别出命名实体,是知识图谱中三元组构建的关键和最为基础的步骤。
1.1、实体抽取方法
- 专家对实体进行人工标注
- 基于规则的NER传统方法包括:La SIE-II、Net Owl、Facile、SAR、FASTUS和LTG。
规则来源:1、特定领域词典 2、句法词汇模版 3、正则表达式
当词汇表足够大时,基于规则的方法能够取得不错效果。但总结规则模板花费大量时间,且词汇表规模小,且实体识别结果普遍高精度。
- 基于深度学习的NER方法:
- 输入的分布式表示:Bi-LSTM-CNN、BERT
- 文本编码:CNN、RNN、Transformer
- 标签解码:Softmax、CRF、RNN
在NER众多方法中,Bi-LSTM+CRF是使用深度学习的NER中最常见的架构。
1.2、 相关论文
论文1 中医命名实体抽取是将疾病、证候、症状等中医词汇从数据源中抽取出来。实体抽取方法:以《伤寒论》原文为研究对象,确定其中与疾病、证候、症状、处方、药物相关的主题词,如“太阳病”“中风”“脉浮”“桂枝汤”“桂枝”等。对采集的数据人工录入数据库中,要求对每一条数据标注所出自的《伤寒论》条文。
论文5 使用了基于BERT的命名实体识别模块。在分析基础上将文本中各个字或词的一维词向量作为输入,经过转换后,最终输出每个词的一维词向量表示,即使用BERT对每个词处理并得到最终的语义表示。对于询问句S,假设经过 BERT模型处理后,得到S的字符集合为(S1,S2,…,Sm),字符集合中的任意一个Si代表输入的字符i的词向量。
Trm会计算句子中所有词对当前输入词的贡献,再根据得到的信息对当前输入词 进 行 编 码,获得询问句词向量(S1,S2,…,Sm )。
采用MLP对词向量的类别进行预测,对获得的词向量(S1,S2,…,Sm)作全连接操作并进行多层感知机权重的调整。
论文7 该文章提出了要对不同类型的问题进行分类处理,即将问句划分为单跳和多跳问句。之后再进行实体链接操作,实体链接又分为主题实体识别和实体消歧。
实体识别模块可以采用序列标注模型和规则匹配结合的方法来进行。
序列标注模型分为BIO和BIOES两种,其中B 开始位置、I 中间位置、E表示结束为止、O 其他类别、S 单字表示一个实体。
例如:
其中在实体抽取的过程中,根据数据集的不同还应当考虑是否进行去除停用词操作。
论文2 数据为python爬虫对网络抓取的结果,针对的是对电影影评的构造分析。由于产生评论的主体为广大网民,评论数据口语化、地区话、随意化,并常带有 emoji 等表情符号,为后续的情感分析带来一定困难。对影评非结构化信息进行过滤,删除空字符串以及无意义的评论信息,过滤评论中的表情和其它特殊字符,对评论信息进行繁化简操作,去停用词等数据清洗工作。
2、关系抽取
关系抽取是指从无结构的文本中抽取实体以及实体之间的关系。一般关系抽取产生的结果为三元组<主体,谓语,客体>,表示主体和客体之间存在谓词表达的关系。
除了从文本中或半结构化数据中抽取关系,获取关系实例的方法还可以有:人工输入、众包构建:通过众包平台将关系抽取的任务分发给众包工人、从结构化数据库转换而来、自动构建:自动从文本中抽取
2.1、 关系抽取分类
- 关系实例抽取:给定目标关系,从语料中抽取相应的实例。比如,给定夫妻关系,从语料中挖掘、发现互为夫妻关系的实体对。
- 关系分类:根据实体对的文本描述,将实体对的关系进行分类(通常需要预定义关系类型,即枚举语料中提及的所有可能的实体对)。
- 开放关系抽取:有时被称为开放信息抽取(Open Information Extraction,OpenIE)。从文本中抽取出关系的文本描述,例如:从“柏拉图出生于雅典”可以抽取出<柏拉图,“出生于”,雅典>,“出生于”可以映射到知识库中的出生地关系。
2.2、 关系抽取方法
- 基于字符模式的抽取(手写规则模版)
将自然语言视为字符序列,构造字符模式,实现抽取。表达特定关系的字符模式通常被表示为一组正则表达式,随后与输入文本进行匹配,即可完成关系抽取。
关系
模式
例句
作品-作者
“《$arg1》”,是现代文学家$arg2的散文集”
“《朝花夕拾》,是现代文学家鲁迅的散文集”
作品-原名
“《$arg1》原名《$arg2》”
“《朝花夕拾》原名《旧事重提 》”
用于抽取有着固定的描述模式的内容
- 监督学习的抽取方法(需要大量标注好的训练预料)
机器学习和深度学习的方法
构造特征:
1)词特征:实体1与实体2之间的词、前后的词,词向量可以用Bag-of-Words结合Bigrams等。
2)实体标签特征:实体的标签。
3)依存句法特征:分析句子的依存句法结构,构造特征。(依赖于NLP工具库,比如HanLP但会带来一定的误差)
端到端的深度学习方法:可使用CNN或BI-LSTM作为句子编码器,把一个句子的词嵌入(Word Embedding)作为输入,用CNN或LSTM做特征的抽取器,最后经过softmax层得到N种关系的概率。相比上述方法省略了特征构造这一步,可避免在特征构造时产生的误差。
- 半监督学习的抽取方法
半监督学习的算法主要有两种:Bootstrapping和Distant Supervision。
- Bootstrapping不需要标注好实体和关系的句子作为训练集,不用训练分类器;
- Distant Supervision可以看做是Bootstrapping和Supervise Learning的结合,需要训练分类器。
Bootstrapping的算法理念是根据拥有一定关系的少量实体对进行学习,输出更多具有该关系的更多实体对。但是可能会造成语义漂移。
2.3、相关论文
论文1 在构建知识图谱的过程中,依据《伤寒论》的解读,定义了三类实体关系:上下位关系、治愈关系以及整体与部分关系。
论文3 根据企业的外贸出口、所在地区以及企业类型三种关联关系作为关系发掘的条件。首先设定过滤阈值,若待查询企业计算出的关系关联度大于该阈值,则将该企业作为备选结果集中的一个。
关系发掘的计算方法:
将目标企业节点记为q,待查询企业节点记为 g,计算权重表示为 wi,两个节点所对应的关系集合记为 Rq和 Rg,其中集合中所对应的外贸出口、所在地区以及企业类型三个关联关系分别为 Rq1、Rq2、Rq3和Rg1、Rq2、Rq3。则两节点的关联相似度得分可表示为
论文5 首先构建广西民族文化知识图谱关系词组集WRS;然后调用分词函数split(),获取询问句分词向量W;最后,在关系词组集中对问句分词向量进行匹配检索,如果检索成功,则问句关系即可判定为匹配关系。
论文9:
论文12 以海量婚姻法相关知识为数据基础,以浅层语义模型为计算工具,得出具有层级关系的词集。其层级关系主要依据以高维空间语言模型计算出的词向量。根据词向量的高维空间分布,可以得出某一词向量的相近词集,并根据空间距离对联想进行分级,从而建立起与该词相关的语义实时扩展联想。
3、属性抽取
4、知识融合
更多相关内容 -
知识图谱(关系网络)概念及常用算法
2019-11-27 15:05:563 传统的图算法从应用角度可分为三类 3.1路径查找算法——Dijkstra 3.2中心度算法——PageRank 3.3 社区发现算法——LPA 4 图神经网络 5 网络表示学习和图嵌入 5.1基于矩阵分解的图嵌入 5.2基于随机游走的图...目录
1 什么是图?
图是一种常见的数据结构,用于表示对象及其之间的关系。其中,对象又称节点(node)或顶点(vertex),关系用边(edge)来描述。在数学上一般用 G=(V,E,A,X) 来表示,其中 V={v1,v2……,vn} 是节点集合,E=e_ij 表示边的集合,A 是大小为|V|×|V|的邻接矩阵,用于表示节点之间的连接关系,如果 e_ij∈E,则 A_ij=1,X 是大小为|V|×d 的特征矩阵,X 的第 i 行 X_i:表示第 i 个节点的属性特征,其中 d 是属性的维度。
2 图能做什么?
上图中,右侧手机号171505****关联了393个人,16年-19年累计进件1665次,放款65笔,其中33笔当期状态是逾期!
3 传统的图算法从应用角度可分为三类
1. 路径查找算法
2. 中心度算法
3. 社区发现算法
3.1 路径查找算法——Dijkstra
Dijkstra是一个贪心算法,用于在加权的图中查找最短路径,比起无脑的遍历,Dijkstra优化的点是,为了避免不必要的
重复计算,保留上一步的计算信息。
对于带权有向或无向图 G=(V,E),Dijkstra 算法的复杂度为O(V^2) 只有当权重为正值时有效,基于 Fibonacci heap 的最
小优先队列实现版本,其时间复杂度为O(E+VlogV)。当权重有负值,可使用贝尔曼-福特算法。
1. 指定一个节点,例如我们要计算 'A' 到其他节点的最短路径 2. 引入两个集合(S、U),S集合包含已求出的最短路径的点(以及相应的最短长度),U集合包含未求出最短路径的点(以及A到该 点的路径,注意 如上图所示,A->E由于没有直接相连 初始时为∞) 3. 初始化两个集合,S集合初始时 只有当前要计算的节点,A->A = 0,U集合初始时为 A->B = 8, A->E = ∞, A->D = 1, A->C = 5 4. 从U集合中找出路径最短的点,加入S集合,例如 A->D = 1 5. 更新U集合路径,if ( 'D 到 C,E 的距离' + 'AD 距离' < 'A 到 C,E 的距离' ) 则更新U 循环执行 4、5 两步骤,直至遍历结束,得到A 到其他节点的最短路径
3.2 中心度算法——PageRank
定义问题: 一个网站的排名,如何确定;或一个人在社交网络中的影响力,如何确定;
被一个门户网站指向,被一个大V关注……
假设,4个网站之间的跳转入左图,抽象出来就是转移矩阵M,假设一个人最开始访问这四个网站的概率都是1/4,那经过第一轮跳转
终止点问题&陷阱问题
在计算PR时,增加空值随机跳出的阻尼系数β,可以理解成关掉无外链的网页,重新随机打开一个新的网页。
3.3 社区发现算法——LPA
LPA算法是一个极其简单的图传播算法,其经验假设是以节点为中心,进行投票制,十分高效。
1. 初始化,将图中的每个节点看成一个独立的社区; 2. While所有节点的社区标签不再变化; 统计每个节点邻居的社区,将出现最多次的社区赋给该节点,如果出现最多次的社区有多个,随机选择一个社区赋给该节点。
算法本身很简单,分布式实现也很容易。但是这个算法也存在很大的问题:由于存在随机选择的情况,所以算法很容易
出现振荡。但这个算法的运行开销很低,拿来做baseline,作为参考也是可以的。另外,对于一个带权重的图,亦可以
考虑带权重的投票机制。
另:半监督学习版LPA
构建转移矩阵M,M中的转移概率计算方法为W_ij = exp(- d_ij/σ^2) 2. 对未标注的样本随机初始化,已标注样本为样本标签,构造状态矩阵R 3. 按转移概率,对矩阵R的状态进行更新,只更新未标注样本(同样可以加入阻尼系数β) 4. 对行进行归一化 5. 重复3,4步骤直到收敛
4 图神经网络
图神经网络(Graph Neural Network)是直接在图数据结构上运行的神经网络。GNN的典型应用便是节点分类。图中的每
个节点都有一个标签,我们希望不需要标注数据,可以预测新的节点标签。在首次提出GNN的论文《The graph neural
network model》中来看GNN的定义。
在节点分类问题中,每个节点v的特征用xv表示,并且和标签tv相关联。给定部分标记的图G,目标是利用这些标
记的节点来预测未标记节点的标签。网络学会用d维向量(状态)hv表示每个节点,其中包含其邻域信息。
其中,xco[v]表示与v连接的边的特征,hne[v]表示v的相邻节点嵌入表示,xne[v]表示v的相邻节点的特征。函数f是将这
些输入投影到d维空间的传递函数。
通过将状态hv以及特征xv传递给输出函数g来计算GNN的输出:
f和这里的g都可以解释为前馈全连接神经网络。 L1损失可以直接表述如下:
关键问题就是x、h的向量表示 —— everything2vec。
5 网络表示学习和图嵌入
将图的拓扑结构、节点属性、节点标签特征经过神经网络非线性映射,在深层可以提取到更高层次的特征表示,然后变换
成一个向量通过全连接层进行分类,那提取这个向量的过程称为表示学习(Representation Learning)。图嵌入也类似,
通过神经网络学习从节点到向量的映射,尽可能的保留住节点的结构信息和属性信息。图嵌入方法可以分为基于矩阵分解
的图嵌入、基于随机游走的图嵌入、基于神经网络的图嵌入(即图神经网络)。
5.1 基于矩阵分解的图嵌入
邻接矩阵(adjacency matrix)
拉普拉斯矩阵
L=D-A
5.2 基于随机游走的图嵌入
DeepWalk 算法
基于word2vec提出来的,将节点当做词,随机游走得到的节点序列当做句子,用word2vec的框架(skip-gram+
Hierarchical Softmax)来进行词嵌入。
node2vec 算法
node2vec通过改变随机游走序列生成的方式进一步扩展了DeepWalk算法。DeepWalk选取随机游走序列中下一个节点
的方式是均匀随机分布的,而node2vec通过引入两个参数p和q,将宽度优先搜索和深度优先搜索引入随机游走序列的
生成过程。广度优先搜索注重刻画网络中的局部特征,而深度优先搜索能更好地遍历整个网络,反映了节点间的同质性。
t为游走初始节点(顶点),v为当前节点,dtx为顶点t和顶点x之间的最短路径距离
5.3 基于图神经网络的图嵌入
图嵌入框架
Hamilton 提出的一种图嵌入 encoder-decoder 框架,可以将大多数的图嵌入方法用这个框架来表示。在这个框架中,
我们围绕两个关键的映射函数组织了各种方法:一个 encoder(它将每个节点映射到一个低维向量) 和一个 decoder(它
从已知的嵌入中解码关于图的结构信息)。encoder-decoder 背后的直觉想法是这样的:如果我们能从低位嵌入表示中学
会解码高维图信息,如节点在图中的全局位置或节点的局部邻域结构,那么原则上,这些嵌入应包含下游机器学习任务
所需的所有信息。
decoder 是接受一组节点嵌入并从这些嵌入中解码用户指定的图统计数据的函数。例如,decoder 可能根据节点的嵌入
预测节点之间是否存在边,或者可能预测图中节点所属的社区。
GraphASGE算法
对于一个图G,先从一度节点中随机采样,再从一度采样节点的二度节点随机采样,得到如图一度3个二度5个节点。根
节点从采样的一度节点中使用aggregator1提取信息,一度节点从二度节点中使用aggregator2提取信息,一层层向内
聚,最终得到根节点的表征向量。
算法伪代码如下:
其中,第一层循环k表示第k层或k度(比如开始的例子中k属于[0,1,2]),hk表示在这一层中一个节点的表征,xv是v节点
的特征向量(如果节点没有特征表示可以进行随机初始化?那这个过程学习到的只是网络的拓扑结构)N表示相邻节点采
样函数。
过程是这样的:
k=1时:①每个节点v从相邻节点通过N采样得到ui,通过AGGREGATEk得到根据邻居节点对v节点的表征hN(v);②将v节点
的k=0原始特征向量hv与hN(v)合并(concat)后经过W矩阵映射及σ非线性映射(非线性激活函数的全连接层),得到k=1层
节点v的表征hv;③遍历完全部节点后,对hv归一化;
k=2时:……
通常k不需要取3度以上,2度关系的表征对大部分场景已经足够。
损失函数
可以通过无监督方式或有监督方式进行,优化方向是,希望节点u与相邻节点相似度高,但与没有交集(n度以上)的节点相
似度低;
有监督的方式可以根据给定label的类型选择损失函数,比如:二分类可以采用交叉熵损失函数。
聚合函数
伪代码第5行可以使用不同聚合函数,本小节介绍五种满足排序不变量的聚合函数:平均、GCN归纳式、LSTM、pooling
聚合器。(因为邻居没有顺序,聚合函数需要满足排序不变量的特性,即输入顺序不会影响函数结果)
- a.平均聚合:直接对目标节点和所有邻居emebdding中每个维度取平均(替换伪代码中第5、6行),后再非线性转换;
- b. 归纳式聚合:先对邻居embedding中每个维度取平均,然后与目标节点embedding拼接后进行非线性转换;
- c. LSTM聚合:LSTM函数不符合“排序不变量”的性质Å,需要先对邻居随机排序,然后将随机的邻居序列embedding作为
LSTM输入;
- d. Pooling聚合:将相邻的相邻都扔进一个全连接神经网络中,
引用:
1. 简单的图神经网络介绍 https://www.jiqizhixin.com/articles/2019-02-15-14
2. 从数据结构到算法:图网络方法初探https://www.jiqizhixin.com/articles/2019-08-12-9
3. 《Graph_Algorithms_Neo4j》Mark Needham & Amy E. Hodler
4. 《图数据库》第二版 Ian Robinson著
5. Inductive Representation Learning on Large Graphs, William L. Hamilton, 2017
6. 图的邻接矩阵的实现 https://blog.csdn.net/canot/article/details/78703184
7. lpa标签传播算法讲解及代码实现 https://blog.csdn.net/nwpuwyk/article/details/47426909#commentBox
-
基于关系图谱的人岗关系研究
2021-01-20 04:02:11将基于网络表示学习算法提取的关系图谱中的节点及关系等信息作为特征并输入分类模型,实现人岗关系研判。实验结果表明,基于关系图谱的方法可以很好地捕获人员和岗位之间的复杂关系信息,准确地判断人岗关系。 -
JavaScript数据结构和算法之图和图算法
2020-10-24 17:39:30主要介绍了JavaScript数据结构和算法之图和图算法,本文讲解了有向图、无序图、简单图、图的遍历等内容,需要的朋友可以参考下 -
Java集合框架关系图谱
2018-03-06 20:26:58Java集合是用于存储数量不等的对象的容器,还可以保存具有映射关系的关联数组, Collection是集合接口,它提供了对集合对象进行基本操作的通用接口方法。Java集合大致分为下面四种类型:List,Set,Queue,Map。List...Java集合是用于存储数量不等的对象的容器,还可以保存具有映射关系的关联数组, Collection是集合接口,它提供了对集合对象进行基本操作的通用接口方法。
Java集合大致分为下面四种类型:List,Set,Queue,Map。
List代表有序,可重复集合,Set代表无序,不可重复集合,Queue代表队列集合,Map代表具有映射关系的集合。
Java集合主要有Collection和Map接口派生,他们是集合的根接口。
List,Set,Queue继承Collection接口,如下继承图:
Map接口的继承树:
Java集合类图如下:本身想自己画个,但是画出的效果不太好,从网上找个例图。
-
基于知识图谱的多目标学习资源推荐算法
2021-05-06 11:53:59为解决在线学习中出现的“认知过载”和“学习迷航”等问题, 针对用户的个性化学习需求, 同时考虑知识点之间的逻辑关系, 本文将知识图谱融入学习资源推荐模型. 首先构建了学科知识图谱、学习资源模型和用户数学模型, ... -
人物图谱数据集,近十万的人物关系图谱事实数据库,通过人物关系抽取算法抽取+人工整理得出,可用于人物...
2021-05-25 13:46:29人物图谱数据集,近十万的人物关系图谱事实数据库,通过人物关系抽取算法抽取+人工整理得出,可用于人物关系搜索、查询、人物关系多跳问答,以及人物关系推理等场景提供基础数据。 项目由来 关于为什么要开放这个... -
基于组合关系路径的知识图谱补全方法研究
2021-04-30 14:44:45现有的知识图谱补全方法往往只考虑直接连接的两个节点所组成的路径,忽略了节点与其他多个节点组成的关系路径所带来的信息。针对该问题,基于节点之间连接的方向,定义了在三节点结构下三种不同的关系路径连接模式,... -
知识图谱相关的模型和算法
2020-06-05 17:33:16知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及... -
知识图谱关系抽取之PCNN——tensorflow实现
2020-11-30 03:57:34知识图谱( Knowledge Graph)以结构化的形式描述客观世界中概念、实体及其关系,将互联网的信息表达成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力。上述一大段是我从2018知识...知识图谱( Knowledge Graph)以结构化的形式描述客观世界中概念、实体及其关系,将互联网的信息表达成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力。上述一大段是我从2018知识图谱发展报告中copy下来的一段话,用普通人能听懂的人话来描述:知识图谱就是把去发现世间万物的之间的联系。 在技术上就是将数据以一个一个的的三元组形式存储起来。
不知道大家有没有这样一种感受,如果你在某一领域的学习了解到很多的知识碎片,却无法将他们关联起来,这些知识碎片并不会加深你对这一领域的认知。而如果你能将他们联系起来,串联成一张知识网,那很有可能你就是这个领域决定的专家。因为你的脑中有这个领域的知识网,你就能知道这个领域的边界在哪。知识图谱就是要将知识串联起来,形成一张知识网。
知识图谱的应用场景:
知识图谱主要分为两类:
通用知识图谱和领域知识图谱。通用知识图谱主要需要知识的广度,而领域知识图谱需要知识具有深度。
通用知识图谱最普遍的应用场景就是:搜索引擎,
领域知识图谱的应用场景则比较丰富多样:司法,医疗,金融,电商等各行各业都可以构建属于自己行业的知识图谱,而这些知识图谱可以用于智能问答,辅助决策,风险规避等。
当然以上只是知识图谱被应用最多的场景,还有一些很有潜力的应用场景,比如将知识图谱和深度学习结合等。知识图谱这个新的,年轻的概念还等着大家去探索更多的应用可能性。
知识图谱的构建简介
这里笔者就不没有考虑业务逻辑,也不考虑构建过程中一下细节技术,直接讲一个简单粗暴版的构建流程。
实体抽取,实体链接(两个实体同一个含义需要规整),目前最主流的算法就是CNN+LSTM+CRF进行实体识别。
实体之间,关系抽取,拿到知识图谱最小单元三元组,比较经典算法的就是Piece-Wise-CNN,和 LSTM+ Attention 。
知识存储,一般采用图数据库(neo4j等)。
但是要注意的是,知识图谱一定要最先定义好构建它是用来干什么,目标业务导向,定义好符合业务逻辑schema层才是最最重要的。有了schema之后接下来的任务就是实体抽取和关系抽取啰,其中关系抽取是把知识点串联成一张知识网的重要过程,所以这里笔者着重介绍一下最近在知识图谱领域很火的有监督的关系抽取任务的一个模型PCNN。
关系抽取之PCNN(Piece-Wise-CNN)
这里笔者仔细解释一下有监督的关系抽取的任务的数据样式,任务形式,以及PCNN(Piece-Wise-CNN)的思想和tensorflow实现。
关系抽取数据:
data.png
input : 句子 Steve Jobs was the co-founder of Apple Inc和两个entities Steve Jobs 和 Apple Inc。
out: 实体之间关系 : /business/company/founder
所以我们可以将其抽象成一个分类问题,输入句子和实体信息,然后让模型分出这两个实体之间的关系属于哪一类。
PCNN
下图清晰了显示了PCNN的整个网络架构,原文链接在这里,下面我对着下图介绍一下PCNN的实现过程:
数据预处理:首先对数据进行位置编码,按句子中各个词离entity的距离进行编码。
例如:“As we known,Steve Jobs was the co-founder of Apple Inc which is a great company in America.”
由于句子中有两个entity,所以这条句子就会产生两个和句子长度相同的编码。
pos_1:[-4,-3,-2,-1,0,1,2,3……] ,其中0就是Steve Jobs的位置。
pos_2:[-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3……] 其中0就是Apple Inc的位置。
切分句子:其中最主要的就是将一条文本数据在两个entity处各切一刀将文本且成了3段。
比如 As we known,Steve Jobs was the co-founder of Apple Inc which is a great company in America,将被切成:
As we known,Steve Jobs
Steve Jobs was the co-founder of Apple Inc
Apple Inc which is a great company in America.
注意,位置向量也同样进行了切分操作。
特征提取:将位置特征和文本特征拼接之后,然后将上面三个数据分别通过CNN 提取特征,
关系分类:提取出来的特征通过maxpooling层之后进行拼接后送入softmax层,最终得到relation的分类。
pcnn.png
从上面PCNN的流程我们可以发现,这个网络结构很注重entitiy之间的距离信息,位置信息,以及entitiy之间或者左右的信息。其实这些都是是关系抽取中最重要的特征。
一般来说两个entitiy之间距离越近,则他们有关系的可能性越大。
而透露出entities之间有关系的词一般会出现在两个entity之间,左侧,或者右侧。
例如:Steve Jobs was the co-founder of Apple Inc , 关系词 co-founder就在两个entity之间
tensorflow 代码实现
由于之前对PCNN的整个流程有了比较详细的解释,这里笔者只是简单的介绍一下代码构成。
下方这一步是已经将文本向量和位置向量进行了切分,由于文本被两个entity分成了左,中,右三段,再这三段加上各自的两个位置向量。所以网络一共有9个输入,加上关系label输出,一共需要定义10个placeholder。
import tensorflow as tf
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
tf.reset_default_graph()
word_ids_left = tf.placeholder(tf.float32, shape=[None, maxlen, word_emb_size])
word_ids_mid = tf.placeholder(tf.float32, shape=[None, maxlen, word_emb_size])
word_ids_right = tf.placeholder(tf.float32, shape=[None, maxlen, word_emb_size])
pos_l_1 = tf.placeholder(tf.int32, shape=[None, maxlen])
pos_l_2 = tf.placeholder(tf.int32, shape=[None, maxlen])
pos_m_1 = tf.placeholder(tf.int32, shape=[None, maxlen])
pos_m_2 = tf.placeholder(tf.int32, shape=[None, maxlen])
pos_r_1 = tf.placeholder(tf.int32, shape=[None, maxlen])
pos_r_2 = tf.placeholder(tf.int32, shape=[None, maxlen])
pos_r_2 = tf.placeholder(tf.int32, shape=[None, maxlen])
label = tf.placeholder(dtype=tf.int32,shape=[None,n_class])
下方代码这是PCNN的实现,其中Piece_Wise_CNN函数是对PCNN的实现。
def get_sentence_emb(word_ids,pos_1,pos_2):
pos_emb_l1 = tf.keras.layers.Embedding(input_dim=498,output_dim=10,input_length=100)(pos_l_1)
pos_emb_l2 = tf.keras.layers.Embedding(input_dim=498,output_dim=10,input_length=100)(pos_l_2)
return tf.concat([word_ids,pos_emb_l1,pos_emb_l2],2)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]
def Piece_Wise_CNN(left_emb,mid_emb,right_emb,feature_map,n_class):
left = tf.keras.layers.Conv1D(filters=feature_map,kernel_size=3)(left_emb)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]
left = tf.keras.layers.GlobalMaxPool1D()(left)#[batch_size,feature_map]
mid = tf.keras.layers.Conv1D(filters=feature_map,kernel_size=3)(mid_emb)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]
mid = tf.keras.layers.GlobalMaxPool1D()(mid)#[batch_size,feature_map]
right = tf.keras.layers.Conv1D(filters=feature_map,kernel_size=3)(right_emb)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]
right = tf.keras.layers.GlobalMaxPool1D()(right)#[batch_size,feature_map]
final_feature = tf.concat([left,mid,right],1)#[batch_size,3*feature_map]
out = tf.keras.layers.Dense(n_class,activation="softmax")(final_feature) #[batch_size,n_class]
return out
def train_op(out,label,lr):
losses = tf.nn.softmax_cross_entropy_with_logits_v2(
logits=out, labels=label)
loss = tf.reduce_mean(losses)
train_op = tf.train.GradientDescentOptimizer(learning_rate=lr).minimize(loss)
return train_op,loss
这里是定义train_op部分。
left_emb = get_sentence_emb(word_ids_left,pos_l_1,pos_l_2)
mid_emb = get_sentence_emb(word_ids_mid,pos_m_1,pos_m_2)
right_emb = get_sentence_emb(word_ids_right,pos_r_1,pos_r_2)
out = Piece_Wise_CNN(left_emb,mid_emb,right_emb,20,n_class)
train_op,loss = train_op(out,label,lr = 0.01)
结语
这里笔者主要是想通过PCNN这个经典的关系抽取网络说明:其实有监督的关系抽取任务的关键是需要神经网络理解两个entity之间的语义连结,所以,而如何利用好句子中entity周围的词语的语义信息和entity之间的位置信息,可能是解决这类任务的关键。笔者在之前的文章中多次强调过自然语言处理最终目标还是希望算法能够理解语义。像PCNN这个网络则提出了切分句子,集中注意力关注句子提供关键信息的部分(自己的理解),也许是一个好的方向。
-
基于知识图谱知识推理的视频推荐算法_许智宏.pdf
2020-10-23 16:03:07在协同过滤中引入知识图谱推理技术,通过路径排序算法挖掘实体间多路径关系,将所有的实体关系嵌入到低维的语义空间中,在低维空间中计算任意视频间的语义相似性,将语义相似性与协同过滤的用户行为相似性结合进行... -
知识图谱补全算法综述(动态知识图谱补全)
2020-10-29 10:14:44论文阅读笔记:知识图谱补全算法综述论文:丁建辉, 贾维嘉. 知识图谱补全算法综述[J]....描述:对于知识图谱G,假设G中含有实体集E={e1, e2,…, eM}(M为实体的数量)、 关系集R={r1, r2,…, rN}(N为 -
融合知识图谱和用户行为信息的个性化推荐算法研究.pdf
2021-08-21 20:13:43融合知识图谱和用户行为信息的个性化推荐算法研究.pdf -
[知识图谱实战篇] 四.HTML+D3+CSS绘制关系图谱
2019-02-12 17:40:52前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术、Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例。为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏伦... -
知识图谱系列——关系抽取(1)
2020-11-30 03:57:35摘要本文接着 知识图谱系列––命名实体识别方法[1],继续介绍关系抽取方法。知识图谱在构建的过程中,往往伴随着边试用,边拓展,边优化的过程,其中图谱拓展和优化就必须用到关系抽取方法来进一步抽取补充实体关系... -
知识图谱 - TransE算法
2020-08-11 11:10:54这里写自定义目录标题论文TransE算法概览核心思想Tips参考代码问题 论文 Translating Embeddings for Modeling Multi-relational Data TransE 算法概览 核心思想 实体向量 + 关系向量 = 实体向量 (h+l = t) Tips ... -
一种适用图文知识图谱的关系抽取方法与流程
2020-11-30 03:57:32本发明涉及信息处理领域,特别涉及图像目标检测以及知识图谱中的关系抽取算法。背景技术:图像目标检测目的是在于检测图像中包含的所有物体,基本做法是将图像划分区域后再对每个区域进行图像分类。知识图谱中的一个... -
干货!针对知识图谱学习的高效超参搜索算法
2022-04-30 00:52:09超参数调优对于知识图谱学习是一个重要问题,会严重影响模型性能,但由于模型训练时间长,现有的超参数搜索算法往往效率低下。为解决这一问题,我们详细地分析了不同超参数的性质,及子图到全图的迁移能力。并根据... -
知识图谱课程pdf版(CCKS2018).zip
2021-08-19 23:06:56知识图谱课程pdf版(CCKS2018).zip -
常用的图算法关系整理
2020-02-16 20:01:10 -
[关系图谱] 一.Gephi通过共现矩阵构建知网作者关系图谱
2018-08-16 20:17:11作者最近研究人物关系图谱,准备发表相关的文章,原本是用Python Networkx库绘制,但效果不太理想;故改为Gephi软件,发现其非常好看,特分享几篇文章供大家交流学习,希望对您有所帮助,尤其是引文分析、社交网络、... -
知识图谱表示学习-TransE算法
2021-07-20 18:35:52知识图谱表示学习-TransE算法表示学习知识图谱表示学习TransE (这是一篇小白入门笔记,请勿转载) 表示学习 表示学习是一个利用模型自动地学习数据的隐式特征的过程,以此来计算 得到对学习对象来说相比原始数据更... -
关系图谱在贝壳的构建和应用
2020-07-05 22:34:38分享嘉宾:周玉驰贝壳 资深算法工程师文章整理:许继瑞内容来源:贝壳找房知识图谱技术大会出品平台:DataFun注:欢迎转载,转载请在留言区留言。导读:贝壳找房积累了大量房、客、人的行为... -
DataFunSummit:知识图谱技术峰会 2021 共24份
2022-02-09 19:50:10复杂语境下的实体关系抽取 知识图谱的构建与互联网场景下的应用 开放式知识图谱的自动构建技术 “神经+符号”学习与多模态知识发现 事件抽取与事件图谱构建 小米在知识表示学习方向的探索与实践 基于电商常识... -
知识图谱完整教程
2018-11-02 17:55:57第一讲 知识图谱概览;第二讲 知识表示和知识建模;第三讲 知识抽取与挖掘I -
【关系抽取】深入浅出讲解实体关系抽取(介绍、常用算法)
2022-05-18 16:46:04关系抽取(Relation Extraction,简称RE)的概念是1988年在MUC大会上提出,是信息抽取的基本任务之一,目的是为了识别出文本实体中的目标关系,是构建知识图谱的重要技术环节。 知识图谱是语义关联的实体,它将人们... -
多知识图谱的融合算法探索【丁香园大数据发布】.zip
2020-02-06 00:37:18在过去一年的文章中,我们讨论了很多关于知识图谱构建、结合NLP应用的方法。逐渐,这些算法开始深入到许多业务中的搜索、推荐...本文我们来系统地看一下在不同阶段,图谱融合该采取什么策略,以及相关的算法论文调研。 -
知识图谱——知识补全算法综述
2020-02-12 13:57:03知识图谱——知识补全综述 1、知识图谱补全概念 目标:预测出三元组中缺失的部分,从而使得知识图谱变得更加完整。 背景:对于一个知识图谱...关系集R=r1,r2,....rNR={r_1,r_2,....r_N}R=r1,r2,....rN(N表示关... -
关系网络及图算法的应用总结
2021-06-08 21:44:22本文是对《智能风控典藏版合集》中涉及到的关系网络及图谱、图算法作的总结笔记,涉及到的文章有《图算法在网络黑产挖掘中的思考》、《Frauder算法在京东关系网络反欺诈中的应用》、《关系图谱在贝壳找房风控体系的... -
知识图谱表示学习-TransH算法
2021-07-20 19:00:19为了改善 TransE 在建立复杂关系模型上的不足,在 TransE 的基础上提出了 TransH 算法[22]。TransH 引入了超平面,将关系定义在超平面上,将实体投影到了超平面上。这样对于相同实体,在不同关系下,他们在超平面的...