Categories
程式開發

百億規模行業知識圖譜的技術方案與應用實踐


人工智能,實現從感知到認知的能力跨越,最重要的具備像人類大腦對知識的關聯、聯想和探索能力,而知識圖譜是目前最趨近與人類大腦思維本質的AI底層技術,可通過實體、關係、事件挖掘實現對客觀世界的邏輯認知。

知識圖譜,通常分為兩類。一是通用知識圖譜。例如,百科里的基於公開數據構建的明星圖譜、影視圖譜等。二是面向具體行業的大規模語義網絡,即行業知識圖譜,或者叫領域知識圖譜。例如,明略科技目前涉足的公安、金融、工業等,都有各自的行業或領域知識圖譜。

一、行業知識圖譜的特點與技術挑戰

相較通用知識圖譜而言,行業知識圖譜具備以下幾個特點:

第一,領域性更強,能具體到某一個行業細分問題。
第二,數據來源更加複雜,包括企業的數據庫、日誌、文本報告等數據。
第三,規模非常大,一般來說,明略科技構建的行業知識圖譜規模都在百億規模以上。
第四,對實時性和數據質量的要求非常高,因為要依賴於知識圖譜做分析決策。
第五,需結合行業知識搭建更多的複雜行業應用。

行業知識圖譜的落地,存在不少技術挑戰。

比如,要對海量多源異構數據做數據融合,構建知識圖譜。再如,解決大規模知識圖譜的存儲計算問題。此外,要把數據轉化成為真正的行業知識,滿足行業應用的需求。

為了幫助客戶更高效地沉澱行業知識,指導實際業務,明略科技從知識圖譜的構建、存儲到應用,形成了一套成熟的產品體系,其核心技術包括,基於智能化文本挖掘技術的文本抽取,智能數據字段識別和映射結構化抽取,以及最核心的混合存儲的知識圖譜系統,用於支撐應用層的社區挖掘、群體的分析,智能問答。

二、行業知識圖譜構建的關鍵步驟

儘管數據可能有各種各樣的形式和來源,但行業知識圖譜構建可以抽象成為幾個關鍵的步驟,包括圖譜建模、數據接入、圖譜映射、圖譜元素抽取、圖譜融合。

例如,一張表格中有人的信息、戶口的信息。假設需要定義人物關係、親屬關係這類圖譜模型,需從表格數據裡讀取相關信息,把不同的數據列映射到圖譜模式的屬性,根據這個映射,從數據源抽取數據,形成實體關係結果。從不同數據源抽取的數據,可能會存在相同的元素,比如,有兩個叫張三的人,要考慮進行數據融合,保障圖譜的融合統一性。

(一)圖譜建模與數據接入

圖譜建模是非常關鍵的環節,與業務緊密相關,往往需要結合客戶的特定業務場景去定義圖譜中需要包含哪些實體屬性和關係類型。

明略科技採取了界面化的方式,簡化圖譜建模,快速定義圖譜結構。

知識圖譜構建涉及兩大數據類型,結構化和非結構化數據。

對於結構化數據來說,明略科技認為一個端到端的圖譜構建工具,需要滿足一些基本要求:

  • 首先,能夠對接各種各樣的結構化數據源。因為數據會有各種各樣的數據質量問題,所以這個工具應該具備很靈活的數據清洗和標準化的能力。

  • 其次,具備高效、靈活、便捷的圖譜映射和融合功能。

  • 第三,具備支持增量流式圖譜構建的能力。

因此,明略科技基於以上原則打造了圖譜構建工具,解決數據清洗問題,用戶可進行二次開發和拓展,以及最細粒度的字段級融合策略的定義。

在行業知識圖譜落地過程中,雖然結構化數據佔了大部分的數據來源,但文本這類非結構化數據是對結構化數據的重要補充,從文本構建知識圖譜,一些常見技術包括命名實體識別、關係抽取、指代消解、實體鏈接等。比如,張某某一天在北京盜取了一輛車。可通過命名實體識別出有沒有實體詞、地域、車等,通過關係抽取建立實體詞之間的關聯,指代消解和實體鏈接,則能將提取出來的實體詞進行標準化,反映到實體。

