999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于文本的卷積網絡在電影推薦系統中的應用

2021-12-19 22:40:52付裕
電腦知識與技術 2021年32期

付裕

摘要:當今互聯網趨勢下,實體服務行業越來越傾向于與線上的互聯網進行深度合作,講究服務以質量取勝、以人性化、個性化取勝。故在這樣的背景下,以傳統的打廣告的模式來吸引觀眾去電影院看電影的方式在逐漸被更智能化、更具有針對性的精準推送的線上方式所取代。為了更好地服務喜歡看電影的觀眾,開發了這個基于文本的卷積神經的個性化電影推薦系統。此系統使用神經網絡將自然語言處理與電影推薦相結合,利用MovieLens數據集訓練一個基于文本的卷積神經網絡,實現電影個性化推薦系統。最后使用django框架并結合豆瓣爬蟲,搭建了推薦系統Web端服務。

關鍵詞:個性化推薦系統;TensorFlow;文本卷積網絡; MovieLens;自然語言處理

中圖分類號:TP301 ? 文獻標識碼:A

文章編號:1009-3044(2021)32-0113-04

Application of Text-based Convolutional Network in a Movie Recommendation System

FU Yu

(Yangtze University, Jingzhou 434000, China)

Abstract: In today's Internet trend, the entity service industry is more and more inclined to carry out in-depth cooperation with the online Internet and pay attention to service, win by quality, humanization, and personalization. Therefore, in this context, the traditional advertising mode to attract the audience to the cinema is gradually replaced by a more intelligent and targeted online way of precise push. Therefore, to better serve the audience who like to watch movies, I develop a personalized movie recommendation system based on a text convolution neural network. This system uses a neural network to combine natural language processing with movie recommendation, and uses movielens data set to train a convolution neural network based on text to realize a movie personalized recommendation system[1]. Finally, I use the Django framework and Douban crawler to build the web service of recommendation system.

Key words: personalized recommendation system; TensorFlow; text convolutional network; MovieLens; natural language processing

1 ?前言

當前的個性化推薦系統實際上與自然語言處理聯系得非常緊密,特別是利用用戶的評論等進行輿情化分析,以期達到更符合更大多數人需求的推薦。為了更好地服務觀影用戶,此項目主要是應用了當今熱門的推薦技術來實現對觀影用戶的精準推送,以此來達到影片的觀影次數和觀眾的觀影體驗的雙提高的效果。主要實現了給用戶推薦喜歡的電影、給用戶推薦相似的電影、推薦看過的用戶還喜歡看的電影這三個功能。

2 ?推薦系統簡介

推薦系統是根據用戶的歷史信息和行為,向用戶推薦他感興趣的內容的一種系統[2]。理論上,當一個全新的用戶進入系統后是無法實現個性化推薦的,只有當用戶使用了這個系統后,系統收集了用戶的信息和行為才能向用戶提供個性化的推薦內容[3]。但在實際工程運用中,也可以通過各種手段解決“冷啟動”這樣的問題,來達到向系統新用戶的粗略推薦。常見的推薦大致可以分為基于協同過濾的推薦和基于內容的相似推薦這兩種[4]。其中,推薦系統包含的環節如下圖1所示。

3 數據處理

本項目使用的是MovieLens 1M 數據集,包含6000個用戶在近4000部電影上的1億條評論。數據集分為三個文件:用戶數據users.dat,電影數據movies.dat和評分數據ratings.dat[5]。

3.1 用戶數據users.dat

用戶ID:不用改變。性別字段:需要將‘F’和‘M’轉換成0和1。年齡字段:要轉成7個連續數字0~6。

3.2 電影數據movies.dat

電影ID字段:不用改變。流派Genres字段:是分類字段,要轉成數字。首先將Genres中的類別轉成字符串到數字的字典,然后再將每個電影的Genres字段轉成數字列表,因為有些電影是多個Genres的組合。? ?標題Title字段:處理方式跟Genres字段一樣,首先創建文本到數字的字典,然后將Title中的描述轉成數字的列表。另外Title中的年份也需要去掉。在實際代碼的書寫中Genres和Title字段需要將長度統一,這樣在神經網絡中方便處理。空白部分用‘< PAD >’對應的數字填充。

