喬青青,郝莉花*,馬江濤,羅莉,仝瑩瑩
1. 河南省產(chǎn)品質(zhì)量監(jiān)督檢驗院(鄭州 450000);2. 鄭州輕工業(yè)大學(xué)(鄭州 450000)
《食品安全法》明確提出我國對食品安全的管理由被動應(yīng)對向主動預(yù)防轉(zhuǎn)變,而預(yù)防機制基礎(chǔ)就是食品安全大數(shù)據(jù)的應(yīng)用[1]。
在我國,《關(guān)于“十三五”時期加強食品藥品監(jiān)管網(wǎng)絡(luò)安全和信息化建設(shè)的指導(dǎo)意見》等多個文件[2-4]要求推進食品安全大數(shù)據(jù)建設(shè)。
《中共中央國務(wù)院關(guān)于深化改革加強食品安全工作的意見》[5]中指出“完善抽檢監(jiān)測信息通報機制,依法及時公開抽檢信息”,這也為大數(shù)據(jù)在食品抽檢領(lǐng)域分析提供了政策支持。
自食品安全抽檢信息發(fā)布以來,目前已公布690萬余批次的抽檢結(jié)果[6],但傳統(tǒng)的數(shù)據(jù)分析較為簡單[7-8],無法滿足智能監(jiān)管的需求。
作為傳統(tǒng)的休閑食品,近年來炒貨制品的質(zhì)量問題也受到廣泛關(guān)注[9-11]。從公布的抽檢結(jié)果看[12-14],炒貨食品的不合格率較高,加強對炒貨食品監(jiān)管尤為重要。
網(wǎng)絡(luò)爬蟲技術(shù)可用于收集媒體網(wǎng)頁中的數(shù)據(jù),抓取有效信息并加以存儲[15]。Neo4j數(shù)據(jù)庫是一種以圖的形式來存儲信息的非關(guān)系存儲數(shù)據(jù)庫,相比傳統(tǒng)數(shù)據(jù)格式,Neo4j數(shù)據(jù)庫信息更加直觀[16-17]。知識圖譜(knowledge graph,KG)是以圖的形式表現(xiàn)客觀世界中的實體(概念、人、事物)及其之間關(guān)系的知識庫[18-20]。
此次研究以已公布炒貨食品抽檢數(shù)據(jù)為基礎(chǔ),建立基于Neo4j及Django食品可視化分析系統(tǒng),為智能化監(jiān)管提供技術(shù)支持。
數(shù)據(jù)來源主要從以下網(wǎng)站獲?。簢沂袌霰O(jiān)管管理局,http://www.samr.gov.cn/;國家市場監(jiān)督管理總局食品安全抽檢監(jiān)測司,http://www.samr.gov.cn/jg/sjzz/201812/t20181218_278197.html;食品科學(xué)網(wǎng),http://www.chnfood.cn/;中國食品安全網(wǎng),https://www.cfsn.cn/;食安通,http://www.eshian.com/。
操作系統(tǒng)為Ubuntu 16.04;開發(fā)語言為Python 3.5.2;數(shù)據(jù)庫為Neo4j和MySql;服務(wù)器為Django 1.11.8;前端相關(guān)API為Echarts,font-awesome,ChinaMap,dataTable和bootstrap等;Python相關(guān)API為pymsql,py2neo,PyTorch,jieba,spark,pytz和geoip等。
系統(tǒng)主要包括的數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)質(zhì)量控制、構(gòu)建知識圖譜、構(gòu)建系統(tǒng)整體模塊,見圖1。系統(tǒng)結(jié)構(gòu)見圖2。
圖1 系統(tǒng)整體模塊結(jié)構(gòu)圖
圖2 系統(tǒng)整體結(jié)構(gòu)圖
1.3.1 獲取數(shù)據(jù)模塊
獲取的數(shù)據(jù)模塊主要使用Scrapy爬蟲收集食品安全相關(guān)信息,收集食安通、國家市場監(jiān)督管理總局、各省份市場監(jiān)督管理局等網(wǎng)站上的各年食品抽檢不合格信息登記表。
1.3.2 數(shù)據(jù)清洗模塊
獲取數(shù)據(jù)后,需要進行數(shù)據(jù)清洗。數(shù)據(jù)清洗模塊包括刪除無分析價值抽檢數(shù)據(jù)(有些抽檢數(shù)據(jù)缺失值過多,無分析價值)和清理與食品無關(guān)的臟值數(shù)據(jù)。在無分析價值的抽檢數(shù)據(jù)處理時,抽檢數(shù)據(jù)中不合格各項和檢測結(jié)果缺失數(shù)據(jù)要進行刪除,被抽檢單位所在地缺失要進行填充,填充的方法為根據(jù)被抽檢企業(yè)和發(fā)布單位數(shù)據(jù)條中進行地點抽取。與食品無關(guān)的臟值數(shù)據(jù)處理,直接刪除即可。
1.3.3 數(shù)據(jù)質(zhì)量控制模塊
數(shù)據(jù)質(zhì)量控制需要人工和程序共同完成,人工發(fā)現(xiàn)數(shù)據(jù)的質(zhì)量出現(xiàn)問題,撰寫程序進行再清洗。
1.3.4 構(gòu)建知識圖譜模塊
知識圖譜構(gòu)建要對數(shù)據(jù)清洗完成后的數(shù)據(jù)進行實體抽取、關(guān)系抽取、屬性抽取、知識消歧、知識對齊、標(biāo)準(zhǔn)知識表示、知識驗證、導(dǎo)入Neo4j數(shù)據(jù)庫。
1.3.5 構(gòu)建Django模塊
使用Python的第三方庫django框架,構(gòu)建django項目。從Mysql中調(diào)用構(gòu)建好的數(shù)據(jù)集,并調(diào)用Neo4j中的數(shù)據(jù)接入項目接口。
在數(shù)據(jù)搜集階段項目借助Scrapy框架對食安通(www.eshian.com)、國家市場監(jiān)督管理總局、各省市場監(jiān)督管理局官網(wǎng)進行收集,共收集2016—2020年堅果與炒貨食品抽檢不合格信息登記表1 932條。
用scrapy框架收集到的堅果與炒貨食品數(shù)據(jù)多為csv表格文件,其內(nèi)容多包括標(biāo)稱生產(chǎn)企業(yè)名稱、標(biāo)稱生產(chǎn)企業(yè)地址、被抽樣單位名稱、被抽樣單位地址、食品名稱、規(guī)格型號、商標(biāo)、生產(chǎn)日期、不合格項目、檢驗結(jié)果、標(biāo)準(zhǔn)值、檢驗機構(gòu)、備注等。
根據(jù)分析需求,序號、商標(biāo)、備注列沒有分析價值,因此利用pandas庫讀取所有收集到的csv文件并刪除這3列。根據(jù)標(biāo)稱生產(chǎn)企業(yè)地址、被抽樣單位地址這2列可以分析出產(chǎn)品的生產(chǎn)地址。根據(jù)不合格項目、檢驗結(jié)果、標(biāo)準(zhǔn)值可獲得產(chǎn)品不合格項目的分類,因此增加2列,分別為不合格項目分類和產(chǎn)地。并對數(shù)據(jù)做進一步整理,得到包括產(chǎn)品名稱、型號規(guī)格、不合格項目分類、不合格項、年份、產(chǎn)地的數(shù)據(jù)列。
2.3.1 數(shù)據(jù)導(dǎo)入Neo4j數(shù)據(jù)庫
該模塊借助Neo4j數(shù)據(jù)庫,對食品抽檢信息分析模塊中的數(shù)據(jù)進行節(jié)點和關(guān)系的提取,將基礎(chǔ)數(shù)據(jù)整合成年份、產(chǎn)品類別、不合格產(chǎn)品、不合格項目、不合格項目分類、省份6個節(jié)點,依照節(jié)點間的關(guān)系生成知識圖譜json文件,通過Ajax技術(shù)在瀏覽器端生成知識圖譜,可以借助圖譜更加清晰地看到抽檢不合格數(shù)據(jù)之間的聯(lián)系。詳見圖3。
圖3 堅果及炒貨食品知識圖譜圖
在這個模塊中對數(shù)據(jù)按照地區(qū)、名稱、年份、超標(biāo)項目等維度進行統(tǒng)計處理,并且借助ChinaMap,Echarts等前端接口將統(tǒng)計結(jié)果以圖表的形式返回給用戶。從收集的堅果與炒貨的數(shù)據(jù)看,不合格指標(biāo)分為微生物、污染物、理化指標(biāo)、食品添加劑4個類別??梢暬故痉譃?個模塊,模塊數(shù)據(jù)可動態(tài)更新。
2.4.1 不合格省份展示
各省抽檢不合格情況采用3種方式展示,分別為柱狀圖、地圖、扇形圖展示,詳見圖4和圖5。從圖4和圖5中可以直觀看出:堅果與炒貨食品中不合格樣品批次較多的省份為廣東,其次為浙江、江蘇;不合格樣品較多的省份主要集中于南部地區(qū)。
圖4 生產(chǎn)省份抽檢不合格柱形圖
圖5 生產(chǎn)省份抽檢不合格扇形圖
2.4.2 各年度不合格情況表
該部分展示的為每年度的抽檢情況及不合格占比。2016—2020年,不合格批次較多的為2018年度,其次為2016年度。詳見圖6。
圖6 抽檢不合格批次年度分布表
2.4.3 不合格產(chǎn)品排名展示
該部分展示的為不合格批次較多的食品類別。從收集數(shù)據(jù)看,堅果與炒貨食品不合格批次較多的為魚皮花生、開心果、花生米等,詳見圖7。
圖7 抽檢不合格食品品種圖
2.4.4 超標(biāo)項目類別排名展示
通過此模塊,可展示出不合格的主要指標(biāo)分類,從目前收集數(shù)據(jù)看,堅果與炒貨食品中不合格率最高為理化指標(biāo),其次為微生物項目。詳見圖8。
圖8 抽檢不合格項目分類圖
通過系統(tǒng)的可視化展示,堅果與炒貨食品不合格批次較多的省份主要為廣東、浙江、江蘇等南部省份,主要是由于南部省份氣溫較高,堅果與炒貨食品作為高蛋白、高油脂的食品,在生產(chǎn)、運輸、貯藏及銷售過程中,若環(huán)境溫度或保存不當(dāng),易造成酸價、過氧化值超標(biāo)及微生物超標(biāo)。從不合格樣品看,不合格批次較多的為魚皮花生。魚皮花生是以花生、白糖、面粉為原料加工的食品,花生包裹在以面粉和白糖制作的外殼內(nèi)。魚皮花生不合格批次較多,有可能是由于該類產(chǎn)品在保存中易造成花生的品質(zhì)下降,也有可能是生產(chǎn)者在加工時選用品質(zhì)較差的花生,造成該類產(chǎn)品不合格批次較多。