趙同明 錢佳琛 王翔 蔣效偉 楊玉
收稿日期:2023-08-20
基金項目:全國高等院校計算機基礎教育研究會教學研究項目(2023-AFCEC-307);江蘇省計算機學會教學類項目(JSCS2022028);江蘇省大學生創(chuàng)新創(chuàng)業(yè)項目(202211641027Z);江蘇海洋大學教學改革項目(JGX2022033)
DOI:10.19850/j.cnki.2096-4706.2024.06.002
摘? 要:為滿足人們對健康飲食知識的了解,文章采用網(wǎng)絡爬蟲工具在權(quán)威飲食網(wǎng)站上獲取數(shù)據(jù),對數(shù)據(jù)進行預處理后批量導入Neo4j數(shù)據(jù)庫中,構(gòu)建飲食知識圖譜,在此基礎上設計并實現(xiàn)問答系統(tǒng)。首先針對用戶提出的問題進行問題理解,再基于Spark環(huán)境的樸素貝葉斯分類器訓練出的問題模板,通過匹配的結(jié)果從Neo4j數(shù)據(jù)庫中獲取問題的答案。知識圖譜與健康飲食的結(jié)合既滿足了人們對健康飲食的不斷追求,也增進了人們對傳統(tǒng)醫(yī)學中“藥食同源”理論的理解。
關(guān)鍵詞:知識圖譜;健康飲食;網(wǎng)絡爬蟲;樸素貝葉斯;問答系統(tǒng)
中圖分類號:TP311? ? 文獻標識碼:A? 文章編號:2096-4706(2024)06-0007-04
Research on the Construction of Healthy Diet Knowledge Graph and Q&A System
ZHAO Tongming, QIAN Jiachen, WANG Xiang, JIANG Xiaowei, YANG Yu
(School of Computer Engineering, Jiangsu Ocean University, Lianyungang? 222005, China)
Abstract: In order to meet people's understanding of healthy diet knowledge, this paper uses web crawler tools to obtain data on authoritative diet websites, preprocesses the data, and then imports it in batches into the Neo4j database to construct a diet Knowledge Graph. Based on this, a Q&A system is designed and implemented. Firstly, understand the questions raised by users, and then use the problem template trained by the Naive Bayes classifier in the Spark environment to obtain the answers to the questions from the Neo4j database through the matched results. The combination of Knowledge Graph and healthy diet not only satisfies people's continuous pursuit for healthy diet, but also enhances their understanding of the theory of“medicine and food are the same source”in traditional medicine.
Keywords: Knowledge Graph; healthy diet; web crawler; Naive Bayes; Q&A system
0? 引? 言
民以食為天,健康尤為先。食物是人類賴以生存的物質(zhì)基礎,科學合理的飲食有助于人體的健康成長。智慧的中華民族很早就意識到這一點,利用食物中的營養(yǎng)物質(zhì)強身健體甚至還能輔助治療一些病癥[1]。隨著現(xiàn)代社會的快速發(fā)展和人們對健康的重視,如何進行健康飲食成為人們關(guān)注的內(nèi)容。因此,設計一款面向大眾的智能健康飲食問答系統(tǒng)就顯得很有必要。通過該系統(tǒng)用戶可以更加全面地了解飲食信息,為用戶提出的飲食問題給予快速而準確的反饋,讓用戶吃的明白放心、科學合理。從學科專業(yè)的角度講,健康飲食知識圖譜的構(gòu)建,可以完善飲食領(lǐng)域的行業(yè)知識圖譜,為飲食領(lǐng)域的深入研究打好堅實的數(shù)據(jù)基礎。
知識圖譜概念由Google公司在2012年正式提出,但是其發(fā)展的歷程卻遠遠超過10年,甚至可以追溯到20世紀60年代的語義網(wǎng)絡。語義網(wǎng)絡是由著名心理學家Quillian提出的知識有向圖,利用節(jié)點來表示實體,利用弧來表示所連接實體之間的關(guān)系[2]。通過語義網(wǎng)絡的使用,簡化了復雜的知識結(jié)構(gòu),但同時也存在缺乏統(tǒng)一行業(yè)標準等缺點[3,4]。2012年,谷歌公司根據(jù)先前收購的Freebase的技術(shù)基礎上,重新設計了模式層,最終提出了知識圖譜的概念,目的是提高搜索引擎工作的效率。自知識圖譜的概念提出以來,已經(jīng)在搜索引擎、聊天機器人、問答系統(tǒng)等方面得到了廣泛的應用[5-8]。以“知識圖譜”和“飲食”為關(guān)鍵字,在萬方數(shù)據(jù)搜索期刊論文共有30余篇,但僅有數(shù)篇符合真正的搜索意圖。耿化聰?shù)韧ㄟ^構(gòu)建知識圖譜引入菜品間的語義信息作為重要推薦依據(jù),提出一種基于知識圖譜嵌入和協(xié)同過濾的個性化飲食推薦算法[9]。陳瑩瑩等通過對文獻進行統(tǒng)計分析,得出了營養(yǎng)素養(yǎng)教育干預的理論和實踐體系還有待深入開展等相關(guān)結(jié)論[10]。上述相關(guān)文獻雖然將知識圖譜應用于飲食的相關(guān)研究,但關(guān)注點多集中在個性化飲食推薦或美食研究,缺乏在健康飲食問答方面的應用。
“知識圖譜”是“人工智能”相關(guān)課程的重要內(nèi)容,將飲食健康與知識圖譜結(jié)合起來,既能讓學生認識到人工智能對人類生活的深刻影響,也能讓學生充分了解傳統(tǒng)醫(yī)學中“藥食同源”的重要理論。這種結(jié)合,既能激發(fā)學生的學習興趣與熱情,使他們更好地理解與掌握知識圖譜在相關(guān)領(lǐng)域的重要作用,又能潛移默化的領(lǐng)悟中華文明的悠久歷史與博大精深。
1? 健康飲食知識圖譜的構(gòu)建
1.1? 飲食知識數(shù)據(jù)采集
為了獲取構(gòu)建知識圖譜必備且可靠的數(shù)據(jù),本文利用網(wǎng)絡爬蟲八爪魚采集器作為數(shù)據(jù)采集工具,以《中醫(yī)飲食營養(yǎng)學》作為飲食問答系統(tǒng)的數(shù)據(jù)支撐[11]。該書上篇介紹了中醫(yī)飲食領(lǐng)域內(nèi)的一些基本理論,包括發(fā)展歷史、食物間的搭配宜忌、中醫(yī)飲食的內(nèi)容特點等。中篇介紹了一些常用食物,從該食物的性、味、歸經(jīng)、簡介、功效和現(xiàn)代研究等,并對食物做出類別的劃分。下篇介紹了常用保健食品,分別闡述了食品的做法、功效和按語等。該書對于知識圖譜中實體屬性的劃分有著很大的參考和指導意義。
利用八爪魚采集器對《中醫(yī)飲食營養(yǎng)學》網(wǎng)絡站點實行數(shù)據(jù)采集,并且將獲取的數(shù)據(jù)存入txt文件中。最終得到了近4 500行原始數(shù)據(jù),經(jīng)人工梳理,得到了包含辛溫解表類、消導類、辛涼解表類、健脾和胃類、清熱瀉火類、清熱生津類、清熱解毒類、化痰止咳平喘飲食、健脾化濕類、清熱涼血類、利尿類、通便類、活血類、止血類、補氣類、補血類、助陽類、滋陰類和其他類總共100多項食物詞條及142項癥狀詞條。
1.2? 知識圖譜的構(gòu)建
1.2.1? 知識圖譜設計
在進行知識圖譜結(jié)構(gòu)設計時,在表示形式方面,三元組是知識圖譜的一種通用表示形式,由2個具有語義連接關(guān)系的實體和實體間的關(guān)系組成。本文依據(jù)食物及其熟悉的特點,以實體—屬性名—屬性值的形式或者實體—對應關(guān)系—實體的形式存儲在Neo4j圖數(shù)據(jù)庫中。
根據(jù)食物實體之間屬性和關(guān)系,本文在Neo4j數(shù)據(jù)庫中創(chuàng)建了food(食物)、genre(類別)、symptom(癥狀)三種節(jié)點標簽,xing(食物性)、wei(食物味)、name(食物名字)、attention(食用注意)、effect(食物功效)、introduction(食物簡介)、meridian tropism(食物歸經(jīng))的實體屬性以及食物實體所屬類別、食物對應癥狀兩個實體間的關(guān)系。
1.2.2? 原始數(shù)據(jù)處理
為了適應Neo4j圖數(shù)據(jù)庫csv的導入格式,本文從原始數(shù)據(jù)集data.txt抽取了多種實體,包含食物、類別和癥狀等實體,分別生成不同的實體集合。食物對應癥狀實體集中包含sid和sname兩個實體屬性,食物類別實體集中包含gid和gname兩個實體屬性。不僅是實體,還要創(chuàng)建實體與實體間關(guān)系。包含食物實體與類別實體間的“屬于”關(guān)系和食物實體與癥狀實體間的“應用”關(guān)系??偣矂?chuàng)建了5個csv文件:food.csv(食物實體集)、genre.csv(類別實體集)、symptom.csv(癥狀實體集)、food_genre.csv(食物-類別)、food_symptom.csv(食物-癥狀)。
1.2.3? 數(shù)據(jù)導入
Neo4j圖數(shù)據(jù)庫支持將數(shù)據(jù)格式轉(zhuǎn)變成csv文件并利用load csv直接導入的方式,本系統(tǒng)采用load csv批量導入的方式。在數(shù)據(jù)庫的本地瀏覽器窗口將所有的csv文件批量導入。在Neo4j中可以構(gòu)建如圖1所示的健康飲食知識圖譜,該圖譜共有3種節(jié)點標簽、269個節(jié)點、兩種關(guān)系類型和12個屬于節(jié)點的屬性。
2? 健康飲食問答系統(tǒng)設計
本問答系統(tǒng)主要由健康飲食知識圖譜構(gòu)建和問答系統(tǒng)實現(xiàn)兩個部分組成。健康飲食知識圖譜的構(gòu)建主要是知識圖譜構(gòu)建模塊,問答系統(tǒng)則包含三個模塊:人機交互模塊、問題理解模塊和問題解答模塊,如圖2所示。
圖2? 健康飲食問答系統(tǒng)功能模塊圖
在知識圖譜構(gòu)建模塊,首先要進行數(shù)據(jù)收集,選定好飲食相關(guān)的資料作為整個系統(tǒng)的數(shù)據(jù)來源;然后對收集來的數(shù)據(jù)進行預處理,包括實體、實體屬性和實體間關(guān)系的處理;最后生成csv文件批量導入Neo4j數(shù)據(jù)庫,完成對飲食知識圖譜的構(gòu)建。
在人機交互模塊,主要目的是要達到人機交互式問答的效果,包括前端的設計、前后端的數(shù)據(jù)管理和系統(tǒng)框架的搭建。
在問題理解模塊,將用戶提出的原始問題轉(zhuǎn)化成分類模型可識別的問題,包括對原始問題中的實體劃分、提取和替換,完成用戶意圖識別。
在問題解答模塊,將問題理解模塊中的輸出結(jié)果,進行樸素貝葉斯分類模型的分類,轉(zhuǎn)化成最終系統(tǒng)可識別問題,利用Cypher語句,經(jīng)過數(shù)據(jù)庫查詢,最終輸出用戶問題答案。
3? 健康飲食問答系統(tǒng)實現(xiàn)
3.1? 人機交互模塊實現(xiàn)
在人機交互模塊,主要是完成前端的設計和SpringBoot框架的搭建。前端主要使用HTML、CSS框架和jQuery技術(shù),并使用Ajax來管理前后端數(shù)據(jù)的相互傳輸,此外還使用到Thymeleaf技術(shù)渲染項目。
為了讓問答系統(tǒng)的答案展現(xiàn)更為清晰直觀,使用D3可視化工具結(jié)合Neo4j數(shù)據(jù)庫,對所有的食物實體、食物屬性和實體間的關(guān)系進行前端可視化,用戶可選擇節(jié)點或文字兩種方式進行查看。
3.2? 問題理解模塊實現(xiàn)
在問題理解任務實現(xiàn)中,主要實現(xiàn)的是對原始問題進行意圖識別和實體提取。本文采用SpringBoot框架集成HanLp分詞器,利用HanLp分詞器完成關(guān)鍵字提取和詞法標注,通過自定義詞性標注,便于關(guān)鍵字的提取。提取后,通過自定義的食物、食物類別和癥狀表,實現(xiàn)抽象替換,最終轉(zhuǎn)變成樸素貝葉斯模型可識別的問題類型。
3.3? 問題解答模塊實現(xiàn)
在問題解答任務實現(xiàn)中,運用到基于模板匹配的方法,根據(jù)之前的調(diào)查得到的問題模板的參考數(shù)據(jù),將問題模板總結(jié)到一個文件中,并且準備每一類問題的不同問法,利用樸素貝葉斯模型不斷地訓練。將識別的問題與模板進行一一匹配,得到最適應的問題模板。再通過連接數(shù)據(jù)庫后獲取最終用戶所需要的答案。
3.4? 問答系統(tǒng)展示
3.4.1? 問答機器人
啟動SpringBoot框架進入程序主界面。系統(tǒng)會設置一個對話小機器人——小five,通過與小five聊天的方式,用戶可以獲取自己所提問題的結(jié)果。用戶將問題輸入問題框并點擊提交,系統(tǒng)會針對該問題進行分析,并給出合適的答案。以提問食物的功效為例,輸入“香蕉有什么功效”,系統(tǒng)會給出“清熱,潤腸,解毒,止痛”的答案。以提問癥狀有哪些食物可以緩解為例,如輸入“高血壓病患飲食推薦”,系統(tǒng)首先對用戶提出的問題進行分詞和關(guān)鍵字提取,匹配問題模板,然后連接數(shù)據(jù)庫反饋相應答案。問答機器人界面如圖3所示。
圖3? 健康食物問答界面
3.4.2? 可視化圖譜
健康飲食可視化界面分為兩種:節(jié)點可視化和文字可視化。在輸入框中輸入食物名稱,系統(tǒng)會自動高亮顯現(xiàn)出有關(guān)食物的所有節(jié)點,并讓其他節(jié)點灰暗,在界面的右下角顯示該食物的介紹信息。以查詢蜂蜜為例,輸入“蜂蜜”,系統(tǒng)會自動顯現(xiàn)出蜂蜜相關(guān)的節(jié)點,并在界面的右下角顯示蜂蜜的介紹內(nèi)容,“蜂蜜”的文字可視化效果如圖4所示。
4? 結(jié)? 論
本文以健康飲食問答為研究對象,在構(gòu)建飲食知識圖譜的基礎上,設計并實現(xiàn)了健康飲食知識問答系統(tǒng)。實驗采用網(wǎng)絡爬蟲工具在官方網(wǎng)站上獲取數(shù)據(jù),對原始數(shù)據(jù)進行預處理后,根據(jù)食物中的數(shù)據(jù)映射關(guān)系,抽取實體、實體屬性和實體間的關(guān)系,利用Neo4j中的導入語句批量導入Neo4j圖數(shù)據(jù)庫,構(gòu)建飲食知識圖譜。問答系統(tǒng)采用SpringBoot框架搭建并集成Neo4j圖數(shù)據(jù)庫和HanLp分詞器。HanLp分詞器完成用戶問題關(guān)鍵字提取和詞法標注,通過自定義的食物、食物類別和癥狀表,實現(xiàn)抽象替換,最終轉(zhuǎn)變成貝葉斯模型可識別的問題類型,然后基于模板匹配的方法輸出問題答案。將人們普遍關(guān)注的飲食健康與“知識圖譜”結(jié)合起來,既增加了人們對人工智能的直觀理解,也強化了人們對“藥食同源”理論的認識。
參考文獻:
[1] 王新功,劉波.中醫(yī)養(yǎng)生中的飲食療法 [J].食品工業(yè),2021,42(4):521.
[2] 王俊,高煒.基于多元語義網(wǎng)絡的民族信息資源庫構(gòu)建研究 [J].蘇州科技大學學報:自然科學版,2018,35(3):74-78.
[3] 黃合水,方菲.廣告的演變及其本質(zhì)——基于1622條教科書廣告定義的語義網(wǎng)絡分析 [J].新聞與傳播研究,2019,26(12):84-96+128.
[4] 張棟豪,劉振宇,郟維強,等.知識圖譜在智能制造領(lǐng)域的研究現(xiàn)狀及其應用前景綜述 [J].機械工程學報,2021,57(5):90-113.
[5] JI S X,PAN S R,CAMBRIA E,et al. A Survey on Knowledge Graphs:Representation,Acquisition,and Applications [J].IEEE Transactions on Neural Networks and Learning Systems,2022,33(2):494-514.
[6] MIN W Q,LIU C L,Xu L Y,et al. The Development and Applications of Food Knowledge Graphs in the Food Science and Industry [J/OL].arXiv:2107.05869 [cs.CV].[2023-07-28].https://arxiv.org/abs/2107.05869v2.
[7] 黃微,盧國強,趙旭.基于知識圖譜的微博主題演變路徑研究 [J].情報理論與實踐,2022,45(3):173-181.
[8] 葉俊民,宋家琦,張珂,等.一種知識圖譜增強的在線評測系統(tǒng)習題推薦算法研究[J].小型微型計算機系統(tǒng),2023,44(11)2558-2565.
[9] 耿化聰,梁宏濤,劉國柱.基于知識圖譜與協(xié)同過濾的飲食推薦算法 [J].計算機與現(xiàn)代化,2021(8):24-29.
[10] 陳瑩瑩,仝貝貝,康曉鳳,等.國際營養(yǎng)素養(yǎng)研究熱點的可視化知識圖譜分析 [J].職業(yè)與健康,2021,37(13):1826-1830.
[11] 翁維健.中醫(yī)飲食營養(yǎng)學 [M].上海:上海人民出版社,2008.
作者簡介:趙同明(1999—),男,漢族,江蘇揚州人,本科,主要研究方向:軟件工程;通訊作者:楊玉(1979—),女,漢族,江蘇揚州人,副教授,博士,主要研究方向:智能信息處理。