【關(guān)于 知識圖譜】 那些你不知道的事
作者:吳曉均
項目地址:https://github.com/km1994/NLP-Interview-Notes

一、知識圖譜簡介
1.1 引言
從一開始的Google搜索,到現(xiàn)在的聊天機器人、大數(shù)據(jù)風控、證券投資、智能醫(yī)療、自適應(yīng)教育、推薦系統(tǒng),無一不跟知識圖譜相關(guān)。它在技術(shù)領(lǐng)域的熱度也在逐年上升。
早在 2010 年微軟就開始構(gòu)建知識圖譜,包括 Satori 和 Probase;2012 年,Google 正式發(fā)布了 Google Knowledge Graph,現(xiàn)在規(guī)模已超 700 億。目前微軟和 Google 擁有全世界最大的通用知識圖譜,F(xiàn)acebook 擁有全世界最大的社交知識圖譜,而阿里巴巴和亞馬遜則分別構(gòu)建了商品知識圖譜。

圖 1 業(yè)內(nèi)布局

圖 2 業(yè)內(nèi)應(yīng)用
本章以通俗易懂的方式來講解知識圖譜相關(guān)的知識、介紹從零開始搭建知識圖譜過程當中需要經(jīng)歷的步驟以及每個階段。本次組隊學習還將動手實踐一個關(guān)于kg在智能問答中的應(yīng)用。
1.2 什么是知識圖譜呢?
知識圖譜是由 Google 公司在 2012 年提出來的一個新的概念。從學術(shù)的角度,我們可以對知識圖譜給一個這樣的定義:“知識圖譜本質(zhì)上是語義網(wǎng)絡(luò)(Semantic Network)的知識庫”。但這有點抽象,所以換個角度,從實際應(yīng)用的角度出發(fā)其實可以簡單地把知識圖譜理解成多關(guān)系圖(Multi-relational Graph)。
1.2.1 什么是圖(Graph)呢?
圖(Graph)是由節(jié)點(Vertex)和邊(Edge)來構(gòu)成,多關(guān)系圖一般包含多種類型的節(jié)點和多種類型的邊。實體(節(jié)點)指的是現(xiàn)實世界中的事物比如人、地名、概念、藥物、公司等,關(guān)系(邊)則用來表達不同實體之間的某種聯(lián)系,比如人-“居住在”-北京、張三和李四是“朋友”、邏輯回歸是深度學習的“先導知識”等等。

圖 3 圖(Graph)介紹
1.2.2 什么是 Schema 呢?
知識圖譜另外一個很重要的概念是 Schema:
圖中的DataType限定了知識圖譜節(jié)點值的類型為文本、日期、數(shù)字(浮點型與整型)
圖中的Thing限定了節(jié)點的類型及其屬性(即圖1-1中的邊)
介紹:限定待加入知識圖譜數(shù)據(jù)的格式;相當于某個領(lǐng)域內(nèi)的數(shù)據(jù)模型,包含了該領(lǐng)域內(nèi)有意義的概念類型以及這些類型的屬性
作用:規(guī)范結(jié)構(gòu)化數(shù)據(jù)的表達,一條數(shù)據(jù)必須滿足Schema預先定義好的實體對象及其類型,才被允許更新到知識圖譜中, 一圖勝千言
舉例說明:基于下圖Schema構(gòu)建的知識圖譜中僅可含作品、地方組織、人物;其中作品的屬性為電影與音樂、地方組織的屬性為當?shù)氐纳虡I(yè)(eg:飯店、俱樂部等)、人物的屬性為歌手
tips:本次組隊學習不涉及schema的構(gòu)建

圖 4 Schema定義
1.3 知識圖譜的類別有哪些?
先按知識圖譜應(yīng)用的深度主要可以分為兩大類:
一是通用知識圖譜,通俗講就是大眾版,沒有特別深的行業(yè)知識及專業(yè)內(nèi)容,一般是解決科普類、常識類等問題。
二是行業(yè)知識圖譜,通俗講就是專業(yè)版,根據(jù)對某個行業(yè)或細分領(lǐng)域的深入研究而定制的版本,主要是解決當前行業(yè)或細分領(lǐng)域的專業(yè)問題。
1.4 知識圖譜的價值在哪呢?
從圖5中可以看出,知識圖譜是人工智能很重要的一個分支, 人工智能的目標為了讓機器具備像人一樣理性思考及做事的能力 -> 在符號主義的引領(lǐng)下,知識工程(核心內(nèi)容即建設(shè)專家系統(tǒng))取得了突破性的進展 -> 在整個知識工程的分支下,知識表示是一個非常重要的任務(wù) -> 而知識圖譜又恰恰是知識表示的重要一環(huán)