對於文本數據而言,不缺數據,但缺標註數據,是行業知識圖譜落地過程中的普遍現狀。而文本處理所需的NLP技術需要模型支撐,所以能否提供模型是一個很大的問題。明略科技針對這個問題,研發了一款高效的文本標註工具Raptor,幫助用戶借助規則以及機器學習、深度學習等技術,加速標註過程。在過程中,可以積累訓練的語料,以及通過主動學習的方式,不斷提高訓練出來的模型的準確率。

(二)圖譜映射

在構建圖譜過程中,很多時候需要從成百上千張源表數據中構建圖譜。一張源表與圖譜模型是多對多的關係,如果缺乏一個高效自動化工具,圖譜映射效率低下且故障百出。明略科技為客戶提供規則技術,保障同樣的一個源表在映射過程中只配置一次映射規則,提高映射效率。然後數據分別經過批式和流式的過程處理,成為實體關係數據,最後存儲到數據庫。

(三)圖譜元素抽取與圖譜融合

當從不同的表中抽取圖譜數據時,必須考慮數據融合的問題。比如,兩張表裡面都抽取出來同樣的一個人的數據,要考慮這兩個人的數據是不是存在可融合的部分。融合的方法需要考慮數據屬性,是否有重合的部分,重合的部分如何融合。

比如,表A、表B都有年齡屬性,兩者的年齡屬性並不一樣,綽號屬性也不一樣。

對於年齡屬性來說,一般選取一個比較準確的值,這時就需決定表A、表B哪一個更優先,配置表級和字段級的優先順序。

對於綽號屬性來說,客戶需要往往保存所有的內容去輔助更廣泛的分析,所以需要定義融合的策略,比如,合併。此外客戶還很關注圖譜數據的一個數據來源是什麼,所以在圖譜構建過程中我們也會保留數據的來源信息。

三、行業知識圖譜的自動構建

對於終端用戶的圖譜構建需求,明略科技開發了自動圖譜構建工具,將一些中間構建過程自動化。

比如,用戶可以上傳一個通話的記錄數據表,通過自動映射數據列到圖譜模型元素,加速映射過程。用戶只需要確認最終映射的結果是否合理,實現圖譜的自動構建及入庫。

在這個方案裡,通過結合各種相似度的計算方式,分別針對數據的表頭、數據的內容以及最後這兩種相似度計算的方式進行加權融合,得到識別出來的數據實體屬性,實體的唯一標識。然後在技術上結合實體的ID屬性、圖譜模型,判斷覆蓋率情況,選擇最合理、最可能的實體類型,或者關係類型進行輸出。

另外,利用Raptor標註工具得到的訓練語料和模型,可以很方便的做到自動化構建。

  • 首先,我們可以把文本中的實體關係抽取出來。
  • 其次,還可以把多個文本中的實體,進行相同實體綁定,從而關聯多個文本的圖譜。
  • 最後,把文本的實體關係與知識庫的實體關係關聯起來,實現全圖譜的融合。

這對於明略科技的客戶來說非常重要,因為他們更看重全量數據融合產生的更大的圖譜價值。

整個過程,從實體識別開始,到句法分析、指代消解,再將多個子句拆分進行關係抽取和實體鏈接,在系統默認情況下,會內置十幾種實體類型的自動識別。結合現場標註的一些數據和訓練模型,可以進一步擴展可支持的實體類別。

關係抽取是從提取侯選實體對開始,利用定義好的圖譜模型以及關係分類算法,進行關係分析,輸出初步的關係三元組。因為我們使用的是比較簡潔的屬性圖模型,所以還需要通過將三元組轉換為屬性圖結果得出最終的關係數據。

對於實體鏈接,會根據待鏈接實體詞從數據庫中查詢候選實體,然後根據侯選實體及其周邊的關聯實體,與待鏈接實體所在的文本進行相似度計算,得出侯選實體的排序推薦,用戶再進行最終的選擇確認。

四、大規模行業知識圖譜的存儲與計算

