王雅懿
(中央宣傳部電影數(shù)字節(jié)目管理中心,北京 100866)
農(nóng)村電影放映工程作為文化惠民工程的重要組成部分,承擔(dān)著弘揚主旋律、傳播正能量的重要使命。當(dāng)前,農(nóng)村電影市場年供應(yīng)影片已達(dá)4000 余部,需要持續(xù)加強技術(shù)服務(wù)能力以便用戶從海量影片中快速挑選出想要訂購的影片。在以前,選片訂購的用戶主要是農(nóng)村院線,為了打通選片訂片的最后一公里,中央宣傳部電影數(shù)字節(jié)目管理中心(以下簡稱“電影數(shù)字中心”)著力推動訂購用戶下沉,讓放映員也能直接參與到選片訂購工作中。對于農(nóng)村院線,農(nóng)村公益電影業(yè)務(wù)運營與監(jiān)管服務(wù)平臺已積累了大量的用戶行為數(shù)據(jù),可使用協(xié)同過濾算法為用戶推薦影片;對于放映員,在首次選片時由于缺少行為數(shù)據(jù),無法用協(xié)同過濾算法對用戶的喜好進(jìn)行預(yù)測,可使用相似性推薦算法為用戶推薦影片。相似性推薦算法適用于缺少用戶行為數(shù)據(jù)的場景,該算法通過對影片本身的特性進(jìn)行分析,找出類似影片推薦給用戶。
如何將影片信息轉(zhuǎn)化為特征向量,如何計算影片相似性是相似性推薦算法要集中解決的關(guān)鍵問題。傳統(tǒng)的影片信息轉(zhuǎn)化方式是將導(dǎo)演、主演、影片類型等信息直接用數(shù)字表示,從而實現(xiàn)將影片信息向量化。文章利用影片簡介作為素材,根據(jù)序列模型編碼部分能夠?qū)?shù)據(jù)特征進(jìn)行提取的特點,將影片簡介作為樣本輸入到訓(xùn)練好的文本摘要序列模型中,從而得到影片簡介的特征向量。影片的相似性計算選用了歐式距離和皮爾遜相關(guān)系數(shù)作為計算方法,既考量了向量間的距離又兼顧了向量間的角度,實現(xiàn)對影片特征向量的綜合評估。
序列模型是一種自然語言模型,它利用神經(jīng)網(wǎng)絡(luò)技術(shù)實現(xiàn)將任意長度的詞序列映射成另一個任意長度的詞序列,常被應(yīng)用于機器翻譯領(lǐng)域。序列模型的思想非常像加密和解密的過程,模型通常由編碼部分(Encoder)和解碼部分(Decoder)兩部分組成,編碼部分負(fù)責(zé)將輸入的詞序列加密形成一個特征向量,解碼部分負(fù)責(zé)將特征向量解密成另一組詞序列。
編碼部分和解碼部分都是由循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)結(jié)構(gòu)組成。循環(huán)神經(jīng)網(wǎng)絡(luò)是一種專門用于解決序列問題的特殊神經(jīng)網(wǎng)絡(luò)。自然語言語句的前后詞語是有關(guān)聯(lián)的,但是傳統(tǒng)神經(jīng)無法表示這種關(guān)聯(lián),在循環(huán)神經(jīng)網(wǎng)絡(luò)中當(dāng)前詞語的預(yù)測與前面詞語是有關(guān)系的,循環(huán)神經(jīng)網(wǎng)絡(luò)會對前面的語句信息進(jìn)行記憶并應(yīng)用于當(dāng)前語句的預(yù)測計算中。
圖1 傳統(tǒng)神經(jīng)網(wǎng)絡(luò)詞序列預(yù)測
圖2 循環(huán)神經(jīng)網(wǎng)絡(luò)詞序列預(yù)測
循環(huán)神經(jīng)網(wǎng)絡(luò)根據(jù)輸入詞序列長度T和輸出詞序列長度T的不同,可以呈現(xiàn)出五種形式,如圖3所示。本次實驗搭建的序列模型編碼部分使用的是“多對一型”,將輸入的詞序列提取成一個特征向量;解碼部分使用的是“一對多型”,將特征向量解碼成另一串詞序列。
圖3 循環(huán)神經(jīng)網(wǎng)絡(luò)的五種形式
另外,由于語句中當(dāng)前詞語不僅與前面的詞語有關(guān),與后面詞語也有關(guān),為了描述這種關(guān)系在編碼部分使用了雙向循環(huán)網(wǎng)絡(luò)。雙向循環(huán)網(wǎng)絡(luò)在單向循環(huán)網(wǎng)絡(luò)的基礎(chǔ)上增加了反向傳播的過程,可以將后面語句信息反饋給當(dāng)前詞語的時序神經(jīng)元結(jié)構(gòu)。
自然語言中,某個詞語可能與相距較遠(yuǎn)的另一個詞語有著較強的依賴關(guān)系。循環(huán)神經(jīng)網(wǎng)絡(luò)神經(jīng)元激活函數(shù)使用的是tanh 函數(shù),在模型優(yōu)化的過程中,距離較遠(yuǎn)詞語的梯度會消失,導(dǎo)致詞語的預(yù)測結(jié)果只受周圍附近的詞語影響。
圖4 傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)神經(jīng)元結(jié)構(gòu)和LSTM 神經(jīng)元結(jié)構(gòu)
將語句轉(zhuǎn)化為向量后,就可以通過向量的相似性計算來判斷兩個語句的相似性。常見的相似性計算方法有余弦相似度(Cosine)、歐式距離(Euclidean)、皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)等。
余弦相似度以向量的夾角為考量角度。假設(shè)兩部影片的特征向量為A 和B,那么它們的余弦相似度如式(1)所示。
由于余弦相似度表示方向上的差距,對距離并不敏感,為了增強對距離的差異性描述,一般會對余弦相似度進(jìn)行調(diào)整:每個值都減去一個均值,這樣調(diào)整的余弦相似度被稱為皮爾遜相關(guān)系數(shù),如式(2)所示。
歐式距離以向量的空間距離為考量角度,能夠體現(xiàn)個體數(shù)值的絕對差異,彌補余弦相似度對距離不敏感問題,如式(3)所示。
在本實驗中為了從向量的夾角和向量的距離兩方面衡量樣本特征向量的相似程度,采用皮爾遜相關(guān)系數(shù)和歐式距離兩種方式分別考量。
本次實驗?zāi)P驮O(shè)計的整體思路是先利用開源的文本摘要數(shù)據(jù)集訓(xùn)練序列模型,這樣得到的序列模型除了能夠?qū)⑽谋巨D(zhuǎn)化為向量外,還可以提取文本中的關(guān)鍵信息,再利用序列模型對影片簡介進(jìn)行摘要提取,取序列模型編碼部分輸出的特征向量進(jìn)行影片相似性計算。模型由六個模塊組成:數(shù)據(jù)清洗模塊、詞向量制作模塊、數(shù)據(jù)編碼化模塊、序列模型訓(xùn)練模塊、影片簡介特征向量計算模塊、影片相似性計算模塊,見圖5。
數(shù)據(jù)清洗模塊,序列模型使用了哈爾濱工業(yè)大學(xué)智能計算研究中心提供的文本摘要數(shù)據(jù)集(LCSTS)第二部分的數(shù)據(jù)進(jìn)行訓(xùn)練,該部分共有短評論數(shù)據(jù)10666條,每條樣本數(shù)據(jù)都有正文和摘要兩部分,可用于序列模型的有監(jiān)督訓(xùn)練。影片簡介數(shù)據(jù)集用于在序列模型預(yù)測摘要的過程中提取特征向量,數(shù)據(jù)集共有33602條數(shù)據(jù),每條樣本數(shù)據(jù)只有正文沒有摘要部分。兩個數(shù)據(jù)集都沒有缺失值,但是仍然存在一些格式問題,數(shù)據(jù)清洗階段將對數(shù)據(jù)格式進(jìn)行統(tǒng)一,去掉英文和數(shù)字只保留中文,對文本進(jìn)行分詞和去停用詞的處理,為文本的向量化做準(zhǔn)備。
圖5 基于影片簡介的相似影片推薦模型結(jié)構(gòu)
詞向量制作模塊,機器無法直接對中文文本進(jìn)行處理,在訓(xùn)練模型之前需要對中文數(shù)據(jù)集進(jìn)行向量化。本實驗使用了由北京師范大學(xué)中文信息處理研究所與人民大學(xué)DB-IIR 實驗室共同制作的中文詞向量語料庫,該語料庫實現(xiàn)了將常用的195202個中文單詞轉(zhuǎn)化為300維的向量,文本摘要數(shù)據(jù)集和影片簡介數(shù)據(jù)集共有單詞數(shù)量203579個,經(jīng)過測算語料庫對兩個數(shù)據(jù)集的單詞覆蓋率達(dá)到92.4%,可以在該語料庫的基礎(chǔ)上建立本模型的詞向量矩陣。為了篩去一些小頻率的單詞,減少訓(xùn)練壓力提高精度,本實驗只保留了詞頻大于3的單詞,將去掉的單詞用<UNK>標(biāo)識。由于數(shù)據(jù)集每條文本數(shù)據(jù)的長度是不同的,用<GO>和<EOS>分別標(biāo)識文本的開頭和結(jié)束位置,能夠更好地讓機器識別。
數(shù)據(jù)編碼化模塊,文本摘要數(shù)據(jù)集的文本單詞數(shù)量均值、最小值、最大值分別為:32個、10個、52個;影片簡介數(shù)據(jù)集的文本單詞數(shù)量均值、最小值、最大值分別為:61個、1個、3009個。為了統(tǒng)一兩個數(shù)據(jù)集的文本單詞數(shù)量分布,需要對兩個數(shù)據(jù)集樣本進(jìn)行篩選,使得文本最大單詞數(shù)量不超過54個,最小單詞數(shù)量不超過10個,<UNK>單詞數(shù)量最多為2個,并且只保留國產(chǎn)影片作為本次的相似影片計算樣本。最終文本摘要數(shù)據(jù)集樣本數(shù)量9226條,影片簡介數(shù)據(jù)集樣本數(shù)量9216條。數(shù)據(jù)篩選完成后,利用上一模塊制作的詞向量矩陣對文本摘要和影片簡介數(shù)據(jù)集向量化。
圖6 序列模型解碼部分訓(xùn)練和預(yù)測模式下模型結(jié)構(gòu)
影片相似性計算模塊,將影片簡介數(shù)據(jù)集9216部國產(chǎn)影片特征向量兩兩分別計算皮爾遜相關(guān)系數(shù)、歐式距離。皮爾遜相關(guān)性系數(shù)分值越高影片越相似,歐式距離則是分值越低影片越相似。根據(jù)兩種相似度計算得分,為每部影片分別推薦最相似的三部影片作為推薦結(jié)果。
歐式距離得分越小表示兩部影片越相近,將9216部影片兩兩計算相似度,得到的最小得分為0(即影片本身),最大得分17,數(shù)值分布如圖7 所示。根據(jù)分?jǐn)?shù)的分布情況將影片的相關(guān)性分為:強、較強、中等、較弱、弱五個等級,分?jǐn)?shù)區(qū)間分別為[0,8],[8,10],[10,12],[12,14],[14,17]。
圖7 歐式距離數(shù)值分布
圖8 皮爾遜相關(guān)系數(shù)數(shù)值分布
皮爾遜相關(guān)系數(shù)得分越大表示兩部影片越相近,將影片兩兩計算相似度得分在[0,1]區(qū)間內(nèi)。與歐式距離相似,將皮爾遜相關(guān)系數(shù)由弱到強分為五個等級。[0.8,1]、[0.6,0.8]、[0.4,0.6]、[0.2,0.4]、[0,0.2]五個分?jǐn)?shù)區(qū)間分別表示影片間強、較強、中等、較弱、弱的相關(guān)程度,各區(qū)間的數(shù)量分布如圖8所示。
圖9 兩種相似性計算方法推薦影片的相關(guān)性等級占比情況
為每部影片分別用歐式距離和皮爾遜相關(guān)系數(shù)推薦三部影片,推薦影片相關(guān)性等級如圖9 所示,歐式距離推薦影片相關(guān)性大都處于強和較強區(qū)域內(nèi),皮爾遜相關(guān)系數(shù)推薦影片相關(guān)性大都處于較強區(qū)域。該結(jié)果說明利用兩種相似性計算方法都可以得到較好的推薦效果,歐式距離對強相關(guān)的影片更敏感。
隨機從影片樣本中抽取《百團大戰(zhàn)》《唐人街探案3》《寵愛》《北京愛情故事》四部票房過億的熱片,分析個體影片的推薦結(jié)果,如表1所示。
表1 抽樣熱門影片預(yù)測結(jié)果
使用序列模型抽取影片特征向量再進(jìn)行相似度計算的方法,容易匹配到具有相同關(guān)鍵詞的影片。如表1所示,影片《寵愛》講述了六段人與狗的溫馨故事,推薦得到的影片《那人那狗》《萌寵入殮師》《降落好》影片簡介中都多次出現(xiàn)流浪狗的關(guān)鍵詞。模型的缺點也很明顯,影片的推薦結(jié)果完全依靠影片簡介來決定,因此對影片簡介的質(zhì)量要求很高。
本文實驗性地將序列模型應(yīng)用于影片簡介特征提取上,再利用相似性計算方法得到相似度較高的影片作為推薦結(jié)果,實現(xiàn)基于影片本身特征的推薦方法。在農(nóng)村公益電影訂購中,利用相似性影片推薦算法,在缺少用戶訂購歷史數(shù)據(jù)的應(yīng)用場景下,建立面向放映員的個性化影片推薦模型。序列模型使用的文本摘要數(shù)據(jù)集樣本數(shù)量只有近萬條,導(dǎo)致訓(xùn)練得到的模型精度有限,下階段將使用百萬級的文本摘要數(shù)據(jù)集,進(jìn)一步優(yōu)化序列模型。另外在相似性計算階段,將影片類型、導(dǎo)演、主演等相關(guān)信息也作為特征向量加入到相似性計算中,進(jìn)一步提高推薦系統(tǒng)的準(zhǔn)確性。