版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本科畢業(yè)設(shè)計(jì)(論文)題目:基于WEB的個(gè)性化商品推薦系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)I頁(yè)第1章緒論1.1概述在信息化高速發(fā)展,大數(shù)據(jù)與人工智能技術(shù)逐漸成為主導(dǎo)的時(shí)代,越來(lái)越多的人利用計(jì)算機(jī)知識(shí)來(lái)方便自己的生活。電商行業(yè)的發(fā)展,使得人們可以實(shí)現(xiàn)足不出戶(hù)就能夠買(mǎi)到自己喜愛(ài)的商品,隨著智能上網(wǎng)設(shè)備的普及,越來(lái)越多的人也學(xué)會(huì)了網(wǎng)上購(gòu)物,據(jù)不完全統(tǒng)計(jì),中國(guó)目前有大約七億多人在進(jìn)行網(wǎng)上購(gòu)物,市場(chǎng)是非??捎^(guān)的,同時(shí)也給商家節(jié)約成本的機(jī)會(huì),用戶(hù)也能夠以更加實(shí)惠的價(jià)格買(mǎi)到自己心儀的產(chǎn)品。面對(duì)如此多的用戶(hù),提升用戶(hù)的購(gòu)物體驗(yàn)來(lái)留住市場(chǎng)就是一件勢(shì)在必行的事情了。隨著購(gòu)物平臺(tái)上的商品信息也越來(lái)越多,如何能夠讓用戶(hù)能夠快速的挑選到自己喜愛(ài)的商品就成了人們研究的難題。所以研發(fā)了基于WEB的個(gè)性化商品推薦系統(tǒng),該系統(tǒng)能夠根據(jù)每個(gè)人不同的喜好和購(gòu)物習(xí)慣,分析出用戶(hù)想買(mǎi)以及比較感興趣的商品信息,為用戶(hù)提供個(gè)性化的推薦服務(wù)[2]。1.2課題研究背景與意義1.2.1課題研究背景隨著信息化的高速發(fā)展,我國(guó)的網(wǎng)上購(gòu)物產(chǎn)業(yè)在近幾年得到了很好的發(fā)展。需要進(jìn)行購(gòu)物的人只需要在家里面,擁有網(wǎng)絡(luò),以及一個(gè)電腦,或者手機(jī)就可以像逛街一樣瀏覽與購(gòu)買(mǎi)自己喜愛(ài)的商品。不管什么時(shí)候,只要你下單,快遞就會(huì)在兩三天內(nèi)送到你的手上,非常的方便,給消費(fèi)者創(chuàng)造了一個(gè)非常完美的購(gòu)物方式,同時(shí)也推動(dòng)了經(jīng)濟(jì)的發(fā)展。但是,隨著人們購(gòu)物要求的提高,簡(jiǎn)單的購(gòu)物功能已經(jīng)不能滿(mǎn)足于人們的日常需要了[1]。面對(duì)網(wǎng)上花樣繁多的商品信息,消費(fèi)者會(huì)想如果能夠很快的找到自己喜歡的東西就好了。所以,在那么多繁雜的信息中能夠很快的找到自己想要并且喜愛(ài)的東西便成為了一個(gè)難題。1.2.2課題意義在大數(shù)據(jù)主導(dǎo),電子商務(wù)高速發(fā)展的時(shí)代,網(wǎng)上的購(gòu)物信息層出不窮,花樣繁多。用戶(hù)可能一時(shí)之間難以從眾多商品中挑選出自己喜愛(ài)的東西,而且,對(duì)于部分用戶(hù)來(lái)說(shuō),逛購(gòu)物網(wǎng)站的時(shí)候并沒(méi)有明確的目標(biāo)自己要買(mǎi)什么,這時(shí)候一個(gè)商品個(gè)性化推薦系統(tǒng)就顯得尤為重要了。不僅可以根據(jù)用戶(hù)的喜好和需求來(lái)推薦用戶(hù)喜歡的東西將會(huì)方便用戶(hù)的使用,也促進(jìn)電商行業(yè)的發(fā)展。1.3國(guó)內(nèi)外研究概述電商行業(yè)目前在國(guó)內(nèi)的發(fā)展可以說(shuō)是如日中天,隨著各大購(gòu)物網(wǎng)站的興起,足不出戶(hù)就實(shí)現(xiàn)人們的日常購(gòu)物需求已經(jīng)是一件很常見(jiàn)的事情了。正是由于巨大的用戶(hù)數(shù)量,為了使用戶(hù)的購(gòu)物體驗(yàn)增加,各大平臺(tái)都有特定的部門(mén)正對(duì)購(gòu)物智能推薦進(jìn)行研究,并不斷的完善更新[6]。到今天為止,已經(jīng)有很多相關(guān)技術(shù)研究出來(lái),但使用最多的則是搜索引擎和分類(lèi)目錄的技術(shù)。搜索引擎可以讓用戶(hù)輸入自己想要內(nèi)容的關(guān)鍵詞,就搜索出與關(guān)鍵字相關(guān)的東西,可搜索技術(shù)也不是萬(wàn)能的,有的用戶(hù)并不明確自己的需求,甚至都不知道搜索什么,這時(shí)搜索引擎技術(shù)的功能可能就不是萬(wàn)能的了。于是在搜索引擎技術(shù)基礎(chǔ)上研究出了推薦系統(tǒng),可以更加智能的為用戶(hù)進(jìn)行推薦,用戶(hù)甚至都不用去進(jìn)行輸入關(guān)鍵字來(lái)進(jìn)行搜索,這項(xiàng)技術(shù)的關(guān)鍵就是要去分析用戶(hù)的歷史搜索技術(shù)或者是用戶(hù)停留時(shí)間比較長(zhǎng)的內(nèi)容,再對(duì)這一數(shù)據(jù)進(jìn)行總結(jié)分析,數(shù)據(jù)建模等一系列操作,就可以分析出用戶(hù)比較感興趣的內(nèi)容,進(jìn)而推薦給用戶(hù),達(dá)到智能化個(gè)性推薦的目的。在這一技術(shù)的發(fā)展下,國(guó)內(nèi)的電商平臺(tái)大多都是采用這一模式,不止電商平臺(tái),大多數(shù)的軟件都有應(yīng)用這一算法來(lái)使自己的軟件更加受到消費(fèi)者的喜歡。這個(gè)算法就是根據(jù)用戶(hù)的歷史記錄來(lái)進(jìn)行一個(gè)分析,最后得出用戶(hù)最近的喜好,還能根據(jù)用戶(hù)以往的搜索記錄來(lái)推測(cè)出用戶(hù)對(duì)什么東西比較感興趣,進(jìn)而推薦用戶(hù)感興趣的內(nèi)容。但在目前,這一技術(shù)還不是特別的完美,仍然有很多需要進(jìn)步和研究的地方,所以我希望能以我的理解做一個(gè)基于WEB的個(gè)性化商品推薦系統(tǒng)。期間,參考了不少別人的優(yōu)秀文章以及科研成果,來(lái)完成這一系統(tǒng)。在未來(lái),個(gè)性化推薦系統(tǒng)還將繼續(xù)發(fā)展,功能變得更加的強(qiáng)大和完美。1.4論文組織結(jié)構(gòu)第1章:緒論。主要對(duì)基于WEB的個(gè)性化商品推薦系統(tǒng)的國(guó)內(nèi)外研究現(xiàn)狀與其研究意義和發(fā)展情況做了簡(jiǎn)單的介紹,同時(shí)給出了本論文的組織結(jié)構(gòu)。第2章:對(duì)基于WEB的個(gè)性化商品推薦系統(tǒng)做了簡(jiǎn)單介紹,并且介紹了系統(tǒng)開(kāi)發(fā)所使用的各個(gè)技術(shù)棧以及開(kāi)發(fā)工具和運(yùn)行平臺(tái),同時(shí)與其他類(lèi)似技術(shù)棧進(jìn)行了簡(jiǎn)單對(duì)比,分析了選用技術(shù)棧的原因,同時(shí)還介紹了系統(tǒng)的架構(gòu),系統(tǒng)的各個(gè)模塊與服務(wù)。第3章:從社會(huì)、技術(shù)、操作三個(gè)不同方面對(duì)基于WEB的個(gè)性化商品推薦系統(tǒng)進(jìn)行了可行性分析,并且對(duì)系統(tǒng)進(jìn)行了需求分析建模,包含功能分析,系統(tǒng)用例圖繪制與用例描述。第4章:從系統(tǒng)實(shí)現(xiàn)原則、系統(tǒng)架構(gòu)體系、類(lèi)圖、順序圖以及活動(dòng)圖、數(shù)據(jù)庫(kù)設(shè)計(jì),全面的介紹了基于WEB的個(gè)性化商品推薦系統(tǒng)的整體設(shè)計(jì)。第5章:圖文并茂,從功能介紹、業(yè)務(wù)設(shè)計(jì)、模塊設(shè)計(jì)、功能實(shí)現(xiàn)方面全面介紹了基于WEB的個(gè)性化商品推薦系統(tǒng)的各個(gè)功能的實(shí)現(xiàn)細(xì)節(jié),并展示了最終實(shí)現(xiàn)效果圖。第6章:利用不同的方法,從功能測(cè)試與非功能測(cè)試兩個(gè)方向?qū)ο到y(tǒng)進(jìn)行了全面的測(cè)試,找出了系統(tǒng)已存或可能潛伏的一些問(wèn)題與bug,并進(jìn)行改進(jìn)與修復(fù),最后給出了詳細(xì)的測(cè)試報(bào)告。第7章:回顧整個(gè)過(guò)程,對(duì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了總結(jié),并從內(nèi)部算法、外部功能、整體架構(gòu)等多個(gè)方面對(duì)系統(tǒng)進(jìn)行了分析,給出了目前系統(tǒng)還可以?xún)?yōu)化完善的地方,給予展望。
第2章系統(tǒng)技術(shù)介紹2.1基于WEB的個(gè)性化商品推薦系統(tǒng)的介紹基于WEB的個(gè)性化推薦系統(tǒng)架構(gòu)總體分為前端用戶(hù)可視化模塊和后端部分,后端部分推薦模塊使用Scala語(yǔ)言編寫(xiě),業(yè)務(wù)模塊使用SpringBoot編寫(xiě),項(xiàng)目采用maven聚合工程搭建,根據(jù)業(yè)務(wù)性質(zhì)可以大致分為:綜合業(yè)務(wù)部分:負(fù)責(zé)推薦結(jié)果查詢(xún)、商品檢索、商品評(píng)分、商品標(biāo)簽、人臉識(shí)別與賬號(hào)密碼登錄注冊(cè);推薦模塊:包含數(shù)據(jù)加載、離線(xiàn)推薦、實(shí)時(shí)推薦、基于內(nèi)容的推薦、基于物品的協(xié)同過(guò)濾推薦;日志采集服務(wù):用戶(hù)對(duì)商品就行評(píng)分操作,會(huì)在綜合業(yè)務(wù)模塊進(jìn)行評(píng)分流消息整合并進(jìn)行日志埋點(diǎn),將日志寫(xiě)到指定路徑下的文件中。Flume會(huì)監(jiān)聽(tīng)該文件,當(dāng)探測(cè)到有新日志寫(xiě)入,F(xiàn)lume會(huì)采集日志,將評(píng)分流傳入kafka;消息緩沖服務(wù):采用kafka作為消息隊(duì)列,F(xiàn)lume將采集的日志寫(xiě)入kafka,kafka做消息緩沖并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理;為了方便數(shù)據(jù)處理,綜合業(yè)務(wù)服務(wù)采用非關(guān)系型數(shù)據(jù)庫(kù)MongoDB。需要給實(shí)時(shí)推薦提供預(yù)備數(shù)據(jù),為了提高其響應(yīng)速度,系統(tǒng)采用Redis作為緩存數(shù)據(jù)庫(kù)。為了在海量數(shù)據(jù)下可以檢索更快,關(guān)鍵詞匹配更精確,選用ElasticSearch進(jìn)行全文檢索。2.2系統(tǒng)的技術(shù)介紹2.2.1ScalaScala運(yùn)行于Java平臺(tái)(Java虛擬機(jī)),它不僅是一種多范式的編程語(yǔ)言,其設(shè)計(jì)的初衷就是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性,而函數(shù)編程范式更適合用于Map/Reduce和大數(shù)據(jù)模型,它摒棄了數(shù)據(jù)與狀態(tài)的計(jì)算模型,著眼于函數(shù)本身,而非執(zhí)行的過(guò)程的數(shù)據(jù)和狀態(tài)的處理[3]。Scala相較于Java復(fù)雜繁瑣的API,它的顯得更簡(jiǎn)潔優(yōu)雅,讓開(kāi)發(fā)者精力更多集中在業(yè)務(wù)處理。并且采用函數(shù)式編程,簡(jiǎn)單,非常適合用于處理基于不變數(shù)據(jù)的批量處理工作,這些工作基本都是通過(guò)map和reduce操作轉(zhuǎn)換數(shù)據(jù)后,生成新的數(shù)據(jù)副本,然后再進(jìn)行處理,而且兼容現(xiàn)有的Java程序,可以訪(fǎng)問(wèn)龐大的Java類(lèi)庫(kù),例如:操作mysql、redis、freemarker、activemq等等。并且Scala語(yǔ)言表達(dá)能力強(qiáng),一行代碼抵得上Java多行,開(kāi)發(fā)速度快;Scala是靜態(tài)編譯的,所以和JRuby,Groovy比起來(lái)速度會(huì)快很多。本系統(tǒng)由于會(huì)使用到大數(shù)據(jù)以及機(jī)器學(xué)習(xí)相關(guān)的內(nèi)容,因此選擇了Scala語(yǔ)言編寫(xiě)推薦模塊的實(shí)現(xiàn)更合適。至于系統(tǒng)的綜合業(yè)務(wù)模塊,依舊選擇Java開(kāi)發(fā),并選擇了主流框架SpringBoot。2.2.2SpingBoot本系統(tǒng)綜合業(yè)務(wù)模塊采用Java語(yǔ)言編寫(xiě),采用了當(dāng)前主流的框架SpringBoot。SpringBoot簡(jiǎn)化了開(kāi)發(fā)環(huán)境配置,相較于Spring繁瑣的配置更方便,讓開(kāi)發(fā)人員可以把精力更多的集中在業(yè)務(wù)開(kāi)發(fā)而不是環(huán)境搭建;并且SpringBoot內(nèi)置了Tomcat服務(wù)器,可以直接運(yùn)行。SpringBoot相當(dāng)于是對(duì)Spring又一層封裝,它提供了很多start,start自動(dòng)依賴(lài)于版本控制,利用它大量的自動(dòng)化配置,可以做到開(kāi)箱即用。2.2.3SparkSpark,目前運(yùn)用廣泛的的大數(shù)據(jù)計(jì)算框架。Spark包含了大數(shù)據(jù)領(lǐng)域常見(jiàn)的各種計(jì)算框架,比如:SparkCore用于離線(xiàn)計(jì)算,SparkSQL用于交互式查詢(xún),SparkStreaming用于實(shí)時(shí)流式計(jì)算,SparkMLlib用于機(jī)器學(xué)習(xí),SparkGraphX用于圖計(jì)算,Spark主要用于大數(shù)據(jù)的計(jì)算,而Hadoop以后主要用于大數(shù)據(jù)的存儲(chǔ)(比如HDFS、Hive、HBase等),以及資源調(diào)度(Yarn),Spark+Hadoop的組合,是大數(shù)據(jù)領(lǐng)域最熱門(mén)的組合,解決了大數(shù)據(jù)領(lǐng)域中,離線(xiàn)批處理、交互式查詢(xún)、實(shí)時(shí)流計(jì)算、機(jī)器學(xué)習(xí)與圖計(jì)算等最重要的任務(wù)和問(wèn)題[4]。2.2.4推薦算法采用好的推薦算法可以根據(jù)用戶(hù)的行為特征更精確地找到與其匹配的商品集。系統(tǒng)采用統(tǒng)計(jì)推薦,在商品搜索過(guò)濾時(shí)可以給用戶(hù)推薦熱門(mén)商品、綜合評(píng)分優(yōu)質(zhì)商品;當(dāng)用戶(hù)登錄后,采用離線(xiàn)推薦和實(shí)時(shí)推薦為用戶(hù)推薦個(gè)性化商品集,離線(xiàn)推薦服務(wù)會(huì)在后臺(tái)被周期性調(diào)度計(jì)算,當(dāng)用戶(hù)進(jìn)行評(píng)分等行為操作,會(huì)采集日志重新進(jìn)行實(shí)時(shí)推薦計(jì)算;進(jìn)入商品詳情頁(yè),會(huì)采用基于內(nèi)容推薦算法和基于物品的協(xié)同過(guò)濾為用戶(hù)推薦其相似商品[12]。2.3系統(tǒng)工具介紹2.3.1系統(tǒng)開(kāi)發(fā)平臺(tái)系統(tǒng)開(kāi)發(fā)工具采用IDEA,全稱(chēng)IntelliJIDEA,是Java語(yǔ)言的集成開(kāi)發(fā)環(huán)境,IDEA在業(yè)界被公認(rèn)為是最好的java開(kāi)發(fā)工具之一,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、創(chuàng)新的GUI設(shè)計(jì)等方面的功能可以說(shuō)是超常的[5]。IDEA可以根據(jù)自己喜好設(shè)置自己喜歡的字體、界面主題,包含豐富的插件,可以幫助高效地完成開(kāi)發(fā),并且擁有高度智能的代碼智能補(bǔ)全功能,還可以設(shè)置代碼模板,這些使得開(kāi)發(fā)效率更高。系統(tǒng)接口的測(cè)試主要通過(guò)Postman工具并配合谷歌瀏覽器進(jìn)行,在前端未完成時(shí)可以先通過(guò)Postman訪(fǎng)問(wèn)每一個(gè)需要測(cè)試的接口,輸入不同的數(shù)據(jù)看是否能得到想要的結(jié)果;在前端完成后,進(jìn)行前后端聯(lián)調(diào),由前端發(fā)起請(qǐng)求看是否能完整顯示結(jié)果。2.3.2運(yùn)行環(huán)境用戶(hù)操作系統(tǒng):windowsXP、windows7、windows8、windows10等。服務(wù)器操作系統(tǒng):Centos7.x。Java版本:JDK1.8。Scala版本:2.x。瀏覽器:Chrome、Edge等數(shù)據(jù)庫(kù):MongoDB數(shù)據(jù)庫(kù)、Redis數(shù)據(jù)庫(kù)。第3章基于WEB的個(gè)性化推薦系統(tǒng)需求分析3.1可行性分析3.1.1社會(huì)可行性當(dāng)下社會(huì)信息化高速發(fā)展,各大電子商務(wù)平臺(tái)信息過(guò)載,對(duì)于用戶(hù)如何快速?gòu)谋姸嗌唐分羞x出自己喜歡且對(duì)自己有價(jià)值的東西也是一大問(wèn)題,因此開(kāi)發(fā)一款好的個(gè)性化商品推薦系統(tǒng)是十分必要的。3.1.2技術(shù)可行性本系統(tǒng)后端推薦模塊采用Scala語(yǔ)言編寫(xiě),采用了Spark、推薦相關(guān)算法,綜合業(yè)務(wù)模塊采用Java語(yǔ)言編寫(xiě)。每個(gè)技術(shù)都具有豐富的生態(tài)圈,且廣泛應(yīng)用于各個(gè)互聯(lián)網(wǎng)公司,開(kāi)發(fā)便捷安全,具有廣泛的實(shí)際用途。并且在技術(shù)選型上充分考慮其系統(tǒng)的各個(gè)特點(diǎn)而選擇了比較合適的技術(shù)棧,這在技術(shù)上是完全可行的。3.1.3操作可行性現(xiàn)如今近乎人人都有手機(jī),主力消費(fèi)軍的年輕人也基本人手一臺(tái)電腦或者平板,只需要在手機(jī)或者電腦瀏覽器通過(guò)域名訪(fǎng)問(wèn)即可,所以在如今社會(huì)基本沒(méi)有什么難度。操作也是完全可行的。3.2需求分析建模3.2.1功能分析基于WEB的個(gè)性化商品推薦系統(tǒng)是一款可以根據(jù)用戶(hù)的相關(guān)行為操作,記錄用戶(hù)的行為喜好信息并給予用戶(hù)個(gè)性化推薦的系統(tǒng)。系統(tǒng)主要包好推薦功能和綜合業(yè)務(wù)功能。推薦功能包含:1、統(tǒng)計(jì)推薦:在商品搜索過(guò)濾時(shí)可以給用戶(hù)推薦熱門(mén)商品、綜合評(píng)分優(yōu)質(zhì)商品。2、離線(xiàn)推薦:當(dāng)用戶(hù)登錄后,采用離線(xiàn)推薦在首頁(yè)為用戶(hù)推薦個(gè)性化商品集,離線(xiàn)推薦服務(wù)會(huì)在后臺(tái)被周期性調(diào)度計(jì)算[11]。3、當(dāng)已登錄用戶(hù)進(jìn)行評(píng)分等行為操作,會(huì)采集日志重新進(jìn)行實(shí)時(shí)推薦計(jì)算并將推薦結(jié)果集展示在首頁(yè)。4、基于內(nèi)容的物品推薦:在商品詳情頁(yè)推薦與該商品相似的商品集。綜合業(yè)務(wù)包含:1、商品檢索:根據(jù)輸入關(guān)鍵字進(jìn)行商品檢索。2、登錄注冊(cè):用戶(hù)可以進(jìn)行人臉識(shí)別與賬號(hào)密碼的登錄認(rèn)證與注冊(cè)。3、商品評(píng)分:對(duì)商品進(jìn)行打分,記錄埋點(diǎn)日志,向kafka推流到推薦模塊進(jìn)行實(shí)時(shí)推薦處理。4、工程調(diào)度:離線(xiàn)統(tǒng)計(jì)服務(wù)調(diào)度配置、離線(xiàn)推薦服務(wù)調(diào)度配置。3.2.2繪制系統(tǒng)用例圖本平臺(tái)就只有用戶(hù)一種角色。此系統(tǒng)中的用戶(hù)在沒(méi)登錄時(shí)可以進(jìn)行商品瀏覽,可以登錄注冊(cè),可以采用人臉識(shí)別與賬號(hào)密碼登錄兩種形式;登錄后可以享用系統(tǒng)的個(gè)性化商品推薦服務(wù),首頁(yè)會(huì)采用離線(xiàn)推薦與實(shí)時(shí)推薦給用戶(hù)進(jìn)行個(gè)性化推薦;用戶(hù)進(jìn)行搜索過(guò)濾時(shí)會(huì)采用統(tǒng)計(jì)推薦給用戶(hù)推薦熱門(mén)商品、綜合評(píng)分優(yōu)質(zhì)商品;首頁(yè)輪播圖會(huì)展示最近熱門(mén)商品。如圖3-1所示。圖3-1系統(tǒng)用例圖3.2.3用例描述1)登錄用例,如表3.1所示表3-1登錄用例用例名登錄參與者用戶(hù)前置條件用戶(hù)進(jìn)入登錄界面主事件流輸入對(duì)應(yīng)的賬號(hào)和密碼/人臉識(shí)別登錄系統(tǒng)會(huì)根據(jù)用戶(hù)輸入的賬號(hào)和密碼進(jìn)行判斷。如果賬號(hào)不存在,系統(tǒng)會(huì)提示用戶(hù)不存在,如果密碼錯(cuò)誤,系統(tǒng)會(huì)提示密碼錯(cuò)誤。人臉識(shí)別登錄,通過(guò)人臉庫(kù)對(duì)比查詢(xún)注冊(cè)用戶(hù)登錄失敗后重新輸入賬號(hào)和密碼或則重新人臉識(shí)別。如果認(rèn)證成功,則進(jìn)入系統(tǒng)界面后置條件登錄成功,進(jìn)入我的頁(yè)面2)注冊(cè)用例,如表3.2所示表3-2注冊(cè)用例用例名注冊(cè)參與者用戶(hù)前置條件用戶(hù)進(jìn)入注冊(cè)頁(yè)面主事件流用戶(hù)輸入賬號(hào)和密碼系統(tǒng)對(duì)賬號(hào)進(jìn)行查重,如果數(shù)據(jù)庫(kù)中已經(jīng)存在該賬號(hào),則提示用戶(hù)已存在,并返回重新注冊(cè)。用戶(hù)提交注冊(cè)信息,為用戶(hù)創(chuàng)建賬號(hào),否則不做修改。賬號(hào)注冊(cè)成功直接跳轉(zhuǎn)人臉?shù)浫?,錄入成功直接跳轉(zhuǎn)人臉識(shí)別登錄;若錄入失敗會(huì)3次重試,若人臉識(shí)別登錄失敗跳轉(zhuǎn)賬號(hào)密碼登錄后置條件注冊(cè)成功,或未注冊(cè)成功3)離線(xiàn)推薦用例,如表3-3所示表3-3離線(xiàn)推薦用例用例名離線(xiàn)推薦參與者用戶(hù)前置條件MongoDB數(shù)據(jù)庫(kù)里面存在用戶(hù)評(píng)分?jǐn)?shù)據(jù)主事件流系統(tǒng)對(duì)數(shù)據(jù)庫(kù)里面現(xiàn)存的用戶(hù)對(duì)商品評(píng)分?jǐn)?shù)據(jù)進(jìn)行分析得到商品相似度矩陣和商品推薦列表矩陣。后置條件將計(jì)算得到的結(jié)果存入MongoDB數(shù)據(jù)庫(kù)和Redis數(shù)據(jù)庫(kù)。4)商品檢索用例,如表3-4所示表3-4商品檢索用例用例名商品檢索參與者用戶(hù)前置條件用戶(hù)進(jìn)入商品搜索界面主事件流用戶(hù)輸入關(guān)鍵字進(jìn)行檢索系統(tǒng)根據(jù)用戶(hù)的檢索關(guān)鍵詞從該用戶(hù)的推薦列表中選取商品進(jìn)行返回后置條件前端根據(jù)返回的推薦列表進(jìn)行數(shù)據(jù)渲染展示5)實(shí)時(shí)推薦用例表3-5實(shí)時(shí)推薦用例用例名實(shí)時(shí)推薦參與者用戶(hù)前置條件用戶(hù)對(duì)商品進(jìn)行評(píng)分主事件流系統(tǒng)通過(guò)Flume對(duì)評(píng)分進(jìn)行日志采集,Kafka進(jìn)行消息緩沖處理實(shí)時(shí)處理模塊獲取到Kafka消息,利用相關(guān)算法和Spark進(jìn)行實(shí)時(shí)推薦處理后置條件將處理的結(jié)果存于MongoDB數(shù)據(jù)庫(kù)
第4章系統(tǒng)設(shè)計(jì)接下來(lái)會(huì)對(duì)系統(tǒng)的架構(gòu)與各個(gè)模塊進(jìn)行設(shè)計(jì),對(duì)數(shù)據(jù)進(jìn)行建模。并且對(duì)系統(tǒng)的各個(gè)具體功能進(jìn)行設(shè)計(jì)。4.1系統(tǒng)設(shè)計(jì)原則(1)可靠性??蓴U(kuò)展性指的是系統(tǒng)設(shè)計(jì)功能的擴(kuò)展,也就是指系統(tǒng)適應(yīng)變化的能力。需要保證個(gè)性化推薦系統(tǒng)在大量服務(wù)運(yùn)行情況下以及請(qǐng)求數(shù)據(jù)交互情況下穩(wěn)定運(yùn)行。(2)易用性。對(duì)于用戶(hù)而言,系統(tǒng)的使用和維護(hù)等幾個(gè)基本環(huán)節(jié)都應(yīng)該簡(jiǎn)單快捷。推薦系統(tǒng)受縱廣泛,應(yīng)保證系統(tǒng)使用上手簡(jiǎn)單,界面簡(jiǎn)介。(3)流暢性。由于推薦系統(tǒng)涉及處理大量數(shù)據(jù),涉及各種推薦算法處理,若數(shù)據(jù)處理不當(dāng),會(huì)讓系統(tǒng)運(yùn)行緩慢,進(jìn)而導(dǎo)致前臺(tái)可以出現(xiàn)偽卡頓現(xiàn)象。因此需要保證可以快速計(jì)算得到結(jié)果。4.2系統(tǒng)功能組織架構(gòu)圖整體系統(tǒng)架構(gòu)總體分為前端用戶(hù)可視化模塊和后端部分,后端部分根據(jù)業(yè)務(wù)性質(zhì)可以大致分為:綜合業(yè)務(wù)部分:負(fù)責(zé)推薦結(jié)果查詢(xún)、商品檢索、商品評(píng)分、商品標(biāo)簽、人臉識(shí)別與賬號(hào)密碼登錄注冊(cè);推薦模塊:包含數(shù)據(jù)加載、離線(xiàn)推薦、實(shí)時(shí)推薦、基于內(nèi)容的推薦、基于物品的協(xié)同過(guò)濾推薦;日志采集服務(wù):用戶(hù)對(duì)商品就行評(píng)分操作,會(huì)在綜合業(yè)務(wù)模塊進(jìn)行評(píng)分流消息整合并進(jìn)行日志埋點(diǎn),將日志寫(xiě)到指定路徑下的文件中。Flume會(huì)監(jiān)聽(tīng)該文件,當(dāng)探測(cè)到有新日志寫(xiě)入,F(xiàn)lume會(huì)采集日志,將評(píng)分流傳入kafka;消息緩沖服務(wù):采用kafka作為消息隊(duì)列,F(xiàn)lume將采集的日志寫(xiě)入kafka,kafka做消息緩沖并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理;為了方便數(shù)據(jù)處理,綜合業(yè)務(wù)服務(wù)采用非關(guān)系型數(shù)據(jù)庫(kù)MongoDB。需要給實(shí)時(shí)推薦提供預(yù)備數(shù)據(jù),為了提高其響應(yīng)速度,系統(tǒng)采用Redis作為緩存數(shù)據(jù)庫(kù)。為了在海量數(shù)據(jù)下可以檢索更快,關(guān)鍵詞匹配更精確,選用ElasticSearch進(jìn)行全文檢索。如圖4-1和圖4-2。圖4-1功能模塊圖圖4-2項(xiàng)目架構(gòu)圖4.3系統(tǒng)類(lèi)圖系統(tǒng)類(lèi)圖可以反應(yīng)系統(tǒng)的一個(gè)整體靜態(tài)結(jié)構(gòu),將系統(tǒng)各個(gè)模塊用戶(hù)功能等進(jìn)行了抽象,描述了系統(tǒng)其組成模塊的各個(gè)屬性與方法,并且可以直觀(guān)的描述將各個(gè)模塊抽象出來(lái)的各個(gè)類(lèi)之間的聯(lián)系,一方面可以幫助開(kāi)發(fā)人員梳理其各個(gè)類(lèi)之間的關(guān)系,并更好的完成開(kāi)發(fā)工作;二方面可以對(duì)其系統(tǒng)架構(gòu)及構(gòu)造進(jìn)行即使調(diào)整,且可以避免內(nèi)部依賴(lài),它是系統(tǒng)分析與設(shè)計(jì)的產(chǎn)物,可以作為編碼依據(jù)。展示系統(tǒng)類(lèi)間的關(guān)系,類(lèi)由類(lèi)名屬性和方法構(gòu)成。如圖4-3。圖4-3完整系統(tǒng)類(lèi)圖4.4系統(tǒng)時(shí)序圖4.4.1登錄用戶(hù)登錄功能包含兩種形式,可以采用人臉識(shí)別登錄也可以采用賬號(hào)密碼登錄。人臉識(shí)別登錄前端調(diào)用攝像頭采集人臉上傳到后臺(tái)進(jìn)行人臉比對(duì),比對(duì)到人臉庫(kù)存在的人臉則登錄成功;賬號(hào)密碼登錄若同時(shí)正確后臺(tái)會(huì)利用JWT生成登錄憑證Token,隨請(qǐng)求返回存于瀏覽器,用戶(hù)登錄校驗(yàn)[8]。人臉識(shí)別識(shí)別成功同上。如圖4-4所示。圖4-4登錄的時(shí)序圖4.4.2注冊(cè)新用戶(hù)需要進(jìn)行注冊(cè),首先輸入賬號(hào)密碼以及其他相關(guān)用戶(hù)信息進(jìn)行注冊(cè),提交請(qǐng)求會(huì)在后臺(tái)進(jìn)行注冊(cè)信息檢驗(yàn),若信息有誤或用戶(hù)不可以注冊(cè),則作出對(duì)應(yīng)提示;若不存在先會(huì)根據(jù)賬號(hào)密碼注冊(cè),注冊(cè)成功后會(huì)跳轉(zhuǎn)人臉?shù)浫敕奖阒笕四樧R(shí)別登錄,錄入成功會(huì)直接跳轉(zhuǎn)人臉識(shí)別登錄,錄入失敗會(huì)再重試3次,若3次沒(méi)成功則跳轉(zhuǎn)賬號(hào)密碼登錄。如圖4-5所示。圖4-5注冊(cè)的時(shí)序圖4.4.3離線(xiàn)推薦離線(xiàn)統(tǒng)計(jì)服務(wù)主要在后臺(tái)負(fù)責(zé)加載業(yè)務(wù)數(shù)據(jù)庫(kù)MongoDB數(shù)據(jù)集,進(jìn)行歷史熱門(mén)、近期熱門(mén)、綜合評(píng)分商品集處理,每隔一段時(shí)間被調(diào)度,調(diào)用離線(xiàn)統(tǒng)計(jì)服務(wù)進(jìn)行數(shù)據(jù)處理,然后將新數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),如圖4-6所示[16]。圖4-6離線(xiàn)推薦時(shí)序圖4.4.4實(shí)時(shí)推薦當(dāng)用戶(hù)對(duì)商品進(jìn)行評(píng)分等行為操作時(shí),系統(tǒng)會(huì)在后臺(tái)進(jìn)行埋點(diǎn)日志處理,將評(píng)分?jǐn)?shù)據(jù)處理后按照特定格式存于特定路徑的日志文件中,F(xiàn)lume會(huì)監(jiān)聽(tīng)該路徑的日志文件,通過(guò)日志采集收集用戶(hù)行為同時(shí)可能寫(xiě)入緩存操作,F(xiàn)lume將采集的日志消息寫(xiě)入KafkaLogTopic,然后通過(guò)kafka過(guò)濾日志消息后將評(píng)分流發(fā)到recommendertopic。[9]推薦模塊獲取到評(píng)分流后,加載緩存調(diào)度實(shí)時(shí)推薦服務(wù)進(jìn)行處理,寫(xiě)入數(shù)據(jù)庫(kù),然后綜合業(yè)務(wù)模塊獲取數(shù)據(jù)集進(jìn)行展示,如圖4-7所示[14]。圖4-7實(shí)時(shí)推薦的時(shí)序圖4.4.5商品檢索用戶(hù)可以根據(jù)自己需求進(jìn)行商品檢索,在搜索框輸入檢索關(guān)鍵詞,隨即輸入框會(huì)監(jiān)聽(tīng)輸入關(guān)鍵詞的變化進(jìn)而在下面進(jìn)行搜索詞提示匹配,用戶(hù)可以選擇匹配的關(guān)鍵詞,也可以選用自己的[7]。輸入關(guān)鍵詞后搜索,后端接收到前臺(tái)請(qǐng)求,用ElasticSearch進(jìn)行全文檢索匹配關(guān)鍵詞,匹配到相關(guān)商品后向前端返回商品集,如圖4-8所示。圖4-8商品檢索的時(shí)序圖4.5系統(tǒng)活動(dòng)圖首先,用戶(hù)輸入賬號(hào)密碼進(jìn)行登錄身份校驗(yàn),如果密碼正確登錄成功。只有登錄成功了,才能對(duì)商品進(jìn)行評(píng)分相關(guān)操作,系統(tǒng)才能記錄用戶(hù)的行為,并進(jìn)行個(gè)性化的推薦服務(wù);登錄成功后用戶(hù)可以進(jìn)行商品檢索,這時(shí)系統(tǒng)會(huì)對(duì)登錄成功的用戶(hù)進(jìn)行實(shí)時(shí)個(gè)性化推薦,若沒(méi)有登錄的用戶(hù)進(jìn)行商品檢索,系統(tǒng)會(huì)基于統(tǒng)計(jì)學(xué)算法推薦進(jìn)行歷史熱門(mén)推薦和近期熱門(mén)商品推薦,當(dāng)然不管登錄成功與否都可以查看商品。但是登錄的用戶(hù)查看會(huì)根據(jù)該用戶(hù)的特征進(jìn)行相似商品推薦,如圖4-9所示。圖4-9系統(tǒng)活動(dòng)圖4.6系統(tǒng)數(shù)據(jù)庫(kù)4.6.1數(shù)據(jù)庫(kù)設(shè)計(jì)原則由于本系統(tǒng)注重是實(shí)現(xiàn)個(gè)性化推薦功能,沒(méi)有復(fù)雜的業(yè)務(wù),注重的是數(shù)據(jù)處理與模型訓(xùn)練,因此數(shù)據(jù)庫(kù)表沒(méi)有復(fù)雜的冗余字段,保證算法訓(xùn)練數(shù)據(jù)集所需的字段項(xiàng)存在即可[10]。4.6.2數(shù)據(jù)結(jié)構(gòu)由于本系統(tǒng)注重是實(shí)現(xiàn)個(gè)性化推薦功能,沒(méi)有復(fù)雜的業(yè)務(wù),注重的是數(shù)據(jù)處理與模型訓(xùn)練,因此數(shù)據(jù)庫(kù)表沒(méi)有復(fù)雜的冗余字段,保證算法訓(xùn)練數(shù)據(jù)集所需的字段項(xiàng)存在即可。如圖4-10所示。圖4-10數(shù)據(jù)庫(kù)的CDM圖直接由CDM生成PDM,PDM可以很好反映系統(tǒng)設(shè)計(jì)需要的相關(guān)元素,數(shù)據(jù)組織結(jié)構(gòu)以及相關(guān)元素之間的聯(lián)系。如圖4-11所示。圖4-11數(shù)據(jù)庫(kù)的PDM圖4.6.3數(shù)據(jù)庫(kù)表的設(shè)計(jì)表4-1商品數(shù)據(jù)表(Product)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵2productIdint(11)NO商品id3namevarchar(10)NO商品名4imageUrlvarchar(100)NO商品圖片5categoriesvarchar(30)NO商品分類(lèi)6tagsvarchar(30)NO商品標(biāo)簽表4-2用戶(hù)評(píng)分表(Rating)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRImongodb自帶2userIdint(11)NOMUL用戶(hù)id3productIdInt(11)NO商品id4scoredoubleNO商品評(píng)分5timestamplongNO評(píng)分時(shí)間表4-3用戶(hù)表(User)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRImongodb自帶2userIdint(11)NO用戶(hù)id3usernamevarchar(16)NO用戶(hù)名4passwordvarchar(16)NO密碼5timestamplongNO創(chuàng)建時(shí)間表4-4商品標(biāo)簽(Tag)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵2userIdint(11)NO用戶(hù)id3productIdint(11)NO商品id4tagvarchar(40)NO標(biāo)簽5timestamplongNO時(shí)間戳表4-5商品評(píng)分次數(shù)統(tǒng)計(jì)(RateMoreProducts)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI學(xué)生id2productIdint(11)NO商品id3countInt(6)NO評(píng)分次數(shù)表4-6最近商品評(píng)分統(tǒng)計(jì)(RateMoreRecentlyProducts)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3countint(11)NO評(píng)分次數(shù)4yearmonthlongNO時(shí)間戳表4-7商品平均評(píng)分(AverageProducts)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3avgdoubleNO平均評(píng)分表4-8用戶(hù)商品推薦矩陣(UserRecs)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2userIdint(11)NO用戶(hù)id3rescArry[(productId:Int,Score:Double)]NO用戶(hù)商品推薦集表4-9商品相似矩陣(ProductRecs)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO相似商品集表4-10用戶(hù)商品實(shí)時(shí)推薦矩陣表(StreamRecs)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2userIdint(11)NO用戶(hù)id3rescArry[(productId:Int,Score:Double)]NO用戶(hù)實(shí)時(shí)推薦商品集表4-11商品相似矩陣表(ProductRecs)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO相似商品集表4-12基于內(nèi)容的推薦矩陣表(ContentBaseedProductRecs)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO相似內(nèi)容商品集表4-13基于物品的協(xié)同過(guò)濾推薦矩陣表(ItemCFProductRecs)序號(hào)字段英文名稱(chēng)數(shù)據(jù)類(lèi)型是否為空主鍵描述1_idint(11)NOPRI主鍵id2productIdint(11)NO商品id3rescArry[(productId:Int,Score:Double)]NO推薦商品集第5章系統(tǒng)實(shí)現(xiàn)5.1綜合業(yè)務(wù)服務(wù)5.1.1登錄注冊(cè)基于WEB的個(gè)性化推薦系統(tǒng)登錄注冊(cè)因考慮為用戶(hù)盡可能提供便捷性采用兩種形式,人臉識(shí)別與賬號(hào)密碼的形式進(jìn)行登錄與注冊(cè)。由于系統(tǒng)需要用戶(hù)登錄才能更好的提供服務(wù),因此系統(tǒng)的某些功能只能允許已登錄用戶(hù)才能訪(fǎng)問(wèn),比如:購(gòu)物車(chē)、實(shí)時(shí)推薦等,因此后臺(tái)會(huì)對(duì)這些接口路徑進(jìn)行攔截。當(dāng)用戶(hù)登錄成功后,后臺(tái)會(huì)結(jié)合用戶(hù)信息用JWT算法生成屬于這個(gè)用戶(hù)的登錄憑證,并將登錄成功的基礎(chǔ)用戶(hù)信息存入本地線(xiàn)程變量ThreadLocal中,然后會(huì)將用戶(hù)的登錄憑證(Token)隨請(qǐng)求返回存于瀏覽器。當(dāng)被攔截路徑的請(qǐng)求來(lái)時(shí),會(huì)攜帶Token到后臺(tái)進(jìn)行登錄校驗(yàn),若校驗(yàn)通過(guò)從本地線(xiàn)程變量ThreadLocal中取出存的登錄用戶(hù)信息并返回,路徑放行,結(jié)果顯示。當(dāng)新用戶(hù)第一次進(jìn)入基于WEB的個(gè)性化推薦系統(tǒng)時(shí),會(huì)要求注冊(cè)。注冊(cè)會(huì)先進(jìn)行賬號(hào)密碼的注冊(cè),若該賬號(hào)沒(méi)有用戶(hù)存在且注冊(cè)成功后,會(huì)自動(dòng)跳轉(zhuǎn)到人臉?shù)浫?,以方便下次登錄可以直接人臉識(shí)別登錄。若人臉?shù)浫氤晒t直接跳轉(zhuǎn)到人臉識(shí)別登錄并進(jìn)入系統(tǒng),若人臉?shù)浫胧t頁(yè)面會(huì)跳轉(zhuǎn)到賬號(hào)密碼形式登錄。系統(tǒng)需要用戶(hù)登錄才能提供個(gè)性化的推薦服務(wù),用戶(hù)登錄也有兩種選擇形式。進(jìn)入登錄頁(yè)面首先默認(rèn)直接采用人臉識(shí)別登錄方式,當(dāng)識(shí)別失敗可以選擇賬號(hào)密碼登錄形式。如圖5-1、圖5-2、圖5-3和圖5-4。圖5-1人臉識(shí)別登錄示意圖圖5-2賬號(hào)密碼登錄示意圖圖5-3賬號(hào)密碼注冊(cè)示意圖圖5-4人臉?shù)浫胝J(rèn)證示意圖5.1.2全文檢索考慮到推薦系統(tǒng)數(shù)據(jù)量大,為了系統(tǒng)更好滿(mǎn)足及時(shí)響應(yīng),查詢(xún)精準(zhǔn),給用戶(hù)提供更好的體驗(yàn),系統(tǒng)的搜索模塊采用了ElasticSearch分布式搜索引擎構(gòu)造全文檢索。ElasticSearch會(huì)將商品名、標(biāo)簽信息進(jìn)行分詞,查詢(xún)時(shí)輸入相關(guān)關(guān)鍵字即可在海量數(shù)據(jù)下快速匹配到相關(guān)商品信息。為了給用戶(hù)帶來(lái)更好體驗(yàn)感,搜索框做了數(shù)據(jù)監(jiān)聽(tīng),隨著用戶(hù)輸入關(guān)鍵詞的改變,系統(tǒng)會(huì)自動(dòng)搜索匹配用戶(hù)可能想要的商品的某些信息,用戶(hù)可以選擇系統(tǒng)為其匹配的搜索信息,也可以按照個(gè)人意愿輸入自己想要的關(guān)鍵詞進(jìn)行搜索,系統(tǒng)會(huì)進(jìn)行全文檢索匹配相關(guān)商品信息。具體如圖5-5所示。圖5-5全文檢索示意圖5.2實(shí)時(shí)推薦服務(wù)實(shí)時(shí)推薦服務(wù)要求快速響應(yīng),結(jié)果的精確性可以略低于離線(xiàn)推薦服務(wù),但是速度一定要快,需要簡(jiǎn)化,避免過(guò)于復(fù)雜的計(jì)算,這區(qū)別于離線(xiàn)推薦服務(wù)。系統(tǒng)進(jìn)行實(shí)時(shí)推薦服務(wù)要求用戶(hù)需要登錄,用戶(hù)登錄了系統(tǒng)采用獲取到對(duì)應(yīng)用戶(hù)的行為特征信息。當(dāng)?shù)卿浀挠脩?hù)對(duì)商品進(jìn)行評(píng)分時(shí),系統(tǒng)后臺(tái)會(huì)采集用戶(hù)的評(píng)分流,將用戶(hù)最近K次的評(píng)分都記錄在Redis緩存里,評(píng)分?jǐn)?shù)據(jù)會(huì)記錄在日志文件中,評(píng)分?jǐn)?shù)據(jù)經(jīng)過(guò)Flume日志采集后傳到Kafka,kafak進(jìn)行消息緩存和數(shù)據(jù)預(yù)處理,將處理的數(shù)據(jù)傳到實(shí)時(shí)推薦服務(wù)進(jìn)行處理。實(shí)時(shí)推薦服務(wù)會(huì)從Redis里取出用戶(hù)最近評(píng)分結(jié)合用戶(hù)喜好推薦其相似商品并在首頁(yè)進(jìn)行展示。如圖5-6所示。圖5-6實(shí)時(shí)推薦示意圖5.2.1實(shí)時(shí)推薦模型算法設(shè)計(jì)首先用戶(hù)對(duì)商品進(jìn)行了評(píng)分,會(huì)經(jīng)過(guò)綜合業(yè)務(wù)模塊的監(jiān)聽(tīng)與處理最終觸發(fā)實(shí)時(shí)推薦服務(wù)的運(yùn)算;然后會(huì)獲取與打分商品相似的商品集合;然后再拿到用戶(hù)近期評(píng)分?jǐn)?shù)據(jù)集;然后計(jì)算商品的推薦優(yōu)先級(jí),生成Arry[(productId:Int,Score:Double)]形式的數(shù)據(jù)集;將數(shù)據(jù)集與上次對(duì)用戶(hù)的推薦結(jié)果再進(jìn)行合并處理,得到最新的推薦結(jié)果StremRec,存入MongoDB,作為最終輸出。5.2.2實(shí)時(shí)推薦模塊業(yè)務(wù)設(shè)計(jì)實(shí)時(shí)推薦完整業(yè)務(wù)線(xiàn)應(yīng)該結(jié)合綜合業(yè)務(wù)模塊的評(píng)分功能。當(dāng)用戶(hù)對(duì)某個(gè)商品進(jìn)行評(píng)分,綜合業(yè)務(wù)模塊會(huì)在Redis中存儲(chǔ)了每一個(gè)用戶(hù)最近對(duì)商品的K次評(píng)分。由于Redis是基于內(nèi)存運(yùn)算的,可以方便實(shí)時(shí)算法可以快速獲取。并且這個(gè)評(píng)分操作會(huì)記錄一個(gè)埋點(diǎn)日志,將評(píng)分信息按照<PRODUCT_RATING_PREFIX:userId:productId:score:timestamp>的格式記錄在指定路徑的日志文件里,這個(gè)日志文件會(huì)被Flume監(jiān)聽(tīng),當(dāng)Flume感知到有新日志數(shù)據(jù)寫(xiě)入,F(xiàn)lume會(huì)采集日志并進(jìn)行數(shù)據(jù)整理,將整理的數(shù)據(jù)寫(xiě)入與Flume對(duì)接的Kafka的LogTopic中,Kafka起到一個(gè)消息緩沖的作用,因?yàn)楫?dāng)系統(tǒng)高峰期,若直接將前臺(tái)請(qǐng)求全部拿到推薦模塊處理,可能導(dǎo)致一些其他問(wèn)題出現(xiàn)。因此,將由Kafka作為緩沖,先將Flume采集的日志信息傳到KafkaLogTopic,然后將消息進(jìn)行處理后給實(shí)時(shí)推薦模塊處理,對(duì)kafkaStream進(jìn)行處理,產(chǎn)生評(píng)分流,userId|productId|score|timestamp,此時(shí)實(shí)時(shí)推薦模塊開(kāi)始進(jìn)行核心算法處理,對(duì)評(píng)分流進(jìn)行處理。實(shí)時(shí)推薦模塊評(píng)分流處理過(guò)程:從Redis里取出當(dāng)前登錄用戶(hù)的最近評(píng)分,計(jì)算得到該用戶(hù)的商品推薦列表,把推薦列表保存到MongoDB。此后,再由前端請(qǐng)求綜合業(yè)務(wù)模塊獲取該用戶(hù)的實(shí)時(shí)推薦列表,前端獲取到結(jié)果集解析并渲染到頁(yè)面。5.3離線(xiàn)推薦服務(wù)本文離線(xiàn)推薦服務(wù)主要是綜合MongoDB數(shù)據(jù)庫(kù)里已存用戶(hù)所有的數(shù)據(jù)集,離線(xiàn)統(tǒng)計(jì)服務(wù)區(qū)別與實(shí)時(shí)推薦服務(wù),離線(xiàn)推薦服務(wù)會(huì)在后臺(tái)被調(diào)度中心進(jìn)行周期性調(diào)度去處理。離線(xiàn)推薦服務(wù)會(huì)訓(xùn)練隱語(yǔ)義模型獲得預(yù)測(cè)評(píng)分矩陣,得到用戶(hù)推薦列表,并利用商品的特征向量計(jì)算商品的相似矩陣,將得到的結(jié)果存入MongoDB數(shù)據(jù)庫(kù)。如圖5-7所示。圖5-7離線(xiàn)推薦示意圖5.4基于統(tǒng)計(jì)學(xué)的算法推薦基于統(tǒng)計(jì)學(xué)的算法推薦本系統(tǒng)主要有對(duì)歷史熱門(mén)商品進(jìn)行統(tǒng)計(jì)和近期熱門(mén)商品統(tǒng)計(jì)和對(duì)綜合評(píng)分的優(yōu)質(zhì)商品進(jìn)行統(tǒng)計(jì)。這一塊是在后臺(tái)單獨(dú)運(yùn)行的,每隔一段該服務(wù)會(huì)被調(diào)度執(zhí)行一次,將數(shù)據(jù)加載出來(lái)經(jīng)過(guò)處理后存入MongoDB等待綜合業(yè)務(wù)調(diào)用。5.4.1歷史熱門(mén)商品統(tǒng)計(jì)首先會(huì)將MongoDB里面的商品評(píng)分表里面的數(shù)據(jù)加載出來(lái),然后主要利用SparkSQL進(jìn)行核心處理,將加載出來(lái)的商品評(píng)分?jǐn)?shù)據(jù)按照評(píng)分個(gè)數(shù)進(jìn)行統(tǒng)計(jì),得到評(píng)分次數(shù)最多的商品,最后將篩選出來(lái)的數(shù)據(jù)存入RateMoreProductsDF并存入MongoDB中,然后用戶(hù)發(fā)起相關(guān)請(qǐng)求經(jīng)綜合業(yè)務(wù)服務(wù)處理查詢(xún)得到歷史熱門(mén)商品集并返回前端頁(yè)面進(jìn)行展示。如圖5-8所示。圖5-8歷史熱門(mén)商品統(tǒng)計(jì)示意圖5.4.2近期熱門(mén)商品統(tǒng)計(jì)首先會(huì)將MongoDB里面的商品評(píng)分表里面的數(shù)據(jù)加載出來(lái),然后主要利用SparkSQL進(jìn)行核心處理,將加載出來(lái)的商品評(píng)分?jǐn)?shù)據(jù)首先把時(shí)間戳轉(zhuǎn)換成yyyyMM格式進(jìn)行評(píng)分個(gè)數(shù)統(tǒng)計(jì),把原始Rating數(shù)據(jù)集轉(zhuǎn)換成想要的結(jié)構(gòu)productId,score,yearmonth形式存入RatingOfYearMonthDF,然后再按照時(shí)間戳進(jìn)行排序,得到最后的數(shù)據(jù)集,將數(shù)據(jù)集存入RateMoreRecentlyProductsDF,最后存入MongoDB數(shù)據(jù)庫(kù),然后用戶(hù)發(fā)起相關(guān)請(qǐng)求經(jīng)綜合業(yè)務(wù)服務(wù)處理查詢(xún)得到近期熱門(mén)商品集并返回前端頁(yè)面進(jìn)行展示[7]。如圖5-9所示。圖5-9近期熱門(mén)商品統(tǒng)計(jì)5.4.3綜合優(yōu)質(zhì)商品統(tǒng)計(jì)首先會(huì)將MongoDB里面的商品評(píng)分表里面的數(shù)據(jù)加載出來(lái),然后主要利用SparkSQL進(jìn)行核心處理,統(tǒng)計(jì)加載出來(lái)的商品的平均評(píng)分再根據(jù)平均評(píng)分排序后存入AverageProductsDF,得到最后的數(shù)據(jù)集,將數(shù)據(jù)集存入AverageProducts,最后存入MongoDB數(shù)據(jù)庫(kù)。然后前端需要綜合評(píng)分?jǐn)?shù)據(jù)集時(shí)向后臺(tái)發(fā)起相關(guān)請(qǐng)求經(jīng)綜合業(yè)務(wù)服務(wù)處理查詢(xún)得到前N個(gè)高平均評(píng)分的綜合優(yōu)質(zhì)商品集并返回前端頁(yè)面進(jìn)行展示。如圖5-10所示。圖5-10綜合優(yōu)質(zhì)商品5.5基于隱語(yǔ)義模型的協(xié)同過(guò)濾算法推薦系統(tǒng)采用ALS作為協(xié)同過(guò)濾算法。由于這是離線(xiàn)處理,會(huì)由系統(tǒng)后臺(tái)調(diào)度中心周期性調(diào)度計(jì)算,因此無(wú)需要求和實(shí)時(shí)推薦一般快。同時(shí)也為綜合業(yè)務(wù)模塊請(qǐng)求和實(shí)時(shí)推薦服務(wù)提供數(shù)據(jù)支撐,根據(jù)MongoDB中的用戶(hù)評(píng)分表計(jì)算離線(xiàn)的用戶(hù)商品推薦列表以及商品相似度矩陣,提前將數(shù)據(jù)計(jì)算出來(lái)存于MongoDB。5.5.1用戶(hù)商品推薦矩陣首先會(huì)從MongoDB數(shù)據(jù)庫(kù)中將相關(guān)數(shù)據(jù)加載出來(lái),提取到所有用戶(hù)和商品的數(shù)據(jù)集userRDD和productRDD。然后定義模型需要的訓(xùn)練參數(shù),利用ALS算法訓(xùn)練隱語(yǔ)義模型,用userRDD和productRDD做一個(gè)笛卡爾積,獲得預(yù)測(cè)評(píng)分矩陣,再?gòu)念A(yù)測(cè)評(píng)分矩陣中提取得到用戶(hù)推薦列表,再將預(yù)測(cè)結(jié)果按照預(yù)測(cè)分值進(jìn)行排序。將最大的K個(gè)商品,作為當(dāng)前用戶(hù)的推薦列表,將數(shù)據(jù)按照Arry[(productId:Int,Score:Double)]數(shù)據(jù)格式保存到MongoDB的UserRecs表中。再由前端向綜合業(yè)務(wù)模塊發(fā)起請(qǐng)求,取出對(duì)應(yīng)用戶(hù)的推薦列表返回前端進(jìn)行結(jié)果展示。如圖5-11和圖5-12所示。圖5-11進(jìn)入商品詳情頁(yè)面示意圖圖5-12用戶(hù)商品矩陣推薦5.5.2商品相似度矩陣將數(shù)據(jù)從MongoDB提取出來(lái),首先會(huì)訓(xùn)練隱語(yǔ)義模型,然后又利用訓(xùn)練的模型根據(jù)商品的特征向量,計(jì)算商品的相似度列表,再兩兩配對(duì)商品,計(jì)算弦相似度,最后將數(shù)據(jù)按照Arry[(productId:Int,Score:Double)]數(shù)據(jù)格式保存到MongoDB的ProductRecs表中。5.6基于內(nèi)容的推薦當(dāng)用戶(hù)查看某個(gè)商品詳情時(shí),系統(tǒng)會(huì)在商品詳情頁(yè)給出與這個(gè)商品相似商品的推薦;基于內(nèi)容的推薦會(huì)采集商品的標(biāo)簽作為商品特征向量,但是考慮到可能有部分標(biāo)簽的特殊性而影響最后的推薦結(jié)果,因此會(huì)通過(guò)TF-IDF算法對(duì)標(biāo)簽的權(quán)重進(jìn)行適當(dāng)調(diào)整,使得盡可能去接近用戶(hù)偏好[15]。如圖5-13和5-14所示。圖5-13進(jìn)入商品詳情頁(yè)面示意圖圖5-14相似商品推薦5.7冷啟動(dòng)問(wèn)題處理由于要對(duì)用戶(hù)進(jìn)行精準(zhǔn)的個(gè)性化推薦服務(wù),必須依賴(lài)用戶(hù)的行為數(shù)據(jù)信息,但是對(duì)于新用戶(hù)系統(tǒng)沒(méi)有任何信息記錄。為了解決這個(gè)問(wèn)題,可以考慮在新用戶(hù)登錄時(shí)讓其預(yù)選感興趣的標(biāo)簽,從而根據(jù)用戶(hù)的偏好信息進(jìn)行合理的推薦服務(wù)。但是勾選標(biāo)簽并不是強(qiáng)制性的,若用戶(hù)選擇跳過(guò)則不能收集到用戶(hù)的偏好信息,再加上本論文主要研究推薦,因此對(duì)于冷啟動(dòng)問(wèn)題選擇了新用戶(hù)直接推薦當(dāng)下熱門(mén)商品、評(píng)分最多的商品[13]。如圖5-15所示。表5-15首頁(yè)熱門(mén)推薦示意圖第6章系統(tǒng)測(cè)試系統(tǒng)測(cè)試是在特定條件下對(duì)系統(tǒng)各個(gè)功能進(jìn)行,在上線(xiàn)前發(fā)現(xiàn)系統(tǒng)可能存在的問(wèn)題進(jìn)而進(jìn)行改正。測(cè)試一般在各自負(fù)責(zé)的功能模塊完成后進(jìn)行,最后整個(gè)系統(tǒng)完成了再進(jìn)行拉通測(cè)試,當(dāng)測(cè)試發(fā)現(xiàn)系統(tǒng)存在的bug,應(yīng)該及時(shí)修正,且在完善出現(xiàn)bug同時(shí)不能影響現(xiàn)存的各個(gè)功能的正常運(yùn)行。在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)該盡可能的羅列出所有情況。6.1功能測(cè)試主要通過(guò)Postman工具并配合谷歌瀏覽器進(jìn)行相關(guān)接口測(cè)試,在前端未完成時(shí)通過(guò)Postman訪(fǎng)問(wèn)每一個(gè)需要測(cè)試的接口,輸入不同的數(shù)據(jù)看是否能得到想要的結(jié)果;在前端完成后,進(jìn)行前后端聯(lián)調(diào),由前端發(fā)起請(qǐng)求看是否能完整顯示。6.1.1測(cè)試用例表6-1用戶(hù)登錄用例用例編號(hào)QDB-6-1測(cè)試項(xiàng)用戶(hù)登錄前提條件在單擊主頁(yè)我的按鈕操作步驟編號(hào)輸入數(shù)據(jù)/動(dòng)作預(yù)期結(jié)果輸入正常數(shù)據(jù)011.輸入用戶(hù)名2.輸入密碼3.點(diǎn)擊登錄提示:登錄成功用戶(hù)名輸入異常數(shù)據(jù)02用戶(hù)名/密碼錯(cuò)誤提示:該用戶(hù)已被注冊(cè),兩次輸入密碼不一致存在用戶(hù)人臉識(shí)別031.采用人臉登錄2.人臉正對(duì)攝像頭3.根據(jù)提示完成人臉采集提示:登錄成功不存在用戶(hù)人臉識(shí)別041.采用人臉登錄2.人臉正對(duì)攝像頭3.根據(jù)提示完成人臉采集提示:該用戶(hù)不存在表6-2離線(xiàn)推薦用例用例編號(hào)QDB-6-2測(cè)試項(xiàng)離線(xiàn)推薦前提條件用戶(hù)已有歷史評(píng)分?jǐn)?shù)據(jù)且登錄操作步驟編號(hào)輸入數(shù)據(jù)/動(dòng)作預(yù)期結(jié)果用戶(hù)進(jìn)入系統(tǒng)011.進(jìn)行首頁(yè)2.系統(tǒng)推薦首頁(yè)可能喜歡展示推薦結(jié)果表6-3最近熱門(mén)商品推薦用例編號(hào)QDB-6-3測(cè)試項(xiàng)熱門(mén)商品推薦前提條件進(jìn)入系統(tǒng)用戶(hù)未登錄/搜索條件篩選操作步驟編號(hào)輸入數(shù)據(jù)/動(dòng)作預(yù)期結(jié)果用戶(hù)進(jìn)入系統(tǒng)011.進(jìn)行首頁(yè)2.系統(tǒng)推薦首頁(yè)輪播圖獲取熱門(mén)商品集展示給用戶(hù)表6-4實(shí)時(shí)推薦用例用例編號(hào)QDB-6-4測(cè)試項(xiàng)實(shí)時(shí)推薦前提條件用戶(hù)已登錄且用戶(hù)有評(píng)分?jǐn)?shù)據(jù)操作步驟編號(hào)輸入數(shù)據(jù)/動(dòng)作預(yù)期結(jié)果未登錄用戶(hù)進(jìn)入系統(tǒng)011.訪(fǎng)問(wèn)首頁(yè)實(shí)時(shí)推薦處提示先登錄才能獲得精確的推薦服務(wù)新用戶(hù)登錄系統(tǒng)021.訪(fǎng)問(wèn)首頁(yè)提示:為喜歡的商品評(píng)分老用戶(hù)登錄系統(tǒng)031.訪(fǎng)問(wèn)首頁(yè)提示:獲取到實(shí)時(shí)推薦商品并顯示表6-5商品搜索用例用例編號(hào)QDB-6-5測(cè)試項(xiàng)商品搜索前提條件數(shù)據(jù)庫(kù)存在數(shù)據(jù)操作步驟編號(hào)輸入數(shù)據(jù)/動(dòng)作預(yù)期結(jié)果商品檢索用戶(hù)在搜索框輸入關(guān)鍵詞檢索01檢索存于數(shù)據(jù)庫(kù)的商品返回相關(guān)商品集02檢索數(shù)據(jù)庫(kù)中不存在的商品提示暫沒(méi)收錄相關(guān)商品表6-6商品評(píng)分用例用例編號(hào)QDB-6-6測(cè)試項(xiàng)商品評(píng)分前提條件用戶(hù)登錄操作步驟編號(hào)輸入數(shù)據(jù)/動(dòng)作預(yù)期結(jié)果用戶(hù)查看某個(gè)商品詳情011.選擇分?jǐn)?shù)2.確認(rèn)評(píng)分記錄評(píng)分,推薦模塊重新計(jì)算表6-7基于內(nèi)容的物品推薦用例用例編號(hào)QDB-6-7測(cè)試項(xiàng)基于內(nèi)容的物品推薦前提條件進(jìn)入商品詳情頁(yè)操作步驟編號(hào)輸入數(shù)據(jù)/動(dòng)作預(yù)期結(jié)果用戶(hù)查看某個(gè)商品詳情011.查看商品詳情獲取到相似商品6.2非功能測(cè)試非功能測(cè)試主要是操作平臺(tái)測(cè)試。(1)操作平臺(tái)測(cè)試需要對(duì)前端和后端都進(jìn)行測(cè)試,由于其他功能都是在Windows平臺(tái)下測(cè)試完成的,需要考慮當(dāng)服務(wù)部署在Linux平臺(tái)下,系統(tǒng)功能是否能正常執(zhí)行。并且在不同瀏覽器進(jìn)行了系統(tǒng)測(cè)試,檢測(cè)系統(tǒng)兼容性是否良好。6.3測(cè)試報(bào)告6.3.1系統(tǒng)測(cè)試用例結(jié)果統(tǒng)計(jì)表表6-8測(cè)試用例結(jié)果統(tǒng)計(jì)表測(cè)試項(xiàng)用例編號(hào)測(cè)試特性用例描述測(cè)試結(jié)論用戶(hù)登錄QDB-6-1能否成功登錄用戶(hù)選擇賬號(hào)登錄或者人臉識(shí)別登錄;賬號(hào)登錄輸入賬號(hào)密碼,點(diǎn)擊登錄,判斷是否登錄成功。選擇人臉識(shí)別登錄將人臉對(duì)準(zhǔn)攝像頭,根據(jù)提示采集人臉,系統(tǒng)識(shí)別登錄,判斷是否認(rèn)證登錄成功。賬號(hào)密碼登錄成功,人臉識(shí)別登錄-瀏覽器版本過(guò)高禁止采集視頻流離線(xiàn)推薦QDB-6-2能否推薦成功用戶(hù)進(jìn)入首頁(yè),系統(tǒng)在首頁(yè)可能喜歡欄進(jìn)行離線(xiàn)商品推薦推薦成功,首頁(yè)可能喜歡欄展示離線(xiàn)推薦商品列表最近熱門(mén)商品推薦QDB-6-3能否推薦成功用戶(hù)進(jìn)入首頁(yè),系統(tǒng)在首頁(yè)頂部輪播圖進(jìn)行熱門(mén)商品推薦推薦成功,首頁(yè)頂部輪播圖展示熱門(mén)商品實(shí)時(shí)推薦QDB-6-4能否推薦成功用戶(hù)進(jìn)入首頁(yè),系統(tǒng)實(shí)時(shí)推薦欄根據(jù)用戶(hù)喜好進(jìn)行實(shí)時(shí)推薦1.未登錄用戶(hù)提示登錄才能獲得多樣化推薦服務(wù)2.沒(méi)有行為數(shù)據(jù)的用戶(hù)登錄,提示為喜歡的商品評(píng)分3.有歷史行為數(shù)據(jù)的用戶(hù)登錄,展示實(shí)時(shí)推薦商品列表商品檢索QDB-6-5能否檢索成功在搜索框輸入檢索關(guān)鍵字,點(diǎn)擊搜索檢索成功并將檢索得到的相關(guān)商品進(jìn)行展示商品評(píng)分QDB-6-6能否評(píng)分成功進(jìn)入商品詳情頁(yè),為商品選擇合適的分?jǐn)?shù),點(diǎn)擊提交評(píng)分。商品評(píng)分成功基于內(nèi)容的物品推薦QDB-6-7能否修改個(gè)人信息進(jìn)入商品詳情頁(yè),系統(tǒng)根據(jù)該商品推薦其相似商品。詳情頁(yè)面相似商品欄展示和該商品相似的商品列表6.3.2測(cè)試總結(jié)通過(guò)系統(tǒng)的功能測(cè)試和非功能測(cè)試,基于Web的個(gè)性化商品推薦系統(tǒng)所有功能都基本滿(mǎn)足交付要求,只有人臉識(shí)別在前端調(diào)用攝像頭進(jìn)行人臉采集時(shí)出現(xiàn)了視頻資源不可用的bug,經(jīng)過(guò)分析與修改,該bug已解決,其他的利用多種手段進(jìn)行了多組數(shù)據(jù)測(cè)試與分析,功能正常。
第7章總結(jié)與展望7.1總結(jié)論文針對(duì)當(dāng)下電子商務(wù)數(shù)據(jù)過(guò)載的問(wèn)題,分析個(gè)性化商品推薦系統(tǒng)的需求,開(kāi)發(fā)了這款推薦系統(tǒng)。系統(tǒng)架構(gòu)總體分為前端用戶(hù)可視化模塊和后端部分,后端部分推薦模塊使用Scala語(yǔ)言編寫(xiě),業(yè)務(wù)模塊使用SpringBoot編寫(xiě),項(xiàng)目采用maven聚合工程搭建,根據(jù)業(yè)務(wù)性質(zhì)可以大致分為:綜合業(yè)務(wù)部分:負(fù)責(zé)推薦結(jié)果查詢(xún)、商品檢索、商品評(píng)分、商品標(biāo)簽、人臉識(shí)別與賬號(hào)密碼登錄注冊(cè);推薦模塊:包含數(shù)據(jù)加載、離線(xiàn)推薦、實(shí)時(shí)推薦、基于內(nèi)容的推薦、基于物品的協(xié)同過(guò)濾推薦;日志采集服務(wù):用戶(hù)對(duì)商品就行評(píng)分操作,會(huì)在綜合業(yè)務(wù)模塊進(jìn)行評(píng)分流消息整合并進(jìn)行日志埋點(diǎn),將日志寫(xiě)到指定路徑下的文件中。Flume會(huì)監(jiān)聽(tīng)該文件,當(dāng)探測(cè)到有新日志寫(xiě)入Flume會(huì)采集日志,將評(píng)分流傳入kafka;消息緩沖服務(wù):采用kafka作為消息隊(duì)列,F(xiàn)lume將采集的日志寫(xiě)入kafka,kafka做緩沖并預(yù)處理;為了方便數(shù)據(jù)處理,采用非關(guān)系型數(shù)據(jù)庫(kù)MongoDB。需要給實(shí)時(shí)推薦提供預(yù)備數(shù)據(jù),為了提高其響應(yīng)速度,采用Redis作為緩存數(shù)據(jù)庫(kù)。為了在海量數(shù)據(jù)下可以檢索更快,關(guān)鍵詞匹配更精確,選用ElasticSearch進(jìn)行全文檢索。系統(tǒng)可以根據(jù)用戶(hù)的行為操作,結(jié)合用戶(hù)的喜好,給用戶(hù)進(jìn)行個(gè)性化的推薦。一方面幫助用戶(hù)快速發(fā)現(xiàn)對(duì)自己有價(jià)值的信息,另一方面讓信息能夠展現(xiàn)在對(duì)它感興趣的用戶(hù)面前,從而實(shí)現(xiàn)信息消費(fèi)者和信息生產(chǎn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年濰坊貨車(chē)從業(yè)資格證考試試題
- 洛陽(yáng)商業(yè)職業(yè)學(xué)院《口述史實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年新能源發(fā)電項(xiàng)目投資合作協(xié)議
- 港口安全防護(hù)設(shè)施施工合同
- 橡膠制品招投標(biāo)內(nèi)控要點(diǎn)分析
- 高層公寓建設(shè)合同范文
- 施工合同執(zhí)行追蹤系統(tǒng)
- 2025正規(guī)貨物運(yùn)輸合同
- 人事專(zhuān)用章使用規(guī)范
- 營(yíng)業(yè)執(zhí)照辦理中的地址問(wèn)題
- 非遺文化南音介紹
- 板式換熱器對(duì)數(shù)平均溫差計(jì)算公式
- 體育初中學(xué)生學(xué)情分析總結(jié)報(bào)告
- 幕墻工程安裝施工施工管理人員配備及分工
- 《工程建設(shè)標(biāo)準(zhǔn)強(qiáng)制性條文電力工程部分2023年版》
- 中國(guó)歷史地理(山東聯(lián)盟)智慧樹(shù)知到期末考試答案2024年
- 國(guó)開(kāi)一體化平臺(tái)01588《西方行政學(xué)說(shuō)》章節(jié)自測(cè)(1-23)試題及答案
- (正式版)JBT 10618-2024 組合式電涌保護(hù)器(箱)
- 書(shū)法生職業(yè)生涯規(guī)劃
- 靜脈治療的風(fēng)險(xiǎn)管理課件
- 2024年極兔速遞有限公司招聘筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論