王雅懿 王志海
(中央宣傳部電影數(shù)字節(jié)目管理中心,北京 100866)
隨著互聯(lián)網(wǎng)技術(shù)的普及和發(fā)展,觀眾對(duì)電影的消費(fèi)方式也不再局限于從影院或者電視上觀看影片,通過互聯(lián)網(wǎng)視頻平臺(tái)觀看影片已經(jīng)成為百姓日常觀影的主要模式。另外,互聯(lián)網(wǎng)線上觀影用戶有更多的選擇空間,剛從影院下檔的熱片、經(jīng)典老片都可以隨意選擇。為了方便用戶選片、做好影片的精準(zhǔn)投放,平臺(tái)需要對(duì)影片的內(nèi)容提取特征和分類,以便根據(jù)用戶畫像,向用戶推薦感興趣的影片。根據(jù)國(guó)家電影局公布的數(shù)據(jù)顯示,2019 年全年生產(chǎn)影片1037部,2020年受疫情影響全年生產(chǎn)影片也有650部。如果靠人工將如此多的影片分類,需要耗費(fèi)大量的人力和時(shí)間,由于每個(gè)人的評(píng)判標(biāo)準(zhǔn)不同,也會(huì)造成結(jié)果的差異性,降低分類質(zhì)量和可用性。如果在影片分類的過程中引入機(jī)器學(xué)習(xí)的方法,就可以統(tǒng)一評(píng)判標(biāo)準(zhǔn),提高效率。本次實(shí)驗(yàn)利用詞向量、多標(biāo)簽分類等機(jī)器學(xué)習(xí)技術(shù),實(shí)現(xiàn)根據(jù)影片簡(jiǎn)介對(duì)影片類型的預(yù)測(cè)。
詞向量模型(Word2vec)是一種利用神經(jīng)網(wǎng)絡(luò)技術(shù)對(duì)上下文及目標(biāo)詞的關(guān)系進(jìn)行建模,從而實(shí)現(xiàn)將詞語向量化表示的方法。與獨(dú)熱算法(One-Hot)相比,詞向量模型能夠?qū)崿F(xiàn)將詞語轉(zhuǎn)化為稠密的向量,并且近義詞有相似的向量,有助于挖掘文字中詞語和句子之間的特征。多標(biāo)簽分類 (Multi-label Classification)是一種改進(jìn)的分類模型,可實(shí)現(xiàn)單個(gè)樣本多標(biāo)簽多類別的分類,符合單部影片屬于多個(gè)影片類型的應(yīng)用場(chǎng)景。詞向量與多標(biāo)簽分類經(jīng)常用于文本情感分析,本實(shí)驗(yàn)將該技術(shù)應(yīng)用于影片分類的場(chǎng)景中,利用詞向量模型實(shí)現(xiàn)將影片簡(jiǎn)介轉(zhuǎn)化為稠密向量,再通過多標(biāo)簽分類模型實(shí)現(xiàn)對(duì)影片類型的劃分,為影片自動(dòng)化分類提供探索性實(shí)驗(yàn)方案。
由于機(jī)器無法直接理解人類的語言,所以在將人類的語言交給機(jī)器處理時(shí),首先要做的就是將語言數(shù)學(xué)化,通常數(shù)學(xué)化方式是將詞語轉(zhuǎn)換為一個(gè)向量,即向量化。詞向量模型 (Word2vec)就是利用神經(jīng)網(wǎng)絡(luò)思想,將人類語言中的詞語轉(zhuǎn)換為數(shù)學(xué)向量的一種算法。與獨(dú)熱 (One-Hot)、基于共現(xiàn)矩陣的算法相比,詞向量模型 (Word2vec)的優(yōu)勢(shì)在于,它不是簡(jiǎn)單的用數(shù)字對(duì)詞語進(jìn)行編碼,而是用向量表示詞與詞間的語義關(guān)系,具有相似含義的詞語,在詞向量空間上的距離也是相近的。
詞向量模型(Word2vec)有兩種重要的模型結(jié)構(gòu):CBOW (Continuous Bag-Of-Word)模型和Skip-Gram (Continuous Skip-Gram)模型,CBOW模型是根據(jù)文本上下文來預(yù)測(cè)當(dāng)前詞;Skip-Gram模型是根據(jù)當(dāng)前詞來預(yù)測(cè)上下文。在本實(shí)驗(yàn)中將使用CBOW 進(jìn)行模型搭建,CBOW 模型結(jié)構(gòu)如圖1所示。
圖1 CBOW 模型結(jié)構(gòu)
CBOW 模型將用于訓(xùn)練的語言樣本拆分成多個(gè)樣例(Context(w),w),其中w 是神經(jīng)網(wǎng)絡(luò)要預(yù)測(cè)的詞語,Context(w)指詞語w 的上下文,例如語言樣本“文物局司機(jī)王保銀意外發(fā)現(xiàn)失蹤多年父親所留下的遺物”,通過分詞工具可以將語言樣本分詞“文物局 司機(jī) 王保銀 意外 發(fā)現(xiàn) 失蹤 多年 父親 所留下 的 遺物”,如果要預(yù)測(cè)詞語w為“發(fā)現(xiàn)”,選取預(yù)測(cè)詞語前后3個(gè)詞作為上下文,那么Context(w)為“司機(jī) 王保銀 意外 失蹤 多年 父親”。
本次實(shí)驗(yàn)中使用的CBOW 模型,在輸出層引入了負(fù)采樣 (Negative Sampling)的概念,傳統(tǒng)的CBOW 模型輸出層使用的霍夫曼樹 (Huffman Tree),而基于負(fù)采樣的CBOW 使用的是相對(duì)比較簡(jiǎn)單的隨機(jī)負(fù)采樣,這樣可以大幅度提高性能。負(fù)采樣是一種根據(jù)詞典D 中的詞語在樣本集C 中出現(xiàn)的頻次取負(fù)樣本的算法?;谪?fù)采樣的CBOW 模型中已知上下文Context(w),預(yù)測(cè)詞語w,那么w就是一個(gè)正樣本,字典中其他詞就是負(fù)樣本。
將基于負(fù)采樣的CBOW 模型擬合成一個(gè)數(shù)學(xué)模型,即目標(biāo)函數(shù),機(jī)器學(xué)習(xí)的過程就是求解目標(biāo)函數(shù)最大值或最小值的過程。在推導(dǎo)整個(gè)樣本集下的目標(biāo)函數(shù)之前,為了方便理解,先推導(dǎo)單個(gè)樣本的目標(biāo)函數(shù)。
假定已經(jīng)選好了一個(gè)關(guān)于正樣本w 的負(fù)樣本集NEG (w)≠φ,且對(duì)?u∈D,定義:
L(u)表示詞u的標(biāo)簽,即正樣本的標(biāo)簽為1,負(fù)樣本的標(biāo)簽為0。
對(duì)于一個(gè)給定的正樣本 (Context(w),w),根據(jù)概率公式其目標(biāo)函數(shù)可以寫成式(2)形式,機(jī)器學(xué)習(xí)的目標(biāo)就是求該公式的最大值:
由于負(fù)采樣最后處理的是一個(gè)二分類問題,根
據(jù)二分類模型(Sigmoid)可以得到:
其中X表示Context(w)中各詞的詞向量之和,θ表示神經(jīng)網(wǎng)絡(luò)參數(shù),σ是二分類問題常用的Sigmoid函數(shù)。
將式(1)(3)帶入式 (2)中就可以得到單個(gè)正樣本(Context(w),w)的目標(biāo)函數(shù):
得到單個(gè)樣本的目標(biāo)函數(shù)后,開始推導(dǎo)整個(gè)樣本集的目標(biāo)函數(shù)。對(duì)于整個(gè)樣本集C,有目標(biāo)函數(shù):
為了便于求解,對(duì)G 取對(duì)數(shù),則有最終目標(biāo)函數(shù):
得到整個(gè)樣本集的目標(biāo)函數(shù)后,用梯度上升法對(duì)目標(biāo)函數(shù)最大值進(jìn)行求解,求解過程中對(duì)模型參數(shù)進(jìn)行迭代更新。為梯度上升推導(dǎo)方便,將式 (6)中的花括號(hào)內(nèi)容簡(jiǎn)記為L(zhǎng) (w,u),即:
利用隨機(jī)梯度上升法分別對(duì)式 (7)θ和X求導(dǎo),可得到導(dǎo)數(shù):
對(duì)于神經(jīng)網(wǎng)絡(luò)參數(shù)θ,每次迭代的更新公式為:
多標(biāo)簽分類模型 (Multi-label Classification)是一種改進(jìn)的分類模型,可實(shí)現(xiàn)單個(gè)樣本多標(biāo)簽多類別的分類。多標(biāo)簽學(xué)習(xí)的算法可以分成兩種:問題轉(zhuǎn)化方法和算法改編方法。問題轉(zhuǎn)化方法把多標(biāo)簽分類轉(zhuǎn)化為其他機(jī)器學(xué)習(xí)問題,例如分類器鏈算法(Classifier Chains)將多標(biāo)簽分類轉(zhuǎn)化為二分類,RAKEL 算法 (Random K-Labelsets)將多標(biāo)簽分類轉(zhuǎn)化為多分類問題。算法改編方法通過對(duì)流行的機(jī)器學(xué)習(xí)技術(shù)改編來應(yīng)對(duì)多標(biāo)簽問題。本次實(shí)驗(yàn)使用的神經(jīng)網(wǎng)絡(luò)模型就是通過改編輸出層的激活函數(shù)和損失函數(shù),從而達(dá)到支持多標(biāo)簽分類的目的。使用神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)在于,最終的輸出結(jié)果是對(duì)每個(gè)標(biāo)簽可能為真的概率值,可以通過控制閾值來對(duì)預(yù)測(cè)結(jié)果進(jìn)行調(diào)整。
普通多分類神經(jīng)網(wǎng)絡(luò)中,輸出層的激活函數(shù)是Softmax函數(shù),而在多標(biāo)簽分類模型中,輸出層使用Sigmoid作為激活函數(shù),這樣輸出層就將類別c建模為伯努利概率分布,并且每個(gè)標(biāo)簽間都是相互獨(dú)立的:
將損失函數(shù)從交叉熵 (Categorical Crossentropy)改為二分類的交叉熵 (Binary Crossentropy)。二分類的交叉熵?fù)p失函數(shù)BCE (X)結(jié)果就是一個(gè)向量而不是一個(gè)數(shù)值,BCE (X)表示對(duì)第i個(gè)標(biāo)簽的預(yù)測(cè)值與真實(shí)值間的誤差。
其中y是第i個(gè)標(biāo)簽0或1分類的真實(shí)值,f(x)為第i個(gè)標(biāo)簽的預(yù)測(cè)值。
基于影片簡(jiǎn)介的影片類型預(yù)測(cè)模型主要分為四個(gè)處理模塊:數(shù)據(jù)清洗模塊、詞向量模型訓(xùn)練模塊、多標(biāo)簽分類模型訓(xùn)練模塊和測(cè)試集預(yù)測(cè)(見圖2)。
圖2 基于影片簡(jiǎn)介的影片類型預(yù)測(cè)模型處理模塊
數(shù)據(jù)清洗模塊,數(shù)據(jù)集中包含55000余部影片數(shù)據(jù),數(shù)據(jù)字段包括影片名稱、影片簡(jiǎn)介、影片類型、國(guó)籍字段。由于影片簡(jiǎn)介和影片類型要用于模型學(xué)習(xí),所以將影片簡(jiǎn)介、類型缺失,以及全英文簡(jiǎn)介的影片樣本信息從數(shù)據(jù)集中去掉。對(duì)于空行、多個(gè)空格等文本格式問題,在進(jìn)行格式調(diào)整后放入樣本集。經(jīng)過清洗篩選后的樣本集有33600余部影片信息。
詞向量模型訓(xùn)練模塊,在數(shù)據(jù)預(yù)處理的過程中主要是對(duì)訓(xùn)練文本進(jìn)行分詞和去停用詞。利用分詞工具將文本分詞后,還要去掉停用詞,停用詞是語氣詞和沒有意義的單詞,例如:“么”“的”“嗎”。搭建詞向量訓(xùn)練模型,該模型采用基于負(fù)采樣的CBOW 模型結(jié)構(gòu),為了讓詞向量包含更多信息并考慮到資源消耗情況,經(jīng)過實(shí)驗(yàn)和測(cè)試,將詞向量的維度設(shè)置為600維,最終得到訓(xùn)練好的詞向量模型以及詞向量矩陣。
多標(biāo)簽分類模型訓(xùn)練模塊,在進(jìn)行多標(biāo)簽分類前,要完成訓(xùn)練樣本和標(biāo)簽的向量化,在本實(shí)驗(yàn)中,訓(xùn)練用的樣本就是影片的簡(jiǎn)介文本,標(biāo)簽就是影片的類型。影片類型一共有39 類,因此將標(biāo)簽做成39維的向量,影片類型及影片數(shù)量如圖3所示,如果影片屬于某一類型,那么該類型所代表的向量維度數(shù)值就為1,否則為0。
圖3 測(cè)試集影片類型與預(yù)測(cè)類型分布情況
表1 訓(xùn)練集各類型影片數(shù)量情況
影片簡(jiǎn)介可以通過詞向量模型進(jìn)行轉(zhuǎn)化,簡(jiǎn)介中每個(gè)詞語是一個(gè)600維向量,所有詞語的詞向量加和求取平均,就是該影片簡(jiǎn)介的特征向量。將樣本和標(biāo)簽向量化之后,再將樣本集按照8∶2的比例劃分訓(xùn)練集和測(cè)試集,最終訓(xùn)練集影片數(shù)量26881,測(cè)試集影片數(shù)量6721。搭建多標(biāo)簽分類模型,模型結(jié)構(gòu)如圖4所示,輸入層的神經(jīng)元個(gè)數(shù)600,與簡(jiǎn)介的特征向量維度一致,中間隱藏層的神經(jīng)元個(gè)數(shù)設(shè)置為200,輸出層的神經(jīng)元數(shù)量39,與標(biāo)簽維度一致。為了防止過擬合的情況,在損失函數(shù)中加入L2正則項(xiàng)。
圖4 多標(biāo)簽分類模型神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
測(cè)試集預(yù)測(cè)模塊,測(cè)試集的影片類型與訓(xùn)練集的影片類型基本保持同分布。在對(duì)測(cè)試集進(jìn)行預(yù)測(cè)后,分別用單標(biāo)簽正確率和F1-score兩種評(píng)價(jià)方式對(duì)預(yù)測(cè)結(jié)果進(jìn)行評(píng)價(jià)。
測(cè)試集中共有影片信息6721條,測(cè)試集影片類型分布與預(yù)測(cè)結(jié)果基本保持一致。喜劇、愛情、動(dòng)作等頭部類型影片預(yù)測(cè)值與真實(shí)值在影片數(shù)量上基本一致。經(jīng)典、文藝、災(zāi)難等類型影片由于訓(xùn)練的影片素材過少,導(dǎo)致沒有影片被預(yù)測(cè)為這幾類。大部分故事片都可以分入劇情類型,但是在分類時(shí)往往優(yōu)先使用其他類型,例如:影片 《血戰(zhàn)湘江》被標(biāo)注為戰(zhàn)爭(zhēng)、歷史,而不是劇情。因此導(dǎo)致樣本中,劇情類型影片數(shù)量明顯少于預(yù)測(cè)為該類型的影片數(shù)量。
對(duì)測(cè)試集的預(yù)測(cè)結(jié)果整體正確率96.57%。其中喜劇、愛情、動(dòng)作等樣本量較大的影片,預(yù)測(cè)正確率在85%~95%之間。劇情類型影片的預(yù)測(cè)正確率只有72%,在各類型的預(yù)測(cè)結(jié)果正確率中排名末位,見圖5。綜藝、倫理等樣本數(shù)量較少的影片類型,正確率較高,分析其原因主要是:雖然所有影片都沒有被分類到綜藝、倫理等類型,但是由于這些類別的正例樣本較少,負(fù)例樣本占比遠(yuǎn)高于正例樣本,導(dǎo)致即使所有影片都被分為負(fù)例,其正確率依然很高。這就暴露出將正確率作為評(píng)價(jià)標(biāo)準(zhǔn),在正負(fù)例樣本占比差異較大的情況下,評(píng)價(jià)結(jié)果并不客觀。
圖5 各類型預(yù)測(cè)結(jié)果正確率
F1-score作為模型最終的評(píng)價(jià)標(biāo)準(zhǔn),可以有效應(yīng)用在某類型正負(fù)樣本數(shù)量差異過大的場(chǎng)景中。由于每個(gè)影片類型都是一個(gè)二分類問題,對(duì)比預(yù)測(cè)結(jié)果和真實(shí)值,可以將預(yù)測(cè)結(jié)果分為以下四種情況,見圖6。
圖6 預(yù)測(cè)結(jié)果的四種情況
精準(zhǔn)率描述了在所有被預(yù)測(cè)為某類型的影片中,有多少影片是真正屬于該類型的。召回率描述了屬于某類型的影片,被預(yù)測(cè)出來的有多少。精準(zhǔn)率和召回率的公式如下:
F1-score由精準(zhǔn)率和召回率組成,公式如下所示:
對(duì)測(cè)試集的預(yù)測(cè)結(jié)果整體F1-score 得分為0.6364。從各影片類型的F1-score得分情況可以看出,F1-score得分結(jié)果與該類別的影片數(shù)量、影片類型與簡(jiǎn)介相關(guān)程度等因素有關(guān)。影片數(shù)量較多的類型得到了不錯(cuò)的結(jié)果,劇情是影片數(shù)量最多的類型,F1-score得分達(dá)到了0.82。而訓(xùn)練樣本較少的影片類型預(yù)測(cè)結(jié)果并不理想,經(jīng)典、倫理、災(zāi)難等影片數(shù)量不足100 部,F1-score得分幾乎為0。短片、歌舞由于難以從影片簡(jiǎn)介中對(duì)其類型加以區(qū)分,所以F1-score得分不高,僅有0.2左右。喜劇、愛情、動(dòng)作等熱門類型影片數(shù)量在2000~4000 部區(qū)間,具有一定的規(guī)模,F1-score得分在0.5 左右,F1得分擁有很大的增長(zhǎng)空間,是模型下階段的優(yōu)化重點(diǎn)(見圖7)。
圖7 各類型預(yù)測(cè)結(jié)果F1得分情況
本文實(shí)驗(yàn)性地將詞向量、多標(biāo)簽分類等機(jī)器學(xué)習(xí)技術(shù)應(yīng)用在對(duì)影片簡(jiǎn)介的文本分析上,實(shí)現(xiàn)了對(duì)影片類型的預(yù)測(cè)。模型還存在著一些問題,下一階段將擴(kuò)充訓(xùn)練樣本的特征,將影片海報(bào)、影片時(shí)長(zhǎng)、出品年代、國(guó)別等信息也加入到學(xué)習(xí)中,進(jìn)一步提高模型的準(zhǔn)確性,為影片信息的進(jìn)一步挖掘和內(nèi)容分類提供參考模型。