圖 5 學科概念
二、怎么構(gòu)建知識圖譜呢?
2.1 知識圖譜的數(shù)據(jù)來源于哪里?
知識圖譜的構(gòu)建是后續(xù)應(yīng)用的基礎(chǔ),而且構(gòu)建的前提是需要把數(shù)據(jù)從不同的數(shù)據(jù)源中抽取出來。對于垂直領(lǐng)域的知識圖譜來說,它們的數(shù)據(jù)源主要來自兩種渠道:
第一種:業(yè)務(wù)本身的數(shù)據(jù)。這部分數(shù)據(jù)通常包含在公司內(nèi)的數(shù)據(jù)庫表并以結(jié)構(gòu)化的方式存儲,一般只需要簡單預處理即可以作為后續(xù)AI系統(tǒng)的輸入;
第二種:網(wǎng)絡(luò)上公開、抓取的數(shù)據(jù)。這些數(shù)據(jù)通常是以網(wǎng)頁的形式存在所以是非結(jié)構(gòu)化的數(shù)據(jù),一般需要借助于自然語言處理等技術(shù)來提取出結(jié)構(gòu)化信息。

圖 6 數(shù)據(jù)來源
比如在下面的搜索例子里,Bill Gates和Malinda Gate的關(guān)系就可以從非結(jié)構(gòu)化數(shù)據(jù)中提煉出來,比如維基百科等數(shù)據(jù)源。

圖 7 舉例說明
2.2 信息抽取的難點在哪里?
信息抽取的難點在于處理非結(jié)構(gòu)化數(shù)據(jù)。在下面的圖中,我們給出了一個實例。左邊是一段非結(jié)構(gòu)化的英文文本,右邊是從這些文本中抽取出來的實體和關(guān)系。

圖 8 信息抽取的難點舉例
2.3 構(gòu)建知識圖譜所涉及的技術(shù)?
在構(gòu)建類似的圖譜過程當中,主要涉及以下幾個方面的自然語言處理技術(shù):
實體命名識別(Name Entity Recognition)
關(guān)系抽?。≧elation Extraction)
實體統(tǒng)一(Entity Resolution)
指代消解(Coreference Resolution)
...
2.4、知識圖譜的具體構(gòu)建技術(shù)是什么?
下面針對每一項技術(shù)解決的問題做簡單的描述,至于這些是具體怎么實現(xiàn)的,不在這里一一展開,后續(xù)課程和知識圖譜第二期的課程將會慢慢展開:

圖 9 具體構(gòu)建技術(shù) 示例
2.4.1 實體命名識別(Named Entity Recognition)
實體命名識別(英語:Named Entity Recognition),簡稱NER
目標:就是從文本里提取出實體并對每個實體做分類/打標簽;
舉例說明:比如從上述文本里,我們可以提取出實體-“NYC”,并標記實體類型為 “Location”;我們也可以從中提取出“Virgil's BBQ”,并標記實體類型為“Restarant”。
這種過程稱之為實體命名識別,這是一項相對比較成熟的技術(shù),有一些現(xiàn)成的工具可以用來做這件事情。
2.4.2 關(guān)系抽取(Relation Extraction)
關(guān)系抽?。ㄓ⒄Z:Relation Extraction),簡稱 RE
介紹:通過關(guān)系抽取技術(shù),把實體間的關(guān)系從文本中提取出來;
舉例說明:比如實體“hotel”和“Hilton property”之間的關(guān)系為“in”;“hotel”和“Time Square”的關(guān)系為“near”等等。

圖 9 NER 和 RE 示例
2.4.3 實體統(tǒng)一(Entity Resolution)
實體統(tǒng)一(英語:Entity Resolution),簡稱 ER
介紹:對于有些實體寫法上不一樣,但其實是指向同一個實體;
舉例說明:比如“NYC”和“New York”表面上是不同的字符串,但其實指的都是紐約這個城市,需要合并。
價值:實體統(tǒng)一不僅可以減少實體的種類,也可以降低圖譜的稀疏性(Sparsity);
2.4.4 指代消解(Disambiguation)
指代消解(英語:Disambiguation)
介紹:文本中出現(xiàn)的“it”, “he”, “she”這些詞到底指向哪個實體,比如在本文里兩個被標記出來的“it”都指向“hotel”這個實體。

