如何建立KG節點間的重要連結
1 前言
在建構KG(知識圖)的初期,通常會先從有關的數據集中,擷取候選實體(Entity),并由LLM 萃取語意關系并建構初步三元組(Triple)圖譜,大幅提升初建KG的在地性與語義密度。然后,進行與有關的專家智慧進行融合,確認核心的節點,以及核心節點之間的重要連結,又稱為:邊(Edge)。例如,在上一期里所提到的基因醫學KG:

圖1
一旦確認核心實體(即節點)了,就需要思考如何建構這些節點之間的重要連結(即邊)。一般而言,其中的可能連結是很多樣化的,所以常常需要依據應用情境和目標來挑選,并建立于KG里,成為KG的重要邊(Edge)。
本文就已大家比較熟悉的餐酒搭配(food-wine pairing)為例,其典型的KG 架構如下:

圖2
茲以葡萄酒為例,葡萄酒與食物(餐)的搭配方法是很多樣化的,其中最典型的是:協調搭配(Congruent pairing)。在協調搭配中,所選食物和葡萄酒會有多種相同的化合物或風味。例如,甜酒搭配甜食,帶有黃油余味的紅葡萄酒搭配黃油意面。在打造協調搭配時,重要的一點是確保葡萄酒的風味不會被食物的風味所掩蓋。
協調搭配的好處在于,葡萄酒和食物能夠相互增強,并互相補充。想要打造協調搭配,紅酒是理想之選。紅酒的香氣和風味從櫻桃味到煙熏味,種類繁多,易于與類似的食物搭配。喝一杯酒體飽滿的西拉葡萄酒,它會具有與您最喜歡的一些烤肉相似的風味,使其成為絕佳的搭配。
于是,就來說明如何把這種協調搭配關聯,納入KG里,建構成為KG的核心邊。
2 以餐酒搭配(food-wine pairing)為例
一般而言,濃郁的食物搭配濃郁的酒,清淡的食物搭配清淡的酒。高酸度的食物搭配高酸度的酒,例如搭配色拉、醋漬料理等。甜味食物搭配甜度至少和其相同的酒,例如搭配甜點或甜酒。避免單寧較重的紅酒搭配油脂較多的魚類,可以選擇白酒或氣泡酒。適量鹽分有助于軟化紅酒的單寧,使口感更佳。高酸度的白酒可以搭配油炸食物或咸味料理。如下列的基本原則:
● 葡萄酒的酸度(Acidity)與油膩和甜食完美搭配。
● 苦味(Bitter)葡萄酒可以與甜食平衡。
● 甜味(Sweet)葡萄酒或食物需要少量酸度。
● 酒精可以用來中和油膩食物或平衡甜食。
收集數據
于是,就從//github.com/Rashik333網頁下載兩個CSV數據檔案:food_data.csv和wine_data.csv。其中,food_data.csv 的內涵是5 種食物的風味特征。如下:

而wine_data.csv的內容則是19種酒品的風味特征:

有了這兩個數據表格,就能找出食物與酒之關聯,來建立KG(圖2)的節點重要邊了。
計算相似度:建立food-wine 節點間的邊由于協調搭配(Congruent pairing)是指所選食物和葡萄酒會有多種相同的化合物或風味。亦即,食物和葡萄酒在某些關鍵風味特性(如甜、酸、咸、油脂、苦味等)上有明顯的相似性。于是,就使用Python 撰寫簡單的程序,來計算出食物與酒之間的余旋相似度(Cosine Similarity)矩陣。余弦相似度是基于兩個向量的夾角來度量的。其計算兩個向量之間夾角的余弦值,來衡量它們之間的相似度。然后,從這個相似度矩陣,Python 程序就能找出食物與酒之間的最相似的配對,并輸出如下:

這是從food和wine的風味(酸、甜、苦、咸)來找出相似性最高的配對。例如,第2 和第3 項食物的風味都與第0項酒品的風味是很相近(似)的。基于這樣的配對關系(關聯),就能建立KG里的食物(food)與酒(wine)節點間的連接邊了。
納入客人口味偏好:建立user-wine節點間的邊
接著,就來把人的食物氣味偏好納入KG 里。例如,有一位客人,名叫:”Mike”。在這5 項食物之中,他最喜歡的是:檸檬(Lemon)和鮭魚(Salmon)。就可以從這兩種食物的氣味值,來計算出平均值,如下:

計算相似度:建立user-wine節點間的邊
剛才已經計算出客人對食物氣味的偏好度了。于是,就使用Python 撰寫簡單的程序,來計算出Mike 偏好食物與酒之間的余旋相似度(Cosine Similarity)矩陣。然后,從這個相似度矩陣,Python 程序就能找出與Mike 偏好食物風味相似度最高的前3 項(Top-3)酒品,并輸出如下:

基于這樣的配對關系(關聯),就能建立KG 里的客人(user)與酒(wine)節點間的連接邊了。于是,為KG增添建構了重要的邊,如下圖:

圖3
這個KG含有4種節點型態:food、wine、flavor 和user節點型態。它也含有3 種邊型態:< 偏好>、< 協調搭配> 和< 協調偏好>。
3 結語
依循本文所示范的方法和技巧,可以繼續增添各種有意義的邊。例如,上述的餐酒KG 含有的節點型態(Node type) 有四:food、wine、flavor 和user。目前所含有的基本氣味有四:酸(Acidity)、甜(Sweet)、苦(Bitter)、咸(Salty)。于是,上圖里的KG 就可以增添< 具有風味> 新邊來表達這項< 含有> 關聯,通常這是有意義的邊。
此外,這KG 里還可以增添< 對比偏好> 新邊。其讓這KG 的user-wine 間具有兩種邊:
● <協調(congruent) 偏好> 邊。例如,Mike顯然喜歡酸味的食物,就配對出較具酸味的葡萄酒。
● <對比(contrasting)偏好>邊。例如,Mike顯然喜歡酸味的食物,就配對出較< 不具> 酸味的葡萄酒。
于是,這KG 就日漸成長壯大了。如下圖-4:

圖3
以上說明了,KG會持續更新、日益茁壯。當我們進一步拿KG 來訓練GNN模型時,GNN也能探索出反事實連結(Counterfactual Link),來日漸充實、優化KG,讓KG 生生不息、無盡繁榮。
(本文來源于《EEPW》202508)


評論