煉數成金 門戶 商業智能 知識圖譜 查看內容

知識圖譜基本概念&工程落地常見問題

2020-1-19 09:29| 發布者: 煉數成金_小數| 查看: 65316| 評論: 0|原作者: cavities|來自: 知乎

摘要: 通常我們認為的知識,是我們在實踐中對于認識客觀世界的成果,其中包括諸多,如事實、信息描述、實踐技能、歸納總結的客觀規律,發現論證的推導。知識也可以看成是構成人類智慧的最根本因素。但是這是全人類知識的概 ...
簡要說明一下,搞了知識圖譜架構一年半,快兩年的一些小心得,后續不定期更新其他內容;寫的時候發現要描述和聲明的東西不要太多,偷懶寫個概述;

如何理解知識圖譜
什么是知識?
百度:知識是符合文明方向的,人類對物質世界以及精神世界探索的結果總和。
通常我們認為的知識,是我們在實踐中對于認識客觀世界的成果,其中包括諸多,如事實、信息描述、實踐技能、歸納總結的客觀規律,發現論證的推導。知識也可以看成是構成人類智慧的最根本因素。但是這是全人類知識的概述,不同于個人理解的知識,不同于知識圖譜中的知識,也就是本文中所闡述的“知識”是狹義上的知識。因為知識是狹義的,所以我們更需要去界定什么樣的“知識”是我們所需要的,通常對于我們來說,我們需要構建知識圖譜的知識,是需要根據業務來確定,我們需要它來支撐什么樣的業務,根據業務性質來確定需要總結的知識。

什么是圖譜?
對于圖譜我們可以稍微咬文嚼字,graph 即圖,而我們稱之為圖譜,那么何所謂圖?,圖是知識的表述形式,圖包含兩個部分:1、節點(node),節點即知識;2、邊(edge),邊即關系;即以圖的形式來保存知識。那何所謂譜,我們知道家譜,菜譜,食譜,那譜的意思即按照事物的類別、系統制表,也就是說圖譜,不但需要能夠以圖的方式,結構化地表述知識,還需要對知識進行類別分類,歸納總結。

知識圖譜概述
根據知識和圖譜的闡述,知識圖譜的概念也明確了起來,即:整理總結業務中的知識,并建立這些知識之間的關聯關系,最后以圖的方式將其保存出來,并對這些知識進行分類,歸納和總結。

關于圖譜分層
我們一般將知識分成兩個部分,一部分是 概念 (concept),一部分是 實體(entity),對于概念部分,我們更關注概念之間的關系,概念和實體的關系,而通常概念相對實體來說是非常少的,基本手工就能夠維護,而實體部分我們更關注,實體的屬性值,實體和實體之間的關系,但是概念也是實體,是一種特殊的標定的實體;所以針對知識的關注點,我們將知識分成實體層,和概念層;

在實際使用知識圖譜過程中,會根據業務以及圖譜特性對圖譜進行更加細致的分層;可以根據使用劃分,根據業務形態劃分,根據數據形態劃分,亦或根據圖譜使用場景進行分層,圖譜的分層是復合的,我們需要根據具體情況來對圖譜抽象和定義;

舉個栗子:
根據使用情況劃分,我們能分成:匹配層(match layer),數據層(triple layer),計算層(inference layer);
關于 匹配層,也就是在業務使用過程中使用將自然語言數據,或者外部關系數據,轉化匹配到對應的實體,我們稱之為匹配層,這一層的任務主要是做匹配,至于匹配的方式,有可能是規則,也可以是詞,也可以是模型,而在數據層面,這一層通常是:【實體】&【同義詞】;【實體】&【相關詞】;【實體】&【別稱】;【實體】&【匹配規則元語】;在數據層面,圖譜會存儲實體和各種入口的關系,但是核心目的是為了對接外部數據關聯到圖譜實體。