圖 10 ER 和 Disambiguation 示例
三、知識圖譜怎么存儲?
知識圖譜主要有兩種存儲方式:
一種是基于RDF的存儲;
另一種是基于圖數(shù)據(jù)庫的存儲。
它們之間的區(qū)別如下圖所示。RDF一個重要的設(shè)計原則是數(shù)據(jù)的易發(fā)布以及共享,圖數(shù)據(jù)庫則把重點放在了高效的圖查詢和搜索上。其次,RDF以三元組的方式來存儲數(shù)據(jù)而且不包含屬性信息,但圖數(shù)據(jù)庫一般以屬性圖為基本的表示形式,所以實體和關(guān)系可以包含屬性,這就意味著更容易表達現(xiàn)實的業(yè)務(wù)場景。其中Neo4j系統(tǒng)目前仍是使用率最高的圖數(shù)據(jù)庫,它擁有活躍的社區(qū),而且系統(tǒng)本身的查詢效率高,但唯一的不足就是不支持準分布式。相反,OrientDB和JanusGraph(原Titan)支持分布式,但這些系統(tǒng)相對較新,社區(qū)不如Neo4j活躍,這也就意味著使用過程當中不可避免地會遇到一些刺手的問題。如果選擇使用RDF的存儲系統(tǒng),Jena或許一個比較不錯的選擇。

