構建知識圖譜-初學 - IT人

文章推薦指數: 80 %
投票人數:10人

本文內容源自medium文章A Knowledge Graph understanding and implementation tutorial for beginners[1]目錄什麼是知識圖譜?如何搭建一個簡單的知識 ... Togglenavigation IT人 IT人 構建知識圖譜-初學 周若梣發表於 2020-05-18 本文內容源自medium文章 AKnowledgeGraphunderstandingandimplementationtutorialforbeginners[1] 目錄什麼是知識圖譜?如何搭建一個簡單的知識圖譜? 什麼是知識圖譜? 知識圖譜的內容通常以三元組形式存在,Subject-Predicate-Object(spo)。

舉個例子: LeonardNimoywasanactorwhoplayedthecharacterSpockinthescience-fictionmovieStarTrek 對上面的句子可以抽取到如下三元組: 以知識圖譜形式可以表示為: 上述由節點和關係組成的圖,就是一個簡單的知識圖譜。

如何搭建一個簡單的知識圖譜? 可以分為以下兩大步驟: 知識提取 資訊抽取,獲取三元組 實體識別、實體連結、實體消歧(Disambiguation)、實體統一(EntityResolution) 圖構建 儲存 查詢 知識提取步驟是構建知識圖譜的關鍵,三元組可以通過依存分析得到。

動手構建一個簡單知識圖譜 此處只顯示程式碼執行過程與結果,完整程式碼請見github. 1.三元組提取 藉助spacy inputText='Startupcompaniescreatejobsandinnovation.BillGatessupportsentrepreneurship.' #Step1:KnowledgeExtraction.Output:SOPtriples knowledgeExtractionObj=KnowledgeExtraction() sop_list=knowledgeExtractionObj.retrieveKnowledge(inputText) #list_sop=sop_list.as_doc() sop_list_strings=[] forsopinsop_list: temp=[] temp.append(sop[0].text) temp.append(sop[1].text) temp.append(sop[2].text) sop_list_strings.append(temp) print(sop_list_strings) 結果 2.實體連結 #Step2:Entityrecognitionandlinking.Thisstepneedstobelinked. entityRecognitionLinkingObj=EntityRecognitionLinking() entityRelJson=entityRecognitionLinkingObj.entityRecogLink(inputText) entityLinkTriples=[] forsopinsop_list_strings: tempTriple=['','',''] forresourceinentityRelJson['Resources']: ifresource['@surfaceForm']==sop[0]: tempTriple[0]=resource['@URI'] ifresource['@surfaceForm']==sop[1]: tempTriple[1]=resource['@URI'] ifresource['@surfaceForm']==sop[2]: tempTriple[2]=resource['@URI'] entityLinkTriples.append(tempTriple) print(entityLinkTriples) 結果 3.圖構建 使用neo4j #Step3:KnowledgeGraphcreation. graphPopulationObj=GraphPopulation() graphPopulationObj=graphPopulationObj.popGraph( sop_list_strings,entityLinkTriples) 最終得到圖如下: 可能遇到的問題 Q1 AuthError:Theclientisunauthorizedduetoauthenticationfailure. 解決辦法: 確保圖資料庫配置時密碼一致與設定的一致(以下配置表示,user:neo4j,password:neo4j) config.DATABASE_URL='bolt://neo4j:[email protected]:7687'#default Q2 ServiceUnavailable:Failedtoestablishconnectionto('127.0.0.1',7687)(reason[WinError10061]由於目標計算機積極拒絕,無法連線。

) 解決辦法: 確保在執行圖建立程式碼前已經開啟neo4j 有問題歡迎留言,一起交流 [1]https://medium.com/analytics-vidhya/a-knowledge-graph-implementation-tutorial-for-beginners-3c53e8802377 [2]https://github.com/kramankishore/Knowledge-Graph-Intro [3]https://neomodel.readthedocs.io/en/latest/getting_started.html#connecting [4]https://www.analyticsvidhya.com/blog/2019/10/how-to-build-knowledge-graph-text-using-spacy/ 相關文章 Python初學者手冊(14) 2020-10-26 Python DNS域名解析學習瞭解作用以及如何配置內附案例可跟做適合初學者 2020-10-27 高效解決Failedtoopenzipfile.Gradle‘sdependencycachemaybecorrupt(Android初學者遇到的問題—gradle的地址配置與安裝) 2020-11-01 人工智慧AndroidGradle Vue初學 2020-11-02 Vue 初學Go語言變數 2020-11-03 Go 初學者css每日總結 2020-11-04 CSS 初學者疑惑:C語言中,函式反覆呼叫會有什麼問題? 2020-11-05 藍海創意雲丨Houdini15迷你破碎教程——一個讓初學者很有成就感的小教程 2020-11-06 類UNIX作業系統家族發展時間線圖譜(1969-2020) 2020-11-08 2020年資料與人工智慧行業圖譜 2020-11-08 人工智慧 【自用】彙編初學筆記#1 2020-11-10 正規表示式(初學) 2020-11-11 初學docker部署springboot專案 2020-11-17 DockerSpring c語言初學者氣泡排序 2020-11-17 告軟體測試初學者:入門需掌握的知識點 2020-11-19 初學計算機語言者(C語言,C++,java,pytion,C#) 2020-11-21 JavaC++C# 沒有黑眼圈的小浣熊初學Java基礎的筆記(一) 2020-11-21 Java 網路程式設計初學 2020-11-21 初學vue遇到importedmultipletimesimport/no-duplicates問題 2020-11-22 Vue 最新文章 FlexJobs:遠端工作調查 [HackerNews週報]效能持續分析工具;資料庫必須知道的那些事;Spark與K8s整合新動向 H5實現生成urlscheme並從H5跳轉到小程式 視覺化基礎:已知2點座標,如何求旋轉角度? Golang仿雲盤專案-2.2檔案查詢資訊介面 通用查詢的抽象 【ASP.NETCore】自定義的配置源 程式分析與優化-10指令級並行 智慧指標思想實踐(std::unique_ptr,std::shared_ptr) 一文深入淺出學習Spring框架系列,強烈推薦 .NET自定義認證雖然簡單,但好用 ReentrantLock公平鎖原始碼第2篇



請為這篇文章評分?