『壹』 知識圖譜中的 三元組 是什麼意思
舉個例子,鹽湖-礦藏-氯化鈉(鹽)XYZ,也就是鹽湖是個擁有氯化鈉的礦藏,三個要素穿插關聯。
『貳』 知識圖譜基礎(一)-什麼是知識圖譜
筆者是一隻已經離職的AI產品經理,主要擅長的方向是知識圖譜與自然語言處理,寫這些文章是為了總結歸納目前已經搭建的知識體系,也在於科普。如有不對,請指正。
知識圖譜在國內屬於一個比較新興的概念,國內目前paper都比較少,應用方主要集中在BAT這類手握海量數據的企業,這個概念是google在2012年提出的,當時主要是為了將傳統的keyword-base搜索模型向基於語義的搜索升級。知識圖譜可以用來更好的查詢復雜的關聯信息,從語義層面理解用戶意圖,改進搜索質量。
個人認為,知識圖譜最大的優勢是在於對數據的描述能力非常強大,各種機器學習演算法雖然在預測能力上很不錯,但是在描述能力上非常弱,知識圖譜剛好填補了這部分空缺。
知識圖譜的定義非常多,我這里提供一部分我自己的理解:
1.知識圖譜主要目標是用來描述真實世界中存在的各種實體和概念,以及他們之間的強關系,我們用關系去描述兩個實體之間的關聯,例如姚明和火箭隊之間的關系,他們的屬性,我們就用「屬性--值對「來刻畫它的內在特性,比如說我們的人物,他有年齡、身高、體重屬性。
2.知識圖譜可以通過人為構建與定義,去描述各種概念之間的弱關系,例如:「忘了訂單號」和「找回訂單號」之間的關系
知識庫目前可以分為兩種類型:Curated KBs 和 Extracted KBs
Curated KBs :以yago2和freebase為代表,他們從維基網路和WordNet等知識庫抽取了大量的實體及實體關系,可以把它理解城一種結構化的維基網路。
Extracted KBs :主要是以Open Information Extraction (Open IE), Never-Ending Language Learning (NELL)為代表,他們直接從上億個網頁中抽取實體關系三元組。與freebase相比,這樣得到的實體知識更具有多樣性,而它們的實體關系和實體更多的則是自然語言的形式,如「姚明出生於上海。」 可以被表示為(「Yao Ming」, 「was also born in」, 「Shanghai」)。直接從網頁中抽取出來的知識,也會存在一定的雜訊,其精確度低於Curated KBs。
a)「姚明出生於上海」
b)「姚明是籃球運動員」
c)「姚明是現任中國籃協主席」
以上就是一條條知識,把大量的知識匯聚起來就成為了知識庫(Knowledge Base)。我們可以從wikipedia,網路等網路全書獲取到大量的知識。但是,這些網路全書的知識是由非結構化的自然語言組建而成的,這樣的組織方式很適合人們閱讀但並不適合計算機處理。
為了方便計算機的處理和理解,我們需要更加形式化、簡潔化的方式去表示知識,那就是三元組(triple)。
「姚明出生於中國上海」 可以用三元組表示為(Yao Ming, PlaceOfBirth, Shanghai)[1]。這里我們可以簡單的把三元組理解為(實體entity,實體關系relation,實體entity)。如果我們把實體看作是結點,把實體關系(包括屬性,類別等等)看作是一條邊,那麼包含了大量三元組的知識庫就成為了一個龐大的知識圖。
有些時候會將實體稱為topic,如Justin Bieber。實體關系也可分為兩種,一種是屬性property,一種是關系relation。如下圖所示,屬性和關系的最大區別在於,屬性所在的三元組對應的兩個實體,常常是一個topic和一個字元串,如屬性Type/Gender,對應的三元組(Justin Bieber, Type, Person),而關系所在的三元組所對應的兩個實體,常常是兩個topic。如關系PlaceOfBrith,對應的三元組(Justin Bieber, PlaceOfBrith, London)。
(圖中藍色方塊表示topic,橙色橢圓包括屬性值,它們都屬於知識庫的實體;藍色直線表示關系,橙色直線表示屬性,它們都統稱為知識庫的實體關系,都可以用三元組刻畫實體和實體關系)
這里只是簡單介紹一下數據結構,知識表達這一塊會在《知識圖譜基礎(二)-知識圖譜的知識表達系統》中詳細講解。
讀者只要記住,freebase的基礎知識表達形式:(實體)-[關系]-(實體),(實體)-[關系]-(值)即可,參考圖3,姚明和葉莉的關系。
通過知識圖譜,不僅可以將互聯網的信息表達成更接近人類認知世界的形式,而且提供了一種更好的組織、管理和利用海量信息的方式。下圖是筆者整理的知識圖譜有關的應用,接下來的一些文章筆者會對下面的應用進行剖析。
從圖4上看,知識圖譜的應用主要集中在搜索與推薦領域,robot(客服機器人,私人助理)是問答系統,本質上也是搜索與推薦的延伸。可能是因為知識圖譜這項技術(特指freebase)誕生之初就是為了解決搜索問題的。知識存儲這一塊可能是企查查和啟信寶這些企業發現使用圖結構的數據比較好清洗加工。
在語義搜索這一塊,知識圖譜的搜索不同於常規的搜索,常規的搜索是根據keyword找到對應的網頁集合,然後通過page rank等演算法去給網頁集合內的網頁進行排名,然後展示給用戶;基於知識圖譜的搜索是在已有的圖譜知識庫中遍歷知識,然後將查詢到的知識返回給用戶,通常如果路徑正確,查詢出來的知識只有1個或幾個,相當精準。
問答系統這一塊,系統同樣會首先在知識圖譜的幫助下對用戶使用自然語言提出的問題進行語義分析和語法分析,進而將其轉化成結構化形式的查詢語句,然後在知識圖譜中查詢答案。
『叄』 淺談知識圖譜技術及其應用補全
前言及背景:在構建知識圖譜的過程中,大量知識信息來源於文檔和網頁信息,在從文檔提取知識的過程中往往會有偏差,這些偏差來自於看兩方面:
(1)文檔中會有很多雜訊信息,即無用信息,它的產生可能來自於知識抽取演算法本身,也可能和語言文字本身的有效性有關;
(2)文檔信息量有限,不會把所有知識都涵蓋進去,尤其是很多常識性知識。
以上都會導致知識圖譜是不完整的,所以 知識圖譜補全 在構建知識圖譜中日益重要。
通過 已獲取的知識 來對實體間進行關系預測,以達到對實體間關系的補全,也可以是實體類型信息的補全。該過程可以利用本知識庫內部的知識,也可以引入第三方知識庫的知識來幫助完成。
整理了一份200G的AI資料包:
①人工智慧課程及項目【含課件源碼】
②超詳解人工智慧學習路線圖
③人工智慧必看優質書籍電子書匯總
④國內外知名精華資源
⑤優質人工智慧資源網站整理(找前輩、找代碼、找論文都有)
⑥人工智慧行業報告
⑦人工智慧論文合集
/p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/","uri":"","width":31,"height":27,"darkImgUrl":"https://p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/","darkImgUri":"","formulaImgStatus":"succeed"}" class="syl-plugin-formula">
資料在網盤里排列的非常整齊干凈!希望對大家的學習有所幫助, 私信備注【05】添加領取
知識圖譜補全分為兩個層次: 概念層次的知識補全 和 實例層次的知識補全 。
往往提到知識圖譜構建過程中只是提及了實體和關系的抽取,然後就可以生成實體和關系組成的RDF了。
但是,僅僅獲取三元組是不夠的,還要考慮這些,因為三元組中的實體除了具有屬性和關系之外,還可以 映射關聯到知識概念層次的類型(type),而且一個實體的類型可以有很多 。
例如:實體奧巴馬的類型在不同關系中是有變化的。
在出生信息描述中,類型為人;在創作回憶錄的描述中其類型還可以是作家;在任職描述中還可以是政治家。
實體類型的概念層次模型
在這里:人、作家、政治家這些概念之間是有層次的,也就是所說的概念的層次模型。
1、概念層次的知識補全——主要是要解決實體的類型信息缺失問題
正如前面的例子所描述,一旦一個實體被判別為人這個類型,那麼在以構建好的知識模式中,該實體除了人的類型外仍需要向下層概念搜索,以發現更多的類別描述信息。
(1)基於描述邏輯的規則推理機制。
本體論和模式 :實體都可以歸結為一種本體,而這種本體會具有一組模式來保證其獨特性,這組模式可以用規則來描述,因此,對於本體而言,其可以由這組規則來描述。
例如,奧巴馬是個實體,他的本體可以歸為人,而人的模式就是可以使用語言和工具、可以改造其他事務等等,這些模式可以通過規則來描述,於是基於描述邏輯的規則推理方法就出現了。
描述邏輯 是一種常見的知識表示方式,它建立在概念和關系之上。
比如,可以將關於人的實體實例(可以是文本)收集起來,從中提取出其中模式並以規則的形式記錄下來,這樣一來,只要遇到一個新的實體實例 ,只需將其代入到之前記錄下的規則中進行比較即可做出判斷,如果符合規則,就說明該實例可以歸類為人的概念類型,否則就判定為非此概念類型。
(2)基於機器學習類型推理機制
經過基於描述邏輯的規則推理的發展階段後,機器學習相關研究開始占據主流,此時 不是單純地利用實例產生的規則等內部線索來進行判斷,同時也要利用外部的特徵和線索來學習類型的預測 。
對一個未知類型實體e1而言,如果能找到一個與其類似的且已知類型的實體e2的話,那麼就可以據此推知實體e1的類型應該與e2的類型一致或至少相似。
此類方法主要可以分為:基於內容的類型推理、基於鏈接的類型推理和基於統計關系學習的類型推理(如,Markov邏輯網)幾個方向。
(3)基於表示學習類型推理機制
將嵌入式學習和深度學習引入到類型推理,基於機器學習的類型推理方法大多假設數據中沒有雜訊,且其特徵仍然需要認為選擇和設計,引入深度學習可以避免特徵工程。而類型推理要依據文本內容,也需要鏈接結構等其他特徵的支持,此時嵌入式方法可以發揮其自身優勢。
2、實例層次的知識補全
可以理解為:對於一個實例三元組(SPO,主謂賓),其中可能缺失情況為(?,P,O),(S,?,O)或者(S,P,?),這就如同知識庫中不存在這個三元組,此時需要預測缺失的實體或者關系是什麼。
事實上, 很多缺失的知識是可以通過已經獲得的知識來推知的 ,有時這個過程也被稱為 鏈接預測 。
注意 :有時知識不是缺失的,而是 新出現 的,即出現了新的三元組,且這個三元組不是原知識庫所已知的知識,此時需要將其作為新知識補充道知識庫中,但此種情形 不是傳統意義的補全 。
(1)基於隨機遊走的概率補全方法
(2)基於表示學習的補全方法
知識圖譜嵌入流程:
①結構嵌入表示法
②張量神經網路法
③矩陣分解法
④翻譯法
(3)其他補全方法
跨知識庫補全方法、基於信息檢索技術的知識庫補全方法、知識庫中的常識知識補全
面臨的挑戰和主要發展方向:
(1)解決長尾實體及關系的稀疏性。
知名的明星的關系實例會很多,而對於普通民眾的實例就很少,但是他們數量卻眾多,導致其相關的關系實例也是十分稀疏,而且在數量不斷增加的情況下,這種情況會更加明顯。
(2)實體的一對多、多對一和多對多問題。
對於大規模數據,不是一對十幾或者幾十數量級那麼簡單,而是成百上千的數量級,傳統的解決方案無法有效深圳根本無法解決此種數量級別的關系學習問題。
(3)三元組的動態增加和變化導致KG的動態變化加劇。
新知識源源不斷的產生,而之前的知識可能被後面證明是錯誤的,或者需要修正的。這些都會使得知識補全的過程也需修正改變,如何使得知識圖譜補全技術適應KG的動態變化變得越來越重要,而這方面的技術還未引起足夠的重視。
(4)KG中關系預測路徑長度會不斷增長。
關系預測能推理的長度是有限的,但在大規模知識圖譜閃光,實體間的關系路徑序列會變得越來越長,這就需要更高效的模型來描述更復雜的關系預測模型。
『肆』 知識圖譜學習總結
知識圖譜本質上是一種大型的語義網路,它旨在描述客觀世界的實體/概念以及及其之間的關系。以實體/概念為節點,以關系為邊,提供一種從關系的視角來看世界。
1960年,語義網路(Semantic Networks)作為知識表示的一種方法被提出,主要用於自言語言理解領域。它是一種用圖來表示知識的結構化方式。在一個語義網路中,信息被表達為一組結點,結點通過一組帶標記的有向直線彼此相連,用於表示結點間的關系。簡而言之,語義網路可以比較容易地讓我們理解語義和語義關系。
之前的語義網路受限於我們處理的方法,更多是依賴於專家的經驗規則去構建,在規模方面受限於特定領域的數據。大規模網路,谷歌在2012年首先提出知識圖譜的概念,在freebase的基礎上擴展了大量來自互聯網的實體數據和關系數據。據說目前實體的數據已經達到數十億級,有達到千億級的實例關系,規模是非常巨大的。
構成知識圖譜的核心是三元組:實體(Entity)、屬性(Attribute)和關系(Relation),可以表示為 <實體1,關系,實體2> 或 <實體1,屬性1,屬性值1>,例如:<Google,is-a,人工智慧公司>;<人工智慧公司,subclass,高料技公司>
基於已有的知識圖譜三元組,可以推導出新的關系。例如:<翅膀 part-of 鳥>,<麻雀kind-of 鳥>,可以推導出<翅膀 part-of 麻雀>。
1.2 知識圖譜的分類
通用知識圖譜 實際上是谷歌或者網路這樣的大型的互聯網公司在構建的,它主最主要是用於它的搜索引擎,它面向的是通用領域,它的用戶是全部的互聯網的用戶,它構建常識性的知識為主,包括結構化的網路知識,它強調的更多的是一種知識的廣度,對知識的深度方面不做更多的要求,它的使用者也是普通的用戶。
行業知識圖譜 面向一個特定的領域,它的數據來源是來源於特定行業的語料,它是基於行業的數據來構建,而且要有一定的行業的深度,它強調的是更多的是深度,而不是廣度,能夠解決行業人員的問題,它的使用者也是這個行業內的從業人員,或是這個領域裡面的專業人員來使用。
通用知識圖譜和行業知識圖譜,個並不是說完全互相獨立的,是具有互相互補性的關系。一方面,通用知識圖譜會不斷的吸納行業或者領域知識圖譜的知識,來擴充它的知識面,然後增加它的知識的廣度。同時,我們在構建一個行業知識圖譜或者領域知識圖譜的時候,實際上也並不是說只局限在這個領域的基本的數據,我們同時還要去通用知識圖譜裡面去吸納更多的常識性的知識來作為補充,只有這樣才能構成一個非常完整的行業知識圖譜。
『伍』 知識圖譜:方法、實踐與應用筆記-第2章 知識圖譜表示與建模
描述邏輯(description logic)是一簇知識表示的語言,其以結構化、形式化的方法來表示特定應用領域的知識.作為一類用於知識表示的形式化工具,描述邏輯在信息系統、軟體工程以及自然語言處理等領域得到了廣泛的應用[1].特別是在第三代Web——語義網(semantic Web)中,描述邏輯更是扮演著關鍵角色,並成為W3C推薦Web本體語言OWL的邏輯基礎 。
現代知識圖譜通常是以三元組為基礎進行簡單的知識表示,弱化了對強邏輯表示的要求。
基於向量的知識表示在現代知識圖譜中越來越收到重視,因為基於向量的知識圖譜表示可以使這些數據更易於和深度學習模型集成。
基於向量的知識表示: 知識表示學習的定義知識表示學習是將知識庫中的知識表示為低維稠密的實體向量,即Embedding。知識圖譜是由實體和關系組成,通常採用三元組的形式表示,【head(頭實體),relation(實體的關系),tail(尾實體)】,簡寫為(h,r,t)。知識表示學習任務就是學習h,r,t的分布式表示(也被叫做知識圖譜的嵌入表示(embedding))。
一階謂詞邏輯 :用變數和謂詞來表示知識。
霍恩子句 :帶有最多一個肯定文字的子句。有且只有一個肯定文字的霍恩子句叫做 明確子句 ,沒有任何肯定文字的霍恩子句叫做 目標子句
霍恩邏輯
語義網路 :三元組(節點1,聯想弧,節點2)
框架 :基本單元為類(槽,側面)。基本單元表示一類事物嗎?
描述邏輯 :一階邏輯的一個可判定子集,即每個描述邏輯中的命題都可以在有限時間內完成證明或證否,只有極少數的描述邏輯類型被認為是不可判定的。利用一階邏輯對語義網路和框架進行形式化後的產物?描述邏輯方法多數被用到涉及知識分類的應用領域,如數字圖書館和面向萬維網的信息處理。描述邏輯是當前 語義網 發展中 本體 的理論基礎。例如, OWL 網際網路 本體 語言就是一種描述邏輯 SHIOQ (D) 的語法形式。
一個描述邏輯系統中的名字可分為概念(concept),屬性(role)和個體(indivial)。例如,一個用描述邏輯描述的知識庫如下:
男人 人 (男人 是 人)
丈夫 男人 婚配於人 (丈夫是 婚配於 至少一個 人 的 男人)
男人(張三) (張三是一個男人)
其中,「男人」、「人」、「丈夫」是概念,「婚配於」是屬性,「張三」是個體
描述邏輯和一階謂詞邏輯的區別?
RDF/RDFS :DBpedia,Yago,Freebase
統一資源標識符 (英語: U niform R esource I dentifier,縮寫: URI )在 電腦 術語中是一個用於 標識 某一 互聯網 資源 名稱的 字元串 。
該種標識允許用戶對網路中(一般指 萬維網 )的資源通過特定的 協議 進行交互操作。URI的最常見的形式是 統一資源定位符 (URL),經常指定為非正式的網址。更罕見的用法是 統一資源名稱 (URN),其目的是通過提供一種途徑。用於在特定的 名字空間 資源的標識,以補充網址。
OWL/OWL2 : 我認為就是在RDF的基礎上再加一些約束。
OWL2QL為查詢設計的;OWL2EL提供多項式推理,專為概念屬於描述,本體的分類推理而設計,廣泛應用於生物醫療領域,如臨床醫療術語本體SNOMED CT;OWL2ET的分類復雜度是Ptime,用於推理(後兩個區別?)
查詢語言SPARQL
語義Markup表示語言 : 在網頁中嵌入語義Markup的方法和表示語言。主要包括JSON-LD、RDFa和HTML5 MicroData。
Freebase:對象-object、事實-Facts、類型-Types和屬性-Properties.
Wikidata:頁面-Page、實體-Entities、條目-Items、屬性-Properties、陳述-Statements、修飾-Qualifiers、引用-Reference等。
ConceptNet5:概念-Concepts、詞-Words、短語-Phrases、斷言-Assertions、關系-Relations、邊-Edges。包含21種預定義的、多語言通用的關系。
詞的向量表示方法:獨熱編碼、詞袋模型、詞向量
詞向量的產生方法中經典的額開源工具word2vec中包含兩個模型cBoW和Skip-gram。
cBoW和Skip-gram都是用來訓練word embeding的。
cBow和Bow的區別:Bow用於一段文本,是一種思想;cBow是把Bow的思想通過滑動窗口用於此向量的實現。
TransE是一個演算法,用於graph enbeding.
word enbeding是將文本變成向量;graph emdeding是將實體和關系變成向量。
思考如何從word embeding變成graph embeding?
代表性知識圖譜介紹:
1. SNOMED CT
SNOMED CT ( S ystematized No menclature of Med icine -- C linical T erms, 醫學系統命名法-臨床術語 , 醫學術語系統命名法-臨床術語 ),是一部經過系統組織編排的,便於 計算機 處理的 醫學 術語集 ,涵蓋大多數方面的 臨床信息 ,如 疾病 、所見、操作、 微生物 、 葯物 等。採用該術語集,可以協調一致地在不同的 學科 、 專業 和照護地點之間實現對於臨床數據的標引、存儲、檢索和聚合。同時,它還有助於組織 病歷 內容,減少臨床照護和科學研究工作中數據採集、編碼及使用方式的變異。(From wiki)
SNOMED CT目前包括大約321 900條概念(Concept)、超過80萬條臨床概念相關的描述(Descriptions),和超過700萬條進一步描述概念的關系(Relationships)。
SNOMED CT的主要內容包括概念表、描述表、關系表、歷史表、ICD映射表和LONIC映射表。其中核心構成是: 概念表(按層級結構組織的具有臨床含義的概念表)、描述表(用於表達概念的人類自然語言表)和關系表(用來說明的兩個臨床概念之間的關系) 。
『陸』 知識圖譜中的三元組遵從一種三階謂詞邏輯的表達形式
知識圖譜中的三元組遵從一種三階謂詞邏輯的表達形式。(對)
知識圖譜(Knowledge Graph),在圖書情報界稱為知識域可視化或知識領域映射地圖,是顯示知識發展進程與結構關系的一系列各種不同的圖形,用可視化技術描述知識資源及其載體,挖掘、分析、構建、繪制和顯示知識及它們之間的相互聯系。
知識圖譜,是通過將應用數學、圖形學、信息可視化技術、信息科學等學科的理論與方法與計量學引文分析、共現分析等方法結合,並利用可視化的圖譜形象地展示學科的核心結構、發展歷史、前沿領域以及整體知識架構達到多學科融合目的的現代理論。
它把復雜的知識領域通過數據挖掘、信息處理、知識計量和圖形繪制而顯示出來,揭示知識領域的動態發展規律,為學科研究提供切實的、有價值的參考。
迄今為止,其實際應用在發達國家已經逐步拓展並取得了較好的效果,但它在我國仍屬研究的起步階段。
『柒』 知識圖譜基礎組件RDF、RDFS、OWL
在知識圖譜中,一個語句可以看做是一個知識
舉個例子:貓是哺乳動物
每條知識標識為一個SPO三元組(Subject-Predicate-Object)
Subject : 主語
Predicate: 謂詞
Object :賓語
在「貓是哺乳動物」這條知識中
貓:主語
是:謂詞 用來描述或判定客體性質、特徵或者客體之間關系的詞項
動物:賓語
RDF(Resource Description Framework),資源描述框架,其本質是一個數據模型(Data Model)。它提供了一個統一的標准,用於描述實體/資源。RDF的作用就是描述上面提到的SPO三元組
將知識規范化之後,就是存儲和傳輸的問題
目前,RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等幾種。
下面介紹一種使用的最多的方式 Turtle
以偽滿皇宮博物院知識圖譜為例,網上有很多例子,自行參考
同一個實體的多個屬性可以緊湊表示,注意每一條後面末尾分號 ; 和逗號 . 的區別
在第一篇文章中說過,RDF在使用的時候還有很多局限性,這種局限體現在對事物的抽象能力上,舉個例子
貓是哺乳動物 ,這個知識在不同的語境中有不同的意思
這個時候簡單的
無法具體的區分要表示的是哪種意思
這時候就需要擴展規則 RDFS
還是以上面偽滿皇宮博物院為例
此時,我們就要區分實體和類的不同了,用RDFS描述下上面的知識圖譜
介紹下其中的幾個關鍵字
RDFS中還有很多關鍵字,如 rdfs:subClassOf 等,詳細可以參考 W3C文檔
相對於RDFS,可以更加細化圖譜中的關系
例如:其中 wwww.kg.com/persion/1 可以看做是一個實體羅納爾多, www.kg.com/place/10086 也是一個實體,代表羅納爾多的出生地,但是他是一個實體,不是羅納爾多實體的屬性,所以,數據之間有兩種關系
另外延伸想像,是不是可以讓數據具有推理能力,舉幾個例子
經過這樣的一些邏輯定義,就使得數據具有了邏輯推理能力,這些功能的擴展,可以通過OWL完成,具體的屬性見 W3C文檔
這樣經過修改後,上面的知識圖譜可以表示為
上例子中數據屬性和實體屬性分別用 owl:DatatypeProperty 和 owl:ObjectProperty 表示
OWL中還有很多其他適用於推理的欄位,下面列舉幾個
在融合數據的時候,OWL也可以去到很好的作用,例如:A的數據中定義的一個Person1,B的數據中定義了一個Person2,假如這兩個數據中定義的Person是一樣的,那麼當A數據和B數據融合的時候,就可以使用OWL很好的融合,避免數據的重復定義
本體映射主要有以下三種
OWL中這種關系描述的屬性定義,可以大大的增加推理機制,使海量的數據再處理的時候,不用一個一個的補全之間的關系,只要定義屬性關系就好
『捌』 知識圖譜可以用python構建嗎
知識圖譜可以用python構建嗎?
答案當然是可以的!!!
那麼如何使用python構建
什麼是知識圖譜
從Google搜索,到聊天機器人、金融風控、物聯網場景、智能醫療、自適應教育、推薦系統,無一不跟知識圖譜相關。它在技術領域的熱度也在逐年上升。
互聯網的終極形態是萬物的互聯,而搜索的終極目標是對萬物的直接搜索。傳統搜索引擎依靠網頁之間的超鏈接實現網頁的搜索,而語義搜索是直接對事物進行搜索,如人物、機構、地點等。這些事物可能來自文本、圖片、視頻、音頻、IoT設備等各種信息資源。而知識圖譜和語義技術提供了關於這些事物的分類、屬性和關系的描述,使得搜索引擎可以直接對事物進行索引和搜索。
知識圖譜是由Google公司在2012年提出來的一個新的概念。從學術的角度,我們可以對知識圖譜給一個這樣的定義:「知識圖譜本質上是語義網路(Semantic Network)的知識庫」。但這有點抽象,所以換個角度,從實際應用的角度出發其實可以簡單地把知識圖譜理解成多關系圖(Multi-relational Graph)。
那什麼叫多關系圖呢? 學過數據結構的都應該知道什麼是圖(Graph)。圖是由節點(Vertex)和邊(Edge)來構成,但這些圖通常只包含一種類型的節點和邊。但相反,多關系圖一般包含多種類型的節點和多種類型的邊。
本項目利用pandas將excel中數據抽取,以三元組形式載入到neo4j資料庫中構建相關知識圖譜。
運行環境
基於Neo4j能夠很容易構建知識圖譜,除了用neo4j自帶的cypher,也支持Python包py2neo創建節點和關系從而構建知識圖譜。本項目是基於發票信息,將發票數據中結構化數據抽象成三元組,分別創建節點和關系從而構建成知識圖譜。
具體包依賴可以參考文件requirements.txt
neo4j-driver==1.6.2numpy==1.15.3pandas==0.23.4parso==0.3.1pickleshare==0.7.5pluggy==0.8.0prompt-toolkit==1.0.15py==1.7.0py2neo==3Pygments==2.2.0pytest==3.9.3python-dateutil==2.7.5wcwidth==0.1.7wincertstore==0.2xlrd==1.1.0
將所需依賴安裝到pyton中:pip install -r requirements.txt
Pandas抽取excel數據
python中pandas非常適用於數據分析與處理,可以將excel文件轉換成dataframe格式,這種格式類似於Spark中的Dataframe結構,可以用類sql的形式對數據進行處理。
Excel數據結構如下
通過函數data_extraction和函數relation_extrantion分別抽取構建知識圖譜所需要的節點數據以及聯系數據,構建三元組。
數據提取主要採用pandas將excel數據轉換成dataframe類型
invoice_neo4j.py
建立知識圖譜所需節點和關系數據
DataToNeo4jClass.py
具體代碼請移步到GitHub上下載
詳細內容請到github下載,項目名neo4j-python-pandas-py2neo-v3
更多Python知識,請關註:Python自學網!!