基于WEB的個性化商品推薦系統(tǒng)_第1頁
基于WEB的個性化商品推薦系統(tǒng)_第2頁
基于WEB的個性化商品推薦系統(tǒng)_第3頁
基于WEB的個性化商品推薦系統(tǒng)_第4頁
基于WEB的個性化商品推薦系統(tǒng)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

本科畢業(yè)設(shè)計(論文)題目:基于WEB的個性化商品推薦系統(tǒng)的設(shè)計與實現(xiàn)I頁第1章緒論1.1概述在信息化高速發(fā)展,大數(shù)據(jù)與人工智能技術(shù)逐漸成為主導(dǎo)的時代,越來越多的人利用計算機知識來方便自己的生活。電商行業(yè)的發(fā)展,使得人們可以實現(xiàn)足不出戶就能夠買到自己喜愛的商品,隨著智能上網(wǎng)設(shè)備的普及,越來越多的人也學(xué)會了網(wǎng)上購物,據(jù)不完全統(tǒng)計,中國目前有大約七億多人在進行網(wǎng)上購物,市場是非??捎^的,同時也給商家節(jié)約成本的機會,用戶也能夠以更加實惠的價格買到自己心儀的產(chǎn)品。面對如此多的用戶,提升用戶的購物體驗來留住市場就是一件勢在必行的事情了。隨著購物平臺上的商品信息也越來越多,如何能夠讓用戶能夠快速的挑選到自己喜愛的商品就成了人們研究的難題。所以研發(fā)了基于WEB的個性化商品推薦系統(tǒng),該系統(tǒng)能夠根據(jù)每個人不同的喜好和購物習(xí)慣,分析出用戶想買以及比較感興趣的商品信息,為用戶提供個性化的推薦服務(wù)[2]。1.2課題研究背景與意義1.2.1課題研究背景隨著信息化的高速發(fā)展,我國的網(wǎng)上購物產(chǎn)業(yè)在近幾年得到了很好的發(fā)展。需要進行購物的人只需要在家里面,擁有網(wǎng)絡(luò),以及一個電腦,或者手機就可以像逛街一樣瀏覽與購買自己喜愛的商品。不管什么時候,只要你下單,快遞就會在兩三天內(nèi)送到你的手上,非常的方便,給消費者創(chuàng)造了一個非常完美的購物方式,同時也推動了經(jīng)濟的發(fā)展。但是,隨著人們購物要求的提高,簡單的購物功能已經(jīng)不能滿足于人們的日常需要了[1]。面對網(wǎng)上花樣繁多的商品信息,消費者會想如果能夠很快的找到自己喜歡的東西就好了。所以,在那么多繁雜的信息中能夠很快的找到自己想要并且喜愛的東西便成為了一個難題。1.2.2課題意義在大數(shù)據(jù)主導(dǎo),電子商務(wù)高速發(fā)展的時代,網(wǎng)上的購物信息層出不窮,花樣繁多。用戶可能一時之間難以從眾多商品中挑選出自己喜愛的東西,而且,對于部分用戶來說,逛購物網(wǎng)站的時候并沒有明確的目標(biāo)自己要買什么,這時候一個商品個性化推薦系統(tǒng)就顯得尤為重要了。不僅可以根據(jù)用戶的喜好和需求來推薦用戶喜歡的東西將會方便用戶的使用,也促進電商行業(yè)的發(fā)展。1.3國內(nèi)外研究概述電商行業(yè)目前在國內(nèi)的發(fā)展可以說是如日中天,隨著各大購物網(wǎng)站的興起,足不出戶就實現(xiàn)人們的日常購物需求已經(jīng)是一件很常見的事情了。正是由于巨大的用戶數(shù)量,為了使用戶的購物體驗增加,各大平臺都有特定的部門正對購物智能推薦進行研究,并不斷的完善更新[6]。到今天為止,已經(jīng)有很多相關(guān)技術(shù)研究出來,但使用最多的則是搜索引擎和分類目錄的技術(shù)。搜索引擎可以讓用戶輸入自己想要內(nèi)容的關(guān)鍵詞,就搜索出與關(guān)鍵字相關(guān)的東西,可搜索技術(shù)也不是萬能的,有的用戶并不明確自己的需求,甚至都不知道搜索什么,這時搜索引擎技術(shù)的功能可能就不是萬能的了。于是在搜索引擎技術(shù)基礎(chǔ)上研究出了推薦系統(tǒng),可以更加智能的為用戶進行推薦,用戶甚至都不用去進行輸入關(guān)鍵字來進行搜索,這項技術(shù)的關(guān)鍵就是要去分析用戶的歷史搜索技術(shù)或者是用戶停留時間比較長的內(nèi)容,再對這一數(shù)據(jù)進行總結(jié)分析,數(shù)據(jù)建模等一系列操作,就可以分析出用戶比較感興趣的內(nèi)容,進而推薦給用戶,達到智能化個性推薦的目的。在這一技術(shù)的發(fā)展下,國內(nèi)的電商平臺大多都是采用這一模式,不止電商平臺,大多數(shù)的軟件都有應(yīng)用這一算法來使自己的軟件更加受到消費者的喜歡。這個算法就是根據(jù)用戶的歷史記錄來進行一個分析,最后得出用戶最近的喜好,還能根據(jù)用戶以往的搜索記錄來推測出用戶對什么東西比較感興趣,進而推薦用戶感興趣的內(nèi)容。但在目前,這一技術(shù)還不是特別的完美,仍然有很多需要進步和研究的地方,所以我希望能以我的理解做一個基于WEB的個性化商品推薦系統(tǒng)。期間,參考了不少別人的優(yōu)秀文章以及科研成果,來完成這一系統(tǒng)。在未來,個性化推薦系統(tǒng)還將繼續(xù)發(fā)展,功能變得更加的強大和完美。1.4論文組織結(jié)構(gòu)第1章:緒論。主要對基于WEB的個性化商品推薦系統(tǒng)的國內(nèi)外研究現(xiàn)狀與其研究意義和發(fā)展情況做了簡單的介紹,同時給出了本論文的組織結(jié)構(gòu)。第2章:對基于WEB的個性化商品推薦系統(tǒng)做了簡單介紹,并且介紹了系統(tǒng)開發(fā)所使用的各個技術(shù)棧以及開發(fā)工具和運行平臺,同時與其他類似技術(shù)棧進行了簡單對比,分析了選用技術(shù)棧的原因,同時還介紹了系統(tǒng)的架構(gòu),系統(tǒng)的各個模塊與服務(wù)。第3章:從社會、技術(shù)、操作三個不同方面對基于WEB的個性化商品推薦系統(tǒng)進行了可行性分析,并且對系統(tǒng)進行了需求分析建模,包含功能分析,系統(tǒng)用例圖繪制與用例描述。第4章:從系統(tǒng)實現(xiàn)原則、系統(tǒng)架構(gòu)體系、類圖、順序圖以及活動圖、數(shù)據(jù)庫設(shè)計,全面的介紹了基于WEB的個性化商品推薦系統(tǒng)的整體設(shè)計。第5章:圖文并茂,從功能介紹、業(yè)務(wù)設(shè)計、模塊設(shè)計、功能實現(xiàn)方面全面介紹了基于WEB的個性化商品推薦系統(tǒng)的各個功能的實現(xiàn)細節(jié),并展示了最終實現(xiàn)效果圖。第6章:利用不同的方法,從功能測試與非功能測試兩個方向?qū)ο到y(tǒng)進行了全面的測試,找出了系統(tǒng)已存或可能潛伏的一些問題與bug,并進行改進與修復(fù),最后給出了詳細的測試報告。第7章:回顧整個過程,對系統(tǒng)的設(shè)計與實現(xiàn)進行了總結(jié),并從內(nèi)部算法、外部功能、整體架構(gòu)等多個方面對系統(tǒng)進行了分析,給出了目前系統(tǒng)還可以優(yōu)化完善的地方,給予展望。

