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