知识图谱:知识融合

news2024/11/18 9:26:14

知识融合简介

知识融合,即合并两个知识图谱(本体),基本的问题都是研究怎样将来自多个来源的关于同一个实体或概念的描述信息融合起来。需要确认的是:等价实例、等价类/子类、等价属性/子属性。

一个例子如上图所示,图中不同颜色的圆圈代表不同的知识图谱来源,其中在dbpedia.org中的Rome 和geoname.org的roma是同一实体,通过两个sameAs链接。不同知识图谱间的实体对齐是KG融合的主要工作。

除了实体对齐外,还有概念层的知识融合、跨语言的知识融合等工作。

这里值得一提的是,在不同文献中,知识融合有不同的叫法,如本体对齐、本体匹配、Record Linkage、Entity Resolution、实体对齐等叫法,但它们的本质工作是一样的。

知识融合的主要技术挑战为两点:

1.数据质量的挑战:如命名模糊,数据输入错误、数据丢失、数据格式不一致、缩写等。

2.数据规模的挑战:数据量大(并行计算)、数据种类多样性、不再仅仅通过名字匹配、多种关系、更多链接等。

基本技术流程

知识融合一般分为两步,本体对齐和实体匹配两种的基本流程相似,如下:

1.数据预处理

数据预处理阶段,原始数据的质量会直接影响到最终链接的结果,不同的数据集对同一实体的描述方式往往是不相同的,对这些数据进行归一化是提高后续链接精确度的重要步骤。

常用的数据预处理有:

1.语法正规化

2.语法匹配:如联系电话的表示方法

3.综合属性:如家庭地址的表达方式

4.数据正规化

5.移除空格、《》、“”、-等符号

6.输入错误类的拓扑错误

7.用正式名字替换昵称和缩写等

2.记录连接

假设两个实体的记录x 和y, x和y在第i个属性上的值是, 那么通过如下两步进行记录连接:

属性相似度:综合单个属性相似度得到属性相似度向量:

实体相似度:根据属性相似度向量得到一个实体的相似度

属性相似度的计算

属性相似度的计算有多种方法,常用的有编辑距离、集合相似度计算、基于向量的相似度计算等。

1.编辑距离: Levenstein、Wagner and Fisher、Edit Distance with Afine Gaps

2.集合相似度计算: Jaccard系数, Dice

3.基于向量的相似度计算: Cosine相似度、TFIDF相似度

编辑距离计算属性相似度

Levenshtein 距离,即最小编辑距离,目的是用最少的编辑操作将一个字符串转换成另一个.举个例子,计算Lvensshtain 与 Levenshtein 间的编辑距离: Lvensshtain转换为Levenshtein ,总共操作3次,编辑距离也就是3。LevensteinDistance 是典型的动态规划问题,可以通过动态规划算法计算,其中+1 表示的是插入,删除和替换操作的代价。

Wagner and Fisher Distance是Levenshtein距离的一个扩展,将这个模型中的编辑操作的代价赋予了不同的权重,其中del、ins和sub分别是删除、插入和替换的代价。

Edit Distance with affine gaps在上面的两种算法基础上,引入了gap的概念,将上述的插入、删除和替换操作用gap opening 和gap extension代替,其中s 是open extension的代价,e是extend gap的代价,l是gap的长度。如计算 Lvensshtain 与 Levenshtein间的距离,首先将两个单词首尾对齐,将对应缺少的部分视为gap,上面和下面单词相比少了第一个e和倒数第三个的e,这是两个gap。下面的单词与上面的比则少了一个s和a,这又是两个gap。加一起一共4个gap,每个长度为1。

集合相似度计算属性相似度

Dice系数用于度量两个集合的相似性,因为可以把字符串理解为一种集合,因此Dice距离也会用于度量字符串的相似性,Dice系数以Lvensshtain 和 Levenshtein为例,两者的相似度为 2 * 9 / (11+11)= 0.82。

Jaccard 系数适合处理短文本的相似度,与Dice系数的定义比较相似。两种方法,将文本转换为集合,除了可以用符号分格单词外,还可以考虑用n-gram分割单词,用n-gram分割句子等来构建集合,计算相似度。

TF-IDF 基于向量的相似度主要用来评估某个字或者用某个词对一个文档的重要程度。比如某个语料库中有5万篇文章,含有“健康”的有2万篇,现有一篇文章,共1000个词,‘健康’出现30次,则sim TF-IDF =30/1000 * log(50000/(20000+1)) = 0.012。

实体相似度的计算

计算实体相似度可从三大方面入手,即聚合、聚类和表示学习。

1.聚合:加权平均方法,即对相似度得分向量的各个分量进行加权求和,得到最终的实体相似度:手动制定规则就是给每一个相似度向量的分量设置一个阈值,若超过该阈值则将两实体相连:

对于分类器等机器学习方法,最大的问题是如何生成训练集合,对于此可采用无监督/半监督训练,如EM、生成模型等。或主动学习如众包等方案。

2.聚类:聚类又可分为层次聚类、相关性聚类、Canopy + K-means等。