3.2 評分數據ratings.dat

數據處理完之后將三個表做 inner merge,并保存為模型文件 data_preprocess.pkl。

4 建模與模型訓練

針對處理后數據的不同字段進行模型的搭建。相關模型結構設計如下圖2所示。

4.1 嵌入層

根據上文,為了解決數據稀疏問題,One-hot的矩陣相乘可以簡化為查表操作,這大大降低了運算量。不是每一個詞用一個向量來代替,而是替換為用于查找嵌入矩陣中向量的索引,在網絡的訓練過程中,嵌入向量也會更新,也就可以探索在高維空間中詞語之間的相似性。

? 本系統使用tensorflow的tf.nn.embedding_lookup就是根據input_ids中的id尋找embeddings中的第id行。比如input_ids=[1,3,5],則找出embeddings中第1,3,5行,組成一個tensor返回。tf.nn.embedding_lookup不是簡單的查表,id對應的向量是可以訓練的,訓練參數個數應該是 category num*embedding size,也可以說lookup是一種全連接層。

創建嵌入矩陣,要決定每一個索引需要分配多少個潛在因子,這大體上意味著想要多長的向量,通常使用的情況是長度分配為32和50[6],此處選擇32和16,所以各字段嵌入矩陣的shape第1個維度,也就是第2個數字要么為32,要么為16;

而嵌入矩陣第0個緯度為6041、2、7、21,也就是嵌入矩陣的行數,也就代表著這四個字段unique值有多少個,例如Gender的值只有0和1(經過數據處理)其嵌入矩陣就有2行。

在上一點敘述過使用tf.nn.embedding_lookup與UserID字段的數據進行全連接(相當于查表操作),則每個嵌入層的shape應該是這樣的(數據量,字段長度,索引長度),數據量可以設計為每個epoch的大小;對于User數據來說,字段長度都為1,因為用一個值就能表示該獨一無二的值,如果對于文本,則可能需要使用數組來表示,即字段長度可能大于1;索引長度則是嵌入矩陣的潛在因子。

對數據集字段UserID、Gender、Age、JobID和電影數據的MovieID、Genres、Title分別構建嵌入矩陣和嵌入層。 Title嵌入層的shape是(?,15,32),“?”代表了一個epoch的數量,32代表了自定義選擇的潛在因子數量,15則代表了該字段的每一個unique值都需要一個長度為15的向量來表示。Genres嵌入層的shape是(?,1,32),由于一個電影的Genres(電影的類型),可能屬于多個類別,所以該字段的需要做特殊的處理,即把第1緯度上的向量進行加和,這樣做其實削減了特征的表現,但是又防止比如僅僅推薦相關類型的電影。

綜上,經過嵌入層,得到以下模型:

針對User數據,如表1所示。

針對Movie數據,如表2所示。

4.2 文本卷積層

網絡的第一層是詞嵌入層,由每一個單詞的嵌入向量組成的嵌入矩陣。下一層使用多個不同尺寸(窗口大小)的卷積核在嵌入矩陣上做卷積,窗口大小指的是每次卷積覆蓋幾個單詞[7]。這里跟對圖像做卷積不太一樣,圖像的卷積通常用2x2、3x3、5x5之類的尺寸,而文本卷積要覆蓋整個單詞的嵌入向量,所以尺寸是(單詞數,向量維度),比如每次滑動3個、4個或者5個單詞。第三層網絡是max pooling得到一個長向量,最后使用dropout做正則化,最終得到了電影Title的特征[7]。

卷積過程涉及以下幾個參數,如表3所示。

將Title字段嵌入層的輸出movie_title_embed_layer(shape=(?,15,32)),作為卷積層的輸入,所以先把movie_title_embed_layer擴展一個維度,shape變為(?,15,32,1),四個參數分別為(batch,height,width,channels)