我們認為,行業知識圖譜的存儲需要滿足幾點基本要求:

  • 首先,自主可控。行業知識圖譜,需要及時為客戶提供技術響應和支持,明略科技通過結合開源和自研軟件的方案來解決這一問題。
  • 第二,分佈式和可擴展。明略科技採用HBase作為底層一個基本存儲組件,ElasticSearch作為索引的基本組件。
  • 第三,高性能和高可用。明略科技以圖數據庫為中心,考慮行業數據的具體情況,根據場景設計存儲架構,並且針對特定場景做了性能優化。
    -最後,多圖譜的管理。行業知識圖譜,往往不只是一個圖譜,而是會根據不同的部門或者業務場景構建多個圖譜,因此必須考慮多個圖譜的管理需求。

為了滿足以上基本要求,明略科技構建的是一個基於混合存儲架構的知識圖譜數據庫。

第一要考慮的,圖數據庫的選型,最初開源方案並不多,後來才進入JanusGraph項目。如果現在重新考慮,我們依然會選擇JanusGraph項目,因為它的功能比較豐富成熟,能跟大數據體係有很好的兼容(比如以HBase作為底層存儲),另外社區生態也發展得很好。

第二,我們基於HBase作為底層存儲和ES作為索引組件,HBase是開源的一個非常好的生態項目。在應對檢索需求時,我們並沒有直接使用JanusGraph自帶的ES查詢檢索功能,而是單獨使用ES封裝檢索服務定義特定的索引結構,提供檢索功能以滿足我們圖譜的豐富應用需求。

第三個存儲組件是Phoenix,我們用來存儲“事件”這一種圖譜數據類型。

第四,整個存儲層抽象了一套數據接口層,用於對接客戶事先已採購的數據庫,保障計算層、應用層不受影響。

在計算層,明略科技提供OLTP和OLAP計算能力。 OLTP的計算,通過RPC的API接口和標準的Gremlin接口,提供在線數據服務。 OLAP計算可提供Tinkerpop的Graph Computer計算,以及使用GraphX圖計算算法進行全圖的挖掘計算。

我們在落地過程中,也遇到了很多圖數據庫方面的問題。

第一,讀圖效率。

在分佈式導入性能方面,JanusGraph它自己的bulkload並不是特別友好,需要用戶事先定義好點的ID,所以明略科技自己開發了一個分佈式工具,以HBase作為底層存儲,通過bulkload的方式提高導入的效率,測試表明我們bulkload的版本,相比於普通的分佈式導入程序,有十幾倍的性能提升。

在查詢功能方面,利用HBase底層的接口,優化JanusGraph裡面的點邊查詢功能,並且明略科技研發了自己的算法,比如,全路徑的關係推演接口。同時也擴展了圖數據庫存儲的一些功能,比如,批量數據統計、數據刪除的功能。

在圖計算方面,我們探索過tinkerpop的一些功能,發現算法效率比較低,而且tinkerpop本身的算法非常有限,也不好擴展。後來通過直接對接JanusGraph這個存儲,生成GraphX的Graph進行圖計算,以pagerank為例,相較於tinkerpop有很明顯的性能提升。而且這樣的方案有一個好處,在圖計算時,相比於去讀取原始的數據進行圖計算,使用的是最統一融合的圖譜存儲,作為圖計算的輸入,從而避免數據一致性的問題。

第二,時序關聯數據的存儲。

很多行業客戶數據存在時序的關聯數據,比如,一個人的行為軌跡,交易流水。這類數據如果直接存儲到圖數據庫,會形成很多大量的超級點(Super node),大大影響圖譜的查詢效率,所以明略科技採取的方式是,把數據分兩層存儲。比如,兩個人是否存在交易的關係,這類匯總的關聯信息,依然存在圖數據庫,而對於明細的交易數據,則存在Phoenix,通過Phoenix靈活的索引實現複雜的多維分析和挖掘功能。

在落地過程中,原始數據可能會發生修改和刪除,在圖譜構建完之後,同樣會存在實體和關係數據被修改或刪除的情況。一種方式是直接把修改刪除的效果反映到圖譜。但由於很多行業客戶需要保留歷史信息和狀態,以便回溯進行歷史分析,所以明略科技研發了圖譜的歷史版本數據管理功能。在方案考慮上,如果基於傳統數據庫的方案,存儲空間佔用冗餘,且無法實現細粒度的歷史版本管理。另外一種方式是把每個狀態當作一個點存儲,這樣每個實體不同的歷史時間的狀態都是不同的點。這種方案會使圖譜結構變得非常複雜,查詢效率也會受影響。所以明略科技選擇的是把最新版本和歷史版本分開存儲。

