知识图谱构建摸索
一、前言
知識圖譜(Knowledge Graph)突然就變得很熱門,自己也被分配去研究構建知識圖譜了,中間也看了很多資料,這里想做個小筆記,方便日后的查閱和備忘吧!
二、什么是知識圖譜?
構成這個世界的是實體,而非字符串(things, not strings)。
知識圖譜其實就是以前的語義網,只不過換了一個名字而已。知識圖譜就是把所有不同種類的信息(Heterogeneous Information)連接在一起而得到的一個關系網絡。知識圖譜提供了從“關系”的角度去分析問題的能力。
知識圖譜這個概念最早由Google在2012年提出的,主要是用來優化現有的搜索引擎。不同于基于關鍵詞搜索的傳統搜索引擎,知識圖譜可用來更好地查詢復雜的關聯信息,從語義層面理解用戶意圖,改進搜索質量。比如在Google的搜索框里輸入“Marie Curie”(瑪麗·居里)這個查詢詞,谷歌會在右側提供了居里夫人的詳細信息,如個人簡介、出生地點、生卒年月等,甚至還包括一些與居里夫人有關的歷史人物,例如愛因斯坦、皮埃爾·居里(居里夫人的丈夫)等。
三、構建流程
四、我的摸索
知識圖譜的構建一般就是分為上面說的四個步驟,其中“知識存儲”是很重要的一步,這個關系到你接下來的工具學習。一般來說,知識圖譜有兩種存儲的形式,一種就是傳統的RDF存儲,另一種就是圖數據庫存儲,這里推薦采用圖數據庫,因為google知識圖譜采用的就是圖數據庫的形式,而且RDF的形式學習成本比較高,上手麻煩。
下面是我的摸索過程:
剛開始采用的是RDF的形式,畢竟剛接觸知識圖譜的時候,大家肯定都是用過斯坦福大學提供的可視化工具protege來手工構建,我自己也學習了一下,發現實在太繁瑣,效率很低,而且不適合大一點知識圖譜的構建,最終棄掉的主要原因是對中文支持差。后來知道了jena,是一個java框架,提供了API來處理基于RDF的本體數據,方便半自動的構建,所以之后就采用了jena 和 virtuoso的組合(一個可以存儲RDF的數據庫,據說stardog更加的不錯),但是發現傳統的RDF查詢需要用到sparql,學習成本很高,很復雜也不好用。
最終,采用了neo4j圖數據和它本身提供cypher查詢語句的方式,優點明顯,學習和上手簡單了很多,而且因為neo4j也是比較主流的圖數據,資料豐富很多(中文有兩本不錯的書:《圖數據》和《neo4j實戰》,方便入門),neo4j本身還提供了可視化數據的功能,方便知識庫的構建。
以上就是我的摸索過程,僅供大家參考,純屬個人觀點。
如果也有在摸索知識圖譜構建的同學或者前輩,歡迎留言交流和指導,我自己也還在不斷摸索和學習中!O(∩_∩)O
總結
- 上一篇: 王者荣耀产品分析(本人不是产品,只是自己
- 下一篇: GDOI2018 涛涛摘苹果 [CDQ分