九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

電子科技大學(xué) 計算機(jī)學(xué)院 綜合課程設(shè)計 報告

  • 資源ID:55382440       資源大?。?span id="24d9guoke414" class="font-tahoma">259.50KB        全文頁數(shù):18頁
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

電子科技大學(xué) 計算機(jī)學(xué)院 綜合課程設(shè)計 報告

真誠為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請指正。摘 要本系統(tǒng)以一個大規(guī)模網(wǎng)絡(luò)爬蟲程序所獲取的網(wǎng)絡(luò)評論數(shù)據(jù)為基礎(chǔ),使用了詞向量,用戶畫像等技術(shù),構(gòu)建了一個基于影評的推薦系統(tǒng)。主要的工作分為兩部分,首先是研究分析了豆瓣電影網(wǎng)站是如何防御網(wǎng)絡(luò)爬蟲程序已經(jīng)應(yīng)對策略,其次根據(jù)網(wǎng)絡(luò)爬蟲程序獲取的大量數(shù)據(jù)構(gòu)建了一個推薦系統(tǒng)。關(guān)鍵詞:大規(guī)模爬蟲,用戶畫像,推薦系統(tǒng)15 / 18目 錄摘 要I目 錄II第一章 緒 論11.1 背景與意義11.2 本系統(tǒng)的總體設(shè)計構(gòu)思11.3 本文的主要貢獻(xiàn)與創(chuàng)新1第二章 大規(guī)模數(shù)據(jù)獲取22.1 網(wǎng)絡(luò)爬蟲程序的原理22.2 網(wǎng)絡(luò)爬蟲程序的設(shè)計方案22.3 豆瓣電影網(wǎng)站爬蟲可行性分析32.3.1 豆瓣電影網(wǎng)站頁面分析32.3.2 豆瓣電影網(wǎng)站反爬蟲策略分析32.3.3 豆瓣電影網(wǎng)站爬蟲策略的設(shè)計42.4 網(wǎng)絡(luò)爬蟲性能優(yōu)化42.5 本章小結(jié)5第三章 影評分析推薦系統(tǒng)63.1 推薦系統(tǒng)綜述63.1.1 推薦系統(tǒng)的概念和定義63.1.2 推薦系統(tǒng)的形式化定義73.2 推薦系統(tǒng)用戶模型設(shè)計73.2.1 文本分析簡介73.2.2 文本分析操作83.3 推薦系統(tǒng)推薦對象模型設(shè)計83.3.1 評分機(jī)制建模83.3.2 影片分類特征建模93.4 推薦系統(tǒng)算法93.4.1 協(xié)同過濾算法93.4.2 基于項目的協(xié)同過濾算法93.5 推薦系統(tǒng)推薦關(guān)鍵算法部分103.5.1 距離定義部分103.5.2 近鄰查找部分113.5.3 評分向量的構(gòu)建12第四章 課程設(shè)計總結(jié)與展望134.1 總結(jié)134.2 后續(xù)工作展望13致 謝14參考文獻(xiàn)15第一章 緒 論1.1 背景與意義隨著中國移動互聯(lián)網(wǎng)的迅速發(fā)展,網(wǎng)民數(shù)量也在大規(guī)模增長,用戶在社交與電商網(wǎng)站上的活躍程度日趨增加。隨著用戶群體的增加,用戶在網(wǎng)絡(luò)上留下的行為數(shù)據(jù)呈現(xiàn)指數(shù)級增長。面對龐大的用戶群體以及如此大量的行為數(shù)據(jù),如何從中快速、準(zhǔn)確、有效的獲取到有價值的數(shù)據(jù),分析出用戶的行為習(xí)慣以及偏好,在大規(guī)模內(nèi)容的場景下,為用戶提供精準(zhǔn)的推薦服務(wù),是現(xiàn)在大數(shù)據(jù)研究領(lǐng)域的一個熱點和重點。網(wǎng)絡(luò)爬蟲是大規(guī)模數(shù)據(jù)獲取的必要程序。由于網(wǎng)絡(luò)上數(shù)據(jù)的高潛在商業(yè)價值,商業(yè)公司均會對其進(jìn)行保密,即使能夠直接獲取的數(shù)據(jù)也會給出層層限制。在互聯(lián)網(wǎng)發(fā)展的二十余年里,網(wǎng)絡(luò)爬蟲程序設(shè)計和網(wǎng)站反爬蟲程序設(shè)計共同進(jìn)步發(fā)展。如何有效的進(jìn)行大規(guī)模網(wǎng)絡(luò)數(shù)據(jù)爬取,同樣是在工程領(lǐng)域的一個熱點和重點。1.2 本系統(tǒng)的總體設(shè)計構(gòu)思首先通過設(shè)計一個高性能網(wǎng)絡(luò)爬蟲,對部分?jǐn)?shù)據(jù)進(jìn)行爬取。在數(shù)據(jù)集上進(jìn)行清洗,選擇一些高質(zhì)量的活躍用戶,設(shè)計算法,提取特征,進(jìn)行回測,調(diào)整特征的選擇。之后再在大規(guī)模數(shù)據(jù)集上進(jìn)行運(yùn)算。1.3 本系統(tǒng)的主要貢獻(xiàn)與創(chuàng)新本論文以大規(guī)模爬蟲獲取實時豆瓣電影數(shù)據(jù)為基礎(chǔ),實現(xiàn)了用戶畫像系統(tǒng)與推薦系統(tǒng),根據(jù)歷史數(shù)據(jù)得到的用戶群體行為分析報告,并根據(jù)用戶行為以及評論數(shù)據(jù)實現(xiàn)了智能化的電影推薦。第二章 大規(guī)模數(shù)據(jù)獲取在大規(guī)模互聯(lián)網(wǎng)社群站點中,由于網(wǎng)站運(yùn)營策略以及一些涉及到潛在商業(yè)價值的考慮,運(yùn)營公司通常會設(shè)置一些特殊的訪問流量識別措施阻止外界使用程序大規(guī)模獲取數(shù)據(jù)。對于網(wǎng)絡(luò)爬蟲程序設(shè)計者來說,必須要識別并且進(jìn)行一定的特殊設(shè)計,才能高效的大規(guī)模并行獲取數(shù)據(jù)。2.1 網(wǎng)絡(luò)爬蟲程序的原理網(wǎng)絡(luò)爬蟲程序,也叫網(wǎng)絡(luò)蜘蛛,在工程界通用簡稱“爬蟲”,是一種可以自動實現(xiàn)模擬真實用戶對網(wǎng)絡(luò)資源訪問并進(jìn)行數(shù)據(jù)記錄的程序。爬蟲程序一般會選擇記錄目標(biāo)站點的索引數(shù)據(jù),以及所關(guān)注的主要內(nèi)容的完整記錄。2.2 網(wǎng)絡(luò)爬蟲程序的設(shè)計方案網(wǎng)絡(luò)爬蟲的形式多種多樣,從早期的C、C+設(shè)計,到現(xiàn)在主流的Python、Java設(shè)計都有其輝煌的歷史。早期網(wǎng)絡(luò)站點大部分內(nèi)容、形式單一,靜態(tài)網(wǎng)頁居多,網(wǎng)絡(luò)中富文本內(nèi)容較少,計算機(jī)資源較少。使用C、C+編寫的程序占用資源小,運(yùn)行速度快,進(jìn)行網(wǎng)絡(luò)通訊的方式靈活,加之語言本身使用廣泛,受到大量爬蟲程序員的青睞。隨著全球互聯(lián)網(wǎng)產(chǎn)業(yè)、互聯(lián)網(wǎng)基礎(chǔ)設(shè)施的高速發(fā)展,谷歌、百度等搜索引擎的崛起,互聯(lián)網(wǎng)上的資源爆炸性增長,基于各種目的,越來越多的程序員開始設(shè)計自己的網(wǎng)絡(luò)爬蟲程序。此時C、C+語言的一些缺點顯現(xiàn)出來,集中在編碼的不通用,設(shè)計繁瑣,缺乏高度抽象的類庫等。加之大規(guī)模數(shù)據(jù)存儲平臺的出現(xiàn),C、C+爬蟲程序日漸減少。爬蟲程序主要的任務(wù)在于:訪問網(wǎng)絡(luò)資源,解析返回結(jié)果,對資源進(jìn)行合理存儲。由于高度抽象以及簡潔的語法,Python以及Java等一下代的更加工程化的語言被大家所青睞。網(wǎng)絡(luò)爬蟲的開發(fā)極具靈活性,由于現(xiàn)代前端技術(shù)的成熟,爬蟲程序所獲取的內(nèi)容可能隨時變化,無法使用傳統(tǒng)的軟件工程方法進(jìn)行設(shè)計開發(fā),通常的做法是迭代式的對網(wǎng)絡(luò)站點進(jìn)行交替的探測、開發(fā)。網(wǎng)絡(luò)爬蟲的主要模塊功能比較固定,遇到的異常情況繁雜,需要有完善的異常處理機(jī)制。在對大規(guī)模數(shù)據(jù)設(shè)計的爬蟲中尤其重要。Python在網(wǎng)絡(luò)爬蟲類程序的開發(fā)效率上有著無可比擬的先天優(yōu)勢,在文本分析、異常處理方面同樣有著大量的簡潔的設(shè)計,使得開發(fā)網(wǎng)絡(luò)爬蟲程序的方便程度與靈活程度大大提升。加之有許多專門為Python語言設(shè)計的網(wǎng)絡(luò)訪問庫,數(shù)據(jù)庫訪問框架,瀏覽器模擬器,文本解析器的存在,使得這門語言有著一個完備的網(wǎng)絡(luò)爬蟲程序開發(fā)生態(tài)環(huán)境。本文選擇使用Python3語言實現(xiàn)一個網(wǎng)絡(luò)爬蟲程序,對豆瓣電影網(wǎng)上Top250電影榜單上共計一千四百余萬條用戶對電源的短評進(jìn)行完全的爬取。在爬取數(shù)據(jù)的過程中,使用結(jié)構(gòu)化序列化的方式進(jìn)行數(shù)據(jù)的存儲。2.3 豆瓣電影網(wǎng)站爬蟲可行性分析2.3.1 豆瓣電影網(wǎng)站頁面分析編寫網(wǎng)絡(luò)爬蟲程序,首先要對目標(biāo)站點進(jìn)行頁面分析。第一個參考頁面:豆瓣Top250電影榜單第二個參考頁面:豆瓣任意電影頁面第三個參考頁面:豆瓣任意電影短評頁面使用Chrome瀏覽器的開發(fā)者模式觀察頁面。所有關(guān)鍵信息都以靜態(tài)方式給出,不需要模擬用戶鼠標(biāo)鍵盤行為與用戶觀察延時行為。我們可以直接解析,通過發(fā)出Get請求得到的返回頁面。榜單頁面可解析信息如下:總數(shù),排行榜名稱,排行榜排名,電影中文名,電影英文名,電影id,電影導(dǎo)演,電影主演,電影封面電影詳情頁面可解析信息如下:電影id,電影中文名,電影別名,電影豆瓣評分,看過人數(shù),想看人數(shù),評分人數(shù),5張海報圖,條目分類,導(dǎo)演,主演,編劇,官方網(wǎng)站,豆瓣小站,上映時間日期,年代,語言,電影時長,影片類型,制片國家和地區(qū),簡介,長評數(shù)量,短評數(shù)量。電影短評頁面可解析信息如下:短評數(shù)量,每條短評。對于每條短評:短評id,發(fā)布日期,上傳用戶,短評內(nèi)容,短評評分,有用數(shù)。通過輪詢請求以上頁面,我們可以獲得幾乎所有豆瓣電影公開的數(shù)據(jù)。2.3.2 豆瓣電影網(wǎng)站反爬蟲策略分析豆瓣電影作為國內(nèi)電影領(lǐng)域最大的在線交流平臺,擁有著大量的電影數(shù)據(jù)以及觀眾用戶數(shù)據(jù),一直被廣大程序員以及數(shù)據(jù)分析人員作為目標(biāo)數(shù)據(jù)站點使用網(wǎng)絡(luò)爬蟲獲取數(shù)據(jù)。該網(wǎng)站的反爬蟲策略已經(jīng)比較完善,例如對單個IP地址并發(fā)訪問量的限制,單個IP時間段內(nèi)訪問次數(shù)限制,用戶瀏覽器Cookie檢測,用戶訪問頁面連續(xù)性檢測,等等。經(jīng)過長時間訪問的實驗,以及編寫網(wǎng)絡(luò)爬蟲程序的經(jīng)驗,總結(jié)出了如下規(guī)律:1. 當(dāng)發(fā)起Get請求是不帶上Cookie,連續(xù)訪問次數(shù)稍多,豆瓣網(wǎng)站將直接對操作的IP進(jìn)行封禁。此時無論如何操作都將返回HTTP403的結(jié)果。需要等待半小時至一小時IP才會解除封禁。2. 使用Cookie進(jìn)行訪問。第一次發(fā)起Get請求任意一個豆瓣頁面,豆瓣都會返回一個名為bid的Cookie。之后帶上這個Cookie請求頁面,可以在約2秒一次訪問頻率上,5分鐘不封禁的結(jié)果。但此時的封禁是對于該Cookie的,只要清空該Cookie,又可獲得一個新的Cookie進(jìn)行訪問。IP地址是不會被封禁的。3. 若保持低頻率訪問豆瓣頁面,比如在10秒一次的基礎(chǔ)上,不論如何都不會被封禁。2.3.3 豆瓣電影網(wǎng)站爬蟲策略的設(shè)計1. 首先進(jìn)行多次次無Cookie的請求,獲取多個bid,對這多個bid進(jìn)行保存,并且進(jìn)行訪問次數(shù)的統(tǒng)計。2. 對于每次的Get請求,隨機(jī)在bid池中獲取一個bid隨請求發(fā)出,并根據(jù)返回結(jié)果更新次數(shù)統(tǒng)計。若該請求返回HTTP 403或者bid使用次數(shù)到達(dá)100次,即將該次訪問操作回滾,將該bid拋棄3. 在池中bid數(shù)量小于一個閾值時,進(jìn)行一輪無Cookie請求,更新bid池在之后的訪問試驗中,對bid進(jìn)行測試時,發(fā)現(xiàn)豆瓣電影并沒有對某個bid的第一次使用進(jìn)行合法性判斷。于是修改訪問策略為:每次訪問前對bid進(jìn)行隨機(jī),并隨請求發(fā)出,若失敗則直接重新隨機(jī)bid到成功為止。2.4 網(wǎng)絡(luò)爬蟲性能優(yōu)化經(jīng)過第一輪對電影榜單數(shù)據(jù)的統(tǒng)計,得到短評總數(shù)有一千四百萬條。傳統(tǒng)單線程爬取完全無法獲取所有的短評信息。針對網(wǎng)絡(luò)爬蟲這種IO密集型的應(yīng)用場景,多線程、多進(jìn)程能夠很好的解決并發(fā)訪問的問題。使用Python3中的multiprossesing庫對訪問進(jìn)行多線程加速。同時使用time庫對訪問頻率進(jìn)行控制。由于單次請求返回時間的不確定性(頁面大小,網(wǎng)絡(luò)情況),我們統(tǒng)計一段時間內(nèi)Get次數(shù),若超過閾值則在每個請求完成之后進(jìn)行一個sleep操作以降低總體速度。針對單IP訪問數(shù)量的限制,建立了一個IP代理池,部署在一臺阿里云服務(wù)器上,全天候自動在各大代理網(wǎng)站上刺探可用的HTTP/HTTPS代理服務(wù)器。網(wǎng)絡(luò)爬蟲程序可直接調(diào)用接口獲取一個代理IP。若某個IP連續(xù)請求失敗次數(shù)超過閾值,可以立即更換代理IP,以躲過豆瓣晚上對爬蟲的限制。針對爬蟲需要全天候運(yùn)行的特點,使用Git作為源代碼管理工具,分別管理開發(fā)分支與穩(wěn)定版本分支,將穩(wěn)定版分支實時同步到一臺阿里云服務(wù)器上,并合理設(shè)計數(shù)據(jù)序列化保存格式,實現(xiàn)全天候運(yùn)行的能力。2.5 本章小結(jié)本章內(nèi)容從工程的第一個需求出發(fā),逐步迭代開發(fā)了一個具有針對目標(biāo)站點完備功能和高運(yùn)行效率的網(wǎng)絡(luò)爬蟲程序。在連續(xù)運(yùn)行4天后爬取了豆瓣電影Top250榜單中所有電影共計一千四百余萬條影評信息,并構(gòu)建初步的影評數(shù)據(jù)庫。第三章 影評分析推薦系統(tǒng)3.1 推薦系統(tǒng)綜述互聯(lián)網(wǎng)的出現(xiàn)和普及給用戶帶來了大量的信息,滿足了 用戶在信息時代對信息的需求,但隨著網(wǎng)絡(luò)的迅速發(fā)展而帶 來的網(wǎng)上信息量的大幅增長,使得用戶在面對大量信息時無 法從中獲得對自己真正有用的那部分信息,對信息的使用效 率反而降低了,這就是所謂的信息超載(information overload) 問題。信息超載問題一個非常有潛力的辦法是個性化推薦系統(tǒng),它是根據(jù)用戶的信息需求、興趣等,將用戶感興趣的信息、產(chǎn)品等推薦給用戶的個性化信息推薦系統(tǒng)。和搜索引擎相比推薦系統(tǒng)通過研究用戶的興趣偏好,進(jìn)行個性化計 算,由系統(tǒng)發(fā)現(xiàn)用戶的興趣點,從而引導(dǎo)用戶發(fā)現(xiàn)自己的信息需求。一個好的推薦系統(tǒng)不僅能為用戶提供個性化的服務(wù), 還能和用戶之間建立密切關(guān)系,讓用戶對推薦產(chǎn)生依賴。3.1.1 推薦系統(tǒng)的概念和定義推薦系統(tǒng)的定義有不少,但被廣泛接受的推薦系統(tǒng)的概念和定義Resnick和Varian在1997年給出的:“它是利用電子商務(wù)網(wǎng)站向客戶提供商品信息和建議,幫助用戶決定應(yīng)該購買什么產(chǎn)品,模擬銷售人員幫助客戶完成購買過程”。推薦系統(tǒng)有3個重要的模塊:用戶建模模塊、推薦對象建模模塊、推薦算法模塊。通用的推薦系統(tǒng)模型流程如圖所示。推薦系統(tǒng)把用戶模型中興趣需求信息和推薦對象模型中的特征信息匹配,同時使用相應(yīng)的推薦算法進(jìn)行計算篩選,找到用戶可能感興趣的推薦對象,然后推薦給用戶。3.1.2 推薦系統(tǒng)的形式化定義推薦系統(tǒng)的形式化定義如下:設(shè)C是所有用戶的集合,S是所有可以推薦給用戶的對象的集合。實際上,C和S集合的規(guī)模通常很大,如上百萬的顧客以及上億種歌曲等。設(shè)效用函數(shù)u ()可以計算對象s對用戶c的推薦度(如提供商的可靠性(vendor reliability)和產(chǎn)品的可得性(product availability)等),即 u:C×S R ,R是一定范圍內(nèi)的全序的非負(fù)實數(shù),推薦 要研究的問題就是找到推薦度R最大的那些對象 S* ,如式:cC,S*=argmaxsSuc,s從上述模型看來,推薦系統(tǒng)的構(gòu)建有三個主要步驟:對用戶(服務(wù))對象建模(即用戶畫像),對推薦對象建模,在(離)線推薦算法。3.2 推薦系統(tǒng)用戶模型設(shè)計在所有通過網(wǎng)絡(luò)爬蟲程序獲取的數(shù)據(jù)當(dāng)中,可以作為用戶畫像的有兩個方向的數(shù)據(jù):1. 每個用戶對電影的評分2. 每個用戶對電影的文字短評根據(jù)以上信息,我們可以以上數(shù)據(jù)構(gòu)成多維度模型對用戶的喜好進(jìn)行刻畫。下文將介紹文本分析以及3.2.1 文本分析簡介在自然語言處理領(lǐng)域,傳統(tǒng)的詞匯語義相似度方法主要是依靠本體詞典或知識庫的規(guī)則方法,利用統(tǒng)計語言模型在大規(guī)模語料庫上進(jìn)行分析處理 但是由于詞典和知識庫大多依賴人工構(gòu)建,其實時性和擴(kuò)展性都比較差,因此在互聯(lián)網(wǎng)文本和專業(yè)領(lǐng)域文本處理中很難發(fā)揮出作用,在傳統(tǒng)研究方法中,詞匯通常用 one-hot 編碼形式表示,即假設(shè)詞表大小為 V,第 k 個詞表 示為一個維數(shù)為 V 的向量,除了第 k 維為 1,其他維均為 0 一方面,這種表示方法無法刻畫兩個詞語義上相似性,如“電腦”和“計算機(jī)”兩個詞匯,雖然它們在語義有著相似性,但是由于它們在詞表中的位置不同,one-hot 表示是正交的。另一方面,這種方法容易造成數(shù)據(jù)稀疏問題。不同的詞作為完全不同的特征應(yīng)用于統(tǒng)計模型中時,由于不常見的詞出現(xiàn)的次數(shù)在訓(xùn)練數(shù)據(jù)中比較少,從而導(dǎo)致對應(yīng)特征的估計存在偏差。為了解決這個問題,Collober 等人提出利用神經(jīng)網(wǎng)絡(luò)語言模型自動學(xué)習(xí)詞匯向量化表示。其基本思想是: 一個詞的含義是由它的上下文決定的。將詞表中的每一個詞隨機(jī)初始化為一個高維向量,用大量語料進(jìn)行訓(xùn)練,保證相似的詞有相近的向量表示,稱之為詞向量(word embedding),雖然詞向量也是一個高維向量,但與one-hot 向量表示不同,可以通過計算詞向量的余弦相似度衡量詞匯語義上的相似度?;谶@種思路,Mikolov等人提出了兩種詞向量計算模型,一種是從周圍詞預(yù)測中心詞的連續(xù)詞袋模型(CBOW)。另一種是通過中心詞預(yù)測周圍詞的 Skip-gram 模型,并開發(fā)出結(jié)合這兩種詞向量計算模型的開源工具包word2vec。3.2.2 文本分析操作使用word2vec工具包,通過使用網(wǎng)絡(luò)上大量語料庫進(jìn)行訓(xùn)練,我們可以獲得一個泛化能力極強(qiáng)的中文詞向量模型。這里使用了維基百科以及搜狗實驗室公開的語料庫進(jìn)行了訓(xùn)練。過程中使用了Jieba分詞工具,并對數(shù)據(jù)進(jìn)行清洗,獲得接近2億詞匯量的已分詞數(shù)據(jù)。在一臺雙路E5-2683v3服務(wù)器上,使用三十分鐘訓(xùn)練出一個合理的詞向量模型,并進(jìn)行保存。對每一條評論,同樣使用Jieba分詞,并對文本進(jìn)行清洗,去除不合法字符,并對每個詞匯轉(zhuǎn)化為對應(yīng)的向量進(jìn)行求和,最后根據(jù)向量數(shù)量取平均值,獲得一個“句子向量”,代表某個用戶的“語言習(xí)慣”。至此,對每個用戶,在文本分析方面,獲得了一個400維度的向量。3.3 推薦系統(tǒng)推薦對象模型設(shè)計3.3.1 評分機(jī)制建模對于每部影片,網(wǎng)絡(luò)爬蟲程序可以直接獲得站點所有歷史用戶對該電影的總平均評分,以及所有評分的百分比分布情況。根據(jù)用戶短評上所附帶的評分(星星數(shù)量)減去這一電影的平均打分,即可得出對應(yīng)這部電影的特征量。這樣我們獲得了一個直接且獨立的250維度向量。注意,若用戶未看過某一部電影,則對應(yīng)位置設(shè)置0。3.3.2 影片分類特征建模對于每部影片,網(wǎng)絡(luò)爬蟲程序可以直接獲得該影片所屬類型。例如喜劇、愛情、恐怖、懸疑等等。根據(jù)生活經(jīng)驗,用戶對某一類型電影的喜好極有可能反映出該用戶的整個喜好傾向。影片的類型特征對于單一的對某一部影片的喜好來說,很可能更有代表性。這樣我們獲得了一個直接且獨立的36維度向量。3.4 推薦系統(tǒng)算法3.4.1 協(xié)同過濾算法協(xié)同過濾,簡單來說是利用某興趣相投、擁有共同經(jīng)驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機(jī)制給予信息相當(dāng)程度的回應(yīng)(如評分)并記錄下來以達(dá)到過濾的目的進(jìn)而幫助別人篩選信息,回應(yīng)不一定局限于特別感興趣的,特別不感興趣信息的紀(jì)錄也相當(dāng)重要。協(xié)同過濾又可分為評比或者群體過濾。其后成為電子商務(wù)當(dāng)中很重要的一環(huán),即根據(jù)某顧客以往的購買行為以及從具有相似購買行為的顧客群的購買行為去推薦這個顧客其“可能喜歡的品項”,也就是借由社區(qū)的喜好提供個人化的信息、商品等的推薦服務(wù)。3.4.2 基于項目的協(xié)同過濾算法傳統(tǒng)的以用戶為基礎(chǔ)的協(xié)同推薦算法隨著用戶數(shù)量的增多,計算的時間就會變長,所以在2001年Sarwar提出了基于項目的協(xié)同過濾推薦算法(Item-based Collaborative Filtering Algorithms)。以項目為基礎(chǔ)的協(xié)同過濾方法有一個基本的假設(shè)“能夠引起用戶興趣的項目,必定與其之前評分高的項目相似”,通過計算項目之間的相似性來代替用戶之間的相似性。 方法步驟:先計算已評價項目和待預(yù)測項目的相似度,并以相似度作為權(quán)重,加權(quán)各已評價項目的分?jǐn)?shù),得到待預(yù)測項目的預(yù)測值。例如:要對項目 A 和項目 B 進(jìn)行相似性計算,要先找出同時對 A 和 B 打過分的組合,對這些組合進(jìn)行相似度計算,常用的算法同以用戶為基礎(chǔ)(User-based)的協(xié)同過濾。以項目為基礎(chǔ)的協(xié)同過濾不用考慮用戶間的差別,所以精度比較差。但是卻不需要用戶的歷史數(shù)據(jù),或是進(jìn)行用戶識別。對于項目來講,它們之間的相似性要穩(wěn)定很多,因此可以離線完成工作量最大的相似性計算步驟,從而降低了在線計算量,提高推薦效率,尤其是在用戶多于項目的情形下尤為顯著。3.5 推薦系統(tǒng)推薦關(guān)鍵算法部分3.5.1 距離定義部分在推薦系統(tǒng)中常見的四種距離:歐式距離、曼哈頓距離、cos距離、pearson距離。def euclidean_dis(rating1, rating2): """計算2個打分序列間的歐式距離. 輸入的rating1和rating2都是打分dict 格式為'電影id1': 1.0, '電影idn': 5.0""" distance = 0 commonRatings = False for key in rating1: if key in rating2: distance += (rating1key - rating2key)2 commonRatings = True #兩個打分序列之間有公共打分電影 if commonRatings: return distance #無公共打分電影 else: return -1def manhattan_dis(rating1, rating2): distance = 0 commonRatings = False for key in rating1: if key in rating2: distance += abs(rating1key - rating2key) commonRatings = True #兩個打分序列之間有公共打分電影 if commonRatings: return distance #無公共打分電影 else: return -1def cos_dis(rating1, rating2): distance = 0 dot_product_1 = 0 dot_product_2 = 0 commonRatings = False for score in rating1.values(): dot_product_1 += score2 for score in rating2.values(): dot_product_2 += score2 for key in rating1: if key in rating2: distance += rating1key * rating2key commonRatings = True #兩個打分序列之間有公共打分電影 if commonRatings: return 1-distance/sqrt(dot_product_1*dot_product_2) #無公共打分電影 else: return -1def pearson_dis(rating1, rating2): sum_xy = 0 sum_x = 0 sum_y = 0 sum_x2 = 0 sum_y2 = 0 n = 0 for key in rating1: if key in rating2: n += 1 x = rating1key y = rating2key sum_xy += x * y sum_x += x sum_y += y sum_x2 += pow(x, 2) sum_y2 += pow(y, 2) # now compute denominator denominator = sqrt(sum_x2 - pow(sum_x, 2) / n) * sqrt(sum_y2 - pow(sum_y, 2) / n) if denominator = 0: return 0 else: return (sum_xy - (sum_x * sum_y) / n) / denominator3.5.2 近鄰查找部分#查找最近鄰def computeNearestNeighbor(username, users): """在給定username的情況下,計算其他用戶和它的距離并排序""" distances = for user in users: if user != username: #distance = manhattan_dis(usersuser, usersusername) distance = pearson_dis(usersuser, usersusername) distances.append(distance, user) # 根據(jù)距離排序,距離越近,排得越靠前 distances.sort() return distances#推薦def recommend(username, users): """對指定的user推薦電影""" # 找到最近鄰 nearest = computeNearestNeighbor(username, users)01 recommendations = # 找到最近鄰看過,但是我們沒看過的電影,計算推薦 neighborRatings = usersnearest userRatings = usersusername for artist in neighborRatings: if not artist in userRatings: recommendations.append(artist, neighborRatingsartist) results = sorted(recommendations, key=lambda artistTuple: artistTuple1, reverse = True) for result in results: print(result0, result1)3.5.3 評分向量的構(gòu)建# 構(gòu)建電影評分標(biāo)準(zhǔn)向量vec_std = movie_pos = for index, item in enumerate(movie_data): movie_positem'id' = index vec_std.append(item'rating''average' / 2) logging.debug('%s 的評分為 %f', item'title', item'rating''average')vec_std = np.array(vec_std) 第四章 課程設(shè)計總結(jié)與展望4.1 總結(jié)本次課程設(shè)計以國內(nèi)訪問量排名第一的電影資訊評論站點“豆瓣電影”的用戶數(shù)據(jù)為基礎(chǔ),構(gòu)建了一個基于語義分析的協(xié)同過濾推薦系統(tǒng)。該系統(tǒng)建立在使用高性能網(wǎng)絡(luò)爬蟲程序獲得的熱門電影的逾一千四百萬真實用戶影評之上,實現(xiàn)了一個多維度評價用戶的推薦系統(tǒng)。并可以分析生成一個統(tǒng)計結(jié)果。4.2 后續(xù)工作展望在數(shù)據(jù)的獲取存儲方面,后續(xù)可進(jìn)行數(shù)據(jù)庫或分布式數(shù)據(jù)庫的改進(jìn)。在評價機(jī)制方面,由于現(xiàn)有數(shù)據(jù)量少,電影數(shù)量少,推薦系統(tǒng)使用基于項目的協(xié)同過濾算法。若爬蟲繼續(xù)運(yùn)行獲取全站大量數(shù)據(jù),用戶、電影數(shù)量快速增長,還可以進(jìn)行一些在線的推薦嘗試。致 謝本課程設(shè)計的工作是在我的導(dǎo)師謝寧老師悉心指導(dǎo)下完成的,導(dǎo)師淵博的專業(yè)知識,嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,耐心的指導(dǎo)同學(xué),這些都對我產(chǎn)生了深遠(yuǎn)的影響。在此還要感謝樊駿同學(xué)對文檔寫作的指導(dǎo),鮮檳丞同學(xué)對網(wǎng)絡(luò)爬蟲設(shè)計的指導(dǎo)和幫助,他們幫助我克服了一個個困難,使本課程設(shè)計順利完成,非常感謝他們!參考文獻(xiàn)1 Paul Resnick, Neophytos Iacovou, Mitesh Suchak, Peter Bergstrom, John Riedl, GroupLens: an open architecture for collaborative filtering of netnews, Computer Supported Cooperative Work, pp175-186, Chapel Hill, North Carolina, 1994.2 Balabanovic & Shoham, 1997; Mobasher et al., 2000; Yang et al., 20043 F. Heylighen, Collaborative Filtering, http:/pespmc1.vub.ac.be/COLLFILT.html4 鄭秀華、廖婉菁、吳肇銘,在線商品推薦系統(tǒng)之研究 -協(xié)同過濾機(jī)制之應(yīng)用A Study for On-line Commodity Recommendation System:A Case of Collaborative Filtering,中原資管所

注意事項

本文(電子科技大學(xué) 計算機(jī)學(xué)院 綜合課程設(shè)計 報告)為本站會員(優(yōu)***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!