第2章系統(tǒng)技術(shù)介紹2.1基于WEB的個性化商品推薦系統(tǒng)的介紹基于WEB的個性化推薦系統(tǒng)架構(gòu)總體分為前端用戶可視化模塊和后端部分,后端部分推薦模塊使用Scala語言編寫,業(yè)務(wù)模塊使用SpringBoot編寫,項目采用maven聚合工程搭建,根據(jù)業(yè)務(wù)性質(zhì)可以大致分為:綜合業(yè)務(wù)部分:負責(zé)推薦結(jié)果查詢、商品檢索、商品評分、商品標(biāo)簽、人臉識別與賬號密碼登錄注冊;推薦模塊:包含數(shù)據(jù)加載、離線推薦、實時推薦、基于內(nèi)容的推薦、基于物品的協(xié)同過濾推薦;日志采集服務(wù):用戶對商品就行評分操作,會在綜合業(yè)務(wù)模塊進行評分流消息整合并進行日志埋點,將日志寫到指定路徑下的文件中。Flume會監(jiān)聽該文件,當(dāng)探測到有新日志寫入,F(xiàn)lume會采集日志,將評分流傳入kafka;消息緩沖服務(wù):采用kafka作為消息隊列,F(xiàn)lume將采集的日志寫入kafka,kafka做消息緩沖并對數(shù)據(jù)進行預(yù)處理;為了方便數(shù)據(jù)處理,綜合業(yè)務(wù)服務(wù)采用非關(guān)系型數(shù)據(jù)庫MongoDB。需要給實時推薦提供預(yù)備數(shù)據(jù),為了提高其響應(yīng)速度,系統(tǒng)采用Redis作為緩存數(shù)據(jù)庫。為了在海量數(shù)據(jù)下可以檢索更快,關(guān)鍵詞匹配更精確,選用ElasticSearch進行全文檢索。2.2系統(tǒng)的技術(shù)介紹2.2.1ScalaScala運行于Java平臺(Java虛擬機),它不僅是一種多范式的編程語言,其設(shè)計的初衷就是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性,而函數(shù)編程范式更適合用于Map/Reduce和大數(shù)據(jù)模型,它摒棄了數(shù)據(jù)與狀態(tài)的計算模型,著眼于函數(shù)本身,而非執(zhí)行的過程的數(shù)據(jù)和狀態(tài)的處理[3]。Scala相較于Java復(fù)雜繁瑣的API,它的顯得更簡潔優(yōu)雅,讓開發(fā)者精力更多集中在業(yè)務(wù)處理。并且采用函數(shù)式編程,簡單,非常適合用于處理基于不變數(shù)據(jù)的批量處理工作,這些工作基本都是通過map和reduce操作轉(zhuǎn)換數(shù)據(jù)后,生成新的數(shù)據(jù)副本,然后再進行處理,而且兼容現(xiàn)有的Java程序,可以訪問龐大的Java類庫,例如:操作mysql、redis、freemarker、activemq等等。并且Scala語言表達能力強,一行代碼抵得上Java多行,開發(fā)速度快;Scala是靜態(tài)編譯的,所以和JRuby,Groovy比起來速度會快很多。本系統(tǒng)由于會使用到大數(shù)據(jù)以及機器學(xué)習(xí)相關(guān)的內(nèi)容,因此選擇了Scala語言編寫推薦模塊的實現(xiàn)更合適。至于系統(tǒng)的綜合業(yè)務(wù)模塊,依舊選擇Java開發(fā),并選擇了主流框架SpringBoot。2.2.2SpingBoot本系統(tǒng)綜合業(yè)務(wù)模塊采用Java語言編寫,采用了當(dāng)前主流的框架SpringBoot。SpringBoot簡化了開發(fā)環(huán)境配置,相較于Spring繁瑣的配置更方便,讓開發(fā)人員可以把精力更多的集中在業(yè)務(wù)開發(fā)而不是環(huán)境搭建;并且SpringBoot內(nèi)置了Tomcat服務(wù)器,可以直接運行。SpringBoot相當(dāng)于是對Spring又一層封裝,它提供了很多start,start自動依賴于版本控制,利用它大量的自動化配置,可以做到開箱即用。2.2.3SparkSpark,目前運用廣泛的的大數(shù)據(jù)計算框架。Spark包含了大數(shù)據(jù)領(lǐng)域常見的各種計算框架,比如:SparkCore用于離線計算,SparkSQL用于交互式查詢,SparkStreaming用于實時流式計算,SparkMLlib用于機器學(xué)習(xí),SparkGraphX用于圖計算,Spark主要用于大數(shù)據(jù)的計算,而Hadoop以后主要用于大數(shù)據(jù)的存儲(比如HDFS、Hive、HBase等),以及資源調(diào)度(Yarn),Spark+Hadoop的組合,是大數(shù)據(jù)領(lǐng)域最熱門的組合,解決了大數(shù)據(jù)領(lǐng)域中,離線批處理、交互式查詢、實時流計算、機器學(xué)習(xí)與圖計算等最重要的任務(wù)和問題[4]。2.2.4推薦算法采用好的推薦算法可以根據(jù)用戶的行為特征更精確地找到與其匹配的商品集。系統(tǒng)采用統(tǒng)計推薦,在商品搜索過濾時可以給用戶推薦熱門商品、綜合評分優(yōu)質(zhì)商品;當(dāng)用戶登錄后,采用離線推薦和實時推薦為用戶推薦個性化商品集,離線推薦服務(wù)會在后臺被周期性調(diào)度計算,當(dāng)用戶進行評分等行為操作,會采集日志重新進行實時推薦計算;進入商品詳情頁,會采用基于內(nèi)容推薦算法和基于物品的協(xié)同過濾為用戶推薦其相似商品[12]。2.3系統(tǒng)工具介紹2.3.1系統(tǒng)開發(fā)平臺系統(tǒng)開發(fā)工具采用IDEA,全稱IntelliJIDEA,是Java語言的集成開發(fā)環(huán)境,IDEA在業(yè)界被公認為是最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的[5]。IDEA可以根據(jù)自己喜好設(shè)置自己喜歡的字體、界面主題,包含豐富的插件,可以幫助高效地完成開發(fā),并且擁有高度智能的代碼智能補全功能,還可以設(shè)置代碼模板,這些使得開發(fā)效率更高。系統(tǒng)接口的測試主要通過Postman工具并配合谷歌瀏覽器進行,在前端未完成時可以先通過Postman訪問每一個需要測試的接口,輸入不同的數(shù)據(jù)看是否能得到想要的結(jié)果;在前端完成后,進行前后端聯(lián)調(diào),由前端發(fā)起請求看是否能完整顯示結(jié)果。2.3.2運行環(huán)境用戶操作系統(tǒng):windowsXP、windows7、windows8、windows10等。服務(wù)器操作系統(tǒng):Centos7.x。Java版本:JDK1.8。Scala版本:2.x。瀏覽器:Chrome、Edge等數(shù)據(jù)庫:MongoDB數(shù)據(jù)庫、Redis數(shù)據(jù)庫。第3章基于WEB的個性化推薦系統(tǒng)需求分析3.1可行性分析3.1.1社會可行性當(dāng)下社會信息化高速發(fā)展,各大電子商務(wù)平臺信息過載,對于用戶如何快速從眾多商品中選出自己喜歡且對自己有價值的東西也是一大問題,因此開發(fā)一款好的個性化商品推薦系統(tǒng)是十分必要的。3.1.2技術(shù)可行性本系統(tǒng)后端推薦模塊采用Scala語言編寫,采用了Spark、推薦相關(guān)算法,綜合業(yè)務(wù)模塊采用Java語言編寫。每個技術(shù)都具有豐富的生態(tài)圈,且廣泛應(yīng)用于各個互聯(lián)網(wǎng)公司,開發(fā)便捷安全,具有廣泛的實際用途。并且在技術(shù)選型上充分考慮其系統(tǒng)的各個特點而選擇了比較合適的技術(shù)棧,這在技術(shù)上是完全可行的。3.1.3操作可行性現(xiàn)如今近乎人人都有手機,主力消費軍的年輕人也基本人手一臺電腦或者平板,只需要在手機或者電腦瀏覽器通過域名訪問即可,所以在如今社會基本沒有什么難度。操作也是完全可行的。3.2需求分析建模3.2.1功能分析基于WEB的個性化商品推薦系統(tǒng)是一款可以根據(jù)用戶的相關(guān)行為操作,記錄用戶的行為喜好信息并給予用戶個性化推薦的系統(tǒng)。系統(tǒng)主要包好推薦功能和綜合業(yè)務(wù)功能。推薦功能包含:1、統(tǒng)計推薦:在商品搜索過濾時可以給用戶推薦熱門商品、綜合評分優(yōu)質(zhì)商品。2、離線推薦:當(dāng)用戶登錄后,采用離線推薦在首頁為用戶推薦個性化商品集,離線推薦服務(wù)會在后臺被周期性調(diào)度計算[11]。3、當(dāng)已登錄用戶進行評分等行為操作,會采集日志重新進行實時推薦計算并將推薦結(jié)果集展示在首頁。4、基于內(nèi)容的物品推薦:在商品詳情頁推薦與該商品相似的商品集。綜合業(yè)務(wù)包含:1、商品檢索:根據(jù)輸入關(guān)鍵字進行商品檢索。2、登錄注冊:用戶可以進行人臉識別與賬號密碼的登錄認證與注冊。3、商品評分:對商品進行打分,記錄埋點日志,向kafka推流到推薦模塊進行實時推薦處理。4、工程調(diào)度:離線統(tǒng)計服務(wù)調(diào)度配置、離線推薦服務(wù)調(diào)度配置。3.2.2繪制系統(tǒng)用例圖本平臺就只有用戶一種角色。此系統(tǒng)中的用戶在沒登錄時可以進行商品瀏覽,可以登錄注冊,可以采用人臉識別與賬號密碼登錄兩種形式;登錄后可以享用系統(tǒng)的個性化商品推薦服務(wù),首頁會采用離線推薦與實時推薦給用戶進行個性化推薦;用戶進行搜索過濾時會采用統(tǒng)計推薦給用戶推薦熱門商品、綜合評分優(yōu)質(zhì)商品;首頁輪播圖會展示最近熱門商品。如圖3-1所示。圖3-1系統(tǒng)用例圖3.2.3用例描述1)登錄用例,如表3.1所示表3-1登錄用例用例名登錄參與者用戶前置條件用戶進入登錄界面主事件流輸入對應(yīng)的賬號和密碼/人臉識別登錄系統(tǒng)會根據(jù)用戶輸入的賬號和密碼進行判斷。如果賬號不存在,系統(tǒng)會提示用戶不存在,如果密碼錯誤,系統(tǒng)會提示密碼錯誤。人臉識別登錄,通過人臉庫對比查詢注冊用戶登錄失敗后重新輸入賬號和密碼或則重新人臉識別。如果認證成功,則進入系統(tǒng)界面后置條件登錄成功,進入我的頁面2)注冊用例,如表3.2所示表3-2注冊用例用例名注冊參與者用戶前置條件用戶進入注冊頁面主事件流用戶輸入賬號和密碼系統(tǒng)對賬號進行查重,如果數(shù)據(jù)庫中已經(jīng)存在該賬號,則提示用戶已存在,并返回重新注冊。用戶提交注冊信息,為用戶創(chuàng)建賬號,否則不做修改。賬號注冊成功直接跳轉(zhuǎn)人臉錄入,錄入成功直接跳轉(zhuǎn)人臉識別登錄;若錄入失敗會3次重試,若人臉識別登錄失敗跳轉(zhuǎn)賬號密碼登錄后置條件注冊成功,或未注冊成功3)離線推薦用例,如表3-3所示表3-3離線推薦用例用例名離線推薦參與者用戶前置條件MongoDB數(shù)據(jù)庫里面存在用戶評分數(shù)據(jù)主事件流系統(tǒng)對數(shù)據(jù)庫里面現(xiàn)存的用戶對商品評分數(shù)據(jù)進行分析得到商品相似度矩陣和商品推薦列表矩陣。后置條件將計算得到的結(jié)果存入MongoDB數(shù)據(jù)庫和Redis數(shù)據(jù)庫。4)商品檢索用例,如表3-4所示表3-4商品檢索用例用例名商品檢索參與者用戶前置條件用戶進入商品搜索界面主事件流用戶輸入關(guān)鍵字進行檢索系統(tǒng)根據(jù)用戶的檢索關(guān)鍵詞從該用戶的推薦列表中選取商品進行返回后置條件前端根據(jù)返回的推薦列表進行數(shù)據(jù)渲染展示5)實時推薦用例表3-5實時推薦用例用例名實時推薦參與者用戶前置條件用戶對商品進行評分主事件流系統(tǒng)通過Flume對評分進行日志采集,Kafka進行消息緩沖處理實時處理模塊獲取到Kafka消息,利用相關(guān)算法和Spark進行實時推薦處理后置條件將處理的結(jié)果存于MongoDB數(shù)據(jù)庫

