1. 程式人生 > >知識圖譜學習與實踐(2)——知識圖譜資料模型的構建

知識圖譜學習與實踐(2)——知識圖譜資料模型的構建

資料模型就是資料組織方式,是構建知識圖譜首要解決的問題,無論是開放域的知識圖譜還是行業的知識圖譜,都需要收集大量的資料,這些資料的收集是有選擇性的,這個選擇的依據就是資料模型。資料模型,也可以稱為知識表達模型,解決知識圖譜如何組織資料的問題,是資料的底層架構,是一個知識體系框架,能夠涵蓋住知識圖譜所有的資料,決定了資料收集的範圍。

1 資料的分類問題。

通用知識圖譜,它收集的資料比較全,涉及到各種各樣的知識。我們可以把通用知識圖譜認為是一個大而全的知識圖譜,它基本能涵蓋所有的知識,當然,這類通用知識圖譜,由於涵蓋的知識範圍廣,所有對於某一個知識點,可能不會說的特別細,也就是深度不夠。行業知識圖譜和通用知識圖譜,正好是一個互補的關係,行業知識圖譜是對某一個行業的知識,組織的很專業,研究的很深入。

無論是通用知識圖譜還是行業知識圖譜,都存在資料的組織問題,首要的就是資料如何分類,可以畫一個樹狀圖,根節點為物體或者物件,就是包含萬物,然後再一層層的進行分類,知識圖譜中的所有知識都可以在樹狀圖中找到對應的節點。

下面我們以百科資料為例,介紹一下知識圖譜的分類問題。其它通用知識圖譜,也有自己的分類體系,和百科的分類大同小異,但也有自己的一些特點。

百科知識的組織,第一層分類為藝術、科學、自然、文化、地理、生活、社會、人物、經濟、體育、歷史等。

 

選擇一個分類,比如科學分類,就能看到第二層分類科學的分類體系,包括健康醫療、航空航天、天文學、環境生態、農業科學、生命科學、數理科學、心理學、資訊科學、工程技術、化學、地球科學、其它等。

 

再繼續選擇,比如健康醫療,就可以看到第三層的分類,醫學知識庫的知識分類情況,從醫療症狀、藥物、中醫藥、診斷技術等幾個維度來組織醫學知識。

 

通過這種分類體系,就會發現,無論收集什麼知識,我們都可以在體系中找到對應的分類,這樣有利於大家在這個知識圖譜中查詢知識,也有利於新增知識,擴充套件知識圖譜的資料內容。

2 資料的屬性

對於資料組織體系,在分類到末端節點,也就是葉子節點,就需要對這個葉子節點(具體知識點)進行描述,如何將一個知識點描述清楚,在知識圖譜中,需要使用屬性來描述知識點。這些屬性可以從多個方面,多個層次來描述事物。

我們還是以百科資料為例,在醫學知識庫中,找到葉子知識點,比如糖尿病, 詞條中最重要的一個是定義或者叫做簡介,說明什麼是糖尿病,然後是幾個主要屬性,英文名稱、常見症狀、就診科室、傳染性等。把這些屬性放到最開始的位置,人們看到後,就可以對糖尿病有一個大致的瞭解,這些屬性也能夠簡單反映糖尿病這個知識點的基本情況。

 

除了基本的屬性,對於糖尿病這個知識點,還有更多的描述,百科是從病因、檢查、鑑別診斷、臨床表現、診斷、治療這幾個維度,來闡述糖尿病,通過這些更進一步的屬性,人們就會對糖尿病有一個更深入的瞭解。

 

下面我們再繼續來看一下,檢查這個屬性,都包括哪些內容。百科中列出了比較多的檢查專案或者稱為檢查內容,血糖、尿糖、尿酮體、糖基化血紅蛋白(HbA1c)、糖化血清蛋白等等,而且對於每一項檢查內容,都有一個簡短的說明。

 

上面的屬性,就是百科對於疾病症狀的知識組織方式,我們可以看一下其他的疾病症狀,基本上都是按照這個方式,來組織屬性資料。糖尿病這個疾病症狀,通過一些屬性,還可以關聯到其它詞條,比如檢查內容中的血糖。這樣就可以在知識點之間建立關聯,形成一個網狀的知識圖譜。

 

3 資料模型的構建過程

在構建資料模型的實踐中,基本上都會找一個類似的知識體系,或者粗略的資料分類體系,然後以其為基礎,再進行擴充套件。當然,在收集資料的過程中,也可能會收集到大量脫離資料模型的資料,這時候,就可以根據這些資料進行資料模型的修改和完善。

構建資料模型的初始階段,可以找一個知識圖譜的中心資料,比如構建一個音樂知識圖譜,可以以歌曲為中心,先考慮歌曲的屬性,比如演唱者、作詞、作曲、分類、歌詞、樂譜等等,對於這些屬性,一方面是考慮在知識圖譜中是否合適,需要不斷地斟酌,修改、增加或者刪除一些屬性,從而達到完善屬性的目的。另一方面,還要確定這些屬性對應的屬性值,比如演唱者、作詞、作曲都是對應的人,人也是一種實體,也會有很多屬性,比如出生日期、性別、姓名、籍貫、主要事蹟、作品等等,對於人的屬性,又可以開啟屬性論證工作,確定使用哪些屬性,屬性值的範圍等。

在不斷確定屬性和屬性值範圍的過程中,我們還要明確一個邊界。因為對於這種關聯關係,可以一直做下去,最後都會變成一個萬物互聯的通用知識圖譜。我們有的時候,可能是構建一個行業知識圖譜,這時候,邊界的確定就很重要,比如出生日期,對於古代人,就不能寫成年月日的形式,可能就是一個朝代,這個朝代也是一個實體,我們就沒有必要再對朝代進行屬性和屬性值的確定。因為朝代對於我們知識圖譜來說,已經是相關性很小的知識了。對於朝代這類和知識圖譜相關性比較弱的知識實體來說,我們才覺得辦法,最簡單的處理就是直接寫一個名稱,將它看作一個字串或者是一個列舉值,作為列舉值的話,需要羅列出所有的朝代。另外一種處理方法就是將包含的朝代連結到通用知識圖譜,比如百度百科或者dbPedia等公認的通用知識圖譜。我們專注於行業知識圖譜中,關聯性比較強的資料。

4 資料模型需要注意的問題

我們最終構建的資料模型,需要注意兩個方面的問題。

一個是體系的完備性。有類、子類這樣的層次關係,實體都能劃分到這個層次關係中。類的屬性,子屬性,每個類都有什麼屬性,屬性之間存在什麼樣的關係,對於一個屬性來說,它可以看作是謂語,主語和賓語的範圍如何界定。將類、子類、屬性、子屬性之間的關係描述清楚,能夠把知識圖譜中的相關實體都納入到這個體系中,並且通過屬性敘述清楚實體,就表示這個資料模型滿足了知識圖譜的完備性要求。

另一個需要注意的是資料模型度的把握。雖然有完備性的要求,但也不能將所有的內容都羅列到資料模型中。對於資料模型中的類和屬性,要有所取捨,只選取那些和知識圖譜相關性強的類和屬性,一開始可以選的粗一些,然後再逐漸細化。也可以一開始就做的比較細緻,後面再進行刪減,最後形成一個內容適當的資料模型。

5 結語

現在構建知識圖譜資料模型,都有一定的依據,一般不會從零開始,有一個雛形作為資料模型的基礎,再進行完善。基本模式是以自頂向下為主,再根據收集的資料,對資料模型進行修正,也就是自底向上為輔,這樣的構建方式比較普遍。

&n