层次聚类 (Hierarchical Clustering) 通过计算不同类别数据点之间的相似度对在不同的层次的数据进行划分,最终形成树状的聚类结构。

底层的原始数据可以通过相似度函数计算,类之间的相似度有如下三种算法:

SL(Single Linkage)算法: SL算法又称为最邻近算法 (nearest-neighbor),是用两个类数据点中距离最近的两个数据点间的相似度作为这两个类的距离。

CL (Complete Linkage)算法: 与SL不同的是取两个类中距离最远的两个点的相似度作为两个类的相似度。

AL (Average Linkage) 算法: 用两个类中所有点之间相似度的均值作为类间相似度。

相关性聚类表示x,y被分配在同一类中, 代表x,y是同一类的概率 (x,y之间的相似度),和 分别是切断x,y之间的边的代价和保留边的代价。相关性聚类的目标就是使用最小的代价找到一个聚类方案。是一个NP-Hard问题,可用贪婪算法近似求解。

Canopy + K-means与K-means不同,Canopy聚类最大的特点是不需要事先指定k值 (即clustering的个数),因此具有很大的实际应用价值,经常将Canopy和K-means配合使用。

3.表示学习:将知识图谱中的实体和关系都映射低维空间向量,直接用数学表达式来计算各个实体之间相似度。这类方法不依赖任何的文本信息,获取到的都是数据的深度特征。

将两个知识图谱映射到同一空间的方法有很多种,它们的桥梁是预连接实体对(训练数据),具体可以看详细论文。

完成映射后如何进行实体链接呢?KG向量训练达到稳定状态之后,对于KG1每一个没有找到链接的实体,在KG2中找到与之距离最近的实体向量进行链接,距离计算方法可采用任何向量之间的距离计算,例如欧式距离或Cosine距离。

3.分块

分块 (Blocking)是从给定的知识库中的所有实体对中,选出潜在匹配的记录对作为候选项,并将候选项的大小尽可能的缩小。这么做的原因很简单,因为数据太多了。。。我们不可能去一一连接。

常用的分块方法有基于Hash函数的分块、邻近分块等。

首先介绍基于Hash函数的分块。对于记录x,有 ,则x映射到与关键字绑定的块 上。常见的Hash函数有:

1.字符串的前n个字

2.n-grams

3.结合多个简单的hash函数等

4.邻近分块算法包含Canopy聚类、排序邻居算法、Red-Blue SetCover等。

4.负载均衡

负载均衡 (Load Balance)来保证所有块中的实体数目相当,从而保证分块对性能的提升程度。最简单的方法是多次Map-Reduce操作。

工具简介

1.本体对齐-Falcon-AO

Falcon-AO是一个自动的本体匹配系统,已经成为RDF(S)和OWL所表达的Web本体相匹配的一种实用和流行的选择。编程语言为Java。

匹配算法库包含V-Doc、I-sub、GMO、PBM四个算法。其中V-Doc即基于虚拟文档的语言学匹配,它是将实体及其周围的实体、名词、文本等信息作一个集合形成虚拟文档的形式。这样我们就可以用TD-IDF等算法进行操作。I-Sub是基于编辑距离的字符串匹配,这个前面我们有详细介绍。可以看出,I-Sub和V-Doc都是基于字符串或文本级别的处理。更进一步的就有了GMO,它是对RDF本体的图结构上做的匹配。PBM则基于分而治之的思想做。

2. Limes 实体匹配

Limes是一个基于度量空间的实体匹配发现框架,适合于大规模数据链接,编程语言是Java。

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

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

相关文章

【unity2023打包安卓工程】踩坑记录

这里写自定义目录标题 踩坑记录使用环境Unity的准备工作Windows10 SDKAndroidstudio第一个需要注意的地方第二个需要注意的地方第三个需要注意的地方第四个需要注意的地方第五个需要注意的地方 踩坑记录 踩了快一个星期的坑,希望能帮助到有需要的人 项目使用的是uni…

WorkPlus私有化部署IM即时通讯平台,构建高效安全的局域网办公环境

随着数字化转型的加速,政府机构与企业对高效、安全的即时通讯和协作工具的需求日益增长。企业微信和钉钉作为当前市场上较为常见的通讯工具,虽然在一定程度上满足了企业内部协作的需求,但仍存在一些问题,如数据安全性、私有化部署…

OpenCV实现图像的礼帽和黑帽

礼帽运算 黑帽运算 参数 cv.morphologyEx(img,op,kernel)参数: img : 要处理的图像op: 处理方式 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [SimHei]#读取图像img1 …

【Linux】系统编程基于阻塞队列生产者消费者模型(C++)

目录 【1】生产消费模型 【1.1】为何要使用生产者消费者模型 【1.2】生产者消费者模型优点 【2】基于阻塞队列的生产消费者模型 【2.1】生产消费模型打印模型 【2.2】生产消费模型计算公式模型 【2.3】生产消费模型计算公式加保存任务模型 【2.3】生产消费模型多生产多…

指针笔试题讲解

