【知识图谱】知识融合
文章目錄
- 一、知識融合
- 1、基本概念
- 2、數據層的知識融合
- (1)不同KG的知識融合
- (2)不同知識庫的知識融合
- (3)不同來源數據的知識融合
- (4)知識在線融合
- 3、Schema層的知識融合
- 4、技術及其挑戰
- 5、相關比賽——OAEI
- 二、知識融合的基本技術流程
- 1、基本技術流程
- 2、數據預處理
- 3、記錄鏈接
- (1)屬性相似度
- ① 編輯距離
- ② 基于集合相似度
- ③ 基于向量的相似度
- (2)實體相似度
- ① 基于聚合的方法
- ② 基于聚類的方法
- ③ 基于知識表示學習
- 4、分塊(Blocking)
- 5、負載均衡
- 6、結果評估
- 三、典型知識融合工具
- 1、本體匹配(本體對齊)工具——Falcon-AO
- 2、實體匹配工具——Dedupe
- (1)指定謂詞集合&相似度函數
- (2)訓練Blocking
- (3)訓練邏輯回歸 (LR)模型
- 3、實體匹配工具——Limes
- 4、實體匹配工具——Silk
一、知識融合
1、基本概念
知識融合目標是融合各個層面(概念層、數據層)的知識,在合并兩個知識圖譜(本體)時,需要確認:
- 等價實例(數據層面)
- 等價類/子類
- 等價屬性/子屬性
相關的術語:(不同維度的描述)
- 知識融合 (Knowledge Fusion):最為全面
- Schema層面: 屬性和概念
- 本體對齊 (Ontology Alignment)
- 本體匹配 (Ontology Matching)
- 數據層面:
- Record Linkage (傳統數據庫領域)
- Entity Resolution (傳統數據庫領域)
- 實體對齊 (Entity Alignment)
2、數據層的知識融合
數據層的知識融合主要強調實體的知識融合
最主要的工作:實體對齊,即找出等價實例
(1)不同KG的知識融合
下圖是將貓王從YAGO和ElvisPedia進行融合的例子。
最主要的工作:實體對齊,即找出等價實例,圖中的sameAs就是融合的關鍵步驟。
(2)不同知識庫的知識融合
來源于不同知識庫的“自由女神像”
(3)不同來源數據的知識融合
(4)知識在線融合
示例:實體——撲熱息痛
此外,還有跨語言等的知識融合。
3、Schema層的知識融合
Schema層的融合主要強調概念和屬性等的融合。
示例:醫療知識圖譜——如將中文醫療知識圖譜與UMLS體系結構概念等的融合
4、技術及其挑戰
知識融合需要:
- 確定哪些會對齊在一起;
- 從不同地方抽取出來的數據的置信度是多少;
- 這些置信度如何隨著融合而合理的聚合。
注意:知識融合并不是合并兩個知識圖譜,而是發現兩個知識圖譜之間的等價實例、等價或為包含關系等概念或屬性。
知識融合的主要技術挑戰:
- 數據質量的挑戰
- 命名模糊,數據輸入錯誤,數據丟失,數據格式不一致,縮寫等
- 數據規模的挑戰:
- 數據量大 (并行計算),數據種類多樣性,不再僅僅通過名字匹配,多種關系,更多鏈接等
5、相關比賽——OAEI
OAEI (Ontology Alignment Evaluation Initiative)本體對齊競賽:用來評估各種本體對齊算法,以達到評估、比較、交流以及促進本體對齊工作的目的。
OAEI每年舉辦一次,結果公布在官網上。
Tracks:
二、知識融合的基本技術流程
1、基本技術流程
知識融合一般分為兩步:本體對齊 和 實體匹配,因為兩者相關性,方法思路如下:
==》Pipeline方法、Joint方法
它們的基本流程相似,如下:
2、數據預處理
數據預處理階段:原始數據的質量會直接影響到最終鏈接的結果,不同的數據集對同一實體的描述方式往往是不相同的,對這些數據進行歸一化處理是提高后續鏈接精確度的重要步驟。
數據預處理相關技術:
- 語法正規化
- 語法匹配:聯系電話的表示方法
- 綜合屬性:家庭地址的表達方式
- 數據正規化
- 移除空格,《》,“”,-,等符號
- 輸入錯誤類的拓撲錯誤
- 用正式名字替換昵稱和縮寫等
3、記錄鏈接
假設兩個實體的記錄 xxx 和 yyy , xxx 和 yyy 在第 iii 個屬性上的值是 xi,yix_i,y_ixi?,yi?,那么通過如下兩步進行記錄鏈接:
- 屬性相似度:
- 綜合單個屬性相似度得到屬性相似度向量
[sim(x1,y1),sim(x2,y2),…,sim(xN,yN)][sim(x_1,y_1),sim(x_2,y_2),…,sim(x_N,y_N)][sim(x1?,y1?),sim(x2?,y2?),…,sim(xN?,yN?)]
- 綜合單個屬性相似度得到屬性相似度向量
- 實體相似度:
- 根據屬性相似度向量得到一個實體的相似度
(1)屬性相似度
計算屬性相似度的方法:編輯距離(基于字符)、集合相似度計算 和 基于向量的相似度計算。
① 編輯距離
Levenshtein distance (最小編輯距離):
- 目的:用最少的編輯操作將一個字符串轉換成另一個。
- 示例:將 Lvensshtain 轉換成Levenshtein
上述將 Lvensshtain 轉換成Levenshtein,總共的操作 3 次,編輯距離也就是 3。 - 求解:Levenshtein distance是一個典型的動態規劃問題,可以使用動態規劃算法計算:
{D(0,0)=0D(i,0)=D(i?1,0)+11<i≤ND(0,j)=D(0,j?1)+11<j≤M\left\{ \begin{aligned} D(0,0)&=0 \\ D(i,0)&=D(i-1,0)+1&1<i\le{N}\\ D(0,j)&=D(0,j-1)+1&1<j\le{M} \end{aligned} \right. ??????D(0,0)D(i,0)D(0,j)?=0=D(i?1,0)+1=D(0,j?1)+1?1<i≤N1<j≤M?
D(i,j)=min?{D(i?1,j)+1D(i,j?1)+1D(i?1,j?1)+1D(i,j)=\min\left\{ \begin{array}{l} D(i-1,j)+1 \\ D(i,j-1)+1 \\ D(i-1,j-1)+1 \end{array} \right. D(i,j)=min????D(i?1,j)+1D(i,j?1)+1D(i?1,j?1)+1?其中,+1+1+1 表示的是插入,刪除和替換的代價。
Wagner and Fisher distance:(Levenshtein 的擴展)
- 基本思想:將該模型中編輯操作的代價賦予了不同的權重
- 模型計算 如下:
{D(0,0)=0D(i,0)=D(i?1,0)+del[x(i)]1<i≤ND(0,j)=D(0,j?1)+del[y(j)]1<j≤M\left\{ \begin{aligned} D(0,0)&=0 \\ D(i,0)&=D(i-1,0)+del[x(i)]&1<i\le{N}\\ D(0,j)&=D(0,j-1)+del[y(j)]&1<j\le{M} \end{aligned} \right. ??????D(0,0)D(i,0)D(0,j)?=0=D(i?1,0)+del[x(i)]=D(0,j?1)+del[y(j)]?1<i≤N1<j≤M?
D(i,j)=min?{D(i?1,j)+del[x(i)]D(i,j?1)+ins[y(j)]D(i?1,j?1)+sub[x(i),y(j)]D(i,j)=\min\left\{ \begin{array}{l} D(i-1,j)+del[x(i)] \\ D(i,j-1)+ins[y(j)] \\ D(i-1,j-1)+sub[x(i),y(j)] \end{array} \right. D(i,j)=min????D(i?1,j)+del[x(i)]D(i,j?1)+ins[y(j)]D(i?1,j?1)+sub[x(i),y(j)]?
其中, del 和 ins 以及 sub 分別是刪除、插入和替換的代價。
Edit Distance with affine gaps:引入 gap penalty 概念
- 基本思想:將上述的插入,刪除和替換操作用用gap opening和gap extension代替。
- Gap Penalty 的參考:
https://en.wikipedia.org/wiki/Gap_penalty
www.cs.cmu.edu/~ckingsf/bioinfo-lectures/gaps.pdf - 編輯操作的代價也就表示為:
cost(g)=s+e?lcost(g)=s+e*lcost(g)=s+e?l
其中, sss 是 open gap 的代價, eee 是 extend gap 的代價, lll 是 gap 的長度。 - 示例:將 Lvensshtain 轉換成Levenshtein
- 首先將首尾對其,然后將需要添加和修改的位置變成Gap。
- 其中,E\mathcal{E}E 代表一個gap,結合上述代價公式,若設置 s=2,e=1s=2,e=1s=2,e=1 上述編輯操作代價為 (2+1?1)?4=12(2+1?1)?4=12(2+1?1)?4=12。
② 基于集合相似度
Dice 系數——度量兩個集合的相似性
- 基本思想:可以把字符串理解為一種集合,因此Dice距離也會用于度量字符串的相似性。
- 定義:
simDice(s,t)=2∣S∩T∣∣S∣+∣T∣sim_{Dice}(s, t) = \frac{2|S \cap T|}{|S|+|T|}simDice?(s,t)=∣S∣+∣T∣2∣S∩T∣? - 示例:以 Lvensshtain 轉換成Levenshtein為例
- 兩者相似度為 2?9/(11+11)=0.822*9/ (11+11)= 0.822?9/(11+11)=0.82。
Jaccard 系數:
- 適合處理 短文本的相似度。
- 定義:
simJaccard(s,t)=∣S∩T∣∣S∪T∣sim_{Jaccard}(s, t) = \frac{|S \cap T|}{|S \cup T|}simJaccard?(s,t)=∣S∪T∣∣S∩T∣?
文本轉換為集合:
- 使用符號分隔單詞
- 使用 n-gram 分割單詞,用 n-gram 分割句子來構建集合
- 示例:如將 Lvensshtain 分割為 {Lv},{ve},...,{in}
③ 基于向量的相似度
TF-IDF:
- 目標:用來評估某個字或者用某個詞對一個文檔的重要程度。可以用來過濾常見詞、保留重要詞。
- 計算公式:
TF?IDF=TFi,j×IDFiTF-IDF=TF_{i,j}\times{IDF_{i}} TF?IDF=TFi,j?×IDFi?- 其中,TF:詞頻(term frequency) 指的是某一個給定的詞語在該文件中出現的頻率,衡量了一個詞在一個文檔中的重要程度;
TFi,j=ni,j∑knk,jTF_{i,j}=\frac{n_{i,j}}{\sum_k{n_{k,j}}}TFi,j?=∑k?nk,j?ni,j?? - IDF:逆向文件頻率(inverse document frequency) 是一個詞語普遍重要性的度量,如冠詞a、an、the等雖然出現頻率高但是并不重要。
IDFi=log?∣D∣1+∣j:ti∈dj∣IDF_{i} = \log\frac{|D|}{1 + |{j:t_{i}\in d_{j}}|} IDFi?=log1+∣j:ti?∈dj?∣∣D∣?
- 其中,TF:詞頻(term frequency) 指的是某一個給定的詞語在該文件中出現的頻率,衡量了一個詞在一個文檔中的重要程度;
- 示例:比如某個語料庫中有5萬篇文章,含有 健康 的有2萬篇,現有一篇文章,共1000個詞, 健康 出現30次,則TF?IDF=30/1000×log?(50000/(20000+1))=0.012TF?IDF=30/1000 \times{\log(50000/(20000+1))}=0.012TF?IDF=30/1000×log(50000/(20000+1))=0.012
(2)實體相似度
實體相似度的方法:聚合(加權平均、手動制定規則、分類器)、聚類(層次聚類、相關性聚類、Canopy + K-means)和表示學習。
① 基于聚合的方法
相似度得分向量:[sim(x1,y1),...,sim(xN,yN)][ sim(x_1, y_1),..., sim(x_N, y_N)][sim(x1?,y1?),...,sim(xN?,yN?)]
常用方法:
- 加權平均:w1×sim(x1,y1)+…+wN×sim(xN,yN)w_1 \times sim(x_1, y_1) + \ldots + w_N \times sim(x_N, y_N)w1?×sim(x1?,y1?)+…+wN?×sim(xN?,yN?)
- 手動制定規則:sim(x1,y1)>T1and(or)…sim(xi,yi)>Tisim(x_1, y_1)>T1 \ \ and(or) \ \ldots \ sim(x_i, y_i)>T_isim(x1?,y1?)>T1??and(or)?…?sim(xi?,yi?)>Ti?
- 分類器:邏輯回歸,決策樹,SVM和條件隨機場等
存在問題:
- 訓練集的生成——(最關鍵)
- 分類不均衡 (更多不匹配的記錄對);
- 誤分類
解決方法:
- 無監督/半監督 (EM,生成模型等);
- 主動學習 (眾包等)
② 基于聚類的方法
層次聚類 (Hierarchical Clustering) :
- 基本思想:通過計算不同類別數據點之間的相似度對在不同的層次的數據進行劃分,最終形成樹狀(二叉樹)的聚類結構。
- 具體方法:底層的原始數據可以通過相似度函數計算,類之間的相似度有如下三種算法:
- SL(Single Linkage)算法:SL算法又稱為最鄰近算法 (nearest-neighbor),是用兩個類數據點中距離最近的兩個數據點間的相似度作為這兩個類的距離。
- CL (Complete Linkage)算法:與SL不同的是取兩個類中距離最遠的兩個點的相似度作為兩個類的相似度。
- AL (Average Linkage)算法:用兩個類中所有點之間相似度的均值作為類間相似度。
- 示例:由左圖的數據,用歐氏距離和SL進行層次聚類:
可以計算出B,C之間的歐氏距離為(B?C)2=(38.5?39.5)2=1\sqrt{(B-C)^2}=\sqrt{(38.5-39.5)^2}=1(B?C)2?=(38.5?39.5)2?=1;
接著將B和C組合,再次計算距離為:
其中單個數據與之間的距離計算如:D=(B?A)2+(C?A)22=21.6+22.62D=\frac{\sqrt{(B-A)^2}+\sqrt{(C-A)^2}}{2}=\frac{21.6+22.6}{2}D=2(B?A)2?+(C?A)2??=221.6+22.6?
之后計算類與類之間的距離,如計算(A,F)和(B,C)之間的距離:D=(A?B)2+(A?C)2+(F?B)2+(F?C)24D=\frac{\sqrt{(A-B)^2} + \sqrt{(A-C)^2} + \sqrt{(F-B)^2} + \sqrt{(F-C)^2}}{4}D=4(A?B)2?+(A?C)2?+(F?B)2?+(F?C)2??
最終得到如下兩個類:
前面的每一步的計算結果以樹狀圖的形式展現出來就是層次聚類樹:
相關性聚類:
- 符號定義:rxyr_{xy}rxy? 表示 x,yx,yx,y 被分配在同一類中,PxyP_{xy}Pxy? 代表 x,yx,yx,y 是同一類的概率( x,yx,yx,y 之間的相似度),w+xy(=Pxy){w^+}_{xy}(=P_{xy})w+xy?(=Pxy?) 和 w?xy(=1?Pxy){w^-}_{xy}(=1-P_{xy})w?xy?(=1?Pxy?) 分別是切斷 x,yx,yx,y 之間的邊的代價和保留邊的代價。
- 目標:使用最小的代價找到一個聚類方案:
- 該問題的最優化是一個NP-Hard 問題,可以使用貪婪算法近似求解。
min?∑rxywxy?+(1?rxy)wxy+\min\sum{r_{xy}w^-_{xy}+(1-r_{xy})w^+_{xy}}min∑rxy?wxy??+(1?rxy?)wxy+?處的最優化是一個NP-Hard問題,可以使用貪婪算法近似求解。
- 該問題的最優化是一個NP-Hard 問題,可以使用貪婪算法近似求解。
- 示例:如下圖所示,實線表示兩數據點有關系,將其歸為一類,會給最終結果貢獻 w?xy{w^-}_{xy}w?xy?;虛線表示兩數據點沒有關系,將其歸為一類,給最終結果貢獻 w+xy{w^+}_{xy}w+xy?
- 從圖中可以看出相關性聚類和最大流最小割類似;
- 相似度較高的,被切斷的概率較低;
- 相似度較低的,被保留的概率較低。
Canopy + K-means:
- Canopy聚類最大的特點:不需要事先指定 KKK 值 (即clustering的個數),經常將Canopy和K-means配合使用。
- Canopy+K均值的流程圖:
- 過程:原始數據使用List來存儲,也就是圖中的小圓點。在算法的一開始,選定兩個閾值T1(the loose distance)>T2(the tight distance)。初始時,List中的每一個點都是一個Canopy類。
- (1)從集合選出一個點P,將其做第一個類的中心,并將這個點從List中刪除,稱其為Canopy1。(后續產生第i個類成為Canopyi);
- (2)對剩下集合的所有點計算到點P的distance。
- (3)將所有distance<T2的點都從集合List中刪除,說明這些點離Canopy1已經足夠近,避免重復加入到其他Canopy。
- (4)將所有distance<T1的點都對到以P為中心的Canopy1中,若點i的distance>T1,則將其作為第i個類Canopyi;
- (5)對List重復步驟(1)~(4)知道List為空,則可以形成多個Canopy類。
③ 基于知識表示學習
知識嵌入:
- 知識嵌入:將知識圖譜中的實體和關系都映射低維空間向量,直接用數學表達式來計算各個實體之間相似度。
- 特點:不依賴任何的文本信息,獲取到的都是數據的深度特征。
- 實現:可使用 TransE 模型。在使用TransE模型之后我們可以得到實體與向量之間的關系來判斷兩個實體的關系,如下所示:
預鏈接的實體對
- 背景:在基于知識表示學習的實體相似度計算中,我們要考慮如何將兩個知識圖譜嵌入到同一個空間。其橋梁是預鏈接的實體對(訓練數據,如使用一些開放知識圖譜中的sameAS數據)。
- 主要的方法有兩種:
- 聯合知識嵌入:
- 將兩個KG的三元組糅合在一起共同訓練,并將預鏈接實體對視為具有SameAS關系的三元組,從而對兩個KG的空間進行約束。
- 實現:Hao Zhu et al. Iterative Entity Alignment via Knowledge Embeddings, IJCAI 2017
- 雙向監督訓練:
- 兩個KG單獨進行訓練,使用預鏈接數據交替進行監督。
- 聯合知識嵌入:
- 鏈接實體的過程:在嵌入到同一個空間之后需要對實體進行連接,KG向量訓練達到穩定狀態之后,對于KG1每一個沒有找到鏈接的實體,在KG2中找到與之距離最近的實體向量進行鏈接,距離計算方法可采用任何向量之間的距離計算,例如歐式距離或Cosine距離。
4、分塊(Blocking)
分塊:從給定的知識庫中的所有實體對中,選出潛在匹配的記錄對作為候選項,并將候選項的大小盡可能的縮小。
動機:為了使數據可以分而治之,使每一塊較小的同時要保證覆蓋率,讓顯然不需要鏈接的、不相關的實體排除在block外。為了在保證覆蓋率的情況下來減少精確匹配的必要性。
常用分塊方法:
- 基于 Hash 函數的分塊方法:
- 對于記錄 xxx,有 hash(x)=hihash(x)=h_ihash(x)=hi?,則x映射到與關鍵字 hih_ihi? 綁定的塊 CiC_iCi? 上。
- 常見的hash函數:字符串的前n個字;n-grams;結合多個簡單的hash函數等
- 鄰近分類:Canopy聚類;排序鄰居算法;Red-Blue Set Cover
5、負載均衡
負載均衡 (Load Balance):來保證所有塊中的實體數目相當,從而保證分塊對性能的提升程度。
最簡單的方法:多次 Map-Reduce 操作。
6、結果評估
評價指標:
- 準確率、召回率、F值
- 整個算法的運行時間
三、典型知識融合工具
1、本體匹配(本體對齊)工具——Falcon-AO
Falcon-AO:是一個基于Java的自動本體匹配系統,已經成為 RDF(S) 和 OWL 所表達的 Web本體 相匹配的一種實用和流行的選擇。
其系統架構如下:
- 匹配算法庫使用 4 種匹配算法
- V-Doc算法:基于虛擬文檔的語言學匹配,將實體及其周圍的實體、文本等信息作為一個集合形成虛擬文檔,然后可以使用如TF-IDF等算法進行操作。
- I-Sub算法:基于編輯距離的字符串匹配。
- GMO算法:基于本體RDF圖結構的匹配。
- PBM算法:基于分而治之的大本體匹配。
- 相似度組合策略:首先使用PBM進行分而治之,然后使用語言學算法(V-Doc、I-Sub)進行處理,然后使用結構學算法(GMO)接收前兩者結果再做處理,最后連通前面兩者的輸出使用貪心算法進行選取。
- 語言學可比性
- 語言學算法找到的映射單元數目對比本體概念數目
- 結構可比性
- 本體間使用的原語的數目對比
- 映射單元集成
- 語言學可比性和結構可比性分別分為高、中、低檔
- 映射單元選取算法
- 貪心選取
- 語言學可比性
2、實體匹配工具——Dedupe
Dedupe:用于模糊匹配,記錄去重和實體鏈接的Python庫。
(1)指定謂詞集合&相似度函數
主要內容:屬性的定義。Dedupe的輸入需要指定屬性的類型,在內部為給每個屬性類型指定一個謂詞集合以及相似度計算方法。
示例:下圖是對 比爾蓋茨 的 name 屬性的簡單描述,將每個屬性都映射上去,會形成一個大的謂詞集合。
(2)訓練Blocking
訓練Blocking :通過 Red-Blue set cover 找到最優謂詞集合來分塊。
最優謂詞集合至少能覆蓋95% (可以指定)的正樣本對,負樣本對被誤分到同一個block中越少越好。
(3)訓練邏輯回歸 (LR)模型
使用用戶標記的正負樣本對訓練LR模型,來進行分類。
LR不能確定的會返回給用戶進行標注(Active Learning)。
3、實體匹配工具——Limes
Limes:一個基于度量空間的實體匹配發現框架,適合于大規模數據鏈接,編程語言是Java。
整體框架:
流程:
- 符號定義:源數據集 SSS,目標數據集 TTT,閾值 θ\thetaθ。
- (1)樣本選取:從目標數據集 TTT 中 選取樣本點 EEE 來代表 TTT 中數據。
- 樣本點:能代表距離空間的點。應該在距離空間上均勻分布,各個樣本之間距離盡可能大。
- (2)過濾:計算 s∈Ss\in Ss∈S 與 e∈Ee\in Ee∈E 之間的距離 m(s,e)m(s,e)m(s,e),利用三角不等式進行過濾。
- 三角不等式過濾: 給定 (A,m)(A, m)(A,m),mmm 是度量標準,相當于相似性函數,AAA 中的點 x,yx,yx,y 和 zzz
相當于三條記錄,根據三角不等式有: m(x,y)≤m(x,z)+m(z,y)m(x, y) \le m(x, z) + m(z, y)m(x,y)≤m(x,z)+m(z,y) 上式通過推理可以得到:
m(x,y)?m(y,z)>θ→m(x,z)>θm(x,y) - m(y, z)>\theta \rightarrow m(x, z)> \thetam(x,y)?m(y,z)>θ→m(x,z)>θ
其中,yyy 相當于樣本點。因為樣本點 EEE 的數量是遠小于目標數據集 TTT 的數量,所以過濾這一步會急劇減少后續相似性比較的次數,因而對大規模的Web數據,這是非常高效的算法。
推理式說明 m(x,z)>θm(x, z) > \thetam(x,z)>θ 的計算可以省去。
- (3)相似度計算:相似度計算見上
- (4)序列化:存儲為用戶指定格式
4、實體匹配工具——Silk
Silk:An open source framework for integrating heterogeneous data sources.
整體框架
- 預處理:會將索引的結果排名前N的記錄下來進行作為候選對,進行下一步更精準的匹配 (損失精度)。
- 相似度計算:里面包含了很多相似度計算的方法。
- 過濾:過濾掉相似度小于給定閾值的記錄對。
總結
以上是生活随笔為你收集整理的【知识图谱】知识融合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识图谱】知识存储
- 下一篇: 【知识图谱】知识推理