版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目 錄 TOC o 1-3 h z u HYPERLINK l _Toc482912974 摘 要 PAGEREF _Toc482912974 h 1 HYPERLINK l _Toc482912975 Abstract PAGEREF _Toc482912975 h 2 HYPERLINK l _Toc482912976 前 言 PAGEREF _Toc482912976 h 3 HYPERLINK l _Toc482912977 第一章 緒 論 PAGEREF _Toc482912977 h 4 HYPERLINK l _Toc482912978 1.1 研究背景及意義 PAGEREF _
2、Toc482912978 h 4 HYPERLINK l _Toc482912979 1.2 電影個(gè)性化推薦概述 PAGEREF _Toc482912979 h 4 HYPERLINK l _Toc482912980 1.3 本文的主要工作 PAGEREF _Toc482912980 h 5 HYPERLINK l _Toc482912981 1.4 本文的組織結(jié)構(gòu) PAGEREF _Toc482912981 h 5 HYPERLINK l _Toc482912982 第二章 設(shè)計(jì)目標(biāo)和系統(tǒng)搭建 PAGEREF _Toc482912982 h 6 HYPERLINK l _Toc4829129
3、83 2.1 設(shè)計(jì)目標(biāo) PAGEREF _Toc482912983 h 6 HYPERLINK l _Toc482912984 2.1 Python環(huán)境介紹 PAGEREF _Toc482912984 h 6 HYPERLINK l _Toc482912985 2.1.1 Python簡介 PAGEREF _Toc482912985 h 6 HYPERLINK l _Toc482912986 2.1.2 Python特點(diǎn) PAGEREF _Toc482912986 h 6 HYPERLINK l _Toc482912987 2.1.3 pycharm介紹 PAGEREF _Toc4829129
4、87 h 7 HYPERLINK l _Toc482912988 2.2 Flask介紹 PAGEREF _Toc482912988 h 7 HYPERLINK l _Toc482912989 2.3 Bootstrap介紹 PAGEREF _Toc482912989 h 8 HYPERLINK l _Toc482912990 2.4 Flask 和Bootstrap在此項(xiàng)目中的應(yīng)用 PAGEREF _Toc482912990 h 8 HYPERLINK l _Toc482912991 2.5 部署Flask應(yīng)用 PAGEREF _Toc482912991 h 9 HYPERLINK l _T
5、oc482912992 2.6 本章小結(jié) PAGEREF _Toc482912992 h 9 HYPERLINK l _Toc482912993 第三章 數(shù)據(jù)抓取和數(shù)據(jù)庫 PAGEREF _Toc482912993 h 11 HYPERLINK l _Toc482912994 3.1 數(shù)據(jù)抓取 PAGEREF _Toc482912994 h 11 HYPERLINK l _Toc482912995 3.1.1 數(shù)據(jù)選擇 PAGEREF _Toc482912995 h 11 HYPERLINK l _Toc482912996 3.1.2 爬蟲技術(shù)介紹 PAGEREF _Toc482912996
6、h 12 HYPERLINK l _Toc482912997 3.1.3 選擇用Python實(shí)現(xiàn) PAGEREF _Toc482912997 h 12 HYPERLINK l _Toc482912998 3.1.4 注意事項(xiàng) PAGEREF _Toc482912998 h 13 HYPERLINK l _Toc482912999 3.2 數(shù)據(jù)庫 PAGEREF _Toc482912999 h 14 HYPERLINK l _Toc482913000 3.2.1 Mongo DB 簡介 PAGEREF _Toc482913000 h 14 HYPERLINK l _Toc482913001 3.
7、2.2 在本項(xiàng)目中的使用 PAGEREF _Toc482913001 h 14 HYPERLINK l _Toc482913002 3.2.3 pymongo的使用 PAGEREF _Toc482913002 h 15 HYPERLINK l _Toc482913003 3.3 本章小結(jié) PAGEREF _Toc482913003 h 16 HYPERLINK l _Toc482913004 第四章 個(gè)性化推薦 PAGEREF _Toc482913004 h 17 HYPERLINK l _Toc482913005 4.1 推薦算法概述 PAGEREF _Toc482913005 h 17 H
8、YPERLINK l _Toc482913006 4.1.1 基于內(nèi)容的推薦和協(xié)同過濾 PAGEREF _Toc482913006 h 17 HYPERLINK l _Toc482913007 4.1.2 推薦算法的選擇 PAGEREF _Toc482913007 h 18 HYPERLINK l _Toc482913008 4.2 基于內(nèi)容的推薦實(shí)現(xiàn) PAGEREF _Toc482913008 h 19 HYPERLINK l _Toc482913009 4.2.1 TF-IDF PAGEREF _Toc482913009 h 19 HYPERLINK l _Toc482913010 4.2
9、.2 余弦相似性 PAGEREF _Toc482913010 h 19 HYPERLINK l _Toc482913011 4.2.3 在本項(xiàng)目中的應(yīng)用 PAGEREF _Toc482913011 h 20 HYPERLINK l _Toc482913012 4.3 本章小結(jié) PAGEREF _Toc482913012 h 22 HYPERLINK l _Toc482913013 第五章 系統(tǒng)功能測試和分析 PAGEREF _Toc482913013 h 23 HYPERLINK l _Toc482913014 5.1 基本功能測試 PAGEREF _Toc482913014 h 23 HYP
10、ERLINK l _Toc482913015 5.2 推薦功能 PAGEREF _Toc482913015 h 26 HYPERLINK l _Toc482913016 5.3 本章小結(jié) PAGEREF _Toc482913016 h 28 HYPERLINK l _Toc482913017 第六章 工作總結(jié)與展望 PAGEREF _Toc482913017 h 29 HYPERLINK l _Toc482913018 6.1 論文工作總結(jié) PAGEREF _Toc482913018 h 29 HYPERLINK l _Toc482913019 6.2 未來工作的展望 PAGEREF _Toc
11、482913019 h 29 HYPERLINK l _Toc482913020 參考文獻(xiàn) PAGEREF _Toc482913020 h 31 HYPERLINK l _Toc482913021 致 謝 PAGEREF _Toc482913021 h 33摘 要近些年來,提供個(gè)性化服務(wù)的網(wǎng)站越來越多,打開淘寶或者京東,你會看到這些網(wǎng)站都會有一個(gè)推薦模塊。這個(gè)模塊會給你推薦一些你感興趣的商品,從而提高網(wǎng)站的經(jīng)濟(jì)效益。電影類的網(wǎng)站亦是如此,不管是國外的Youtube或者是國內(nèi)的騰訊視頻,都少不了推薦模塊。這種功能對于用戶來說自然是很棒的。一個(gè)好的電影網(wǎng)站需要提供及時(shí)的觀影資訊,同時(shí)需要給用戶推薦
12、合適的電影。在網(wǎng)站資源更新的同時(shí),推薦的算法也在及時(shí)的更新。在推薦算法的實(shí)現(xiàn)中,數(shù)據(jù)的支持是必不可少的,所以網(wǎng)絡(luò)爬蟲技術(shù)也在這里顯得尤為重要了。本文主要以豆瓣的數(shù)據(jù)作為數(shù)據(jù)支持,通過爬蟲技術(shù)獲取我們所需要的數(shù)據(jù)。網(wǎng)站的前端主要以當(dāng)今最火的Bootstrap框架,后端以Python語言為基礎(chǔ)的Flask輕量級web框架,數(shù)據(jù)庫采用的是Mongo DB,推薦算法選擇了基于內(nèi)容的推薦算法。這樣的系統(tǒng)就構(gòu)成了個(gè)性化電影推薦系統(tǒng),根據(jù)用戶自己喜歡的電影去推薦相似的電影。給用戶一種“懂我”的體驗(yàn)。關(guān)鍵詞:電影網(wǎng)站;數(shù)據(jù)采集;Flask ;個(gè)性化推薦AbstractIn recent years, the
13、provision of personalized service sites more and more, open Taobao or Jingdong, you will see these sites will have a recommended module. This module will give you some merchandise you are interested in to improve the economic benefits of the website. Movie class site is also true, whether it is fore
14、ign Youtube or domestic Tencent video, are ultimately recommended module. This feature is naturally great for the user. A good movie site needs to provide timely viewing information, while the need to recommend the appropriate film to the user. In the website resources update at the same time, the r
15、ecommended algorithm is also updated in a timely manner.In the implementation of the recommended algorithm, the data support is essential, so the web crawler technology is also particularly particularly important. This article mainly to use data from Douban as data support, through the web crawler t
16、echnology to obtain the data we need. The front end of the site is dominated by todays hottest Bootstrap framework, which is based on a Python language-based lightweight web framework, The database uses Mongodb , and the recommended algorithm is based on content-based recommendation algorithms. This
17、 system constitutes a personalized film recommendation system, according to the users own favorite movies to recommend similar movies. Give the user a understand me experience.Keywords: Film Website; Data Collection; Flask ; Personalized Recommendation前 言個(gè)性化推薦系統(tǒng)的出現(xiàn)是有原因和歷史的,從古人狩獵的獵物選擇到皇室美味佳肴的烹飪,從各種制造
18、業(yè)到時(shí)尚工業(yè),到處都呈現(xiàn)著個(gè)性化推薦的“原始”模型。進(jìn)入互聯(lián)網(wǎng)時(shí)代后,隨著大數(shù)據(jù)分析和云計(jì)算等技術(shù)的發(fā)展,在計(jì)算和存儲的工具性能躍入新的高度之后,推薦系統(tǒng)這才達(dá)到了前所未有的“個(gè)性化”高度。個(gè)性化推薦系統(tǒng)本質(zhì)是探究“人”的問題,而并非是計(jì)算的問題。所以,我們更應(yīng)該去探索其中人的特性。對個(gè)性化推薦的算法不斷完善,不斷的去貼近人的思想,這會引導(dǎo)我們的科學(xué)走向另一個(gè)高度?;蛟S我們在未來的某個(gè)時(shí)間,晚上放松休息時(shí),習(xí)慣性的打開某電影網(wǎng)站,點(diǎn)開其中的個(gè)性化推薦模塊,總能在這個(gè)模塊中發(fā)現(xiàn)一些給自己驚喜的影片,選取其中的感覺好的電影觀看一下,然后默默點(diǎn)擊電影旁邊的那個(gè)心形圖標(biāo)。如此的生活就這樣一直持續(xù)著。這
19、是本文旨在實(shí)現(xiàn)的一種生活方式,一種理解人,并且關(guān)心人的生活方式。 緒 論本章介紹了此項(xiàng)目的研究背景,個(gè)性化推薦在這個(gè)時(shí)代的必要性及意義,整個(gè)系統(tǒng)的簡單概述,本畢設(shè)的主要工作,以及每章的簡要說明。1.1 研究背景及意義不知道從什么時(shí)候開始每天聽完網(wǎng)易云音樂的日推成為了我們生活的一部分。不知道從什么時(shí)候開始,我們越來越喜歡在Netflix上觀看推薦的電影,這就是個(gè)性化推薦的魅力。我們打開一個(gè)網(wǎng)站或者應(yīng)用,我們總是希望它可以給我們推薦我們想看的、想聽的內(nèi)容。根據(jù)Netflix產(chǎn)品創(chuàng)新副總裁Carlos Uribe-Gomez和首席產(chǎn)品官Neil Hunt的一份報(bào)告,推薦算法能夠?yàn)镹etflix節(jié)省每
20、年10億美元。10年前,NETFLIX 舉辦了個(gè)主題為提升自己網(wǎng)站推薦算法的比賽,第一個(gè)把現(xiàn)有的推薦系統(tǒng)的準(zhǔn)確率提高10%的隊(duì)伍便可以獲勝,并且取得獎(jiǎng)金,當(dāng)時(shí)的獎(jiǎng)金數(shù)額是100萬美金。3年后,一個(gè)7人隊(duì)伍脫穎而出,奪得了第一并獲得了這非常豐厚的獎(jiǎng)金1。由此看來,推薦算法對于一個(gè)電影網(wǎng)站是非常重要的,同時(shí)也是難以實(shí)現(xiàn)的。一個(gè)電影網(wǎng)站,如果想要留住用戶,那么它必須給用戶提供與其他網(wǎng)站不一樣的東西,所以推薦模塊便成了一個(gè)非常棒的選擇,同時(shí)這也是一個(gè)非常難的部分。一個(gè)好的推薦算法能夠給一個(gè)網(wǎng)站帶來的效益是顯而易見的,可以提升用戶對此網(wǎng)站的依賴性,可以提升一個(gè)網(wǎng)站在行業(yè)領(lǐng)域內(nèi)的地位,其他的經(jīng)濟(jì)效益就不在
21、本文中敘述了。1.2 電影個(gè)性化推薦概述在視頻網(wǎng)站發(fā)展的開始時(shí)期,推薦視頻這個(gè)模塊這網(wǎng)站上就已經(jīng)存在了。網(wǎng)站推薦模塊根據(jù)當(dāng)前熱門視頻和用戶的一些觀看數(shù)據(jù),提供給用戶個(gè)性化的視頻推薦,因此讓用戶更加依賴這個(gè)網(wǎng)站,增加網(wǎng)站的訪問流量,這也是如今各大視頻網(wǎng)站非常重視的功能之一。對于一些在線電影提供商,網(wǎng)站影片推薦系統(tǒng)的推薦效率和公司的經(jīng)濟(jì)效益直接掛鉤,同時(shí)對公司以后的發(fā)展也有著極其重要的影響。本文中實(shí)現(xiàn)的電影推薦系統(tǒng)采用Python Flask框架作為后臺技術(shù)支持,這是一個(gè)輕量級的web框架,前端采用Bootstrap框架,數(shù)據(jù)庫采用Mongo DB,這是一個(gè)NoSql 數(shù)據(jù)庫;推薦算法采用基于內(nèi)容
22、的推薦算法,簡稱CB(Content-based Recommendations);數(shù)據(jù)更新的工作采用網(wǎng)絡(luò)爬蟲技術(shù)。1.3 本文的主要工作在這個(gè)項(xiàng)目中主要使用web爬蟲技術(shù),Python web開發(fā),Mongo DB,基于內(nèi)容的推薦算法(CB)等,來開發(fā)了一個(gè)電影推薦系統(tǒng)。主要工作如下:使用web爬蟲技術(shù)從豆瓣獲取我們需要的數(shù)據(jù),即每部電影的數(shù)據(jù);把數(shù)據(jù)存放在Mongo DB;使用Flask框架搭建后臺,Bootstrap框架搭建前端;將數(shù)據(jù)進(jìn)行處理,TF-IDF算法提取關(guān)鍵詞,通過TF-IDF值構(gòu)成相應(yīng)的矩陣,然后再計(jì)算每個(gè)電影間的余弦相似性,按相似性排序存放在數(shù)據(jù)庫;根據(jù)用戶喜歡的電影去推
23、薦與之相似度較高的電影。1.4 本文的組織結(jié)構(gòu)本文一共有6個(gè)章節(jié),每章的內(nèi)容概要如下:第一章:緒論。這章介紹了本課題的研究背景和意義、電影個(gè)性化推薦概述、本文的主要工作;第二章: 系統(tǒng)的搭建。這章介紹了一個(gè)網(wǎng)站(Bootstrap+Flask)是如何建立的,前后端是如何交互的以及一個(gè)Flask項(xiàng)目是如何部署到服務(wù)器的;第三章:數(shù)據(jù)和數(shù)據(jù)庫。這章介紹了如何寫一個(gè)爬蟲去抓取我們所需要的數(shù)據(jù),Mongo DB是如何使用以及在這個(gè)系統(tǒng)中的優(yōu)點(diǎn)。第四章:個(gè)性化推薦。這章介紹了基于內(nèi)容的推薦算法是如何實(shí)現(xiàn)的,以及在這個(gè)系統(tǒng)中使用的優(yōu)點(diǎn)和不足;第五章: 系統(tǒng)功能測試與分析。這章對已完成的電影系統(tǒng)進(jìn)行測試,并
24、對結(jié)果進(jìn)行分析;第六章:工作總結(jié)與展望。這章介紹了系統(tǒng)的優(yōu)缺點(diǎn)以及需要改進(jìn)的地方。 設(shè)計(jì)目標(biāo)和系統(tǒng)搭建本章介紹如何使用Bootstrap和Flask搭建一個(gè)網(wǎng)站,簡單進(jìn)行了Bootstrap,F(xiàn)lask以及Python環(huán)境的介紹,并且介紹了如何去部署一個(gè)Flask項(xiàng)目。本章的重點(diǎn)不在于界面的設(shè)計(jì),所以關(guān)于系統(tǒng)界面和一些邏輯的說明和設(shè)計(jì)放在第五章敘述了。2.1 設(shè)計(jì)目標(biāo)實(shí)現(xiàn)這樣一個(gè)電影推薦系統(tǒng),過程是很復(fù)雜的,在這里將介紹一下本項(xiàng)目的設(shè)計(jì)目標(biāo):1.實(shí)現(xiàn)網(wǎng)站的基本功能:這里采用Python語言開發(fā),后臺框架Flask,前端框架Bootstrap;2.實(shí)現(xiàn)數(shù)據(jù)的更新功能:這里采用Python web
25、爬蟲技術(shù),從豆瓣獲取所需要的數(shù)據(jù);3.實(shí)現(xiàn)個(gè)性化推薦功能:這里采用基于內(nèi)容的推薦算法。2.1 Python環(huán)境介紹本文會在此小節(jié)介紹在windows平臺下使用Python語言開發(fā)一個(gè)網(wǎng)站。2.1.1 Python簡介Python跟許多常用的語言一樣是一種面向?qū)ο蟮恼Z言,它以簡潔,快速開發(fā)出名,1991年發(fā)行了第一個(gè)版本,現(xiàn)在主要兩個(gè)分支:2.7和3.X。本文中使用的是3.X。Python有很多開源社區(qū),眾多的開源項(xiàng)目為Python增添色彩。 Python語法簡潔清晰,嚴(yán)格使用空格,所以Python代碼寫出來非常漂亮。Python安裝包可以從官網(wǎng)下載,也可以使用一個(gè)集成安裝包anaconda,這
26、個(gè)自帶一些科學(xué)計(jì)算的package。本文推薦后者。2.1.2 Python特點(diǎn)1.易于學(xué)習(xí):Python代碼結(jié)構(gòu)簡單,對于初學(xué)者非常友好。2.易于閱讀:Python結(jié)構(gòu)清晰,一般對英文有基本認(rèn)識的就能讀懂了。3.易于維護(hù):Python的源代碼是相當(dāng)容易維護(hù)的,這也是其成功原因之一。4.一個(gè)廣泛的標(biāo)準(zhǔn)庫:Python的最大的優(yōu)勢之一是豐富的庫。許多開源社區(qū)為之服務(wù)。 5.互動(dòng)模式:提供類似于命令行一樣的接口。 6.可移植:由于是開源的,幾乎可以移植到任何平臺。 7.可擴(kuò)展:Python擁有著強(qiáng)大的擴(kuò)展能力,可以連接其他語言。 8.數(shù)據(jù)庫:Python提供幾乎所有的數(shù)據(jù)庫接口。 9.GUI編程:P
27、ython同樣可以開發(fā)GUI程序2,3,4。2.1.3 PyCharm介紹本文的開發(fā)環(huán)境是windows,在windows下有一款功能強(qiáng)大的集成 HYPERLINK /item/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83 t _blank 開發(fā)環(huán)境( HYPERLINK /item/IDE t _blank IDE,Integrated Development Environment ),叫做PyCharm,這是由Jetbrain開發(fā)的。這個(gè)IDE非常適合Python開發(fā)者,它帶有主題功能,每個(gè)主題都有自己的風(fēng)格,開發(fā)者總能找到自己喜歡的,另外一些智能提示是非常的
28、貼心。項(xiàng)目管理,版本控制,這些非常棒的功能都是有的,PyCharm還提供一些測試的功能,讓開發(fā)的工作更加方便和快捷。Pycharm的安裝包可以從官網(wǎng)下載。2.2 Flask介紹It came out of an April Fools joke but proved popular enough to make into a serious application in its own right. Flask的誕生是真的充滿趣味,一開始只是作者愚人節(jié)的一個(gè)玩笑,但是卻被許多人看好,然后才有了今天的Flask 5。Flask是一個(gè)微型框架,因?yàn)樗话唵蔚暮诵墓δ埽渌枰墓δ苁强梢詳U(kuò)展的
29、,同樣有眾多開源社區(qū)給Flask開發(fā)擴(kuò)展。Flask沒有對數(shù)據(jù)庫,驗(yàn)證,ORM,文件上傳,以及其他的技術(shù)做限定和捆綁,所以開發(fā)者可以選用自己喜歡的擴(kuò)展去開發(fā)應(yīng)用,這樣讓開發(fā)者更具有主動(dòng)性6。Flask 是基于MTV的。Modle(模型)層:負(fù)責(zé)數(shù)據(jù)庫的交互和數(shù)據(jù)模型;Template(模版):負(fù)責(zé)如何把頁面展示給用戶;View(視圖):負(fù)責(zé)業(yè)務(wù)邏輯,并在適當(dāng)?shù)臅r(shí)候調(diào)用Model和Template,返回給用戶需要的數(shù)據(jù)。這樣子給系統(tǒng)分層,會使得開發(fā)模塊化,讓開發(fā)者的工作效率提高,同時(shí)維護(hù)也變得簡單。Flask的安裝工作可以使用Python自帶的pip去完成,或者適應(yīng)PyCharm上圖形界面選擇F
30、lask這個(gè)package安裝。pip 安裝的命令行:pip install packagename。2.3 Bootstrap介紹本項(xiàng)目前端采用Bootstrap框架。Bootstrap來自 Twitter公司,目前來說是許多開發(fā)者喜歡的前端框架,也是開源的框架。Bootstrap 是基于 jQuery、HTML、CSS的,相當(dāng)于在這個(gè)框架中已經(jīng)繼承了一些常用且好看的樣式表和JavaScript。它提供了更加簡單的開發(fā)模式,使得 Web 開發(fā)更加快捷。它是由Twitter的兩位前端工程師Mark Otto和Jacob Thornton合作開發(fā),并且作為一個(gè)開源項(xiàng)目繼續(xù)維護(hù)。Bootstrap
31、提供了優(yōu)雅漂亮的HTML和CSS規(guī)范,對移動(dòng)端支持也很好。Bootstrap一經(jīng)推出后頗受歡迎,很多大牛繼續(xù)著這個(gè)項(xiàng)目的開發(fā)。這一直是GitHub上的熱門開源項(xiàng)目,這也是在長期更新的,目前最新的已經(jīng)出到Bootstrap4.0,本文中使用的是Bootstrap3.3.7。有一些非常有名的公司或組織使用了Bootstrap框架,如NASA的MSNBC(微軟全國廣播公司)的Breaking News都使用了該項(xiàng)目7,8。2.4 Flask 和Bootstrap在此項(xiàng)目中的應(yīng)用一個(gè)網(wǎng)站分為前端和后端,是要能實(shí)現(xiàn)前后端數(shù)據(jù)交互的。下面使用一張導(dǎo)圖說明框架的使用以及網(wǎng)站的結(jié)構(gòu)。如圖2.1:圖2.1 系統(tǒng)
32、簡單結(jié)構(gòu)圖用戶在訪問一個(gè)網(wǎng)站時(shí),首先在瀏覽器中輸入域名,然后DNS會解析到對應(yīng)的服務(wù)器,這時(shí)候服務(wù)器就會返回對應(yīng)的頁面,用戶在使用這個(gè)網(wǎng)站的時(shí)候,前后端會進(jìn)行交互,前端會向后端發(fā)送get或者post請求,然后后端Flask中的視圖程序會處理這些請求,與數(shù)據(jù)庫進(jìn)行交互,也就是后文中提到的Mongo DB,然后再返回頁面或數(shù)據(jù),用戶就可以看到前端頁面的更新或者數(shù)據(jù)的更新。Bootstrap的主要作用還是在頁面的美觀上。2.5 部署Flask應(yīng)用在window下部署,可以使用apache + mod_wsgi的組合,apache是一個(gè)模塊化的服務(wù)器,支持最新的 HYPERLINK /item/HTT
33、P t _blank HTTP/1.1通信協(xié)議,mod_wsgi 是Apache HTTP服務(wù)器的擴(kuò)展模塊,實(shí)現(xiàn)了 HYPERLINK /base/python t _blank o Python知識庫 PythonWSGI標(biāo)準(zhǔn),可以支持任何兼容Python WSGI標(biāo)準(zhǔn)的Python應(yīng)用。在開發(fā)過程中暫時(shí)可以不用考慮部署的問題。2.6 本章小結(jié)本章介紹了一個(gè)基于Flask的個(gè)性化電影推薦系統(tǒng)的設(shè)計(jì)目標(biāo)、Python語言的特點(diǎn),以及對Python語言在開發(fā)一個(gè)web項(xiàng)目上的優(yōu)勢進(jìn)行了介紹。同時(shí)還講述了Bootstrap框架在這個(gè)項(xiàng)目中的作用和項(xiàng)目的初步結(jié)構(gòu),解釋了一個(gè)web 項(xiàng)目的數(shù)交互過程。
34、并且在一個(gè)用戶訪問瀏覽器順序的基礎(chǔ)上,說明了一個(gè)web項(xiàng)目是如何運(yùn)行的。最后簡單說明了Flask項(xiàng)目如何在windows服務(wù)器上部署。第三章 數(shù)據(jù)抓取和數(shù)據(jù)庫本章會介紹電影網(wǎng)站所需要的數(shù)據(jù)是如何獲得的,抓取過程中的注意事項(xiàng),同時(shí)會介紹Nosql 數(shù)據(jù)庫的優(yōu)點(diǎn)以及在本項(xiàng)目中的應(yīng)用。3.1 數(shù)據(jù)抓取本小節(jié)會介紹我們所需數(shù)據(jù)的抓取是如何進(jìn)行的,同時(shí)也會說明爬蟲的一些注意事項(xiàng)。3.1.1 數(shù)據(jù)選擇在數(shù)據(jù)抓取之前,需要先去計(jì)劃一下哪些數(shù)據(jù)是需要的,這樣方便數(shù)據(jù)庫建表。首先應(yīng)該考慮的是電影信息表,這張表包含了電影的所有信息。那么我就就可以根據(jù)這樣表去抓取所需要的數(shù)據(jù),我們可以先定下我們抓取的數(shù)據(jù)(電影id
35、,電影名字,電影海報(bào),電影主演,導(dǎo)演,時(shí)間,評分,類型,又名,地區(qū),時(shí)長,豆瓣鏈接),可以從豆瓣的網(wǎng)頁上查看到這些信息,如圖3.1 。圖3.1 豆瓣電影信息3.1.2 爬蟲技術(shù)介紹 HYPERLINK /item/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB t _blank 我們熟悉的百度,谷歌等,都使用到了爬蟲技術(shù)。網(wǎng)絡(luò)爬蟲,簡而言之就是通過編寫代碼,去實(shí)現(xiàn)從互聯(lián)網(wǎng)中自動(dòng)獲取數(shù)據(jù)的功能,避免了人力操作,因?yàn)槿肆Φ娜秉c(diǎn)很明顯:速度慢,易遺漏。其實(shí)網(wǎng)絡(luò)爬蟲是模擬用戶的行為,并不完全是像機(jī)器一樣抓取的。我們稱作網(wǎng)絡(luò)爬蟲是spider,結(jié)合到它的工作方式,網(wǎng)絡(luò)爬蟲可以從
36、一個(gè)網(wǎng)頁爬到其他網(wǎng)頁去爬取信息,因?yàn)榫W(wǎng)頁中也會有其他超鏈接。這樣就像個(gè)蜘蛛一樣可以在網(wǎng)絡(luò)這個(gè)巨大的空間中爬行,不停地獲取我們所需要的數(shù)據(jù)9,10。下面用一張圖來解釋爬蟲的行為,見圖3.2:圖3.2 爬蟲概念3.1.3 選擇用Python實(shí)現(xiàn)Python在爬蟲領(lǐng)域有著很大的優(yōu)勢,代碼簡單明了,適合根據(jù)實(shí)際情況快速修改代碼,網(wǎng)絡(luò)上的內(nèi)容、布局隨時(shí)都會變,Python的快速開發(fā)比較有優(yōu)勢。所以這里我們用Python去實(shí)現(xiàn)這個(gè)功能。這里我們不需要一個(gè)非常龐大的框架,所以選擇一個(gè)簡單易用的package,叫做requests。這個(gè)package的安裝方式跟上面提到的Flask的安裝方式一樣,pip或者P
37、yCharm 的界面。requests 非常好用,下面用一張圖說明requests的使用,見圖3.3,詳細(xì)代碼就不在本文中說明了。 圖3.3 requests的簡要說明首先第一步是創(chuàng)建requests對象,通過這個(gè)requests對象就可以模擬用戶訪問網(wǎng)站了,headers參數(shù)就是關(guān)于瀏覽器的一些配置參數(shù),這樣服務(wù)器才不會認(rèn)為這是機(jī)器訪問的。訪問url獲取數(shù)據(jù),可以設(shè)置一點(diǎn)訪問頻率的參數(shù),這樣可以與人訪問網(wǎng)站的過程更加的相似。接收到返回過來的頁面數(shù)據(jù)之后就可以從其中刪選出我們需要的數(shù)據(jù),可以用正則去匹配或者使用另外一個(gè)Python包叫做BeautifulSoup,這個(gè)包在處理html文檔時(shí)非常
38、的方便。另外在處理一些需要登錄的網(wǎng)站的時(shí)候,就需要使用requests中的session對象。3.1.4 注意事項(xiàng)一種情況是網(wǎng)頁不需要特別的處理,直接就可以訪問,不會因?yàn)樵L問過多而拒絕訪問。這樣的網(wǎng)頁信息是可以隨時(shí)進(jìn)行抓取的,相對較為簡單。另一種是需要特殊對待的,如需要登錄、或者每段時(shí)間內(nèi)有訪問次數(shù)限制,需要異步加載等等。這種相對較為復(fù)雜,這就需要根據(jù)具體的情況來進(jìn)行抓取,可以結(jié)合使用一些其他的工具。我們對于第一種情況的網(wǎng)頁,盡量對爬取的速率進(jìn)行限制,不要對網(wǎng)站服務(wù)的負(fù)載性能做出不必要的挑戰(zhàn)。此外值得一提的是,大多數(shù)網(wǎng)站都會定義robots.txt文件,這樣可以讓爬蟲了解爬取該網(wǎng)站時(shí)存在哪些限
39、制。這些限制雖然僅僅作為建議給出,但是良好的網(wǎng)絡(luò)公民都應(yīng)當(dāng)遵守這些限制。一般可以訪問主域名/ robots.txt 去獲取這些信息。3.2 數(shù)據(jù)庫本文選用了Nosql (非關(guān)系型的數(shù)據(jù)庫)來存放電影數(shù)據(jù),非關(guān)系型數(shù)據(jù)庫中表的數(shù)據(jù)是key-value 對應(yīng)的,熟悉Python的話,那么對這種數(shù)據(jù)類型就一點(diǎn)都不陌生了。Nosql數(shù)據(jù)庫在下面幾種情況下比較適用:1、數(shù)據(jù)模型比較簡單;2、對數(shù)據(jù)查詢的效率要求較高;3、不需要高度的數(shù)據(jù)一致性;4、數(shù)據(jù)存儲空間沒要求限制;5、一些文檔類型的存儲。Nosql 數(shù)據(jù)庫在大數(shù)據(jù)時(shí)代顯得尤為重要了,有時(shí)候數(shù)據(jù)的查詢速度直接影響的整個(gè)系統(tǒng)的性能。3.2.1 Mon
40、go DB 簡介Mongo DB 是Nosql 數(shù)據(jù)庫中一個(gè)典型的例子,是一個(gè)基于分布式文件存儲的數(shù)據(jù)庫。易擴(kuò)展易遷移,查詢速度快,目的是為WEB應(yīng)用提供一些sql數(shù)據(jù)庫不太好實(shí)現(xiàn)的或者實(shí)現(xiàn)不了的高性能數(shù)據(jù)存儲解決方案11。Mongo DB可以直接去官網(wǎng)下載windows平臺的最新版。3.2.2 在本項(xiàng)目中的使用這里用一個(gè)可視化的工具看一下數(shù)據(jù)是如何存儲的,Mongo DB 存在的數(shù)據(jù)和 Python中的dict(字典)數(shù)據(jù)類型類似。參考圖3.4。圖3.4 mongo DB 樣例3.2.3 pymongo的使用通常開發(fā)過程中,我們在一個(gè)項(xiàng)目中使用數(shù)據(jù)庫的時(shí)候,不會去寫過多的sql語句,或者使用
41、原生的查詢語句,因?yàn)槟敲磳τ陧?xiàng)目的開發(fā)進(jìn)度會有一些影響。這時(shí)候我們會選擇Python語言下的第三方包來對數(shù)據(jù)庫進(jìn)行操作,這樣就提高了開發(fā)效率,代碼也簡明易懂。本文使用的是pymongo,安裝方式同之前一樣,pip安裝。這里用下面這張圖來說明pymongo是如何在這個(gè)項(xiàng)目工作的見圖3.5:圖3.5 pymongo的使用首選創(chuàng)建pymongo的MongoClient對象,這個(gè)對象是用來連接數(shù)據(jù)庫的,參數(shù)部分是數(shù)據(jù)庫的地址和端口。連接上數(shù)據(jù)庫后就可以訪問具體的數(shù)據(jù)庫了。然后再對數(shù)據(jù)庫中集合進(jìn)行操作。3.3 本章小結(jié)本章從需求的角度介紹了數(shù)據(jù)的選擇,數(shù)據(jù)的抓取,在數(shù)據(jù)采集過程中用到的技術(shù),選擇語言時(shí)考
42、慮的優(yōu)缺點(diǎn)。對Mongo DB 進(jìn)行了簡單的介紹,以及在使用Mongo DB 時(shí)選擇的Python 中的pymongo,使得我們操作數(shù)據(jù)庫更加簡單。在進(jìn)行數(shù)據(jù)抓取的時(shí)候,需要先對我們的需求進(jìn)行分析,確定這個(gè)網(wǎng)站抓取的難度系數(shù),估算可能需要的工作時(shí)間,確定這個(gè)網(wǎng)站數(shù)據(jù)的可行性之后再進(jìn)行代碼編寫。這樣子可以節(jié)省很多不必要的時(shí)間和可能多余的開銷。第四章 個(gè)性化推薦現(xiàn)在數(shù)據(jù)有了,網(wǎng)站的總體框架有了,那么我們還需要的就是推薦算法了,這章將會介紹推薦算法的選擇以及如何去實(shí)現(xiàn)它。4.1 推薦算法概述推薦算法是推薦系統(tǒng)的核心,推薦算法決定了推薦給用戶的是什么樣的電影。常見的推薦算法大抵可以分為類:基于內(nèi)容的推
43、薦算法、協(xié)同過濾推薦算法12,13,14。 每種推薦算法都有各自的優(yōu)勢,需要的條件也不盡相同。4.1.1 基于內(nèi)容的推薦和協(xié)同過濾基于內(nèi)容的推薦(Content-based Recommendation):這是根據(jù)物品或內(nèi)容的元數(shù)據(jù),發(fā)現(xiàn)物品或內(nèi)容的相關(guān)性,相似性,然后根據(jù)用戶以前的喜好記錄推薦給用戶相似度比較高的物品。下圖可以很好的解釋,見圖4.1:圖4.1 基于內(nèi)容推薦舉例用戶A喜歡A電影,找到與A電影相似度較高的C電影推薦給他?;趨f(xié)同過濾的推薦(Collaborative Filtering-based Recommendation)大抵分為兩類:基于用戶的協(xié)同過濾推薦和基于項(xiàng)目的協(xié)同
44、過濾推薦15,16?;谟脩舻膮f(xié)同過濾推薦是使用統(tǒng)計(jì)技術(shù)找到與目標(biāo)用戶有相同喜歡的用戶,然后據(jù)這個(gè)用戶的喜歡去推薦給目標(biāo)用戶?;驹砭褪峭ㄟ^用戶行為的相似性去推薦感興趣的資源??梢杂孟聢D理解,見下頁圖4.2所示:圖4.2 基于用戶的協(xié)同過濾舉例根據(jù)用戶對電影的評價(jià),發(fā)現(xiàn)用戶A與用戶C相似,所以把用戶喜歡的電影推薦給A用戶。圖4.3 基于項(xiàng)目的協(xié)同過濾舉例基于項(xiàng)目的協(xié)同過濾推薦是根據(jù)用戶之間喜歡電影的相似性去推薦一些相似的電影??梢愿鶕?jù)圖4.3去理解。用戶A喜歡A電影并且喜歡C電影,用戶B喜歡A電影,并且喜歡C電影,則認(rèn)為喜歡A的電影也喜歡C電影,所以對于喜歡A電影的用戶就給他推薦C電影。4.
45、1.2 推薦算法的選擇在冷啟動(dòng)階段,系統(tǒng)用戶數(shù)據(jù)比較少,可以偏向采用基于內(nèi)容的推薦,當(dāng)積累一定用戶數(shù)據(jù)后,偏向采用協(xié)同過濾。因?yàn)閰f(xié)同過濾本身是簡歷在海量用戶數(shù)據(jù)基礎(chǔ)上的。所以本文中采用的推薦算法是基于內(nèi)容的推薦算法。4.2 基于內(nèi)容的推薦實(shí)現(xiàn)本小節(jié)會介紹在這個(gè)項(xiàng)目中基于內(nèi)容的推薦是如何實(shí)現(xiàn)的?,F(xiàn)在已經(jīng)有了電影數(shù)據(jù),其次我們還要有用戶喜歡哪些電影的數(shù)據(jù),這應(yīng)該是一個(gè)用戶對應(yīng)喜好電影的表,會在網(wǎng)站中有體現(xiàn),網(wǎng)站會提供一個(gè)功能讓用戶可以添加和刪除喜歡的電影,在第五章里會有介紹網(wǎng)站界面和各個(gè)功能。有了這個(gè)數(shù)據(jù)才可以進(jìn)行基于內(nèi)容的推薦。4.2.1 TF-IDF(Term Frequency-Invers
46、e Document Frequency, 詞頻-逆文件頻率)TF(詞頻, Term Frequency) = 某個(gè)詞在本章中出現(xiàn)的次數(shù)/文章的總詞數(shù)指的是某一個(gè)給定的詞語在該文件中出現(xiàn)的次數(shù)。這個(gè)數(shù)字通常會被歸一化(一般是詞頻除以文章總詞數(shù)), 以防止它偏向長的文件。IDF(逆文檔頻率, Inverse Document Frequency) = log(語料庫的總數(shù)/包含該詞的文檔數(shù))IDF的主要思想是:如果包含某詞條的文檔越少, IDF越大,則說明詞條具有很好的類別區(qū)分能力。某一特定詞語的IDF,可以由總文件數(shù)目除以包含該詞語之文件的數(shù)目,再將得到的商取對數(shù)得到。根據(jù)TF-IDF值17排
47、序,構(gòu)建每個(gè)電影的相關(guān)向量。4.2.2 余弦相似性在上一步,我們已經(jīng)得到了每個(gè)電影的用于計(jì)算余弦相似性的向量。將向量根據(jù)坐標(biāo)值,繪制到向量空間中,求得他們的夾角,并得出夾角對應(yīng)的 HYPERLINK /item/%E4%BD%99%E5%BC%A6/73670 t _blank 余弦值,此余弦值就可以用來表征,這兩個(gè)向量的相似性。夾角越小,余弦值越接近于1,它們的方向更加吻合,則越相似18。那么在電影的相似度就越高。下圖可以更好的理解余弦相似性,見下頁的圖4.4:圖4.4 余弦相似性4.2.3 在本項(xiàng)目中的應(yīng)用在開始之前,我們需要了解一個(gè)叫做sklearn 的模塊,sklearn 是一個(gè) Py
48、thon 的 科學(xué)計(jì)算庫,提供了數(shù)種聚類算法可供選擇。Python 中自然也是有sklearn的。sklearn是機(jī)器學(xué)習(xí)中一個(gè)常用的Python第三方模塊12,里面對一些常用的機(jī)器學(xué)習(xí)方法進(jìn)行了封裝,在進(jìn)行機(jī)器學(xué)習(xí)任務(wù)時(shí),并不需要每個(gè)人都實(shí)現(xiàn)所有的算法,只需要簡單的調(diào)用sklearn里的模塊就可以實(shí)現(xiàn)大多數(shù)機(jī)器學(xué)習(xí)任務(wù)19,20。所以我們計(jì)算每個(gè)電影的余弦相似性的時(shí)候用的就是sklearn,sklearn的安裝比較復(fù)雜,所以在剛開始安裝Python環(huán)境的時(shí)候,本文推薦安裝anaconda,而不是官方Python,因?yàn)閍naconda包含了sklaern 的包。所以會用起來就簡單多了,可以把精
49、力花在開發(fā)整個(gè)系統(tǒng)上,而不是花在算法上。在計(jì)算TF-IDF之前先把電影的數(shù)據(jù)進(jìn)行了簡單的處理。這里將電影的名字,導(dǎo)演,主演,類型,評分等,合起來作為一個(gè)已經(jīng)分詞好的文檔。這個(gè)文檔就用來進(jìn)行TF-IDF算法。計(jì)算好TF-IDF之后,然后就可以計(jì)算余弦相似性了,計(jì)算余弦相似性這里也需要用到sklearn,同樣優(yōu)點(diǎn)可以讓我們的重心不用放在算法上。項(xiàng)目中計(jì)算TF-IDF值和余弦相似性的代碼見下頁的圖4.5。到這里,本文就完成了對每個(gè)電影計(jì)算與之相似的電影的工作,那么這里就已經(jīng)建立一張movierelation表,用來存放 “電影-與之相似的電影(排序)”??梢詤⒁娤马搱D圖4.6。圖4.5 計(jì)算相似性的
50、代碼圖4.6 電影信息表這里我們推薦的核心工作已經(jīng)完成,還剩下的就是根據(jù)用戶喜歡的電影去推薦相似度高的電影,這些工作會在網(wǎng)站前后臺的交互中完成,可以參考第五章中對系統(tǒng)功能的敘述。用戶在使用網(wǎng)站的過程中,會建立一個(gè)喜歡的電影這個(gè)字段,然后后臺根據(jù)喜歡的電影,再從剛剛movierelation表中查找相似度高的電影,在用戶信息表中再添加一個(gè)字段叫做recommend_movies。具體見圖4.7。這樣就完成了每個(gè)用戶推薦的內(nèi)容都是根據(jù)自己的興趣決定的,因此實(shí)現(xiàn)了個(gè)性化推薦功能。圖4.7 用戶信息表4.3 本章小結(jié)本章介紹了這個(gè)項(xiàng)目的推薦算法是如何選擇的,幾種推薦算法的比較。詳細(xì)說明了什么是基于內(nèi)容
51、的推薦算法以及是如何實(shí)現(xiàn)的。在本項(xiàng)目中每部電影之間的相似性是通過TF-IDF算法,和余弦相似性來計(jì)算的。詳細(xì)介紹了計(jì)算過程,以及在數(shù)據(jù)庫中對應(yīng)的表是如何建立的。在推薦系統(tǒng)的啟動(dòng)階段,推薦使用的是基于內(nèi)容的推薦算法。因?yàn)槠渌乃惴▽τ谟脩袅康囊蠛芨摺T谟脩袅窟_(dá)到一定數(shù)量的時(shí)候應(yīng)該對推薦算法進(jìn)行完善,增加協(xié)同過濾算法或者混合算法。第五章 系統(tǒng)功能測試和分析在本章,會把前幾章的工作結(jié)合起來,展示一個(gè)完整的系統(tǒng),并說明每個(gè)功能的作用和意義。下面會從一個(gè)用戶使用這個(gè)系統(tǒng)的順序說明。5.1 基本功能測試本小節(jié),我們模擬一個(gè)用戶剛剛接觸這個(gè)網(wǎng)站去對這個(gè)系統(tǒng)進(jìn)行說明?,F(xiàn)在我們打開這個(gè)網(wǎng)站的首頁。見圖5.1,
52、這里我們可以看到整個(gè)界面還是很清新簡潔的,這得益于Bootstrap這個(gè)前端框架,在這里得感謝一下Twitter的工程師。圖5.1 網(wǎng)站首頁首頁中展示了一小部分電影,讓人一看就知道這是一個(gè)關(guān)于電影的網(wǎng)站。首頁的風(fēng)格是基于Bootstrap的一般風(fēng)格,簡約大方為主要特點(diǎn),其中包含了柵格布局,能夠根據(jù)瀏覽器的尺寸自適應(yīng)變化,所以基于Bootstrap的網(wǎng)頁在移動(dòng)設(shè)備上也能非常好的適應(yīng)。首頁上提供了分類查詢的按鈕見圖5.2和圖5.3。圖5.2 分類按鈕圖5.3 分類查詢首頁上顯眼的看到網(wǎng)站提供了一個(gè)搜索框,這樣就可以輕松的搜索自己想要的電影,搜索的關(guān)鍵詞是電影片名和電影的主演。見圖5.4。圖5.4
53、搜索樣例另外對于每部電影,都提供了詳情展示的頁面,可以參考圖5.5。風(fēng)格依舊是清新簡潔,給人一種非常舒適的感覺。同時(shí)在這個(gè)頁面也提供了豆瓣的鏈接和IMDB的鏈接,這也方便去查看一些在本網(wǎng)站并沒有抓取的數(shù)據(jù)。圖5.5 電影詳細(xì)信息看完初步的功能之后,一定會想要體驗(yàn)整個(gè)提供的功能,那么就需要注冊一個(gè)用戶,現(xiàn)在開始注冊,用戶名TestUser,見圖5.6,圖5.6 用戶注冊頁面注冊完成后,就可以登錄了,登錄完成后,首頁上會有歡迎TestUser 的提示。并且會多出一個(gè)私人推薦的模塊。這個(gè)會在下一小節(jié)說明。5.2 推薦功能推薦功能是這個(gè)網(wǎng)站的重點(diǎn),不知道有沒有注意到每個(gè)頁面的電影旁邊都有個(gè)心形圖案,這
54、就是用戶對一部電影打上標(biāo)記的功能,點(diǎn)擊這個(gè)心形圖案就可以把這部電影添加到我喜歡的電影里??梢詤⒖紙D5.7。圖5.7 添加喜歡的電影然后轉(zhuǎn)到我喜歡的私人推薦的頁面,就可以看到我喜歡的電影的信息,并且在這個(gè)頁面,有根據(jù)用戶口味推薦模塊(圖5.8)以及一個(gè)非常有意思的模塊叫做隨機(jī)推薦(圖5.9)。圖 5.8 根據(jù)用戶口味推薦圖5.9 隨機(jī)推薦根據(jù)用戶口味推薦的模塊就是本文在第四章中所講述的內(nèi)容,這是本文的重點(diǎn),也是吸引用戶的地方。在這里得說一下隨機(jī)推薦給用戶的感受,當(dāng)用戶對一個(gè)網(wǎng)站上的內(nèi)容有點(diǎn)看膩了的時(shí)候,這個(gè)隨機(jī)推薦會給用戶一些新鮮感,因?yàn)橛锌赡芫蜁S機(jī)到一些用戶想看到的內(nèi)容。這樣子會給用戶一點(diǎn)驚
55、喜感。在隨機(jī)推擠這個(gè)模塊中使用了ajax技術(shù),數(shù)據(jù)是異步傳輸?shù)?,點(diǎn)擊隨機(jī)一下按鈕時(shí)不會產(chǎn)生整個(gè)頁面的刷新,只是局部刷新。這樣用戶使用起來更加的方便,不會有突兀感。但是推薦功能永遠(yuǎn)是一個(gè)完善的過程,不可能做的完美。在用戶達(dá)到一定量的情況下,需要實(shí)現(xiàn)協(xié)同過濾的推薦。個(gè)性化推薦需要不斷的優(yōu)化,這樣才不會被用戶淘汰。畢竟基于內(nèi)容的推薦方式是存在很多不足的,比如推薦的方式單一,缺少更多的維度去推薦等等。5.3 本章小結(jié)本章對整個(gè)系統(tǒng)的功能做了全面的介紹,測試了一個(gè)用戶使用這個(gè)系統(tǒng)的過程。結(jié)合用戶體驗(yàn)對一些有意思的功能做了詳細(xì)的介紹。對整個(gè)系統(tǒng)的界面也做了展示,可以看到界面的風(fēng)格還是很美觀的。在本節(jié)的最后
56、也提出了推薦功能之后的工作和不足之處。一個(gè)系統(tǒng)完成之后,可能會存在一些沒有考慮到的問題或者BUG,所以需要進(jìn)行一些測試的工作。有些測試只需要簡單的人工進(jìn)行就行,但是有些其他的較為復(fù)雜的或者人力完成不來的,則需要寫一些自動(dòng)化測試的腳本去進(jìn)行這樣的工作。第六章 工作總結(jié)與展望6.1 論文工作總結(jié)首先介紹了個(gè)性化電影推薦系統(tǒng)產(chǎn)生的背景,結(jié)合NETFLIX的例子說明了個(gè)性化推薦算法的重要性和意義,個(gè)性化推薦算法對于用戶來說這是非常重要的。其次介紹了電影個(gè)性化推薦系統(tǒng)的實(shí)現(xiàn)需要哪些技術(shù),網(wǎng)站的實(shí)現(xiàn)需要用到哪些框架以及這些框架的優(yōu)點(diǎn)。介紹了Bootstrap的背景和作用,Bootstrap在開發(fā)過程中給開
57、發(fā)者帶來的便利。介紹了Python的web框架Flask的使用,并說明了一個(gè)網(wǎng)站是如何進(jìn)行數(shù)據(jù)交互的。然后從需求的角度去分析了這個(gè)系統(tǒng)需要什么樣的數(shù)據(jù),介紹了Python爬蟲技術(shù)的使用,以及采集數(shù)據(jù)過程中的注意點(diǎn)。在進(jìn)行爬蟲代碼編寫之前,先要對這個(gè)爬蟲項(xiàng)目進(jìn)行分析,估計(jì)需要的時(shí)間和可行性,這樣的工作完成后才應(yīng)該去完成爬蟲的工作。爬蟲在整個(gè)系統(tǒng)中的作用是非常大的。介紹了數(shù)據(jù)庫的選擇,Mongo DB的優(yōu)勢,在這個(gè)系統(tǒng)中需要建立的各種表的說明,如電影信息表,電影關(guān)系表,用戶信息表。之后從算法的角度去說明了什么是個(gè)性化推薦,一般的推薦算法有哪些,推薦算法的選擇,各自的優(yōu)缺點(diǎn)?;趦?nèi)容的推薦算法適用于
58、什么系統(tǒng),基于內(nèi)容的推薦算法應(yīng)該如何實(shí)現(xiàn)。結(jié)合這個(gè)電影推薦系統(tǒng)說明基于內(nèi)容的推薦算法是如何在sklearn的基礎(chǔ)上實(shí)現(xiàn)的。最后對整個(gè)系統(tǒng)的功能和界面進(jìn)行了說明,在用戶的角度去測試了整個(gè)系統(tǒng),解釋了系統(tǒng)應(yīng)該給用戶什么樣的體驗(yàn)。同時(shí)提出了推薦算法不是靜止的,應(yīng)該是不斷完善的,這樣子系統(tǒng)才不會被淘汰。6.2 未來工作的展望個(gè)性化電影推薦系統(tǒng)基本完成了,但是之后的工作并不會停止,整個(gè)系統(tǒng)的完善,數(shù)據(jù)的更新都需要繼續(xù)進(jìn)行。推薦算法需要繼續(xù)優(yōu)化,在前面幾章提到的基于內(nèi)容的推薦算法是不夠的,只是適合在冷啟動(dòng)階段,在用戶積累到一定量的時(shí)候就需要使用協(xié)同過濾算法。協(xié)同過濾的選擇也有很多種,比如基于用戶,基于項(xiàng)目
59、等等。協(xié)同過濾之后需要繼續(xù)完善和優(yōu)化,比如使用混合算法或其他更好的個(gè)性化推薦算法。同時(shí)網(wǎng)站也要緊跟時(shí)代,包括前端和后端,這些框架和技術(shù)都在更新,必要的時(shí)候也需要換框架和技術(shù)。另外,不單單是算法的優(yōu)化和完善,還有網(wǎng)站也需要添加其他的新的,能夠?qū)τ脩粲形Φ墓δ?。在這個(gè)大數(shù)據(jù)和機(jī)器學(xué)習(xí)的時(shí)代,更需要從海量的電影或者用戶的數(shù)據(jù)中挖掘出更有用的信息,然后給用戶更好的使用體驗(yàn)。在開發(fā)新的功能或者其他模塊時(shí),需要堅(jiān)持以用戶體驗(yàn)為第一要素,努力做到給用戶驚喜和舒適的感覺。這樣子才能更好的增加用戶的依賴性。最后希望這個(gè)電影推薦系統(tǒng)可以一直維護(hù)下去。不斷提升用戶量的同時(shí)也要提高網(wǎng)站自身的性能和其他指標(biāo)。參考文獻(xiàn)1方育柯, 傅彥, 周俊臨. 基于集成學(xué)習(xí)的個(gè)性化推薦算法J. 計(jì)算機(jī)工程與應(yīng)用, 2011, 47(10):1-4.2 HYPERLINK /writer/Wesley%20Chun_1.html t _blank Wesley Chun.Python核心編程M.第三版.北京:人民郵電出版社, 2016-05-01.3 HYPERLINK /writer/%E5%B7%B4%E9%87%8C_1.html t _blank 巴里( HYPERLIN
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《焊接過程模擬技術(shù)》教學(xué)大綱
- 玉溪師范學(xué)院《聲樂》2022-2023學(xué)年第一學(xué)期期末試卷
- 冷氣賬務(wù)處理實(shí)例-做賬實(shí)操
- 現(xiàn)代文閱讀和莊子二則習(xí)題以及補(bǔ)充課文理解知識點(diǎn)
- 管理會計(jì)第5版 考試A卷及答案
- 2023年十溴二苯乙烷項(xiàng)目評估分析報(bào)告
- 2023年柔性制造系統(tǒng)(FMS)項(xiàng)目成效分析報(bào)告
- 2024屆??谑械谑袑W(xué)高考數(shù)學(xué)試題沖刺卷(二)
- 2024屆廣西柳州市名校高考數(shù)學(xué)試題模擬題專練目錄
- 泵房工勞務(wù)合同
- 2024年人教版小學(xué)六年級數(shù)學(xué)(上冊)期中考卷附答案
- 2024年“日常生活突發(fā)事故急救知識及處理方法”考試題庫(附含答案)
- 遙感概論課件
- JB-T 10833-2017 起重機(jī)用聚氨酯緩沖器
- 中核匯能吉林能源有限公司考試題庫
- YST 544-2009 鑄造銅合金錠
- 2024年4月21日四川省事業(yè)單位聯(lián)考《綜合知識》試題
- 2024年高級茶評員考前必刷必練題庫500題(含真題、必會題)
- 政府會議備忘錄格式范文
- 2024版車位租賃合同
- 《中國飲食文化》課件-中國飲食文化溯源
評論
0/150
提交評論