• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于文本的卷積網(wǎng)絡(luò)在電影推薦系統(tǒng)中的應(yīng)用

      2021-12-19 22:40:52付裕
      電腦知識與技術(shù) 2021年32期
      關(guān)鍵詞:自然語言處理

      付裕

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

      關(guān)鍵詞:個性化推薦系統(tǒng);TensorFlow;文本卷積網(wǎng)絡(luò); MovieLens;自然語言處理

      中圖分類號:TP301 ? 文獻標(biāo)識碼: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 ?前言

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

      2 ?推薦系統(tǒng)簡介

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

      3 數(shù)據(jù)處理

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

      3.1 用戶數(shù)據(jù)users.dat

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

      3.2 電影數(shù)據(jù)movies.dat

      電影ID字段:不用改變。流派Genres字段:是分類字段,要轉(zhuǎn)成數(shù)字。首先將Genres中的類別轉(zhuǎn)成字符串到數(shù)字的字典,然后再將每個電影的Genres字段轉(zhuǎn)成數(shù)字列表,因為有些電影是多個Genres的組合。? ?標(biāo)題Title字段:處理方式跟Genres字段一樣,首先創(chuàng)建文本到數(shù)字的字典,然后將Title中的描述轉(zhuǎn)成數(shù)字的列表。另外Title中的年份也需要去掉。在實際代碼的書寫中Genres和Title字段需要將長度統(tǒng)一,這樣在神經(jīng)網(wǎng)絡(luò)中方便處理??瞻撞糠钟谩?lt; PAD >’對應(yīng)的數(shù)字填充。

      3.2 評分?jǐn)?shù)據(jù)ratings.dat

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

      4 建模與模型訓(xùn)練

      針對處理后數(shù)據(jù)的不同字段進行模型的搭建。相關(guān)模型結(jié)構(gòu)設(shè)計如下圖2所示。

      4.1 嵌入層

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

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

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

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

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

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

      綜上,經(jīng)過嵌入層,得到以下模型:

      針對User數(shù)據(jù),如表1所示。

      針對Movie數(shù)據(jù),如表2所示。

      4.2 文本卷積層

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

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

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

      可以得到如表4所示數(shù)據(jù)。

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

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

      4.3 全連接層

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

      4.4 構(gòu)建計算圖與模型訓(xùn)練

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

      1)模型保存

      ?保存的模型包括:處理后的訓(xùn)練數(shù)據(jù)、訓(xùn)練完成后的網(wǎng)絡(luò)、用戶特征矩陣、電影特征矩陣。

      2)模型損失圖像

      訓(xùn)練集損失圖像如圖3所示。

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

      經(jīng)過簡單的調(diào)參。batch_size 對Loss的影響較大,但是batch_size 過大,損失會有比較大的抖動情況。隨著學(xué)習(xí)率逐漸減小,損失會先減小后增大,所以最終確定參數(shù)還是固定參數(shù)效果較好。

      4.5 推薦

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

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

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

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

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

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

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

      5 最終實驗結(jié)果

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

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

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

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

      6 ?項目總結(jié)與展望

      本次項目實現(xiàn)了常用的推薦功能,將網(wǎng)絡(luò)模型作為回歸問題進行訓(xùn)練,得到訓(xùn)練好的用戶特征矩陣和電影特征矩陣進行了推薦。并且此次項目把源碼進行了面向?qū)ο蠓庋b,增強了源碼的復(fù)用性和可用性,對推薦相關(guān)方法也進行了微小的調(diào)整,解決了模型多次加載問題,最后增加了該項目的Web展示端。

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

      參考文獻:

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

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

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

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

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

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

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

      【通聯(lián)編輯:梁書】

      猜你喜歡
      自然語言處理
      基于LSTM自動編碼機的短文本聚類方法
      自然語言處理與司法案例
      魅力中國(2017年24期)2017-09-15 04:35:10
      國外基于知識庫的問答系統(tǒng)相關(guān)研究進展及其啟示
      中國市場(2016年39期)2017-05-26 17:55:58
      基于依存句法的實體關(guān)系抽取
      基于組合分類算法的源代碼注釋質(zhì)量評估方法
      面向機器人導(dǎo)航的漢語路徑自然語言組塊分析方法研究
      詞向量的語義學(xué)規(guī)范化
      漢哈機器翻譯中的文字轉(zhuǎn)換技術(shù)研究
      HowNet在自然語言處理領(lǐng)域的研究現(xiàn)狀與分析
      科技視界(2016年5期)2016-02-22 11:41:39
      基于.NET的維哈柯多語種網(wǎng)上數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)
      丹棱县| 临清市| 革吉县| 武平县| 宁陵县| 买车| 额尔古纳市| 香港| 丘北县| 阿荣旗| 综艺| 措美县| 博客| 遂宁市| 汨罗市| 辛集市| 乌拉特后旗| 鄂尔多斯市| 德州市| 芦溪县| 上杭县| 景东| 綦江县| 寿宁县| 鄂温| 攀枝花市| 汕尾市| 保德县| 石嘴山市| 故城县| 察隅县| 沾益县| 连山| 大田县| 绥中县| 阿坝县| 吉林省| 巨野县| 河间市| 东兴市| 邯郸县|