90%的情況下訪問的是最新版本的數據,只需單獨訪問最新版本的數據即可,如需獲取歷史版本信息,可單獨訪問歷史版本存儲。這樣可以實現在線即時記錄歷史狀態變更,有選擇性地保存歷史信息,也不會出現過度的空間損耗。基於分佈式存儲,可以實現大規模無限制的歷史數據存放。此外,這個方案還能實現圖譜數據的回滾和錯誤恢復。

第三,隱性關係計算。

在圖譜計算方面,除了前文提到的GraphX圖計算工作之外,在行業知識圖譜裡面還遇到了很常見的一種需求,即隱性關係的計算。一般方式構建的知識圖譜中的關係,是顯性關係。顯性關係是很顯然的關係,可以直接得到;而隱性關係需要經過複雜計算才可以得到。

我們結合了客戶的業務知識,將業務知識放到明略科技研發的一套關係計算DSL中,通過spark進行分佈式的全圖關係計算。

在公安領域的團伙挖掘業務中,用戶希望在隱性關係的挖掘過程中,通過調整參數,不斷驗證自己的想法,所以明略科技研發了一個在線關係計算功能,讓用戶應用單一軌跡,或多種軌跡,生成在線關係結果,也便於用戶沉澱業務知識和經驗,進行分享。

第四,圖譜深度分析。

通過圖譜直接展示一些簡單的關係擴展,遠遠不足以產生更深度價值,所以明略科技開發了一個知識圖譜網絡深度分析工具。通過一些條件,比如屬性、關係或者事件,得到初步的實體結果,稱之為群體。通過群體拓撲分析,得到多個子圖,應用中心度等算法挖掘核心成員,或者新的成員,還可以針對挖掘出來的子圖進行實時虛擬關係計算,幫助用戶做輔助分析。

此外,知識圖譜本身是一種很好的標籤系統,比如,數據屬性,包括性別、民族等,就是一種標籤,可以基於知識圖譜這種屬性作為標籤體系,進行統計畫像。也可以基於實體的軌跡信息進行軌跡畫像。

五、行業知識圖譜的應用落地

公安領域的關注點主要在於案件的偵查、事件的預警等,明略科技結合知識圖譜技術、圖計算技術、智能問答技術,幫助客戶解決隱性團伙挖掘、家族式犯罪分析、時空軌跡分析、群體行為多元布控等應用場景。明略科技在公安行業已經落地了200多個地市級有關單位的智慧公安解決方案,利用百億規模的知識圖譜輔助辦案,解決了多起大案。明略科技還與公安部第一研究所,聯合發布了中國第一個公安知識圖譜標準白皮書。

金融領域,比如,銀行,更關注風險管控、智能化營銷、內部審計、反洗錢等場景。明略科技在金融領域服務了50多個標杆客戶,建成了國內銀行業首個全行級的知識圖譜,利用百億規模的圖譜支撐在線分析、智能化預警、電子化查證等內部審計業務,幫助各部門發現員工異常行為、複雜資金交易網絡等。此外,明略科技還幫助客戶搭建了首個全行級信貸知識圖譜應用,通過圖計算、通過圖挖掘技術,構建隱性交易關係,發現疑似集資、詐騙等。

工業領域,明略科技給全球最大的軸承廠商搭建了一套智能問答系統,幫助其優化產品使用效率,自動解答用戶提問,用知識圖譜進行答案的展示和解釋。

行業知識圖譜,需要海量多源異構數據的構建、存儲和靈活計算。在構建方面,要以人機交互的方式,結合規則和機器學習,提高構建效率。在存儲方面,要結合客戶的使用場景和需求,綜合設計架構。在應用方面,不僅僅是提供一個工具,而要結合行業知識know-how,研發貼近實際業務的應用,最大化發揮行業知識圖譜的業務價值。

作者介紹:陳智發,明略科技技術總監