從一開始的Google搜索,到如今的聊天機器人、大數據風控、證券投資、智能醫療、自適應教育、推薦系統,無一不跟知識圖譜相關。它在技術領域的熱度也在逐年上升。 本文以通俗易懂的方式來說解知識圖譜相關的知識、尤爲對從零開始搭建知識圖譜過程中須要經歷的步驟以及每一個階段須要考慮的問題都給予了比較詳細的解釋。html
知識圖譜( Knowledge Graph)的概念由谷歌2012年正式提出,旨在實現更智能的搜索引擎,而且於2013年之後開始在學術界和業界普及。目前,隨着智能信息服務應用的不斷髮展,知識圖譜已被普遍應用於智能搜索、智能問答、個性化推薦、情報分析、反欺詐等領域。另外,經過知識圖譜可以將Web上的信息、數據以及連接關係彙集爲知識,使信息資源更易於計算、理解以及評價,而且造成一套Web語義知識庫。知識圖譜以其強大的語義處理能力與開放互聯能力,可爲萬維網上的知識互聯奠基紮實的基礎,使Web 3.0提出的「知識之網」願景成爲了可能。算法
知識圖譜:是結構化的語義知識庫,用於迅速描述物理世界中的概念及其相互關係。數據庫
知識圖譜經過對錯綜複雜的文檔的數據進行有效的加工、處理、整合,轉化爲簡單、清晰的「實體,關係,實體」的三元組,最後聚合大量知識,從而實現知識的快速響應和推理。服務器
知識圖譜有自頂向下和自底向上兩種構建方式。所謂自頂向下構建是藉助百科類網站等結構化數據源,從高質量數據中提取本體和模式信息,加入到知識庫中;所謂自底向上構建,則是藉助必定的技術手段,從公開採集的數據中提取出資源模式,選擇其中置信度較高的新模式,經人工審覈以後,加入到知識庫中。網絡
看一張簡單的知識圖譜:數據結構
如圖所示,你能夠看到,若是兩個節點之間存在關係,他們就會被一條無向邊鏈接在一塊兒,那麼這個節點,咱們就稱爲實體(Entity),它們之間的這條邊,咱們就稱爲關係(Relationship)。架構
知識圖譜的基本單位,即是「實體(Entity)-關係(Relationship)-實體(Entity)」構成的三元組,這也是知識圖譜的核心。框架
實體: 指的是具備可區別性且獨立存在的某種事物。實體是知識圖譜中的最基本元素,不一樣的實體間存在不一樣的關係。如圖中的「中國」、「北京」、「16410平方千米」等。機器學習
關係: 關係是鏈接不一樣的實體,指代實體之間的聯繫。經過關係節點把知識圖譜中的節點鏈接起來,造成一張大圖。如圖中的「人口」、「首都」、「面積」等函數
知識圖譜的原始數據類型通常來講有三類(也是互聯網上的三類原始數據):
如何存儲上面這三類數據類型呢?通常有兩種選擇,一個是經過RDF(資源描述框架)這樣的規範存儲格式來進行存儲,還有一種方法,就是使用圖數據庫來進行存儲,經常使用的有Neo4j等。
RDF結構:
Neo4j結構:
在知識圖譜方面,圖數據庫比關係數據庫靈活的多。
在數據少的時候,關係數據庫也沒有問題,效率也不低。可是隨着知識圖譜變的複雜,圖數據庫的優點會明顯增長。當涉及到2,3度的關聯查詢,基於圖數據庫的效率會比關係數據庫的效率高出幾千倍甚至幾百萬倍。
知識圖譜在架構上分,能夠分爲邏輯架構和技術架構。
知識圖譜在邏輯上可分爲模式層與數據層兩個層次。
模式層:實體-關係-實體,實體-屬性-性值
數據層:比爾蓋茨-妻子-梅琳達·蓋茨,比爾蓋茨-總裁-微軟
知識圖譜的總體架構以下圖所示,其中虛線框內的部分爲知識圖譜的構建過程,同時也是知識圖譜更新的過程。
咱們來一步一步的分析下這張圖。
其實咱們的構建知識圖譜的過程,就是信息抽取、知識融合、知識加工三個過程,可是這三個過程都有各自的難點,下文經過從這三個模塊出發,解析這三個模塊說要解決的問題,會遇到的難點。
信息抽取(infromation extraction)是知識圖譜構建的第1步,其中的關鍵問題是:如何從異構數據源中自動抽取信息獲得候選指示單元?
信息抽取是一種自動化地從半結構化和無結構數據中抽取實體、關係以及實體屬性等結構化信息的技術。
涉及的關鍵技術包括:實體抽取、關係抽取和屬性抽取。
實體抽取又稱爲命名實體識別(named entity recognition,NER),是指從文本數據集中自動識別出命名實體。實體抽取的質量(準確率和召回率)對後續的知識獲取效率和質量影響極大,所以是信息抽取中最爲基礎和關鍵的部分。
2012年Ling等人概括出112種實體類別,並基於條件隨機場CRF進行實體邊界識別,最後採用自適應感知機算法實現了對實體的自動分類,取得了不錯的效果。
可是隨着互聯網中內容的動態變化,採用人工預約義實體分類體系的方式已經很難適應時代的需求,所以提出了面向開放域的實體識別和分類研究。
在面向開放域的實體識別和分類研究中,不須要(也不可能)爲每一個領域或者每一個實體類別創建單獨的語料庫做爲訓練集。所以,該領域面臨的主要挑戰是如何從給定的少許實體實例中自動發現具備區分力的模型。
一種思路是根據已知的實體實例進行特徵建模,利用該模型處理海量數據集獲得新的命名實體列表,而後針對新實體建模,迭代地生成實體標註語料庫。
另外一種思路是利用搜索引擎的服務器日誌,事先並不給出實體分類等信息,而是基於實體的語義特徵從搜索日誌中識別出命名實體,而後採用聚類算法對識別出的實體對象進行聚類。
文本語料通過實體抽取,獲得的是一系列離散的命名實體,爲了獲得語義信息,還須要從相關的語料中提取出實體之間的關聯關係,經過關聯關係將實體(概念)聯繫起來,纔可以造成網狀的知識結構,研究關係抽取技術的目的,就是解決如何從文本語料中抽取實體間的關係這一基本問題。
屬性抽取的目標是從不一樣信息源中採集特定實體的屬性信息。例如針對某個公衆人物,能夠從網絡公開信息中獲得其暱稱、生日、國籍、教育背景等信息。屬性抽取技術可以從多種數據來源中聚集這些信息,實現對實體屬性的完整勾畫。
經過信息抽取,咱們就從原始的非結構化和半結構化數據中獲取到了實體、關係以及實體的屬性信息。
若是咱們將接下來的過程比喻成拼圖的話,那麼這些信息就是拼圖碎片,散亂無章,甚至還有從其餘拼圖裏跑來的碎片、自己就是用來干擾咱們拼圖的錯誤碎片。
拼圖碎片(信息)之間的關係是扁平化的,缺少層次性和邏輯性;
拼圖(知識)中還存在大量冗雜和錯誤的拼圖碎片(信息)
那麼如何解決這一問題,就是在知識融合這一步裏咱們須要作的了。
知識融合包括2部份內容:實體連接,知識合併
實體連接(entity linking):是指對於從文本中抽取獲得的實體對象,將其連接到知識庫中對應的正確實體對象的操做。
其基本思想是首先根據給定的實體指稱項,從知識庫中選出一組候選實體對象,而後經過類似度計算將指稱項連接到正確的實體對象。
研究歷史:
實體連接的流程:
實體消歧:專門用於解決同名實體產生歧義問題的技術,經過實體消歧,就能夠根據當前的語境,準確創建實體連接,實體消歧主要採用聚類法。其實也能夠看作基於上下文的分類問題,相似於詞性消歧和詞義消歧。
共指消解:主要用於解決多個指稱對應同一實體對象的問題。在一次會話中,多個指稱可能指向的是同一實體對象。利用共指消解技術,能夠將這些指稱項關聯(合併)到正確的實體對象,因爲該問題在信息檢索和天然語言處理等領域具備特殊的重要性,吸引了大量的研究努力。共指消解還有一些其餘的名字,好比對象對齊、實體匹配和實體同義。
在構建知識圖譜時,能夠從第三方知識庫產品或已有結構化數據獲取知識輸入。
常見的知識合併需求有兩個,一個是合併外部知識庫,另外一個是合併關係數據庫。
將外部知識庫融合到本地知識庫須要處理兩個層面的問題:
數據層的融合,包括實體的指稱、屬性、關係以及所屬類別等,主要的問題是如何避免實例以及關係的衝突問題,形成沒必要要的冗餘
經過模式層的融合,將新獲得的本體融入已有的本體庫中
而後是合併關係數據庫,在知識圖譜構建過程當中,一個重要的高質量知識來源是企業或者機構本身的關係數據庫。爲了將這些結構化的歷史數據融入到知識圖譜中,能夠採用資源描述框架(RDF)做爲數據模型。業界和學術界將這一數據轉換過程形象地稱爲RDB2RDF,其實質就是將關係數據庫的數據換成RDF的三元組數據。
在前面,咱們已經經過信息抽取,從原始語料中提取出了實體、關係與屬性等知識要素,而且通過知識融合,消除實體指稱項與實體對象之間的歧義,獲得一系列基本的事實表達。
然而事實自己並不等於知識。要想最終得到結構化,網絡化的知識體系,還須要經歷知識加工的過程。
知識加工主要包括3方面內容:本體構建、知識推理和質量評估。
本體(ontology)是指工人的概念集合、概念框架,如「人」、「事」、「物」等。
本體能夠採用人工編輯的方式手動構建(藉助本體編輯軟件),也能夠以數據驅動的自動化方式構建本體。由於人工方式工做量巨大,且很難找到符合要求的專家,所以當前主流的全局本體庫產品,都是從一些面向特定領域的現有本體庫出發,採用自動構建技術逐步擴展獲得的。
自動化本體構建過程包含三個階段:
好比對下面這個例子,當知識圖譜剛獲得「阿里巴巴」、「騰訊」、「手機」這三個實體的時候,可能會認爲它們三個之間並無什麼差異,但當它去計算三個實體之間的類似度後,就會發現,阿里巴巴和騰訊之間可能更類似,和手機差異更大一些。
這就是第一步的做用,但這樣下來,知識圖譜實際上仍是沒有一個上下層的概念,它仍是不知道,阿里巴巴和手機,根本就不隸屬於一個類型,沒法比較。所以咱們在實體上下位關係抽取這一步,就須要去完成這樣的工做,從而生成第三步的本體。
當三步結束後,這個知識圖譜可能就會明白,「阿里巴巴和騰訊,其實都是公司這樣一個實體下的細分實體。它們和手機並非一類。」
在咱們完成了本體構建這一步以後,一個知識圖譜的雛形便已經搭建好了。但可能在這個時候,知識圖譜之間大多數關係都是殘缺的,缺失值很是嚴重,那麼這個時候,咱們就可使用知識推理技術,去完成進一步的知識發現。
咱們能夠發現:若是A是B的配偶,B是C的主席,C坐落於D,那麼咱們就能夠認爲,A生活在D這個城市。
根據這一條規則,咱們能夠去挖掘一下在圖裏,是否是還有其餘的path知足這個條件,那麼咱們就能夠將AD兩個關聯起來。除此以外,咱們還能夠去思考,串聯裏有一環是B是C的主席,那麼B是C的CEO、B是C的COO,是否是也能夠做爲這個推理策略的一環呢?
固然知識推理的對象也並不侷限於實體間的關係,也能夠是實體的屬性值,本體的概念層次關係等。
推理屬性值:已知某實體的生日屬性,能夠經過推理獲得該實體的年齡屬性;
推理概念:已知(老虎,科,貓科)和(貓科,目,食肉目)能夠推出(老虎,目,食肉目)
這一塊的算法主要能夠分爲3大類,基於邏輯的推理、基於圖的推理和基於深度學習的推理。
質量評估也是知識庫構建技術的重要組成部分,這一部分存在的意義在於:能夠對知識的可信度進行量化,經過捨棄置信度較低的知識來保障知識庫的質量。
從邏輯上看,知識庫的更新包括概念層的更新和數據層的更新。
概念層的更新是指新增數據後得到了新的概念,須要自動將新的概念添加到知識庫的概念層中。
數據層的更新主要是新增或更新實體、關係、屬性值,對數據層進行更新須要考慮數據源的可靠性、數據的一致性(是否存在矛盾或冗雜等問題)等可靠數據源,並選擇在各數據源中出現頻率高的事實和屬性加入知識庫。
知識圖譜的內容更新有兩種方式:
經過知識圖譜,不只能夠將互聯網的信息表達成更接近人類認知世界的形式,並且提供了一種更好的組織、管理和利用海量信息的方式。目前的知識圖譜技術主要用於智能語義搜索、移動我的助理(Siri)以及深度問答系統(Watson),支撐這些應用的核心技術正是知識圖譜技術。
在智能語義搜索中,當用戶發起查詢時,搜索引擎會藉助知識圖譜的幫助對用戶查詢的關鍵詞進行解析和推理,進而將其映射到知識圖譜中的一個或一組概念之上,而後根據知識圖譜的概念層次結構,向用戶返回圖形化的知識結構,這就是咱們在谷歌和百度的搜索結果中看到的知識卡片。
在深度問答應用中,系統一樣會首先在知識圖譜的幫助下對用戶使用天然語言提出的問題進行語義分析和語法分析,進而將其轉化成結構化形式的查詢語句,而後在知識圖譜中查詢答案。好比,若是用戶提問:『如何判斷是否感染了埃博拉病毒?』,則該查詢有可能被等價變換爲『埃博拉病毒的症狀有哪些?』,而後再進行推理變換,最終造成等價的三元組查詢語句,如(埃博拉,症狀,?)和(埃博拉,徵兆,?)等。若是因爲知識庫不完善而沒法經過推理解答用戶的問題,深度問答系統還能夠利用搜索引擎向用戶反饋搜索結果,同時根據搜索結果更新知識庫,從而爲回答後續的提問提早作出準備。