關于 數據層,這一層也就是我們常說的三元組數據,三元組中記錄實體和實體,實體和值的關系,一種情況:【姚明】-<職業>-【籃球運動員】,其中【姚明】和【籃球運動員】都是實體,另外一種情況【姚明】-<身高>-【2米26】,這其中【2米26】就是屬于屬性值,屬性值和實體最主要區別是,屬性值它不會再指向其他實體,類似于樹節點上的葉子節點;我們為了方便定義通常會將值表和實體表分開存儲;對于數據層,實際上就是知識圖譜的核心層,也是只是圖譜的數據基礎。換一種說法,我們通常對實體進行描述,假設我們將某個實體的釋義給mask,那么我們怎么能猜出這個實體是什么?,一方面我們定義實體的內涵,通過這些內涵來猜測這個實體,所謂內涵就是這個實體的內部含義,比如【姚明】的【身高】,【體重】等這一些實體的內部性質,我們稱之為【內涵 】,內涵大部分都會以屬性- 值的方式存儲,也就是如果我們不斷完善一個實體的屬性值,那么我們就能比較容易的猜出這個東西是什么,畢竟內涵即對一個事物最直接的數據描述。另外一方面,我們可以通過外延來猜出評估出一個實體,所謂外延,便是這個實體和外界其他實體之間的關系,例如:果樹- 果實-?,亞當- 曾經吃過-?,通過這兩條信息我們也能很快猜出這個?是表示蘋果。當然無論是外延還是內涵,其實都是用來對一個實體進行描述,如果一個實體沒有任何描述它的關系,那么這個實體就毫無意義,不但是我們沒有辦法找到它,也沒有辦法使用和理解它,從計算機角度來說,更是它只是孤立的符號。

關于 計算層, 這一層比較特殊,因為它時不必須的,其實我定義計算層英文名為(inference layer)主要是因為這一層有對于推斷推導有很大影響,首先我們需要理解,我們為什么需要inference layer。實際上如果我們的數據足夠豐富,也就是說我們有足夠豐富的知識,那么我們就不需要inference layer,例如:父親的父親是爺爺,如果在任務關系中存儲了爺爺的關系,那么我們可以直接通過數據查到,也就不需要去做inference layer,但是實際上我們不可能將所有關系存儲下來,而且有很多知識實際上是通用的,如果我們都存儲的話,勢必造成數據成倍的增加,實體和實體的笛卡爾積,想想就頭皮發麻,這些還不包含實體的屬性值;inference layer 很大一部分作用,是為了盡可能減少存儲,減少冗余,如果當前業務還不需要那么大數據來支撐,其實這一層就有點雞肋。畢竟這一層的維護也是非常痛苦的。對于這一層,我們需要記錄怎么樣數據?通常來講,這一層我們會存儲類型實體的schema,也就是定義 【type-entity】-【edge】之間的關聯,也就是這個類型的實體和這個關系之間的約束條件,這一層會和匹配層做交叉,因為這一層可以定義圖譜的數據入口;

總之,我們要讓圖譜能夠work,那么
1、首先需要定義實體;
2、立外部數據和圖譜關聯的媒介層;
3、關聯到圖譜之后,決定進行的操作

在很多知識圖譜的范式,例如RDF,OWL其實都是一種對圖譜的表達,只不過它們也離不開這三個東西,例如RDF的各種描述,資源,實際上是定義實體的步驟;NER亦或者是通過同義詞匹配獲得還是其他方式,都是外部數據提供和實體聯系的橋梁,而路由,圖查詢,邏輯規則,這些則是圖譜如何對外部進行反饋的方式。但是其核心是不會改變的,既然如此,如果資源有限,我們肯定是從簡單到復雜,從核心到整個圖譜,一步一步地去完善圖譜,后續我會給大家具體介紹和拆解,如果構建知識圖譜,到最后使用這個知識圖譜與某一項或者某幾項業務的具體實施。