第4章系統(tǒng)設(shè)計接下來會對系統(tǒng)的架構(gòu)與各個模塊進行設(shè)計,對數(shù)據(jù)進行建模。并且對系統(tǒng)的各個具體功能進行設(shè)計。4.1系統(tǒng)設(shè)計原則(1)可靠性??蓴U展性指的是系統(tǒng)設(shè)計功能的擴展,也就是指系統(tǒng)適應(yīng)變化的能力。需要保證個性化推薦系統(tǒng)在大量服務(wù)運行情況下以及請求數(shù)據(jù)交互情況下穩(wěn)定運行。(2)易用性。對于用戶而言,系統(tǒng)的使用和維護等幾個基本環(huán)節(jié)都應(yīng)該簡單快捷。推薦系統(tǒng)受縱廣泛,應(yīng)保證系統(tǒng)使用上手簡單,界面簡介。(3)流暢性。由于推薦系統(tǒng)涉及處理大量數(shù)據(jù),涉及各種推薦算法處理,若數(shù)據(jù)處理不當(dāng),會讓系統(tǒng)運行緩慢,進而導(dǎo)致前臺可以出現(xiàn)偽卡頓現(xiàn)象。因此需要保證可以快速計算得到結(jié)果。4.2系統(tǒng)功能組織架構(gòu)圖整體系統(tǒng)架構(gòu)總體分為前端用戶可視化模塊和后端部分,后端部分根據(jù)業(yè)務(wù)性質(zhì)可以大致分為:綜合業(yè)務(wù)部分:負責(zé)推薦結(jié)果查詢、商品檢索、商品評分、商品標(biāo)簽、人臉識別與賬號密碼登錄注冊;推薦模塊:包含數(shù)據(jù)加載、離線推薦、實時推薦、基于內(nèi)容的推薦、基于物品的協(xié)同過濾推薦;日志采集服務(wù):用戶對商品就行評分操作,會在綜合業(yè)務(wù)模塊進行評分流消息整合并進行日志埋點,將日志寫到指定路徑下的文件中。Flume會監(jiān)聽該文件,當(dāng)探測到有新日志寫入,F(xiàn)lume會采集日志,將評分流傳入kafka;消息緩沖服務(wù):采用kafka作為消息隊列,F(xiàn)lume將采集的日志寫入kafka,kafka做消息緩沖并對數(shù)據(jù)進行預(yù)處理;為了方便數(shù)據(jù)處理,綜合業(yè)務(wù)服務(wù)采用非關(guān)系型數(shù)據(jù)庫MongoDB。需要給實時推薦提供預(yù)備數(shù)據(jù),為了提高其響應(yīng)速度,系統(tǒng)采用Redis作為緩存數(shù)據(jù)庫。為了在海量數(shù)據(jù)下可以檢索更快,關(guān)鍵詞匹配更精確,選用ElasticSearch進行全文檢索。如圖4-1和圖4-2。圖4-1功能模塊圖圖4-2項目架構(gòu)圖4.3系統(tǒng)類圖系統(tǒng)類圖可以反應(yīng)系統(tǒng)的一個整體靜態(tài)結(jié)構(gòu),將系統(tǒng)各個模塊用戶功能等進行了抽象,描述了系統(tǒng)其組成模塊的各個屬性與方法,并且可以直觀的描述將各個模塊抽象出來的各個類之間的聯(lián)系,一方面可以幫助開發(fā)人員梳理其各個類之間的關(guān)系,并更好的完成開發(fā)工作;二方面可以對其系統(tǒng)架構(gòu)及構(gòu)造進行即使調(diào)整,且可以避免內(nèi)部依賴,它是系統(tǒng)分析與設(shè)計的產(chǎn)物,可以作為編碼依據(jù)。展示系統(tǒng)類間的關(guān)系,類由類名屬性和方法構(gòu)成。如圖4-3。圖4-3完整系統(tǒng)類圖4.4系統(tǒng)時序圖4.4.1登錄用戶登錄功能包含兩種形式,可以采用人臉識別登錄也可以采用賬號密碼登錄。人臉識別登錄前端調(diào)用攝像頭采集人臉上傳到后臺進行人臉比對,比對到人臉庫存在的人臉則登錄成功;賬號密碼登錄若同時正確后臺會利用JWT生成登錄憑證Token,隨請求返回存于瀏覽器,用戶登錄校驗[8]。人臉識別識別成功同上。如圖4-4所示。圖4-4登錄的時序圖4.4.2注冊新用戶需要進行注冊,首先輸入賬號密碼以及其他相關(guān)用戶信息進行注冊,提交請求會在后臺進行注冊信息檢驗,若信息有誤或用戶不可以注冊,則作出對應(yīng)提示;若不存在先會根據(jù)賬號密碼注冊,注冊成功后會跳轉(zhuǎn)人臉錄入方便之后人臉識別登錄,錄入成功會直接跳轉(zhuǎn)人臉識別登錄,錄入失敗會再重試3次,若3次沒成功則跳轉(zhuǎn)賬號密碼登錄。如圖4-5所示。圖4-5注冊的時序圖4.4.3離線推薦離線統(tǒng)計服務(wù)主要在后臺負責(zé)加載業(yè)務(wù)數(shù)據(jù)庫MongoDB數(shù)據(jù)集,進行歷史熱門、近期熱門、綜合評分商品集處理,每隔一段時間被調(diào)度,調(diào)用離線統(tǒng)計服務(wù)進行數(shù)據(jù)處理,然后將新數(shù)據(jù)寫入數(shù)據(jù)庫,如圖4-6所示[16]。圖4-6離線推薦時序圖4.4.4實時推薦當(dāng)用戶對商品進行評分等行為操作時,系統(tǒng)會在后臺進行埋點日志處理,將評分數(shù)據(jù)處理后按照特定格式存于特定路徑的日志文件中,F(xiàn)lume會監(jiān)聽該路徑的日志文件,通過日志采集收集用戶行為同時可能寫入緩存操作,F(xiàn)lume將采集的日志消息寫入KafkaLogTopic,然后通過kafka過濾日志消息后將評分流發(fā)到recommendertopic。[9]推薦模塊獲取到評分流后,加載緩存調(diào)度實時推薦服務(wù)進行處理,寫入數(shù)據(jù)庫,然后綜合業(yè)務(wù)模塊獲取數(shù)據(jù)集進行展示,如圖4-7所示[14]。圖4-7實時推薦的時序圖4.4.5商品檢索用戶可以根據(jù)自己需求進行商品檢索,在搜索框輸入檢索關(guān)鍵詞,隨即輸入框會監(jiān)聽輸入關(guān)鍵詞的變化進而在下面進行搜索詞提示匹配,用戶可以選擇匹配的關(guān)鍵詞,也可以選用自己的[7]。輸入關(guān)鍵詞后搜索,后端接收到前臺請求,用ElasticSearch進行全文檢索匹配關(guān)鍵詞,匹配到相關(guān)商品后向前端返回商品集,如圖4-8所示。圖4-8商品檢索的時序圖4.5系統(tǒng)活動圖首先,用戶輸入賬號密碼進行登錄身份校驗,如果密碼正確登錄成功。只有登錄成功了,才能對商品進行評分相關(guān)操作,系統(tǒng)才能記錄用戶的行為,并進行個性化的推薦服務(wù);登錄成功后用戶可以進行商品檢索,這時系統(tǒng)會對登錄成功的用戶進行實時個性化推薦,若沒有登錄的用戶進行商品檢索,系統(tǒng)會基于統(tǒng)計學(xué)算法推薦進行歷史熱門推薦和近期熱門商品推薦,當(dāng)然不管登錄成功與否都可以查看商品。但是登錄的用戶查看會根據(jù)該用戶的特征進行相似商品推薦,如圖4-9所示。圖4-9系統(tǒng)活動圖4.6系統(tǒng)數(shù)據(jù)庫4.6.1數(shù)據(jù)庫設(shè)計原則由于本系統(tǒng)注重是實現(xiàn)個性化推薦功能,沒有復(fù)雜的業(yè)務(wù),注重的是數(shù)據(jù)處理與模型訓(xùn)練,因此數(shù)據(jù)庫表沒有復(fù)雜的冗余字段,保證算法訓(xùn)練數(shù)據(jù)集所需的字段項存在即可[10]。4.6.2數(shù)據(jù)結(jié)構(gòu)由于本系統(tǒng)注重是實現(xiàn)個性化推薦功能,沒有復(fù)雜的業(yè)務(wù),注重的是數(shù)據(jù)處理與模型訓(xùn)練,因此數(shù)據(jù)庫表沒有復(fù)雜的冗余字段,保證算法訓(xùn)練數(shù)據(jù)集所需的字段項存在即可。如圖4-10所示。圖4-10數(shù)據(jù)庫的CDM圖直接由CDM生成PDM,PDM可以很好反映系統(tǒng)設(shè)計需要的相關(guān)元素,數(shù)據(jù)組織結(jié)構(gòu)以及相關(guān)元素之間的聯(lián)系。如圖4-11所示。圖4-11數(shù)據(jù)庫的PDM圖4.6.3數(shù)據(jù)庫表的設(shè)計表4-1商品數(shù)據(jù)表(Product)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵2productIdint(11)NO商品id3namevarchar(10)NO商品名4imageUrlvarchar(100)NO商品圖片5categoriesvarchar(30)NO商品分類6tagsvarchar(30)NO商品標(biāo)簽表4-2用戶評分表(Rating)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRImongodb自帶2userIdint(11)NOMUL用戶id3productIdInt(11)NO商品id4scoredoubleNO商品評分5timestamplongNO評分時間表4-3用戶表(User)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRImongodb自帶2userIdint(11)NO用戶id3usernamevarchar(16)NO用戶名4passwordvarchar(16)NO密碼5timestamplongNO創(chuàng)建時間表4-4商品標(biāo)簽(Tag)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵2userIdint(11)NO用戶id3productIdint(11)NO商品id4tagvarchar(40)NO標(biāo)簽5timestamplongNO時間戳表4-5商品評分次數(shù)統(tǒng)計(RateMoreProducts)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI學(xué)生id2productIdint(11)NO商品id3countInt(6)NO評分次數(shù)表4-6最近商品評分統(tǒng)計(RateMoreRecentlyProducts)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3countint(11)NO評分次數(shù)4yearmonthlongNO時間戳表4-7商品平均評分(AverageProducts)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3avgdoubleNO平均評分表4-8用戶商品推薦矩陣(UserRecs)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2userIdint(11)NO用戶id3rescArry[(productId:Int,Score:Double)]NO用戶商品推薦集表4-9商品相似矩陣(ProductRecs)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO相似商品集表4-10用戶商品實時推薦矩陣表(StreamRecs)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2userIdint(11)NO用戶id3rescArry[(productId:Int,Score:Double)]NO用戶實時推薦商品集表4-11商品相似矩陣表(ProductRecs)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO相似商品集表4-12基于內(nèi)容的推薦矩陣表(ContentBaseedProductRecs)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO相似內(nèi)容商品集表4-13基于物品的協(xié)同過濾推薦矩陣表(ItemCFProductRecs)序號字段英文名稱數(shù)據(jù)類型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO推薦商品集第5章系統(tǒng)實現(xiàn)5.1綜合業(yè)務(wù)服務(wù)5.1.1登錄注冊基于WEB的個性化推薦系統(tǒng)登錄注冊因考慮為用戶盡可能提供便捷性采用兩種形式,人臉識別與賬號密碼的形式進行登錄與注冊。由于系統(tǒng)需要用戶登錄才能更好的提供服務(wù),因此系統(tǒng)的某些功能只能允許已登錄用戶才能訪問,比如:購物車、實時推薦等,因此后臺會對這些接口路徑進行攔截。當(dāng)用戶登錄成功后,后臺會結(jié)合用戶信息用JWT算法生成屬于這個用戶的登錄憑證,并將登錄成功的基礎(chǔ)用戶信息存入本地線程變量ThreadLocal中,然后會將用戶的登錄憑證(Token)隨請求返回存于瀏覽器。當(dāng)被攔截路徑的請求來時,會攜帶Token到后臺進行登錄校驗,若校驗通過從本地線程變量ThreadLocal中取出存的登錄用戶信息并返回,路徑放行,結(jié)果顯示。當(dāng)新用戶第一次進入基于WEB的個性化推薦系統(tǒng)時,會要求注冊。注冊會先進行賬號密碼的注冊,若該賬號沒有用戶存在且注冊成功后,會自動跳轉(zhuǎn)到人臉錄入,以方便下次登錄可以直接人臉識別登錄。若人臉錄入成功則直接跳轉(zhuǎn)到人臉識別登錄并進入系統(tǒng),若人臉錄入失敗則頁面會跳轉(zhuǎn)到賬號密碼形式登錄。系統(tǒng)需要用戶登錄才能提供個性化的推薦服務(wù),用戶登錄也有兩種選擇形式。進入登錄頁面首先默認直接采用人臉識別登錄方式,當(dāng)識別失敗可以選擇賬號密碼登錄形式。如圖5-1、圖5-2、圖5-3和圖5-4。圖5-1人臉識別登錄示意圖圖5-2賬號密碼登錄示意圖圖5-3賬號密碼注冊示意圖圖5-4人臉錄入認證示意圖5.1.2全文檢索考慮到推薦系統(tǒng)數(shù)據(jù)量大,為了系統(tǒng)更好滿足及時響應(yīng),查詢精準(zhǔn),給用戶提供更好的體驗,系統(tǒng)的搜索模塊采用了ElasticSearch分布式搜索引擎構(gòu)造全文檢索。ElasticSearch會將商品名、標(biāo)簽信息進行分詞,查詢時輸入相關(guān)關(guān)鍵字即可在海量數(shù)據(jù)下快速匹配到相關(guān)商品信息。為了給用戶帶來更好體驗感,搜索框做了數(shù)據(jù)監(jiān)聽,隨著用戶輸入關(guān)鍵詞的改變,系統(tǒng)會自動搜索匹配用戶可能想要的商品的某些信息,用戶可以選擇系統(tǒng)為其匹配的搜索信息,也可以按照個人意愿輸入自己想要的關(guān)鍵詞進行搜索,系統(tǒng)會進行全文檢索匹配相關(guān)商品信息。具體如圖5-5所示。圖5-5全文檢索示意圖5.2實時推薦服務(wù)實時推薦服務(wù)要求快速響應(yīng),結(jié)果的精確性可以略低于離線推薦服務(wù),但是速度一定要快,需要簡化,避免過于復(fù)雜的計算,這區(qū)別于離線推薦服務(wù)。系統(tǒng)進行實時推薦服務(wù)要求用戶需要登錄,用戶登錄了系統(tǒng)采用獲取到對應(yīng)用戶的行為特征信息。當(dāng)?shù)卿浀挠脩魧ι唐愤M行評分時,系統(tǒng)后臺會采集用戶的評分流,將用戶最近K次的評分都記錄在Redis緩存里,評分數(shù)據(jù)會記錄在日志文件中,評分數(shù)據(jù)經(jīng)過Flume日志采集后傳到Kafka,kafak進行消息緩存和數(shù)據(jù)預(yù)處理,將處理的數(shù)據(jù)傳到實時推薦服務(wù)進行處理。實時推薦服務(wù)會從Redis里取出用戶最近評分結(jié)合用戶喜好推薦其相似商品并在首頁進行展示。如圖5-6所示。圖5-6實時推薦示意圖5.2.1實時推薦模型算法設(shè)計首先用戶對商品進行了評分,會經(jīng)過綜合業(yè)務(wù)模塊的監(jiān)聽與處理最終觸發(fā)實時推薦服務(wù)的運算;然后會獲取與打分商品相似的商品集合;然后再拿到用戶近期評分數(shù)據(jù)集;然后計算商品的推薦優(yōu)先級,生成Arry[(productId:Int,Score:Double)]形式的數(shù)據(jù)集;將數(shù)據(jù)集與上次對用戶的推薦結(jié)果再進行合并處理,得到最新的推薦結(jié)果StremRec,存入MongoDB,作為最終輸出。5.2.2實時推薦模塊業(yè)務(wù)設(shè)計實時推薦完整業(yè)務(wù)線應(yīng)該結(jié)合綜合業(yè)務(wù)模塊的評分功能。當(dāng)用戶對某個商品進行評分,綜合業(yè)務(wù)模塊會在Redis中存儲了每一個用戶最近對商品的K次評分。由于Redis是基于內(nèi)存運算的,可以方便實時算法可以快速獲取。并且這個評分操作會記錄一個埋點日志,將評分信息按照<PRODUCT_RATING_PREFIX:userId:productId:score:timestamp>的格式記錄在指定路徑的日志文件里,這個日志文件會被Flume監(jiān)聽,當(dāng)Flume感知到有新日志數(shù)據(jù)寫入,F(xiàn)lume會采集日志并進行數(shù)據(jù)整理,將整理的數(shù)據(jù)寫入與Flume對接的Kafka的LogTopic中,Kafka起到一個消息緩沖的作用,因為當(dāng)系統(tǒng)高峰期,若直接將前臺請求全部拿到推薦模塊處理,可能導(dǎo)致一些其他問題出現(xiàn)。因此,將由Kafka作為緩沖,先將Flume采集的日志信息傳到KafkaLogTopic,然后將消息進行處理后給實時推薦模塊處理,對kafkaStream進行處理,產(chǎn)生評分流,userId|productId|score|timestamp,此時實時推薦模塊開始進行核心算法處理,對評分流進行處理。實時推薦模塊評分流處理過程:從Redis里取出當(dāng)前登錄用戶的最近評分,計算得到該用戶的商品推薦列表,把推薦列表保存到MongoDB。此后,再由前端請求綜合業(yè)務(wù)模塊獲取該用戶的實時推薦列表,前端獲取到結(jié)果集解析并渲染到頁面。5.3離線推薦服務(wù)本文離線推薦服務(wù)主要是綜合MongoDB數(shù)據(jù)庫里已存用戶所有的數(shù)據(jù)集,離線統(tǒng)計服務(wù)區(qū)別與實時推薦服務(wù),離線推薦服務(wù)會在后臺被調(diào)度中心進行周期性調(diào)度去處理。離線推薦服務(wù)會訓(xùn)練隱語義模型獲得預(yù)測評分矩陣,得到用戶推薦列表,并利用商品的特征向量計算商品的相似矩陣,將得到的結(jié)果存入MongoDB數(shù)據(jù)庫。如圖5-7所示。圖5-7離線推薦示意圖5.4基于統(tǒng)計學(xué)的算法推薦基于統(tǒng)計學(xué)的算法推薦本系統(tǒng)主要有對歷史熱門商品進行統(tǒng)計和近期熱門商品統(tǒng)計和對綜合評分的優(yōu)質(zhì)商品進行統(tǒng)計。這一塊是在后臺單獨運行的,每隔一段該服務(wù)會被調(diào)度執(zhí)行一次,將數(shù)據(jù)加載出來經(jīng)過處理后存入MongoDB等待綜合業(yè)務(wù)調(diào)用。5.4.1歷史熱門商品統(tǒng)計首先會將MongoDB里面的商品評分表里面的數(shù)據(jù)加載出來,然后主要利用SparkSQL進行核心處理,將加載出來的商品評分數(shù)據(jù)按照評分個數(shù)進行統(tǒng)計,得到評分次數(shù)最多的商品,最后將篩選出來的數(shù)據(jù)存入RateMoreProductsDF并存入MongoDB中,然后用戶發(fā)起相關(guān)請求經(jīng)綜合業(yè)務(wù)服務(wù)處理查詢得到歷史熱門商品集并返回前端頁面進行展示。如圖5-8所示。圖5-8歷史熱門商品統(tǒng)計示意圖5.4.2近期熱門商品統(tǒng)計首先會將MongoDB里面的商品評分表里面的數(shù)據(jù)加載出來,然后主要利用SparkSQL進行核心處理,將加載出來的商品評分數(shù)據(jù)首先把時間戳轉(zhuǎn)換成yyyyMM格式進行評分個數(shù)統(tǒng)計,把原始Rating數(shù)據(jù)集轉(zhuǎn)換成想要的結(jié)構(gòu)productId,score,yearmonth形式存入RatingOfYearMonthDF,然后再按照時間戳進行排序,得到最后的數(shù)據(jù)集,將數(shù)據(jù)集存入RateMoreRecentlyProductsDF,最后存入MongoDB數(shù)據(jù)庫,然后用戶發(fā)起相關(guān)請求經(jīng)綜合業(yè)務(wù)服務(wù)處理查詢得到近期熱門商品集并返回前端頁面進行展示[7]。如圖5-9所示。圖5-9近期熱門商品統(tǒng)計5.4.3綜合優(yōu)質(zhì)商品統(tǒng)計首先會將MongoDB里面的商品評分表里面的數(shù)據(jù)加載出來,然后主要利用SparkSQL進行核心處理,統(tǒng)計加載出來的商品的平均評分再根據(jù)平均評分排序后存入AverageProductsDF,得到最后的數(shù)據(jù)集,將數(shù)據(jù)集存入AverageProducts,最后存入MongoDB數(shù)據(jù)庫。然后前端需要綜合評分數(shù)據(jù)集時向后臺發(fā)起相關(guān)請求經(jīng)綜合業(yè)務(wù)服務(wù)處理查詢得到前N個高平均評分的綜合優(yōu)質(zhì)商品集并返回前端頁面進行展示。如圖5-10所示。圖5-10綜合優(yōu)質(zhì)商品5.5基于隱語義模型的協(xié)同過濾算法推薦系統(tǒng)采用ALS作為協(xié)同過濾算法。由于這是離線處理,會由系統(tǒng)后臺調(diào)度中心周期性調(diào)度計算,因此無需要求和實時推薦一般快。同時也為綜合業(yè)務(wù)模塊請求和實時推薦服務(wù)提供數(shù)據(jù)支撐,根據(jù)MongoDB中的用戶評分表計算離線的用戶商品推薦列表以及商品相似度矩陣,提前將數(shù)據(jù)計算出來存于MongoDB。5.5.1用戶商品推薦矩陣首先會從MongoDB數(shù)據(jù)庫中將相關(guān)數(shù)據(jù)加載出來,提取到所有用戶和商品的數(shù)據(jù)集userRDD和productRDD。然后定義模型需要的訓(xùn)練參數(shù),利用ALS算法訓(xùn)練隱語義模型,用userRDD和productRDD做一個笛卡爾積,獲得預(yù)測評分矩陣,再從預(yù)測評分矩陣中提取得到用戶推薦列表,再將預(yù)測結(jié)果按照預(yù)測分值進行排序。將最大的K個商品,作為當(dāng)前用戶的推薦列表,將數(shù)據(jù)按照Arry[(productId:Int,Score:Double)]數(shù)據(jù)格式保存到MongoDB的UserRecs表中。再由前端向綜合業(yè)務(wù)模塊發(fā)起請求,取出對應(yīng)用戶的推薦列表返回前端進行結(jié)果展示。如圖5-11和圖5-12所示。圖5-11進入商品詳情頁面示意圖圖5-12用戶商品矩陣推薦5.5.2商品相似度矩陣將數(shù)據(jù)從MongoDB提取出來,首先會訓(xùn)練隱語義模型,然后又利用訓(xùn)練的模型根據(jù)商品的特征向量,計算商品的相似度列表,再兩兩配對商品,計算弦相似度,最后將數(shù)據(jù)按照Arry[(productId:Int,Score:Double)]數(shù)據(jù)格式保存到MongoDB的ProductRecs表中。5.6基于內(nèi)容的推薦當(dāng)用戶查看某個商品詳情時,系統(tǒng)會在商品詳情頁給出與這個商品相似商品的推薦;基于內(nèi)容的推薦會采集商品的標(biāo)簽作為商品特征向量,但是考慮到可能有部分標(biāo)簽的特殊性而影響最后的推薦結(jié)果,因此會通過TF-IDF算法對標(biāo)簽的權(quán)重進行適當(dāng)調(diào)整,使得盡可能去接近用戶偏好[15]。如圖5-13和5-14所示。圖5-13進入商品詳情頁面示意圖圖5-14相似商品推薦5.7冷啟動問題處理由于要對用戶進行精準(zhǔn)的個性化推薦服務(wù),必須依賴用戶的行為數(shù)據(jù)信息,但是對于新用戶系統(tǒng)沒有任何信息記錄。為了解決這個問題,可以考慮在新用戶登錄時讓其預(yù)選感興趣的標(biāo)簽,從而根據(jù)用戶的偏好信息進行合理的推薦服務(wù)。但是勾選標(biāo)簽并不是強制性的,若用戶選擇跳過則不能收集到用戶的偏好信息,再加上本論文主要研究推薦,因此對于冷啟動問題選擇了新用戶直接推薦當(dāng)下熱門商品、評分最多的商品[13]。如圖5-15所示。表5-15首頁熱門推薦示意圖第6章系統(tǒng)測試系統(tǒng)測試是在特定條件下對系統(tǒng)各個功能進行,在上線前發(fā)現(xiàn)系統(tǒng)可能存在的問題進而進行改正。測試一般在各自負責(zé)的功能模塊完成后進行,最后整個系統(tǒng)完成了再進行拉通測試,當(dāng)測試發(fā)現(xiàn)系統(tǒng)存在的bug,應(yīng)該及時修正,且在完善出現(xiàn)bug同時不能影響現(xiàn)存的各個功能的正常運行。在設(shè)計測試用例時,應(yīng)該盡可能的羅列出所有情況。6.1功能測試主要通過Postman工具并配合谷歌瀏覽器進行相關(guān)接口測試,在前端未完成時通過Postman訪問每一個需要測試的接口,輸入不同的數(shù)據(jù)看是否能得到想要的結(jié)果;在前端完成后,進行前后端聯(lián)調(diào),由前端發(fā)起請求看是否能完整顯示。6.1.1測試用例表6-1用戶登錄用例用例編號QDB-6-1測試項用戶登錄前提條件在單擊主頁我的按鈕操作步驟編號輸入數(shù)據(jù)/動作預(yù)期結(jié)果輸入正常數(shù)據(jù)011.輸入用戶名2.輸入密碼3.點擊登錄提示:登錄成功用戶名輸入異常數(shù)據(jù)02用戶名/密碼錯誤提示:該用戶已被注冊,兩次輸入密碼不一致存在用戶人臉識別031.采用人臉登錄2.人臉正對攝像頭3.根據(jù)提示完成人臉采集提示:登錄成功不存在用戶人臉識別041.采用人臉登錄2.人臉正對攝像頭3.根據(jù)提示完成人臉采集提示:該用戶不存在表6-2離線推薦用例用例編號QDB-6-2測試項離線推薦前提條件用戶已有歷史評分數(shù)據(jù)且登錄操作步驟編號輸入數(shù)據(jù)/動作預(yù)期結(jié)果用戶進入系統(tǒng)011.進行首頁2.系統(tǒng)推薦首頁可能喜歡展示推薦結(jié)果表6-3最近熱門商品推薦用例編號QDB-6-3測試項熱門商品推薦前提條件進入系統(tǒng)用戶未登錄/搜索條件篩選操作步驟編號輸入數(shù)據(jù)/動作預(yù)期結(jié)果用戶進入系統(tǒng)011.進行首頁2.系統(tǒng)推薦首頁輪播圖獲取熱門商品集展示給用戶表6-4實時推薦用例用例編號QDB-6-4測試項實時推薦前提條件用戶已登錄且用戶有評分數(shù)據(jù)操作步驟編號輸入數(shù)據(jù)/動作預(yù)期結(jié)果未登錄用戶進入系統(tǒng)011.訪問首頁實時推薦處提示先登錄才能獲得精確的推薦服務(wù)新用戶登錄系統(tǒng)021.訪問首頁提示:為喜歡的商品評分老用戶登錄系統(tǒng)031.訪問首頁提示:獲取到實時推薦商品并顯示表6-5商品搜索用例用例編號QDB-6-5測試項商品搜索前提條件數(shù)據(jù)庫存在數(shù)據(jù)操作步驟編號輸入數(shù)據(jù)/動作預(yù)期結(jié)果商品檢索用戶在搜索框輸入關(guān)鍵詞檢索01檢索存于數(shù)據(jù)庫的商品返回相關(guān)商品集02檢索數(shù)據(jù)庫中不存在的商品提示暫沒收錄相關(guān)商品表6-6商品評分用例用例編號QDB-6-6測試項商品評分前提條件用戶登錄操作步驟編號輸入數(shù)據(jù)/動作預(yù)期結(jié)果用戶查看某個商品詳情011.選擇分數(shù)2.確認評分記錄評分,推薦模塊重新計算表6-7基于內(nèi)容的物品推薦用例用例編號QDB-6-7測試項基于內(nèi)容的物品推薦前提條件進入商品詳情頁操作步驟編號輸入數(shù)據(jù)/動作預(yù)期結(jié)果用戶查看某個商品詳情011.查看商品詳情獲取到相似商品6.2非功能測試非功能測試主要是操作平臺測試。(1)操作平臺測試需要對前端和后端都進行測試,由于其他功能都是在Windows平臺下測試完成的,需要考慮當(dāng)服務(wù)部署在Linux平臺下,系統(tǒng)功能是否能正常執(zhí)行。并且在不同瀏覽器進行了系統(tǒng)測試,檢測系統(tǒng)兼容性是否良好。6.3測試報告6.3.1系統(tǒng)測試用例結(jié)果統(tǒng)計表表6-8測試用例結(jié)果統(tǒng)計表測試項用例編號測試特性用例描述測試結(jié)論用戶登錄QDB-6-1能否成功登錄用戶選擇賬號登錄或者人臉識別登錄;賬號登錄輸入賬號密碼,點擊登錄,判斷是否登錄成功。選擇人臉識別登錄將人臉對準(zhǔn)攝像頭,根據(jù)提示采集人臉,系統(tǒng)識別登錄,判斷是否認證登錄成功。賬號密碼登錄成功,人臉識別登錄-瀏覽器版本過高禁止采集視頻流離線推薦QDB-6-2能否推薦成功用戶進入首頁,系統(tǒng)在首頁可能喜歡欄進行離線商品推薦推薦成功,首頁可能喜歡欄展示離線推薦商品列表最近熱門商品推薦QDB-6-3能否推薦成功用戶進入首頁,系統(tǒng)在首頁頂部輪播圖進行熱門商品推薦推薦成功,首頁頂部輪播圖展示熱門商品實時推薦QDB-6-4能否推薦成功用戶進入首頁,系統(tǒng)實時推薦欄根據(jù)用戶喜好進行實時推薦1.未登錄用戶提示登錄才能獲得多樣化推薦服務(wù)2.沒有行為數(shù)據(jù)的用戶登錄,提示為喜歡的商品評分3.有歷史行為數(shù)據(jù)的用戶登錄,展示實時推薦商品列表商品檢索QDB-6-5能否檢索成功在搜索框輸入檢索關(guān)鍵字,點擊搜索檢索成功并將檢索得到的相關(guān)商品進行展示商品評分QDB-6-6能否評分成功進入商品詳情頁,為商品選擇合適的分數(shù),點擊提交評分。商品評分成功基于內(nèi)容的物品推薦QDB-6-7能否修改個人信息進入商品詳情頁,系統(tǒng)根據(jù)該商品推薦其相似商品。詳情頁面相似商品欄展示和該商品相似的商品列表6.3.2測試總結(jié)通過系統(tǒng)的功能測試和非功能測試,基于Web的個性化商品推薦系統(tǒng)所有功能都基本滿足交付要求,只有人臉識別在前端調(diào)用攝像頭進行人臉采集時出現(xiàn)了視頻資源不可用的bug,經(jīng)過分析與修改,該bug已解決,其他的利用多種手段進行了多組數(shù)據(jù)測試與分析,功能正常。