可以得到如表4所示數據。

考慮window_size=2的情況,首先得到嵌入層輸出,并對其增加一個維度得到movie_title_embed_layer_expand(shape=(?,15,32,1)),其作為卷積層的輸入。卷積核的參數filter_weights為(2,32,1,8),表示卷積核的高度為2,寬度為32,輸入通道為1,輸出通道為32。其中輸出通道與上一層的輸入通道相同。

卷積層在各個維度上的步長都為1,且padding的方式為VALID,則可得到卷積層的shape為(?,14,1,8)。 卷積之后使用relu函數進行激活,并且加上偏置,shape保持不變。最大池化的窗口為(1,14,1,1),且在每個維度上的步長都為1,即可得到池化后的shape為(?,1,1,8)。依次類推,當window_size為其他時,也能得到池化層輸出shape為(?,1,1,8)。得到四個卷積、池化的輸出之后將池化層的輸出根據第三維(第四個參數)相連,變形為(?,1,1,32),再變形為三維(?,1,32)。最后為了正則化防止過擬合,經過dropout層處理,輸出shape為(?,1,32)。

4.3 全連接層

對上文所得到的嵌入層的輸出和卷積層的輸出進行全連接。對User數據的嵌入層進行全連接,最終得到輸出特征的shape為(?,200)。同理對Movie數據進行兩層全連接,最終得到輸出特征的shape為(?,200)。

4.4 構建計算圖與模型訓練

構建計算圖,訓練。問題回歸為簡單地將用戶特征和電影特征做矩陣乘法得到一個預測評分,損失為均方誤差。

1)模型保存

?保存的模型包括:處理后的訓練數據、訓練完成后的網絡、用戶特征矩陣、電影特征矩陣。

2)模型損失圖像

訓練集損失圖像如圖3所示。

測試集損失圖像如圖4所示。

經過簡單的調參。batch_size 對Loss的影響較大,但是batch_size 過大,損失會有比較大的抖動情況。隨著學習率逐漸減小,損失會先減小后增大,所以最終確定參數還是固定參數效果較好。

4.5 推薦

加了隨機因素保證對相同電影推薦時推薦結果的不一致。

1)給用戶推薦喜歡的電影:使用用戶特征向量與電影特征矩陣計算所有電影的評分,取評分最高的 topK個。

2)推薦相似的電影:計算選擇電影特征向量與整個電影特征矩陣的余弦相似度,取相似度最大的 topK 個。

3)推薦看過的用戶還喜歡看的電影。

?(1)首先選出喜歡某個電影的 topK 個人,得到這幾個人的用戶特征向量。

?(2)計算這幾個人對所有電影的評分。

?(3)選擇每個人評分最高的電影作為推薦。

5 最終實驗結果

因為數據集也未有電影的中文名稱、圖片等數據,所以在web項目中加了一個豆瓣的爬蟲,每次推薦都請求數據,并進行相應的解析和封裝。在服務器啟動的時候就加載模型,并且把tensorflow的session提前封裝好,在調用相關方法時,直接傳入該全局session,避免了每次請求都加載模型。

給用戶推薦喜歡的電影后臺相關效果如圖5所示。

給用戶推薦相似的電影后臺相關輸出效果如圖6所示。

為看過某部電影的用戶推薦他可能還喜歡看的電影后臺相關輸出效果如圖7所示。

6 ?項目總結與展望

本次項目實現了常用的推薦功能,將網絡模型作為回歸問題進行訓練,得到訓練好的用戶特征矩陣和電影特征矩陣進行了推薦。并且此次項目把源碼進行了面向對象封裝,增強了源碼的復用性和可用性,對推薦相關方法也進行了微小的調整,解決了模型多次加載問題,最后增加了該項目的Web展示端。

此次項目收獲頗豐,但是該系統還存在一系列問題:如模型的局限性,即該系統只能對數據集中的電影和用戶進行推薦,沒有再找相關字段的數據,所以訓練數據量相對較小,適用性也比較窄。希望將來能普適開來,能為更多有現實需求的用戶服務。