圖 11 RDF的存儲 和 基于圖數(shù)據(jù)庫的存儲 的區(qū)別
四、知識圖譜可以做什么?
通用知識圖譜的應(yīng)用
搜索引擎搜索(百度搜索、搜狗搜索等)
搜索推薦(根據(jù)搜索內(nèi)容進行推薦)
問答
行業(yè)知識圖譜的應(yīng)用
人脈路徑查詢?;趦蓚€用戶之間的關(guān)聯(lián)實體(比如:所在單位、同事、同學、朋友、家人等)找到兩者之間的關(guān)聯(lián)路徑。
企業(yè)社交圖譜查詢。基于投資、任職、專利、招投標、涉訴關(guān)系以目標企業(yè)為核心心向外層層擴散,形成一個網(wǎng)絡(luò)關(guān)系圖,直觀立體展現(xiàn)企業(yè)關(guān)聯(lián)。
輔助信貸審核。基于知識圖譜數(shù)據(jù)的統(tǒng)一查詢,全面掌握客戶信息;避免由于系統(tǒng)、數(shù)據(jù)孤立、信息不一致造成信用重復使用、信息不完整等問題。
征信系統(tǒng)。根據(jù)用戶已有信息(例如:教育信息、身份信息、聯(lián)系方式、擔?;虮粨H诵畔ⅲ╆P(guān)聯(lián)多家平臺信用記錄。
...
參考資料
干貨 | 從零到一學習知識圖譜的技術(shù)與應(yīng)用
手把手教你快速入門知識圖譜 - Neo4J教程
python操作圖數(shù)據(jù)庫neo4j的兩種方式
Neo4j之導入數(shù)據(jù)
schema 介紹
知識圖譜Schema
美團大腦:知識圖譜的建模方法及其應(yīng)用
肖仰華. 知識圖譜:概念與技術(shù).北京:電子工業(yè)出版社, 2020.2-39.
介紹
本項目是作者們根據(jù)個人面試和經(jīng)驗總結(jié)出的自然語言處理(NLP)面試準備的學習筆記與資料,該資料目前包含 自然語言處理各領(lǐng)域的 面試題積累。
目錄架構(gòu)
一、【關(guān)于 基礎(chǔ)算法篇】那些你不知道的事
【關(guān)于 過擬合和欠擬合】那些你不知道的事
【關(guān)于 BatchNorm vs LayerNorm】那些你不知道的事
【關(guān)于 激活函數(shù)】那些你不知道的事
【關(guān)于 正則化】那些你不知道的事
【關(guān)于 優(yōu)化算法及函數(shù)】那些你不知道的事
【關(guān)于 歸一化】那些你不知道的事
【關(guān)于 判別式(discriminative)模型 vs. 生成式(generative)模型】 那些你不知道的事
二、【關(guān)于 機器學習算法篇】那些你不知道的事
【關(guān)于 邏輯回歸】那些你不知道的事
【關(guān)于 支持向量機】 那些你不知道的事
【關(guān)于 集成學習】那些你不知道的事
三、【關(guān)于 深度學習算法篇】那些你不知道的事
【關(guān)于 CNN 】那些你不知道的事
【關(guān)于 Attention 】那些你不知道的事
【關(guān)于 Transformer面試題】那些你不知道的事
【關(guān)于 Transformer】那些你不知道的事
【關(guān)于 Transformer 問題及改進】那些你不知道的事
【關(guān)于 生成對抗網(wǎng)絡(luò) GAN 】 那些你不知道的事
四、【關(guān)于 NLP 學習算法】那些你不知道的事
4.1 【關(guān)于 信息抽取】那些你不知道的事
4.1.1 【關(guān)于 命名實體識別】那些你不知道的事
【關(guān)于 HMM->MEMM->CRF】那些你不知道的事
【關(guān)于 DNN-CRF】那些你不知道的事
【關(guān)于 中文領(lǐng)域 NER】 那些你不知道的事
【關(guān)于 命名實體識別 trick 】那些你不知道的事
4.1.2 【關(guān)于 關(guān)系抽取】那些你不知道的事
【關(guān)于 關(guān)系抽取】那些你不知道的事
4.1.3 【關(guān)于 事件抽取】那些你不知道的事
【關(guān)于 事件抽取】那些你不知道的事
4.2 【關(guān)于 NLP 預訓練算法】那些你不知道的事
【關(guān)于TF-idf】那些你不知道的事
【關(guān)于word2vec】那些你不知道的事
【關(guān)于FastText】那些你不知道的事
【關(guān)于Elmo】那些你不知道的事
【關(guān)于Bert】那些你不知道的事
【關(guān)于Bert】那些你不知道的事
【關(guān)于 Bert 源碼解析 之 總覽大局篇】那些你不知道的事
【關(guān)于 Bert 源碼解析I 之 主體篇】那些你不知道的事
【關(guān)于 Bert 源碼解析II 之 預訓練篇】那些你不知道的事
【關(guān)于 Bert 源碼解析III 之 微調(diào)篇】那些你不知道的事
【關(guān)于 Bert 源碼解析IV 之 句向量生成篇】那些你不知道的事
【關(guān)于 Bert 源碼解析V 之 文本相似度篇】那些你不知道的事
【關(guān)于 小 Bert 模型系列算法】那些你不知道的事
【關(guān)于 Distilling Task-Specific Knowledge from BERT into Simple Neural Networks】那些你不知道的事
【關(guān)于 大 Bert 模型系列算法】 那些你不知道的事
4.3 【關(guān)于 文本分類】那些你不知道的事
【關(guān)于 文本分類】那些你不知道的事
【關(guān)于 文本分類 trick 】那些你不知道的事
4.4 【關(guān)于 文本匹配】那些你不知道的事
【關(guān)于 文本匹配模型 ESIM 】那些你不知道的事
【關(guān)于 語義相似度匹配任務(wù)中的 BERT】 那些你不知道的事
4.5 【關(guān)于 問答系統(tǒng)】那些你不知道的事
4.5.1 【關(guān)于 FAQ 檢索式問答系統(tǒng)】 那些你不知道的事
【關(guān)于 FAQ 檢索式問答系統(tǒng)】 那些你不知道的事
4.5.2 【關(guān)于 問答系統(tǒng)工具篇】 那些你不知道的事
【關(guān)于 Faiss 】 那些你不知道的事
4.6 【關(guān)于 對話系統(tǒng)】那些你不知道的事
【關(guān)于 對話系統(tǒng)】那些你不知道的事
【關(guān)于 RASA】那些你不知道的事
4.7 【關(guān)于 知識圖譜】那些你不知道的事
4.7.1 【關(guān)于 知識圖譜】 那些你不知道的事
【關(guān)于 知識圖譜】 那些你不知道的事
4.7.2 【關(guān)于 KBQA】那些你不知道的事
【關(guān)于 KBQA】那些你不知道的事
4.7.3 【關(guān)于 Neo4j】那些你不知道的事
【關(guān)于 Neo4j】那些你不知道的事
4.8 【關(guān)于 文本摘要】 那些你不知道的事
【關(guān)于 文本摘要】 那些你不知道的事
4.9 【關(guān)于 知識表示學習】那些你不知道的事
【關(guān)于 知識表示學習】那些你不知道的事
五、【關(guān)于 NLP 技巧】那些你不知道的事
5.1 【關(guān)于 少樣本問題】那些你不知道的事
【關(guān)于 EDA 】那些你不知道的事
【關(guān)于 主動學習 】那些你不知道的事
【關(guān)于 數(shù)據(jù)增強 之 對抗訓練】 那些你不知道的事
5.2 【關(guān)于 臟數(shù)據(jù)】那些你不知道的事
【關(guān)于 “臟數(shù)據(jù)”處理】那些你不知道的事
5.3 【關(guān)于 煉丹爐】那些你不知道的事
【關(guān)于 batch_size設(shè)置】那些你不知道的事
六、【關(guān)于 Python 】那些你不知道的事
【關(guān)于 Python 】那些你不知道的事
七、【關(guān)于 Tensorflow 】那些你不知道的事
【關(guān)于 Tensorflow 損失函數(shù)】 那些你不知道的事