針對常見幾個問題做解答:
1、圖數據庫是必須的么?
圖數據庫不是必須的,就查詢型性能來說,關系型數據庫完爆圖數據庫,并且對于full-search來說,elasticsearch or solr 等搜索引擎又完爆圖數據庫,但是圖數據也有好處就是提供了一個比較嚴禁和完善的知識圖譜體系架構,從實體到概念,從概念到本體,各種schema定義清晰,一階邏輯規則嵌入,如果對知識圖譜不是很理解,可以嘗試使用圖數據庫,但是缺點是容易被框架束縛,對于各種實體定義是很花時間的,如果只作為核心的推理層,還是能接受的。前期在業務上實際上是不推薦使用的。基本上我認識的幾個做知識圖譜的朋友都不推薦使用圖數據庫。另外還是想吐槽一個這個惡心的owl2是怎么回事?到底誰還在整它。

2、NER模型重要么?什么情況使用NER模型?用在什么地方?
NER重要么?我肯定會回答看場景(屁話,和沒說一樣);
其實在NLP很多場景都會使用NER相關模型,這種模型通常使用的label都是各種BEMS + TYPE 的標注,大家去網上找找 CRF-LSTM 之類的模型,觀察下它們的tag實際上就知道了,NER模型是為了能很清楚指出文本之中所出現的實體,當實體數量非常多,并且實體大多數都是可數的幾個明確的類型,那我們實際上推薦使用NER模型的,并且幾萬條數據的標注,對于實體識別來說就能有很好的效果。有一些情況NER模型就效果很不好,比如:

1、比如類型模糊不清,多類型,類型邊界不清晰【人都很難判斷何況是人】特別是上下文特征不明顯的情況下;訓練的效果都很差,這個是屬于定義和標注的問題了,在這塊沒有特別明確情況下用NER模型通常都不會有太好效果,而知識圖譜這貨就是對定義、對理解特別依賴的東西。

2、實體數量少,花樣少(可能才幾千臺我特悶標注了幾萬條就為了識別這幾千條,在規則能很快窮舉的情況下【這特么是廢話】,這個主要是成本問題,拋開成本談知識圖譜都是蝦扯蛋);

3、還有就是冷啟動的情況下(沒錢怎么辦,沒錢有沒錢的辦法,用網上的語聊數據想要取得很好的效果?也就實體是人名,地名,職業,疾病,這幾個比較通用的實體,其他的實體麻,沒錢有沒錢的辦法);

4、系統不完善hold沒有規則完善,流程沒弄清楚的情況,不建議花時間搞NER;
扯遠了,不過NER是有錢人玩的,倒是說得不錯。NER用途最主要還是用于圖譜和外部的媒介(用在其他業務里也不反對,發現新的實體)。

3、除了NER我們還有哪些能夠關聯實體的方式?
主流除了NER,找出實體的還有兩種方式
1、搜索引擎,這個就不用講了,elasticsearch的DSL 直接查 label,同義詞,desc,就能拿到一堆候選集合,然后我們只要建立一個模型,判斷候選集是不是在文本中出現,做一個rerank,基本就能拿到挺好的結果。

2、字符匹配,這個依賴是我們有完善的同義詞詞關系,然后也可以搞個模型,把實體的特征和文本的特征一拼接,讓模型判斷是不是 文本中存在這個實體,偷懶的方式就是只要匹配到關鍵詞,就算命中這個實體,較好是要分詞了,沒有也沒關系,加一個同義詞就能匹配上了,可能會有歧義,那實際上是看對實體的類型劃分,劃分明確的話,模型還是可以判斷的出來的,這個時候較好的辦法還是呼叫人工,呼叫運營小姐姐來幫忙解決問題。

這些都是在你有了一個還馬馬虎虎過得去的圖譜的情況下,沒有這些資源的情況怎么辦?NER模型能幫助我們發現一些實體,最終這個是需要人工處理。

4、知識圖譜人工的占比是?
只能說知識圖譜要搞起來,首先需要明白什么是知識,知識肯定是我們確認過的東西,隨隨便便自動化的數據,當然不能錄入到圖譜當中,不然怎么叫做知識?自動化知識圖譜能干啥?我覺得除了當成embeding特征外,自動化的圖譜能干的事情太少了。所以知識圖譜的人工占比大概是80%這個樣子。因為大量數據要入庫都需要審核,一個好的后臺管理工具和能夠迭代的一系列算法份外重要。

