曾紅艷 韋昌法
DOI:10.19850/j.cnki.2096-4706.2021.08.002
摘? 要:文章闡述了構建育兒知識圖譜的意義,對知識圖譜和圖數據庫Neo4j進行了簡要介紹。論述了育兒知識圖譜的構建思路,開展了育兒知識圖譜構建實踐,詳細介紹了育兒知識數據獲取、育兒知識數據處理、育兒知識數據存儲和育兒知識圖譜數據展示等過程?;贜eo4j的育兒知識圖譜構建實踐,為進一步構建基于知識圖譜的育兒知識服務系統,進而為用戶提供高效便捷的育兒知識服務奠定了堅實的基礎。
關鍵詞:知識圖譜;圖數據庫;Neo4j;育兒
中圖分類號:TP391.1? ? ? ?文獻標識碼:A 文章編號:2096-4706(2021)08-0005-04
Research and Practice on the Construction of Childcare Knowledge Graph
Based on Neo4j
ZENG Hongyan,WEI Changfa
(School of Information Science and Engineering,Hunan University of Chinese Medicine,Changsha? 410208,China)
Abstract:This paper expounds the significance of constructing childcare knowledge graph,and briefly introduces the knowledge graph and graph database Neo4j. It discusses the construction idea of childcare knowledge graph,carries out the construction practice of childcare knowledge graph,and introduces in detail the processes of childcare knowledge data acquisition,childcare knowledge data processing,childcare knowledge data storage and childcare knowledge graph data display,etc. The construction practice of childcare knowledge graph based on Neo4j has laid a solid foundation for further building a childcare knowledge service system based on knowledge graph and then provides users with efficient and convenient childcare knowledge services.
Keywords:knowledge graph;graph database;Neo4j;childcare
0? 引? 言
嬰幼兒時期是人生中體格和智力發育最快的階段,也是對疾病抵抗力較低的時期,而初為父母的家長普遍缺乏健康育兒知識[1]。因此如何向家長們全面而高效地傳播科學育兒知識,減少由于無知和不正確的育兒方式帶給兒童傷害,這是一個值得關注的問題。
目前,家長主要是從書籍、報紙、雜志和網絡上獲取育兒知識,也通過向老年人請教、與其他家長交流等人際傳播方式學習育兒知識。介紹育兒知識的書籍和報紙、雜志雖然不少,但是質量上卻良莠不齊;網絡媒體雖然已經成為家長最喜歡的育兒知識學習渠道,但是家長卻無法確認網絡媒體所提供的育兒知識的可信度,豐富的網絡育兒知識資源反而給家長們帶來了選擇上的困難[2,3]。因此,基于權威可靠的育兒知識來源開展育兒知識圖譜的構建研究,進而基于育兒知識圖譜為家長提供科學、健康的育兒知識服務,具有重要的價值和意義。
1? 知識圖譜和圖數據庫Neo4j簡介
谷歌公司2012年提出了知識圖譜這一新概念[4],它本質上是一種結構化的知識表示形式?,F實生活中的事物和關系可以借助知識圖譜的“實體、屬性和關系”來進行描述。隨著知識圖譜技術體系的不斷發展和完善,目前知識圖譜已經在電商、金融、媒體、醫藥和司法等眾多垂直領域得到廣泛應用[5]。
在醫療知識圖譜的構建方面,研究者已經開展了不少有意義的研究工作。例如,侯夢薇等人[6]針對醫療領域大數據專業性強且結構復雜等特點,對醫學知識圖譜架構和構建技術進行了剖析。俞思偉等人[7]提出了醫療知識圖譜的構建方法,以及將其應用于基于醫療知識庫的疾病輔助診斷系統的方法。
圖數據庫是一種非關系型數據庫,它是基于圖論實現的一種數據庫。不同于傳統的關系型數據庫將數據存在庫表字段中,圖數據庫將數據和數據之間的關系存在節點和邊中,稱之為“節點”和“關系”。Neo4j是一款知名的圖數據庫產品,它憑借嵌入式、高性能和輕量級等優勢,越來越受到關注[8]。
目前,基于知識圖譜技術來構建育兒知識圖譜的工作尚未見報道,因此筆者擬利用人工智能技術從多源異構的育兒知識來源中采集育兒知識,基于Neo4j圖數據庫構建育兒知識圖譜,為進一步構建基于知識圖譜的育兒知識服務系統奠定基礎。
2? 育兒知識圖譜構建思路
圖1展示了育兒知識圖譜構建思路。筆者首先通過查閱權威可靠的育兒書籍和相關文獻來了解育兒知識,梳理育兒知識體系;利用人工智能技術將電子版育兒書籍和文獻中的育兒知識提取為文本數據,并將采集到的育兒知識數據存儲到MySQL數據庫中,完成數據的結構化處理;借助Neo4j數據庫存儲育兒知識數據,構建育兒知識圖譜。
3? 育兒知識圖譜構建實踐
根據上述的育兒知識圖譜構建思路,筆者開展了育兒知識圖譜構建實踐,具體步驟包括:育兒知識數據獲取、育兒知識數據處理、育兒知識數據存儲和育兒知識圖譜數據展示。
3.1? 育兒知識數據獲取
為了確保育兒知識圖譜的質量,筆記從權威可靠的育兒書籍和相關文獻中獲取育兒知識。相關的權威育兒書籍包括:《兒科學:第9版(國家衛生健康委員會“十三五”規劃教材)》《中醫兒科學:第10版(全國中醫藥行業高等教育“十三五”規劃教材)》和《美國兒科學會育兒百科:第7版》。相關的權威文獻包括:WS/T 678-2020《嬰幼兒輔食添加營養指南》(中華人民共和國衛生行業標準)、《嬰幼兒喂養與營養指南》(中華預防醫學會兒童保健分會發布)等。
通過查閱上述權威育兒書籍和文獻,根據家長所關心的育兒問題,將育兒知識分為營養知識、穿著知識、保健護理知識、生長發育知識、兒童教育知識和常見兒科疾病知識等六大類。
利用人工智能技術將電子版育兒書籍和文獻中的育兒知識提取為文本數據,具體過程為:利用Python編程技術對電子版育兒書籍和文獻進行處理,如果能夠從電子版文檔中直接復制文本,則快速復制出文本;如果無法從電子版文檔中直接復制文本,則對文檔進行截圖處理,將育兒知識條目保存為圖片文件,并調用百度AI開發平臺的通用文字識別功能對圖片文件進行文字識別,從而獲取育兒知識文本數據。
3.2? 育兒知識數據處理
上述的育兒知識數據獲取步驟獲得的是育兒知識文本數據,為了構建育兒知識圖譜,需要對這些數據進行結構化處理。利用Python編程技術從育兒知識文本數據中提取出育兒知識條目,將知識條目歸入營養知識、穿著知識、保健護理知識、生長發育知識、兒童教育知識和常見兒科疾病知識中的某一類別。
因筆者將基于Neo4j來構建育兒知識圖譜,而Neo4j存儲的數據主要有兩類,即節點和關系,故育兒知識數據存入MySQL數據庫進行結構化處理時,MySQL數據庫表設計為節點表和關系表兩大類。節點表如表1所示,包含id、node_name和node_category屬性;關系表如表2所示,包含id、id_start、node1_name、id_end、node2_name和relationships屬性。
3.3? 育兒知識數據存儲
將MySQL數據庫中的育兒知識數據以CSV文件格式導出,然后將整理好的節點CSV文件和節點關系CSV文件通過Cypher語言導入到Neo4j數據庫中,構建出存儲育兒知識的知識圖譜,為進一步構建基于知識圖譜的育兒知識服務系統奠定基礎。
從MySQL數據庫中導出的CSV文件的SQL語句形式及詳細說明:
select * from 數據庫表 into outfile '導出的目錄和文件名' character set gbk fields terminated by '字段間分隔符' optionally enclosed by '字段包圍符';
#into outfile '導出的目錄和文件名'命令用來指定導出的目錄和文件名。
#fields terminated by '字段間分隔符'命令是對字段間的分隔符進行定義。
#optionally enclosed by '字段包圍符'命令指出包圍非數值型字段的字符。
從MySQL數據庫中導出的CSV文件如圖2所示。
最后通過Cypher LOAD CSV命令將所有CSV文件導入Neo4j數據庫中,共計1 239個節點數據和2 086個關系數據。利用Neo4j的Python API包py2neo連接好Neo4j數據庫后,即可將所有節點和關系文件載入Neo4j,以導入“寶寶”節點和“對象”關系為例,其命令格式為:
graph = Graph("http://localhost:7474", username="neo4j",password="123456")#連接Neo4j
#1.節點文件載入
cql='''USING PERIODIC COMMIT 100 LOAD CSV FROM 'file:///baby_info.csv' AS line CREATE (g:寶寶 { baby_id:? line[0], node_name: line[1], node_cate: line[2],baby_stage: line[3], baby_age_message: line[4]? });'''
result = graph.run(cql)
print(result,"寶寶實體 存儲成功")
#2.關系文件的載入
cql='''USING PERIODIC COMMIT 300 LOAD CSV FROM 'file:///baby_age_info.csv' AS line MATCH (a:寶寶), (m:年齡) WHERE a.baby_id = line[1] AND m.idbaby_age = line[3] CREATE (a) - [r:對象{relationships:line[5]}] -> (m) RETURN r;'''
result = graph.run(cql)
print(result,"寶寶<-->年齡 存儲成功")
表3對部分知識圖譜實體類型進行了說明,表4對部分知識圖譜關系屬性類型進行了說明。
3.4? 育兒知識圖譜數據展示
育兒知識圖譜構建完成后,即可在圖數據庫Neo4j的瀏覽器端查看構建知識圖譜的成果。如圖3所示,Neo4j瀏覽器端將不同的實體類別用不同的顏色進行區分,其中第1種顏色節點表示育兒信息實體,第2種顏色節點表示年齡實體,第3種顏色節點表示兒童營養實體,第4種顏色節點表示兒童穿著屬性實體,第5種顏色節點表示保健護理屬性實體,第6種顏色節點表示生長發育屬性實體,第7種顏色節點表示教育屬性實體,第8種顏色節點表示兒科疾病屬性實體。連接育兒信息實體與屬性實體之間的邊則表示相應的育兒階段所包含的各方面育兒知識,這在一定程度上模擬了查閱“育兒百科”的過程。
Neo4j數據庫提供了Cypher語言對數據庫進行CRUD(Create,Read,Update,Delete)操作,從而實現對育兒知識的快捷檢索和遍歷等功能,為進一步構建基于知識圖譜的育兒知識服務系統奠定基礎。
4? 結? 論
本文研究了一種基于Neo4j的育兒知識圖譜構建方法,通過查閱權威可靠的育兒知識來源,對育兒知識體系進行梳理,利用人工智能技術將電子版育兒書籍和文獻中的育兒知識提取為文本數據,將采集到的育兒知識數據存儲到MySQL數據庫中,完成數據的結構化處理,借助Neo4j數據庫存儲育兒知識數據,實現育兒知識圖譜的構建。筆者將進一步利用命名實體識別和關系抽取技術自動從育兒知識數據中抽取實體與關系,以擴充現有的知識圖譜,并構建基于知識圖譜的育兒知識服務系統,為廣大用戶提供權威可靠、高效便捷的育兒知識服務。
參考文獻:
[1] 李沛霖,王茜,劉凱佳.淺析健康育兒知識普及中存在的問題及對策——基于傳播學的角度 [J].改革與開放,2017(5):53-57.
[2] 柏瑩,周彤.關于幼兒家長利用新媒體平臺學習的調查 [J].現代交際,2019(8):15-16.
[3] 張晨.育兒微信公眾號與城市家長育兒理念及策略研究——以渭南市臨渭區為例 [J].今傳媒,2021,29(4):24-28.
[4] 漆桂林,高桓,吳天星.知識圖譜研究進展 [J].情報工程,2017,3(1):4-25.
[5] 劉燁宸,李華昱.領域知識圖譜研究綜述 [J].計算機系統應用,2020,29(6):1-12.
[6] 侯夢薇,衛榮,陸亮,等.知識圖譜研究綜述及其在醫療領域的應用 [J].計算機研究與發展,2018,55(12):2587-2599.
[7] 俞思偉,范昊,王菲,等.基于知識圖譜的智能醫療研究 [J].醫療衛生裝備,2017,38(3):109-111+126.
[8] 楊振,萬為清.圖數據庫的研究和應用 [J].電腦編程技巧與維護,2020(12):91-93.
作者簡介:曾紅艷(1998—),女,漢族,湖南婁底人,本科在讀,研究方向:醫學信息工程;通訊作者:韋昌法(1982—),男,壯族,廣西巴馬人,副教授,博士研究生在讀,研究方向:中醫智能輔助診療。
收稿日期:2021-04-15
基金項目:湖南省自然科學基金資助項目(20 20JJ4461);湖南省教育廳資助科研項目(20B431)