首先就是要先處理數據。互聯網上的數據基本上都是結構化的,非結構化的和半結構化的。結構數據壹般就是公司的業務數據。這些數據都存儲到數據庫裏,從庫裏面抽取出來做壹些簡單的預處理就可以拿來使用。半結構化數據和非結構化數據,比如對商品的描述,或是標題,可能是壹段文本或是壹張圖片,這就是壹些非結構化數據了。但它裏面是存儲了壹些信息的,反映到的是知識圖譜裏的壹些屬性。所以需要對它裏面進行壹個抽取,這是構建知識圖譜中比較費時費力的壹個工作。
從數據裏需要抽取的其實就是之前所提到的實體、屬性、關系這些信息。對於實體的提取就是NLP裏面的命名實體識別。這裏相關的技術都比較成熟了,從之前傳統的人工詞典規則的方法,到現在機器學習的方法,還有深度學習的壹些使用。比如說,從壹段文本裏面,我們提取出來比爾蓋次這個實體以及微軟這個實體,然後再進行壹個關系提取。比爾蓋次是微軟的創始人,會有這麽壹個對應的關系。另外還有屬性提取,比如比爾蓋茨的國籍是美國。在這些提取完成之後都是壹些比較零散的信息,然後在再加之前用結構化信息所拿到的東西以及從第三方知識庫裏面所拿到的信息做壹個融合。
另外還需要做的是實體對齊和實體消歧。
關於實體對齊。舉例來說,比爾蓋茨這四個字是中文名稱,Bill Gates是他的英文名稱,但其實這兩個指的是同壹個人。由於文本的不壹樣,開始的時候導致這是兩個實體。這就需要我們對它進行實體對齊,把它統壹化。
另外是實體消歧。舉例來說,蘋果是壹種水果,但是在某些上下文裏面,它可能指的是蘋果公司。這就是壹個實體歧義,我們需要根據上下文對它進行實體消歧。
在完成了以上步驟之後,接下來就是本體抽取。比如之前提到的微軟和蘋果,它們的實體是公司。從文本裏面可能無法直接提取出來,它們是公司。那麽需要壹些方法對他們進行抽取。然後搭建出本體庫,比如說公司是壹個機構,它是有這種上下流的關系的。對於平級的也需要計算壹個他們的相識度,比如比爾蓋茨和喬布斯在實體層面,他們是比較相似的。他們都屬於人這個實體。他們跟公司的差別還是挺大的,所以需要壹個相似度的計算。
在以上步驟完成之後需要對知識庫進行質量評估,這是壹個避免不了的人工步驟。在做完質量評估以後,最終形成知識圖譜。形成知識圖譜以後,有些關系可能是無法直接得到的,然後需要進行知識推理,這可以對知識圖譜進行擴展。比如,貓是貓科動物。貓科動物是哺乳動物。這就可以推理出來,貓是哺乳動物。但是這個推理也不是隨便就可以推出來的。比如,比爾蓋茨是美國人,比爾蓋茨創建了壹個公司,但這個公司並不壹定是美國的。