第7章總結(jié)與展望7.1總結(jié)論文針對當(dāng)下電子商務(wù)數(shù)據(jù)過載的問題,分析個性化商品推薦系統(tǒng)的需求,開發(fā)了這款推薦系統(tǒng)。系統(tǒng)架構(gòu)總體分為前端用戶可視化模塊和后端部分,后端部分推薦模塊使用Scala語言編寫,業(yè)務(wù)模塊使用SpringBoot編寫,項目采用maven聚合工程搭建,根據(jù)業(yè)務(wù)性質(zhì)可以大致分為:綜合業(yè)務(wù)部分:負責(zé)推薦結(jié)果查詢、商品檢索、商品評分、商品標(biāo)簽、人臉識別與賬號密碼登錄注冊;推薦模塊:包含數(shù)據(jù)加載、離線推薦、實時推薦、基于內(nèi)容的推薦、基于物品的協(xié)同過濾推薦;日志采集服務(wù):用戶對商品就行評分操作,會在綜合業(yè)務(wù)模塊進行評分流消息整合并進行日志埋點,將日志寫到指定路徑下的文件中。Flume會監(jiān)聽該文件,當(dāng)探測到有新日志寫入Flume會采集日志,將評分流傳入kafka;消息緩沖服務(wù):采用kafka作為消息隊列,F(xiàn)lume將采集的日志寫入kafka,kafka做緩沖并預(yù)處理;為了方便數(shù)據(jù)處理,采用非關(guān)系型數(shù)據(jù)庫MongoDB。需要給實時推薦提供預(yù)備數(shù)據(jù),為了提高其響應(yīng)速度,采用Redis作為緩存數(shù)據(jù)庫。為了在海量數(shù)據(jù)下可以檢索更快,關(guān)鍵詞匹配更精確,選用ElasticSearch進行全文檢索。系統(tǒng)可以根據(jù)用戶的行為操作,結(jié)合用戶的喜好,給用戶進行個性化的推薦。一方面幫助用戶快速發(fā)現(xiàn)對自己有價值的信息,另一方面讓信息能夠展現(xiàn)在對它感興趣的用戶面前,從而實現(xiàn)信息消費者和信息生產(chǎn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論