5、知識圖譜實體來源?
這個很重要,實體的來源首先是靠業務定義,其次很大部分是靠爬蟲(偷?爬蟲的事情能叫偷么?),通過爬蟲去爬去行業的百科網站,其三產品搜索引擎這塊能去總結總結。可以去找海量數據,然后NER模型去跑一遍,最后丟給運營處理【運營小姐姐會因為大量數據需要審核而拿刀追著我跑】,所以怎么個優先級,其實大家心里清楚。

6、搞一個知識圖譜大概要多少人?
我估摸,至少有一個后臺開發,一個好的前端,一個懂知識圖譜的產品設計后臺和數據架構,運營是必須的,但是人不能太多,太多人一些細節的地方會協調困難,2~5個人。一個爬蟲厲害的,然后一個到兩個可以搞搞算法,算下來怎么也得10個人,這個是針對稍微中型點的項目來講,如果沒啥時間限制,實體又少,那一兩個人就差不多搞定了,也不必搞什么復雜的后臺運營和維護界面。

7、知識圖譜能運用什么樣的場景?
這個實際上就靠腦洞了,還有業務需求了,因為很多東西不用知識圖譜也能做,用知識圖譜來做的主要是,知識數據,記錄在庫里,看著舒心,有理有據。比如用在百科知識里,提供一個知識查看的產品,就像知識卡片一樣,比如搜索引擎,把關聯的知識組合在一起,專門做同義詞對齊,用于提高召回率,再比如QA問答里,解決Question和Answer函數空間不對齊的GAP,又比如,應用在安全領域,規則圖譜,用來判斷黑客入侵和封裝黑客的行為......真是數不勝數,甚至可以用在企業人才管理方面,用在企業知識庫知識沉淀方向,這個其實很自由,知識圖譜只是知識的一種表達,它提供的是一種和數據驅動不同的方式,叫知識驅動,這些理念可以不斷延伸。很多場景不用圖譜也能搞,最終搞不搞呢?我覺得一方面看決心,另一方面可以看是不是已有的解決方案都不能滿足,那可以用知識圖譜嘗試一下。

8、知識圖譜較大的問題是什么?
成本是較大的問題(廢話)。就拿簡單的說,google搞知識圖譜的成本是一條三元組0.8美分【道聽途說】,聽說花了幾個億在上面,我只想說土豪,請和我做朋友。對于普通項目來說,想要讓它搞下去,一方面要想辦法落地,盡快轉化出價值,另一方面要考慮怎么降低它的成本,高大上的模型固然帥氣,BERT帥氣,單卡10s predict 的一條數據結果,真是難以承受。也許還等不到圖譜成型,項目就狗帶了,盡量避免一點nlp基本知識都沒有的小朋友搞知識圖譜- 有錢就不在乎了,最后一點就是,針對入口開始整圖譜,不失為一個好方法。

下面繪制幾張圖幫助理解;


聲明:文章收集于網絡,版權歸原作者所有,為傳播信息而發,如有侵權,請聯系小編刪除,謝謝!

歡迎加入本站公開興趣群
商業智能與數據分析群
興趣范圍包括:各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754

鮮花

握手

雷人

路過

雞蛋

最新評論

熱門頻道

  • 大數據
  • 商業智能
  • 量化投資
  • 科學探索
  • 創業

熱門文章

     

    GMT+8, 2020-12-24 05:36 , Processed in 0.185260 second(s), 23 queries .

    (*^▽^*)MG黑暗故事游戏规则 麻将上分模式 pk10牛牛算法 江苏11选5复式计算器 即时排球比分直播网 彩票软件 辽宁cba总决赛总比分 09年股票交易春节休市时间 开网上棋牌游戏合法吗 捕鱼王 寻找重庆时时彩网址 10人百家乐台桌 超级大乐透中奖彩民 宁夏11选5派彩走势图 股票分析师排名 手游棋牌辅助论坛 网上棋牌哪个好