文章目录 题目答案与解析1、234、5、6、7、8、 题目 int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; }//由于还没学习结构体,这里告知结构体的大小是20个字节 //由于还没学习结…

解答嵌入式和单片机的关系

嵌入式系统是一种特殊的计算机系统,用于特定任务或功能。而单片机则是嵌入式系统的核心部件之一,是一种在单个芯片上集成了处理器、内存、输入输出接口等功能的微控制器。刚刚好我这里有一套单片机保姆式教学,里面有编程教学、问题讲解、语言…

试图一文彻底讲清 “精准测试”

在软件测试中,我们常常碰到两个基本问题(困难): 很难保障无漏测:我们做了大量测试,但不清楚测得怎样,对软件上线后会不会出问题,没有信心; 选择待执行的测试用例&#…

百胜中国,全面进击

“未来三年,每年净增约1800家新店。” 美股研究社关注到,2023年投资者日活动上,百胜中国根据2024至2026年的发展规划,启动了集团RGM2.0战略。 三年时间,门店数要达到20000家,平均每年新增门店约1800家&am…

【【萌新的SOC大学习之hello_world】】

萌新的SOC大学习之hello_world zynq本次hello world 实验需要 PS-PL Configuration 页面能够配置 PS-PL 接口,包括 AXI、HP 和 ACP 总线接口。 Peripheral IO Pins 页面可以为不同的 I/O 外设选择 MIO/EMIO 配置。 MIO Configuration 页面可以为不同的 I/O 外设具…

蓝牙核心规范(V5.4)11.2-LE Audio 笔记之LE Auido架构

专栏汇总网址:蓝牙篇之蓝牙核心规范学习笔记(V5.4)汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客 爬虫网站无德,任何非CSDN看到的这篇文章都是盗版网站,你也看不全。认准原始网址。!!&#x…

event.stopPropagation()

现在有如下 当点击子按钮的时候会触发子事件,同时也会触发父事件, 如何阻止呢 handleDownload(event) { event.stopPropagation(); 。。。。。。。。。。 },

积跬步致千里 || 可视化动图展示

可视化动图展示 目前只能在 jupyter notebook 中测试成功 %matplotlib notebook import numpy as np import matplotlib.pyplot as plt import timen 500 data np.random.normal(0,1,n)fig plt.figure() ax fig.add_subplot(111)fig.show() fig.canvas.draw()for i in ra…

【新版】系统架构设计师 - 案例分析 - 信息安全

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 信息安全安全架构安全模型分类BLP模型Biba模型Chinese Wall模型 信息安全整体架构设计WPDRRC模型各模型安全防范功能 网络安全体系架构设计开放系统互联安全体系结构安全服务与安全机制…

LRU、LFU 内存淘汰算法的设计与实现

1、背景介绍 LRU、LFU都是内存管理淘汰算法,内存管理是计算机技术中重要的一环,也是多数操作系统中必备的模块。应用场景:假设 给定你一定内存空间,需要你维护一些缓存数据,LRU、LFU就是在内存已经满了的情况下&#…

go语言 rune 类型

ASCII 码只需要 7 bit 就能完整地表示,但只能表示英文字母在内的 128 个字符,为了表示世界上大部分的文字系统,发明了 Unicode ,它是 ASCII 的超集,包含世界上书写系统中存在的所有字符,并且为每个代码分配…

排队工会模式:电商营销的新趋势,让你的平台月流水过亿

排队工会模式是一种新型的电商营销模式,它利用产品利润分红的方式来吸引用户购买和推广,从而实现平台的流量和销量的增长。这种模式的核心是建立一个分红池,平台从每个产品的利润中拿出一定比例来充值分红池,然后按照用户的购买顺…

【yolov5】原理

Focus操作 anchors 先验框 其它 Yolov5的模型主要由Backbone、Neck和Head三部分组成。 Backbone:负责提取输入图像的特征。在Yolov5中,常见的Backbone网络包括CSPDarknet53或ResNet。这些网络都是相对轻量级的,能够在保证较高检测精度的同…

前端项目练习(练习-005-webpack-03)

学习前,首先,创建一个web-005项目,内容和web-004一样。(注意将package.json中的name改为web-005) 前面的代码中,打包工作已经基本完成了,下面开始在本地启动项目。这里需要用到webpack-dev-serv…

如何通过Gunicorn和Niginx部署Django

本文主要介绍如何配置Niginx加载Django的静态资源文件,也就是Static 1、首先需要将Django项目中的Settings.py 文件中的两个参数做以下设置: STATIC_URL /static/ STATIC_ROOT os.path.join(BASE_DIR, static) 然后在宝塔面板中执行python manage.…

Simulink仿真模块 - Digital Clock

Digital Clock:以指定的采样间隔输出仿真时间 在仿真库中的位置为:Simulink / Sources 模型为: 说明 Digital Clock 模块仅以指定的采样间隔输出仿真时间。在其他时间,此模块保留输出的上一个值。要控制此模块的精度,请使用模块对话框中的 Sample time 参数。 当需要离散系…