參考文獻:

[1] 戴培,靳涵瑜,錦璇,等.基于語義分析和卷積神經網絡的視頻審查機制研究[J].信息與電腦(理論版),2019(12):116-118.

[2] 弗朗西斯科·里奇(Francesco Ricci),利奧·羅卡奇(Lior Rokach),布拉哈·夏皮拉(Bracha Shapira).推薦系統:技術、評估及高效算法[M].李艷民,等,譯.北京:機械工業出版社,2018.

[3] 姜信景,齊小剛,劉立芳.個性化信息推薦方法研究[J].智能系統學報,2018,13(2):189-195.

[4] 常亮,曹玉婷,孫文平,等.旅游推薦系統研究綜述[J].計算機科學,2017,44(10):1-6.

[5] 鄧秀勤, 張翼飛, 江志華, 等. 一種基于節點分割的隱私屬性(a, k)-匿名算法[J]. 數據挖掘, 2020,10(2):143-151.

[6] 胡思才,孫界平,琚生根,等.基于深度神經網絡和概率矩陣分解的混合推薦算法[J].四川大學學報(自然科學版),2019,56(6):1033-1041.

[7] 易黎,肖青秀,湯鯤.基于雙層注意力機制的深度學習電影推薦系統[J].計算機與現代化,2018(11):109-114.

【通聯編輯:梁書】

主站蜘蛛池模板: 久久亚洲国产视频| 58av国产精品| 91亚洲精品第一| 国产亚洲欧美另类一区二区| 亚洲欧美成人综合| 欧美a在线视频| 在线观看国产精美视频| 国产精品亚洲综合久久小说| 爱做久久久久久| 亚洲综合国产一区二区三区| 亚洲伊人天堂| 98精品全国免费观看视频| 嫩草影院在线观看精品视频| 国产小视频在线高清播放| 亚洲人视频在线观看| 国产视频自拍一区| 久久精品人妻中文系列| 精品国产黑色丝袜高跟鞋| 久久99国产精品成人欧美| 免费精品一区二区h| 国产日本欧美在线观看| 五月激情综合网| 98超碰在线观看| 久久精品国产精品青草app| 欧美不卡二区| 免费在线视频a| 另类欧美日韩| 亚洲黄网视频| 国产一区免费在线观看| 青青青视频91在线 | 992tv国产人成在线观看| 亚洲国产精品成人久久综合影院| 99久久精品久久久久久婷婷| 亚洲精品777| 婷婷综合色| 婷婷亚洲最大| 99久久精品无码专区免费| 国内熟女少妇一线天| 国产女同自拍视频| 亚洲第一福利视频导航| 手机看片1024久久精品你懂的| 在线观看无码av免费不卡网站| 国产国产人成免费视频77777| 99久久99视频| 99久久99这里只有免费的精品| 18禁色诱爆乳网站| 国产精品美女在线| 免费黄色国产视频| 日韩a在线观看免费观看| 国产免费观看av大片的网站| 天天综合天天综合| 伊人色婷婷| 久久成人18免费| 青青草原国产av福利网站| 国产成人久久综合777777麻豆| 国产成人高清亚洲一区久久| 国产成人a毛片在线| 久久久久无码精品| 国产精品福利导航| 婷婷六月综合网| 毛片a级毛片免费观看免下载| 国产精品漂亮美女在线观看| 香蕉99国内自产自拍视频| 精品天海翼一区二区| 91人妻日韩人妻无码专区精品| 亚洲国产中文精品va在线播放 | 免费人成网站在线高清| 沈阳少妇高潮在线| 国产精品美乳| 国产精品伦视频观看免费| 不卡无码网| 久久久91人妻无码精品蜜桃HD| jizz亚洲高清在线观看| 国产簧片免费在线播放| 国产区在线观看视频| 99热这里只有精品免费| 中日无码在线观看| 在线播放国产99re| 四虎精品免费久久| 精品乱码久久久久久久| 欧美高清国产| 免费在线a视频|