技术思考:也谈知识图谱平台中的数据流程与构建范式思考
筆者之前寫過一篇文章《關于知識圖譜標準化構建平臺的思考:知識圖譜只能做項目,不能做平臺?》,地址:https://blog.csdn.net/lhy2014/article/details/119857488,從技術實現的難度上,對這一平臺的實現發表了自己的看法,也突出了其中確實存在的一些現實難題。而即便如此,知識圖譜平臺,作為一個面向不同領域的標準化、可復用平臺,是各大知識圖譜公司、企業都在努力的方向。那么,作為一個標準化的知識圖譜平臺,其構成是怎樣的,其數據流程與構建范式是按照一個怎樣的流程進行的。帶著這個問題,筆者根據自身的經驗,展開思考。
一、知識圖譜平臺的目標
知識圖譜平臺的目標,最終是提供一個領域數據自適應的、可靈活配置、低成本可擴展可維護的知識系統、工具或服務,對客戶不同來源的數據進行結構化整合、聯通,發揮出知識的潛在價值。數據自適應,界定了該平臺的可復用性,能夠根據不同的業務數據提供標準化的處理流程,將差異化的環節壓縮到最小;可靈活配置,規定了平臺的易用性,即不需要很高的用戶學習成本,用戶群體可以是業務人員,也可以是代碼能力不高的程度員,他們只需要根據自己的需求,通過系統規定的流程進行流程配置即可,小白客戶也能輕松入門是最理想的狀態;低成本可擴展可維護,是平臺的另一個重要特征,即整個知識圖譜構建不會是一次性(靜態)的,而是會隨著業務的擴展,數據情況的變化(數據的格式、數據的規模等)而不斷發生改變,這樣就要求系統在能夠充分適應這種動態變化的同時,能夠盡可能的保持穩定、維護成本較低,以此來適應復雜多變的業務場景。
二、知識圖譜平臺的主要功能
做過知識圖譜的朋友都知道,知識圖譜最大的價值,就是它的建模規范,正所謂無規矩不成方圓,要對外部的現實世界進行管理、應用,并發揮出潛在價值,那就必須要將外部世界的事物納入到這個體系當中,這個體系規定了里面有哪些東西以及東西與東西之間的運行規則,這樣一來,整個系統才能運轉于一個可控的狀態之中。因此,知識圖譜平臺也必定是一個這樣一個“有序世界”的外部輔助工具,其提供了一個搭建“有序世界”的入口,細分起來就是“有序世界”的規則、參與“有序世界”規則的數據、數據在這“有序世界”的生產活動三個重要組成部分。
1、本體構建:“有序世界”規則的制定與管理。
這個規則就是我們常說的本體,本體界定了知識圖譜中的概念(實體/事件類型)、概念屬性(實體/事件的屬性/要素)、概念與概念之間的關系(實體/事件的關系),以及概念屬性關系的取值約束條件(單值、多值、有限區間)、數據庫存儲的數據類型(如“ single_string”、“ single_int”、“ single_double”、“ single_bool”)等信息,其中概念屬性關系的取值約束條件是本體中容易忽視的一個點,這個東西在有效規避錯誤知識時大有裨益。因為餓,在當前虛假消息、虛假報道橫飛的今天,有違常識的報道越來越多,而作為結構化知識抽取的重要來源,這些數據會直接造成錯誤的結果,如抽取出<張三,年紀,800歲>,<張三,性別,不知道>等三元組信息,這些在符合句子表達和語義表達規范時,規則和模型并不能將其判負。這時候,如果在定義約束條件時,能夠事先將有限的取值條件進行約束,那么就可以作為先驗知識抽取模型,不過,需要注意的是,這一工作是很大的,如果要保證有較高的覆蓋度,那么所花費的精力是很多的。
當然,我們很顯然地可以想到,這一“有序規則”的制定者肯定是對業務數據或者最終實現的業務功能有十分清晰的認識,平臺很難給出具有引導性的意見(如果能夠,那么可能又會引來一個更大的先驗知識的大工程),相反的,其所能提供的是一個容易操作的界面,可以是圖形化的,也可以是表格形式的,也可以是文件形式的,不同的形式會對應后臺不同的解析邏輯。而在本體制作的同時,還需要進一步包括有本體信息的查看、存儲、編輯(增、刪、改、查)、導入、導出、版本控制、復制粘貼等能力,以保證整個本體的實時性、正確性以及可復用性。其中,復制應用這塊十分關鍵,隨著不同領域的積累,將其共有模塊進行抽象和復用,也可以對接用戶自己已經構建好的本體進行導入擴充(如當前已經有許多可以公開使用的本體,如freebase、yago、schema.org中的本體),能夠使得整個速度越來越快。此外,關于本體的存儲和導出,目前可以使用的格式有很多的可選項,如經典的protege,支持owl、json、ttl等不同格式,而這些格式最為重要的是要滿足不同建模的需求,能夠將實體關系、實體屬性、實體關系、事件關系、事件要素等不同的任務場景所需的承載考慮進去。
2、數據映射-““有序世界”參與者的接入與管理
本體中界定了某個領域或者業務場景中數據所需要遵循的規范,那么接下來的工作就是將現實中的業務數據,裝進這個規則之中。這個裝進操作,包括數據的接入以及“非標轉標”的標準化映射兩個重要步驟。其中,數據的接入要求平臺能夠提供一個數據接入的操作入口,將用戶需要進行整合的數據接入進來,如文件上傳、數據庫對接等,并根據數據的敏感程度進一步區分為是作為一個公有或私有的數據池存在,在數據接入后進行數據管理;“非標轉標”即主要將非標準的實際數據轉換為標準化的數據,由于這個規范是一個唯一的標準,在概念的取名、實體/事件關系的取名以及屬性的取名上都是標準且唯一的,而在現實場景下的許多數據其表述都是多樣的,因此需要進行非標轉標,完成類型、關系、屬性的標準映射(如將實際數據中的“生日”映射到本體中的“出生日期”,將實際數據中的“出生地”映射到本體中的“出生地點”)。
由于數據導入環節中的數據可能是異構的,可能是結構化的,也可能是非結構化的。因此,對于不同形態的數據,也就對應有不同的接入方式。對于結構化的,系統需要提供面向結構化數據的字段選擇和映射操作,而對于非結構化的數據源,則需要先進行基于本體約束的結構化抽取,形成三元組,然后再進行結構化映射。基于結構化數據的映射,由于自身已經是結構化的,因此涉及到的抽取操作不過,更多的是工程以及產品上的操作,需要考慮產品交互上的易用性、數據的安全性和完備性。對于非結構化數據,其由于存在一個從非結構化到結構化的過程,因此,成為了整個環節中最為關鍵的部分,因為這個部分是產生數據誤差、引入噪聲最有可能的一步,抽取規則或者抽取模型性能如果選擇不當或者性能達不到要求的話,后續步驟可能就無法走通。因此,從中我們可以看到,非結構化數據接入這個模塊所體現出來的是一種具備門檻性的“非結構化抽取能力”,即常說的“實體識別、實體關系抽取、事件要素、事件關系抽取”能力。從具體實操上,包括抽取模型的設計、抽取模型的實施以及抽取模型的評測等幾個方面。
做過實體識別、實體關系抽取或者事件抽取的朋友都知道,要實現一個完整可用的抽取系統,其是極具挑戰的,在實際做的過程當中,也往往不會是一條道走到黑,在一棵樹樹上吊死,而是會遵循策略和模型兩條道并舉的方式,策略指的是詞典、模板等啟發式規則,這種方法一般都能夠保證較高的準確率(如果模版很緊的話,準確率可以達到100%),但在召回率上是大打折扣的。而基于模型的方法如果在滿足較高查全率的情況下,同時要求要有較高的準確率,那么對數據的復雜程度(如所需要識別的實體類型數量、實體關系數量的復雜程度)、標注數據的準確性(標注正確、盡可能的不出現錯標、漏標等情況)、標注數據的規模(標注數據的數量規模,句子級標注、篇章級標注對應的不同數據規模)的要求就較高,因此基于模型的方法在實施上,就必然要求平臺:
**1)可視化標注平臺。**提供易用的可視化標注平臺來滿足實體標注、實體關系標注、事件標注、實體屬性標注等多種標注任務,并盡可能地支持多人協同標注、以篇為維度的標注、以標注實體/關系/屬性類型的標注等多種標注形式。當前開源可用的可視化標準平臺較多,例如,中文文本標注工具Chinese-Annotator、IEPY、DeepDive (Mindtagger)、BRAT、SUTDAnnotator、Snorkel、Slate、Prodigy、doccano,其中BRAT是當前功能較為全面的一款標注工具,提供了事件標注、實體標注、關系標注等多個標注功能,doccano具有較好的使用體驗,但不支持關系標注。不過,由于開源的標注工具在協同標注、標注任務協調與管理、標注任務的性能上考慮的不是特別周到,因此還是建議在可視化標注平臺的構建上,能夠基于已有的平臺進行二次開發,或者自行根據財力、人力、物力的實際情況,開發高可用的平臺。
**2)可視化抽取模板配置。*在模型的設計時候,盡可能的提供基于規則模板的配置平臺,如提供用戶詞典導入、用戶實體詞輸入的模塊,后臺的解析程序可以通過解析,并優先處理用戶字典的方式對實體識別方法進行干預。規則模板的配置,則需要平臺提供正則表達式的輸入面板,用戶可以通過鍵入?等通配符,圍繞特定關系、屬性或事件要素類型配置相應的抽取模版,如抽取“PERSON的?[老婆|妻子|媳婦|愛人|內人].{5}PERSON”這一規則可以用于抽取<人物,老婆,人物>三元組,除此之外,還可以進一步設計易用的可視化界面,進一步將一些同義詞集合加入進來,如上述的“老婆”加載進來,以完成規則模板的擴充,以此來提高模板規則的覆蓋度。可視化抽取模板配置是一個將用戶經驗規則自發引入的一個裝置,在使用上會存在一定的使用和學習成本,對于一些不會編寫程序的人員,對正則表達式的編寫規則不了解的情況下,這個功能很難推廣來用,因此這就要求平臺能夠進一步提供模板加載的功能,能夠讓業務人員在線下分配給程序開發人員,然后進行批量導入。但這又引來一個新的問題,即編寫模板規則的標準問題,由于后臺需要對加載的今來的模板進行解析,為了提高模板解析的成功率,需要平臺設計人員提前將模板的樣式設計好。此外,對于不同的抽取任務中,也有可能會重復使用同一套抽取規則的(如很多任務都會使用人物實體抽取規則),則要進一步增加對抽取規則模板的管理模塊。
3)模型選擇、訓練與評估。 選用現有機器學習/深度學習模型是體現平臺“智能化”的一個重要“賣點”,同時也是解決“規則”無法復用這一尷尬問題的根本方法。將深度學習模型應用于平臺當中,其過程又可以進一步細分為數據的標注、模型的選擇、模型的訓練以及模型的評估等幾個細分步驟。數據的標注可以根據可視化標注平臺的產出作為輸入,模型的選擇可以通過列舉、復現當前的一些較為經典和sota的模型集合,如實體識別的中flat、實體關系或者屬性抽取中的MRC閱讀理解方法等,因為對于同一份數據,不同的數據,可能會有不同的性能效果,因此平臺應該盡可能地提供多個好的模型,這樣后面可以通過模型集成ensemble的方式,共同決策出一個好的模型結果出來。不過,這又涉及到一個新的問題,即模型的參數調節問題,因為使用者大概率不會調參,因此需要系統平臺能夠學習的效果自行的評估,以完成參數更新(這顯然是存在一定難度的)。緊接著,這個又涉及到一個評估的問題,平臺需要提供模型評估的結果,通過數字化、圖形化的方式,將訓練集、測試集的數據量、評估指標(如常見的關于全局、分項的準確率、召回率,F1值)、模型預測的結果樣本等進行展示,這樣一來,用戶可以根據評估后得到的效果來自行評估,如是否達到某個可以入庫的精度域值,并將該結果來進一步回調模型。進一步的,如果這個反饋的流程運轉起來的,那就會引來一個新的問題,即不同模型版本的管理和控制問題。平臺可能需要將不同版本的模型進行保存,并且要保證模型的擴展性,例如,之前只做了8類實體的識別,現在要在這個基礎上增加3個實體的識別任務時,是否是新建一個3類實體的識別模型,還是在原有的基礎上再進行訓練,不同的決定會直接決定不同的結果,如果采用后者,效果可能會降低,如果采用前者,推斷的性能又會受影響。因此,這就需要平臺設計一個較好的模型管理模式來解決這一問題。
3、知識治理-“有序世界”參與者的最后標準化
唯一性是保證知識標準化的必要前提,“有序世界”需要能夠正常的運行,有序的管理,就必然要求其中的知識均處于在一個絕對標準化,無沖突的狀態當中。因此,在完成本體設計、數據映射之后,“有序世界”參與者需要完成最后一道標準化的工作,才能入庫,從而發揮出其真正效益。需要注意的是,由于這一塊的工作在實現上具有較高的難度,當前的深度學習方法在此的表現并不好,所有縱觀現在的許多知識圖譜標準化構建平臺,都是蜻蜓點水式的略過。從具體的功能上,知識治理包括實體名稱、屬性值、事件要素值的歸一化以及實體的對齊融合兩個重要步驟,其中還會涉及到知識質量評估、沖突檢測與消解等實際難題。
**1)知識單元的歸一化。**歸一化是一個非標轉標的過程,需要將同義不同表述的值歸并到一個標準的名稱中去,例如將不同的地點歸一化道“xx省xx市xx縣/區”這樣的三級標準形式,將不同的時間標準化為“yy-mm-dd”的時間格式,將不同計量單位的數值歸一化。由于這個環節所要求的準確率是相當高的,因此較為奏效的方式還基于規則方式去做,即提供可視化抽取模板配置的形式,讓用戶根據特定的實體、事件、屬性,來定義出來的需要歸一化的系列操作,如同義詞替換,去除一些同義詞,以及根據之前預定好的本體約束來進行值的二次修正等,平臺自身也應該盡可能多地將一些通用的歸一化模型進行內置,以此來增加歸一化的覆蓋度(一般來說,歸一化的步驟不能求全,需要一步接著一步來做,步步為營,以保證絕對高的準確率),或者這個內置操作,其實依賴的是很多常識性的規則,如一個人要么是男人,要么是女人,不能是“人妖”和其他,人的壽命不會超過150歲,人的身高不會超過3米,等等,常識性規則的挖掘工作,可以作為這種預設規則的極大補充。
**2)實體的對齊融合。**對齊融合是對知識單元進行歸一化后的一個重要步驟。歸一化后,能夠將不同的表述都映射成為一個標準化的表述當中,實體的對齊融合,則是將指稱完全一樣的實體進行合并,對齊融合結果就是整個數據量的減少(會產生一些重復性的數據,經過驅蟲之后,整體的數量會下降),整張圖譜的連通性更好(在對齊融合后,圖譜的稀疏性會降低)。實際上,與歸一化一樣,實體的對齊與融合,需要盡可能保證絕對高的準確率,因此在實現上同樣還是以規則配置為主。實體的對齊操作,其本質上是一個實體相似度計算或者二分類的問題,從實現上可以進一步分為實體的表示以及實體的相似度判定。實體的表示目前有trans系列等多種方法(DLGKE等框架可以即插即用,利用自身已有的數據快速訓練出自己知識圖譜的一個向量表示),南京大學提供了OPENEA,清華大學提供了EAkit等融合工具,但這些工具在真實效果上是很難用在工業場景的(在hit@1的準確率上不到0.6)。因此,為了保證準確率,平臺還是需要盡可能地設計一些特定的融合邏輯,將兩個實體為一個實體的對齊策略形式化出來,這樣的好處在于具有較好的可用性和可擴展性。
**4、知識管理-“有序世界”參與者的存儲與應用 **
在經過本體設計、數據映射、知識治理之后,整個平臺中的數據按邏輯上來講,應該是處于一個較為標準、準確的狀態之中,這時候,平臺需要完成的是對這些數據進行存儲。存儲上包括對本體的存儲,也包括對具體知識數據的存儲兩個方面,也可以進一步細分為不同版本下的圖譜存儲和圖譜管理兩個子方面,圖譜管理還包括對圖譜的增刪改查操作。就圖譜存儲而言,平臺可以根據實際的數據規模,適當地選擇時下穩定性較好的圖數據庫作為支撐,同時考慮圖數據庫的特性(是否支持分布式、是否支持高性能的吞吐、是否知識高性能的復雜查詢【如最短路徑查詢、經典的圖算法等】)。例如,當前的titan、neo4j、hugegraph、mongodb、RDF、neublarGraph等都是可以使用的技術選型。
另外,在知識的應用上,在當前,平臺可以根據自身的業務需要,將與底層數據庫交互的代碼進行接口化,如將特定實體查詢、特定實體關系查詢等腳本通過封裝接口的形式暴露給用戶(如flask-resful api, grpc),用戶只需要制定參數就可以完成相應的知識獲取服務,這一點的價值在于能夠將省去用戶底層sql的編寫問題,因為有些用戶根本不會去寫,也不想了解底層是怎樣實現的。另一個功能,就是提供對底層數據的可視化操作,前者以接口服務的方式進行展示,用戶可以根據獲取到的數據進一步作為輸入去做一些數據分析,或者技術人員用此再做推薦、推理等應用,但這個不太形象。因此,可視化的操作是需要的,比如做關聯分析,兩個實體之間的路徑分析,這種演繹的動作就需要在可視化的界面上去做。但實際的經驗告訴我們,雖然諸如neo4j等圖數據庫中已經自帶了可視化平臺,但其無法作為內嵌頁集成到頁面單中(除非做頁面跳轉),這個時候,就必須要要使用前端來實現這些交互功能。不過,需要注意的是,前端在實現這些功能時,會遇到多種問題,如節點太多,整個圖譜會爆掉,整張圖密密麻麻,體驗也十分不好,而且目前已有的一些公開的插件,如d3js、gojs等,對于瀏覽器渲染的性能要求很高,內存配置低的平臺,很有可能分分鐘爆掉,而且實時延問題也是需要注意的一個點,如果一張圖反復渲染,導致性能延遲,用戶的體驗也是很差的。因此,平臺可視化這塊,也是一個值得花大力氣去展開做的一個點。
5、總結
本文圍繞著《也談知識圖譜平臺中的數據流程與構建范式思考》這一話題,從自己的落地經驗出發,介紹了現行知識圖譜平臺中的一些現實問題。知識圖譜平臺的目標,是提供一個領域數據自適應的、可靈活配置、低成本可擴展可維護的知識系統、工具或服務,對客戶不同來源的數據進行結構化整合、聯通,才能發揮出知識的潛在價值。知識圖譜最大的價值,就是它的建模規范,正所謂無規矩不成方圓,要對外部的現實世界進行管理、應用,并發揮出潛在價值,那就必須要將外部世界的事物納入到這個體系當中,這個體系規定了里面有哪些東西以及東西與東西之間的運行規則,這樣一來,整個系統才能運轉于一個可控的狀態之中。知識圖譜平臺,實際上是一個很復雜的東西,要做成一個真正可用的東西,難度是很大的,但較為落地的方式,還是選用準確率較高的選型方式,“重規則、輕模型”,規則更為可控,模型需要講究集成,如何通過人機交互的方式,更好的將人工經驗融入到整個平臺系統中,進行靈活配置,是實現知識圖譜平臺通往可用之路的必要保證。
關于作者
劉煥勇,liuhuanyong,現任360人工智能研究院算法專家,前中科院軟件所工程師,主要研究方向為知識圖譜、事件圖譜在實際業務中的落地應用。
得語言者得天下,得語言資源者,分得天下,得語言邏輯者,爭得天下。
1、個人主頁:https://liuhuanyong.github.io。
2、個人博客:https://blog.csdn.net/lhy2014/。
歡迎對自然語言處理、知識圖譜、事件圖譜理論技術、技術實踐等落地應用的朋友一同交流。
總結
以上是生活随笔為你收集整理的技术思考:也谈知识图谱平台中的数据流程与构建范式思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android官方开发文档Trainin
- 下一篇: 解决AndroidStudio添加Pro