田猛 高淑賢 李祝君 李雨 王顯龍






摘要:隨著社會的不斷發展,人們經濟水平的不斷提高,人們對生活品質的要求也在不斷增高,在飲食方面,越來越多的人更愿意且享受自己動手做飯的現狀,為解決這一問題,文章設計了一種便攜式智能菜譜推薦系統。該系統主要包括智能推薦模塊、智能語音模塊以及用戶管理模塊。智能推薦系統會通過用戶的瀏覽記錄及其口味偏好,向用戶推薦菜譜。極大程度上便利了用戶動手制作的過程,在提高用戶的生活質量上具有很強的應用價值。
關鍵詞:智能菜譜;Android平臺;推薦系統
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)11-0055-03
1 引言
隨著社會的發展,快節奏的生活席卷全國,在大中城市的人們加班開始增多,時間緊張,并且大多數人廚藝粗淺甚至完全不會,他們會選擇在外就餐、訂外賣或是購買速凍食品[1]。長此以往,便會存在一些問題,一方面有些餐廳或外賣餐食會使用大量的調味品,長期食用會對身體健康造成一定的負擔,另一方面也不能體會到經過自己辛勤勞動后得到美食的這種成就感[2]。針對上述問題,本文利用Java語言和大數據等相關知識及技術,設計實現了基于Android平臺的智能菜譜推薦系統。該系統不但具有較強的可實用性,而且具有良好的應用價值和廣闊的發展前景,可以方便用戶的日常生活,給用戶更好的生活體驗。
2 系統設計
2.1 系統需求
該系統主要為廚藝不精而長期點外賣或外出就餐的用戶進行智能菜譜推薦,可以根據用戶的口味和偏好向用戶推薦其喜愛的菜譜做法。推薦功能需求分析如下:首先,系統會存儲用戶的注冊登錄信息及喜好品味信息、不同菜式信息、菜式屬性以及評價信息到數據庫系統中。然后系統根據數據庫中用戶對各種菜譜的評分以及使用過的歷史菜譜進行分析,得到用戶的口味偏好。最后,系統會采用協同過濾、矩陣相乘等算法來獲取與用戶喜好相似度高的菜譜,并把結果反映給用戶,并出現在用戶的推薦列表中,而且用戶還可以對使用過的菜譜進行評分,評分次數越多,系統推薦的菜譜準確率會越高。
2.2 系統架構
本系統架構包括表示層(UI) 、業務邏輯層(BLL) 、數據訪問層(DAL) 。系統總體架構圖如圖1所示,表示層主要包括Web瀏覽器和Android系統;業務邏輯層的菜譜推薦是系統對用戶進行智能推薦的具體操作;業務邏輯層的智能語音系統是指用戶通過語音交流了解并學習菜譜。數據訪問層是數據庫的主要操控系統,數據庫中的系統數據是實時更新的菜譜數據,通過表示層的菜譜管理提交菜譜信息到業務邏輯層的菜譜管理,菜譜管理會根據提交的需求進行相應的處理,同時會調用數據訪問層中的數據庫,來實現數據的增加、刪除、修改、查詢等操作,并把操作結果反饋到業務邏輯層[3]。
2.3 智能語音系統模塊
本文設計的便攜式智能菜譜使用了智能語音技術[4]。智能語音系統先通過語音識別(ASR)形成文檔,然后對其進行自然語音理解(NLU)形成Meannicontext,再利用對話管理(DM)產生Action,最后經過語音生成NLG將Action轉化文字,并利用TTS技術與用戶進行交流,其工作過程如圖2所示。
2.4 菜譜推薦系統模塊
智能菜譜推薦系統模塊使用了協同過濾推薦算法,此算法通過對用戶搜索歷史和學習菜譜的數據進行挖掘,并分析用戶的口味,然后根據不同的偏好對用戶進行群組劃分并推薦其愛好的菜譜。該算法的原理如圖3所示。該推薦算法分為基于用戶的協同過濾和基于標記物的協同過濾,先計算出用戶對物的喜愛度,然后生成個性化推薦[5]。
2.4.1 基于用戶的協同過濾
基于用戶的協同過濾的核心思想是將與該用戶最相似的用戶喜歡的標記物推薦給該用戶。用戶u對標記物s的喜好度sim(u,s)采用公式(1)計算。其中,u是與該用戶最相似的用戶集合,score(ui,s)是用戶ui 對標記物s的喜好度,sim(u,ui)是用戶ui與用戶u的相似度。
sim(u,s)=ui,Usim(u,ui)×score(ui,s)? ? ? ?(1)[4]
2.4.2 基于標記物的協同過濾
基于標記物的協同過濾的核心是計算出每個標記物最相似的標記物列表,然后根據這個列表向用戶推薦與其喜愛的標記物相似的標記物。用戶u對標記物s的喜好度sim(u,s)采用公式(2)計算。其中,s是所有用戶操作過的標記物的列表,score(u,si)是用戶u對標記物si的喜好度,sim(si,s)是標記物si與s的相似度。
Sim(u,s)=[si,Sscore(u,si)×sim(si,s)]? ? ? ? ? ? ?(2)[4]
2.4.3 利用矩陣相乘向用戶推薦菜譜
在用戶行為矩陣中,第i行第j列的元素代表了用戶i對標記物j的偏好,將該矩陣記為,其中n是用戶數,m是標記物數;將標記物之間的相似度矩陣記為,和都是稀疏矩陣,最后通過計算這兩個矩陣的乘積,為用戶推薦喜愛的菜譜,如公式(3)所示。
Rn×m=An×m*Sm×n? ? ? ? ? ? ? ?(3) [4]
3 功能實現
本文設計的智能菜譜推薦系統App主要功能包括啟動功能、搜索功能、最近瀏覽功能、收藏功能以及分類查詢功能。
3.1 啟動功能
運行智能菜譜時,在歡迎界面中設置一個線程Handler,并在該線程中放入一張關于美食主題的圖片,圖片的顯示時間為3秒,可以選擇跳過或者等待3秒,然后會直接跳轉到智能菜譜推薦系統的主要應用界面中,可以看到今日推薦的菜譜,進入主界面后需要在應用程序的清單列表中進行注冊,作為第一個執行的活動窗口,接下來將會調用數據庫中的菜譜分類表進行數據的獲取,再進行數據分析,并將當前分類表中的圖片名稱、分類名稱進行解析,最后通過主界面以圖片和文字的形式顯示。
3.2 搜索功能
通過對數據庫的分析得到全部菜譜信息之后,可以在本菜譜系統主界面最上方的搜索框中進行菜譜搜索的功能性操作,在本系統的搜索框中輸入想要搜索的菜譜名稱,點擊搜索圖片(放大鏡)調用數據庫里面的數據,若查詢到數據庫中存在該菜譜的數據信息,便會將該菜譜顯示在當前界面,若在數據庫中沒有查詢到關于此菜譜的信息,系統將直接給出沒有當前菜譜的提示。
3.3 最近瀏覽功能
用戶在查看各種菜譜詳情信息時,每查看一種菜譜時都會將所看到的菜譜信息保存到Cookie中,Cookie是一個用來存儲客戶端瀏覽信息數據的數據字段,Cookie是由服務器端生成的,所有的瀏覽過的菜譜信息將會自動保存到Cookie中,用戶點擊最近瀏覽菜譜界面時本系統會讀取Cookie里面保存的數據,并將數據通過listview的形式進行顯示,所以當用戶想尋找以前瀏覽過的菜譜但是忘記收藏時,可以在該用戶的個人主頁界面找到最近瀏覽一欄,查看以前瀏覽過的菜譜信息。
3.4 收藏功能
用戶在查看當前菜譜信息時可以將該菜譜進行收藏的功能性操作。點擊收藏按鈕就可以將喜歡的菜譜進行收藏,已收藏的菜譜也可以取消收藏,已收藏的菜譜可以在收藏菜譜功能模塊中查看,系統會通過mkdir命令將當前收藏的菜譜數據信息保存到數據庫中,取消收藏是在數據庫里面通過執行drop命令將當前的菜譜信息數據在數據庫中進行刪除的操作,因此,收藏功能中涉及mkdir(創建)命令、drop (刪除)語句,系統是通過對菜譜信息的創建和刪除來完成菜譜收藏功能的實現。收藏菜譜功能是通過從數據庫中查詢是否存在該菜譜數據信息,再將庫中存在的數據以listview的形式顯示在當前界面中,當數據庫里面顯示該菜譜信息數據為空時,收藏菜譜界面中也會顯示為空,系統將會直接給出沒有當前信息的提示。
3.5 查看詳情功能
菜譜查看詳情功能是需要聯網之后通過從聚合數據接口中進行數據獲取來實現的,啟動圖在進行跳轉之前需要對系統是否連接互聯網進行檢測,如果正常連接網絡就可以直接獲取所有菜譜的數據信息,并將所有菜譜信息通過listview列表的形式進行顯示。點擊某一個菜品類別后可以查看全部菜譜信息,菜品信息詳情里面包括菜譜的圖片,菜譜的名稱,菜譜的簡介,菜譜可能需要用到的食材,菜譜的歷史來源以及該菜譜的制作步驟等信息,菜譜詳情界面中顯示的圖片都需要使用PDF轉換器壓縮法進行圖片壓縮處理,并以PNG格式保存,目的是保證圖片的正常加載和真實性。在菜譜詳情中還可以進行收藏菜譜和分享菜譜的功能性操作,在制作菜品的時候就可以根據菜譜中顯示的所需食材和制作步驟等信息來制作該菜品。
4 系統測試
4.1 系統測試環境及運行環境
本系統測試客戶端所使用的硬件設備為Redmi 10 pro,其基本配置信息為8G內存、MIUI12.5操作系統,服務端使用的硬件設備為筆記本電腦,其基本配置信息為8G內存、I7-8565U CPU、Windows10(64位)操作系統。本文設計的系統在Android平臺上運行。
4.2 測試流程
軟件安裝與使用前必須要進行聯動調試,需要進行基本的檢查操作,查看運行過程中的各項指標是否處于正常范圍。針對手機端進行多種軟件的使用測試,用于檢測手機軟件的使用是否出現報錯的情況,目的是測試本文設計系統的可用性,如圖4所示。
4.2.1 App安裝測試
App安裝測試由三部分組成:在應用商城中下載本軟件,使用安全軟件檢測軟件的安全性,進行App的安裝和運行,并測試其是否可以進行用戶注冊、用戶登錄、修改密碼、搜索菜譜等功能。
4.2.2 App升級測試
升級測試的主要內容包括在線升級、安裝及使用。為證明App的所有權,驗證簽名是否一致。測試跨版本升級是否正常,能否跨多個版本更新。在應用軟件中升級App,即在一個新系統內升級本軟件,需要檢查App的可用性。
4.2.3 App功能測試
功能測試主要是功能邏輯測試:測試App在點開并使用瀏覽、搜索等功能時,會不會出現邏輯錯誤(如打開其他的網頁模塊等) ;在進行功能點測試(單元測試) 時會不會出現搜索無法查詢等問題。
4.2.4 手機流量、電量、內存測試
使用測試監控軟件來觀察本文設計的App在不同時間內通過使用相同功能,來對比分析使用所耗的流量、電量以及App內存占用情況,實時測試的數據如表1所示。
5 結束語
綜上所述,便攜式智能菜譜系統基本實現了傳統菜譜App的主要功能,并向用戶展示了比較良好的功能界面。而且該系統利用大數據統計提供給用戶不同地區、不同時節、不同年齡人群所喜愛的菜譜,并且會通過用戶的數據為用戶智能地推薦菜譜。此外該系統擁有語音功能,通過語音交流方便用戶了解菜譜,簡易方便,可操作性強,是一款安全實用的智能菜譜系統。
參考文獻:
[1] 戴靜,馬奇奇,王帥,等.基于Android的智能順風訂餐系統的設計與實現[J].科技風,2019(34):27.
[2] 陳雅雪.基于家庭美食健康服務理念的智能調料機設計[J].科技與創新,2020(6):132-133.
[3] 汪麗娟,錢育蓉.基于Android的菜譜個性化推薦系統的設計與開發[J].電腦知識與技術,2017,13(20):81-82,100.
[4] 潘鋒.智能語音控制系統設計與研究[J].電子設計工程,2019,27(22):6-9,14.
[5] 劉靖凱.基于深度隨機游走的協同過濾推薦算法[J].科學技術創新,2021(6):93-94.
收稿日期:2022-02-25
基金項目:安徽省大學生創新創業訓練計劃項目(項目編號:S202011305034)
作者簡介:田猛(2001—) ,男,安徽淮北人,本科在讀,研究方向為大數據技術;高淑賢(2000—) ,女,安徽宿州人,本科在讀,研究方向為大數據技術;李祝君(2001—) ,女,安徽安慶人,本科在讀,研究方向為大數據技術;李雨(1998—) ,男,安徽宿州人,本科在讀,研究方向為大數據技術;王顯龍(1991—) ,男,安徽亳州人,通信作者,碩士,研究方向為計算機視覺、大數據。