鬼佬大哥大
  • / 14
  • 下載費用:30 金幣  

基于視頻主題相似度的視頻推送方法.pdf

摘要
申請專利號:

CN201510494284.9

申請日:

2015.08.12

公開號:

CN105069121A

公開日:

2015.11.18

當前法律狀態:

實審

有效性:

審中

法律詳情: 著錄事項變更IPC(主分類):G06F 17/30變更事項:申請人變更前:北京暴風科技股份有限公司變更后:暴風集團股份有限公司變更事項:地址變更前:100191 北京市海淀區學院路51號首享科技大廈13層變更后:100191 北京市海淀區學院路51號首享科技大廈13層|||實質審查的生效IPC(主分類):G06F 17/30申請日:20150812|||公開
IPC分類號: G06F17/30 主分類號: G06F17/30
申請人: 北京暴風科技股份有限公司
發明人: 王佳; 畢重興; 陳亮; 畢先春
地址: 100191北京市海淀區學院路51號首享科技大廈13層
優先權:
專利代理機構: 北京華夏正合知識產權代理事務所(普通合伙)11017 代理人: 韓登營; 張煥亮
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510494284.9

授權公告號:

||||||

法律狀態公告日:

2016.08.24|||2015.12.16|||2015.11.18

法律狀態類型:

著錄事項變更|||實質審查的生效|||公開

摘要

本發明所提供的一種基于視頻主題相似度的視頻推送方法,包括以下步驟:A、抓取各個視頻對應的標簽;B、針對所述各個視頻的標簽進行LDA訓練,獲得各個視頻的主題分布;C、基于步驟B所述各個視頻的主題分布構建視頻-主題分布矩陣,記為矩陣A,其轉置矩陣表示為矩陣B;D、將所述矩陣A、B分別作為左右矩陣,采用外積法利用Map Reduce分布式計算框架進行矩陣相乘計算,獲得各個視頻間的主題相似度;E、根據所述各個視頻間的主題相似度選擇視頻進行推送。由上,實現在數量眾多的視頻庫中較高效率的確定出各個視頻相似度,以進行推送。

權利要求書

1.一種基于視頻主題相似度的視頻推送方法,其特征在于,包
括以下步驟:
A、抓取各個視頻對應的標簽;
B、針對所述各個視頻的標簽進行LDA訓練,獲得各個視頻的主
題分布;
C、基于步驟B所述各個視頻的主題分布構建視頻-主題分布矩
陣,記為矩陣A,其轉置矩陣表示為矩陣B;
D、將所述矩陣A、B分別作為左右矩陣,采用外積法利用Hadoop
MapReduce分布式計算框架進行矩陣相乘計算,獲得各個視頻間的
主題相似度;
E、根據所述各個視頻間的主題相似度選擇視頻進行推送。
2.根據權利要求1所述的方法,其特征在于,步驟A后還包括
步驟:對所抓取的各個視頻對應的標簽進行去重處理。
3.根據權利要求1所述的方法,其特征在于,
步驟B包括:
將所抓取的各個視頻標簽歸納為各個視頻的不同主題;
針對所述不同主題進行LDA訓練,得出各個視頻合適的主題個
數以及不同主題分別所占的比重值。
4.根據權利要求3所述的方法,其特征在于,所述得出各個視
頻合適的主題個數包括:采用以下計算式:
p e r p l e x i t y = exp { - Σ d = 1 M log p ( W d ) Σ d = 1 M N d } ; ]]>
p ( W d ) = Π n = 1 N d Σ z = 1 K p ( z | d ) p ( w n | z ) ; ]]>
其中,M表示視頻庫中視頻總數,Wd表示第d個視頻,Nd表示
第d個視頻的視頻標簽總數,Wn表示第d個視頻標簽中第n個詞,K
表示第d個視頻的視頻主題總數,z表示第d個視頻的第z個視頻主
題;
計算結果perplexity值與所述主題個數的合適程度成反比。
5.根據權利要求1~4任一所述的方法,其特征在于,步驟D包
括:
D1、所述矩陣A表示為:對于矩陣A中各元素的列位置序號記
為key,其對應的value值標記為L-movieid-value形式;
所述矩陣B表示為:對于矩陣B中各元素的行位置序號記為key,
其對應的value值標記為R-movieid-value形式;
L、R分別表示左、右矩陣;movieid表示左矩陣行位置及右矩陣
列位置;value值表示各元素所對應的不同主題所占的比重值;
將所述矩陣A、B分別按列、行分段;所述分段方式為:將視頻
的總數進行因數分解表示為3個因數,記為f1、f2及f3,每個分段包
含f1個值,共有f2*f3個分段;
分段后,對各個分段進行標記,左矩陣第n列第j個分段表示為:
jL-n-1#f2*f3-value_lstn∈(1,2,...,f2*f3);
右矩陣第n行第j’個分段表示為:
j'R-1#f2*f3-n-value_lstn∈(1,2,...,f2*f3);
1#f2*f3表示各元素拷貝份數的序列號,1表示開始序列號,f2*f3
表示拷貝總數;value_lst表示在該分段內各視頻主題所占的比重值的
列表;
D2、對分段的矩陣A、B執行HadoopMapReduce的分段拷貝任
務時,執行f2輪HadoopMapReduce的拷貝任務,每輪HadoopMap
Reduce將Map每條輸入記錄拷貝f3次;
完成拷貝任務時,左、右矩陣中的元素的記錄樣式分別表示為:
jL-n-r*f3#(r+1)*f3-value_lstn∈(1,2,...,f2*f3);
j'R-r*f3#(r+1)*f3-n-value_lstn∈(1,2,...,f2*f3);
r表示當前已完成拷貝的輪數;
D3、把要進行相乘的具有對應位置標記的左、右矩陣的兩條記錄
合并為一條記錄,
合并后左、右矩陣元素的記錄為:
n-j-j'element_list-L,n,j-element_list-R,n,j';
element_list-L,n,j表示左矩陣中第n列中的第j個分段中各元
素的集合,element_list-R,n,j’表示右矩陣中第n行中的第j’個分
段中各元素的集合;
D4、將D3中的表達式各條記錄中左矩陣element_list元素集合
中的各個元素依次與右矩陣element_list元素集合中的各個元素相乘;
左矩陣中各個元素的key表示為movieid(L),即該元素在左矩陣
的具體位置;右矩陣中各個元素的key表示為movieid(R);value值記
為兩元素的乘積,從而形成Reduce階段的key/value對輸出;
在Reduce階段,將具有相同key的記錄匯總,得到矩陣A、B乘
積矩陣中的每一個元素,所述每個元素為視頻間的主題相似度值。

說明書

基于視頻主題相似度的視頻推送方法

技術領域

本發明涉及視頻推薦技術領域,特別涉及一種基于視頻主題相似
度的視頻推送方法。

背景技術

主題模型(LDA,LatentDirichletAllocation)是一種非監督機器學
習技術,以下稱為LDA主題模型。LDA主題模型可以用來識別大規
模文檔集或語料庫中潛藏的主題信息。它采用了詞袋的方法,這種方
法將每一篇文檔視為一個詞頻向量,從而將文本信息轉化為了易于建
模的數字信息。

對于視頻,基于其不同的名稱、類型、參與的演員或導演、視頻
內容等均可視為不同的文檔集或語料庫,從而針對視頻庫,基于LDA
主題模型訓練,則可以生成視頻庫中所有視頻的視頻-主題分布。

當形成視頻-主題分布后,當用戶看某一視頻時,便可依據不同視
頻間的主題的相似性,為用戶推薦其他視頻內容。如何在數量眾多的
視頻庫中尋找出與目前正在觀看視頻主題相似性的視頻,是一亟待解
決的問題。

現有方法中,采用在Hadoop集群上進行視頻間的主題相似度計
算。通過計算各視頻主題向量間的余弦值,即可得到視頻相似度,具
體公式如下:

S i m ( m 1 , m 2 ) = c o s ( m 1 , m 2 ) = m 1 · m 2 | m 1 | * | m 2 | - - ( 1 ) ]]>

式中,m1及m2表示任意兩個視頻,式中向量組成部分是該視頻
所擁有的各主題所占的比重,且視頻向量模長為1。視頻m1的主題向
量集合表示為(m11、m12、……m1k),視頻m2的主題向量集合表示
為(m21、m22、……m2k)。

上述向量余弦值計算可簡化為向量內積計算。假設將視頻主題訓
練結果的視頻-主題分布看作是M*K維矩陣,其中M指業務視頻庫總
視頻數,K指視頻主題模型訓練得到最優主題個數,則此矩陣可以視
為是有M個K維向量組成。

A = a 11 a 12 ... a 1 K a 21 a 22 ... a 2 K ... ... ... ... a M 1 a M 2 ... a M K B = a 11 a 21 ... a M 1 a 12 a 22 ... a M 2 ... ... ... ... a 1 K a 2 K ... a M K - - ( 2 ) ]]>

假設A矩陣是M*K維矩陣,B矩陣為K*M維矩陣,矩陣中的
a11~a1k表示第一視頻的主題分布,即第一視頻對應的各主題向量值,
k表示各視頻的視頻主題數量;a21~a2k表示第二視頻的主題分
布;……;aM1~aMk表示第M視頻的主題分布。

C矩陣為A與B矩陣乘積。則C矩陣中元素可表示為:

c i j = Σ k = 1 K a i k b kj i , j ( 1 , 2 , ... , M ) - - ( 3 ) ]]>

cij即為A矩陣第i行向量與B矩陣第j列向量內積。

根據上文中視頻相似度計算公式可得cij值即
為視頻mi與視頻mj相似度值。可見,視頻庫中任意兩視頻相似度計算
可轉化為兩個矩陣的乘法計算。

在實際業務場景下,視頻規模往往很大,即M值很大,視頻主
題模型訓練得到的主題數也很大,即K值很大,因此常用的單機大規
模矩陣相乘計算方法耗費時間和空間都很大。

另外,還有一種算法是分塊矩陣乘法計算,其過程為:

將A矩陣劃分為N1*S1的等大小矩陣,B矩陣為S1*N1的等大
小矩陣,則有:

A = A 11 ... A 1 S ... ... A N 1 A N S B = A 11 ... A N 1 ... ... A 1 S A N S - - ( 4 ) ]]>

C i j = Σ k = 1 S A i k B k j i N , j N - - ( 5 ) ]]>

由上,對于分塊矩陣乘法,對于不同的矩陣規模如何根據機器內
存大小指定分塊策略較不易,且不同分塊之間的運算及邏輯控制很繁
瑣,由于策略的復雜和運行邏輯控制的繁瑣,也導致運行效率不高。

若采用HadoopMapReduce分布式計算框架進行矩陣相乘計算,
能有效減少計算耗時及耗費空間。

HadoopMapReduce分布式計算框架包含Map和Reduce兩個階
段。Map階段以key/value對作為輸入,MapReduce框架會自動將
這些中間數據按照key值進行聚集,且key值相同的數據被統一交給
Reduce階段處理。Reduce階段產生另外一系列key/value對作為最終
輸出寫入HDFS(Hadoop分布式文件系統)。

如何利用HadoopMapReduce分布式計算框架較高效率的完成基
于主題模型的大規模視頻相似度計算,或者說如何實現在數量眾多的
視頻庫中較高效率的確定出各個視頻相似度,從而進行視頻推送是本
發明所要解決的技術問題。

發明內容

有鑒于此,本發明的主要目的在于,提供一種基于視頻主題相似
度的視頻推送方法,

包括以下步驟:

A、抓取各個視頻對應的標簽;

B、針對所述各個視頻的標簽進行LDA訓練,獲得各個視頻的主
題分布;

C、基于步驟B所述各個視頻的主題分布構建視頻-主題分布矩
陣,記為矩陣A,其轉置矩陣表示為矩陣B;

D、將所述矩陣A、B分別作為左右矩陣,采用外積法利用Hadoop
MapReduce分布式計算框架進行矩陣相乘計算,獲得各個視頻間的
主題相似度;

E、根據所述各個視頻間的主題相似度選擇視頻進行推送。

由上,實現在數量眾多的視頻庫中較高效率的確定出各個視頻相
似度,以進行推送。

可選的,步驟A后還包括步驟:對所抓取的各個視頻的標簽進行
去重處理。

由上,使得各個視頻的標簽唯一,從而可以提高標簽的準確性,
避免重復。

可選的,步驟B包括:

將所抓取的各個視頻標簽歸納為各個視頻的不同主題;

針對所述不同主題進行LDA訓練,得出各個視頻合適的主題個
數以及不同主題分別所占的比重值。

可選的,所述得出各個視頻合適的主題個數包括:采用以下計算
式:

p e r p l e x i t y = exp { - Σ d = 1 M log p ( W d ) Σ d = 1 M N d } ; ]]>

p ( W d ) = Π n = 1 N d Σ z = 1 K p ( z | d ) p ( w n | z ) ; ]]>

其中,M表示視頻庫中視頻總數,Wd表示第d個視頻,Nd表示
第d個視頻的視頻標簽總數,Wn表示第d個視頻標簽中第n個詞,K
表示第d個視頻的視頻主題總數,z表示第d個視頻的第z個視頻主
題;

計算結果perplexity值與所值與所述主題個數的合適程度成反比。

可選的,步驟D包括:

D1、所述矩陣A表示為:對于矩陣A中各元素的列位置序號記
為key,其對應的value值標記為L-movieid-value形式;

所述矩陣B表示為:對于矩陣B中各元素的行位置序號記為key,
其對應的value值標記為R-movieid-value形式;

L、R分別表示左、右矩陣;movieid表示左矩陣行位置及右矩陣
列位置;value值表示各元素所對應的不同主題所占的比重值;

將所述矩陣A、B分別按列、行分段;所述分段方式為:將視頻
的總數進行因數分解表示為3個因數,記為f1、f2及f3,每個分段包
含f1個值,共有f2*f3個分段;

分段后,對各個分段進行標記,左矩陣第n列第j個分段表示為:

jL-n-1#f2*f3-value_lstn∈(1,2,...,f2*f3);

右矩陣第n行第j’個分段表示為:

j'R-1#f2*f3-n-value_lstn∈(1,2,...,f2*f3);

1#f2*f3表示各元素拷貝份數的序列號,1表示開始序列號,f2*f3
表示拷貝總數;value_lst表示在該分段內各視頻主題所占的比重值的
列表;

D2、對分段的矩陣A、B執行HadoopMapReduce的分段拷貝任
務時,執行f2輪HadoopMapReduce的拷貝任務,每輪HadoopMap
Reduce將Map每條輸入記錄拷貝f3次;

完成MapReduce的拷貝任務時,左、右矩陣中的元素的記錄樣
式分別表示為:

jL-n-r*f3#(r+1)*f3-value_lstn∈(1,2,...,f2*f3);

j'R-r*f3#(r+1)*f3-n-value_lstn∈(1,2,...,f2*f3);

r表示當前已拷貝的輪數;

D3、把要進行相乘的具有對應位置標記的左、右矩陣的兩條記錄
合并為一條記錄,

合并后左、右矩陣元素的記錄為:

n-j-j'element_list-L,n,j-element_list-R,n,j';

element_list-L,n,j表示左矩陣中第n列中的第j個分段中各元
素集合,element_list-R,n,j’表示右矩陣中第n行的第j’個分段中
的各元素集合;

D4、將D3中的表達式各條記錄中左矩陣element_list元素集合
中的各個元素依次與右矩陣element_list元素集合中的各個元素相乘;

左矩陣中各個元素的key表示為movieid(L),即該元素在左矩陣
的具體位置;右矩陣中各個元素的key表示為movieid(R);value值記
為兩元素的乘積,從而形成Reduce階段的key/value對輸出;

在Reduce階段,將具有相同key的記錄匯總,得到矩陣A、B乘
積矩陣中的每一個元素,所述每個元素為視頻間的主題相似度值。

附圖說明

圖1所示為本發明流程圖;

圖2所示為迭代拷貝任務原理示意圖;

圖3所示為實現本發明裝置的原理示意圖。

具體實施方式

為克服現有技術存在的缺陷,本發明提供一種基于視頻主題相似
度的視頻推送方法,實現在數量眾多的視頻庫中尋找出與目前正在觀
看視頻主題相似性最高的視頻,以進行推送。

如圖1所示,本發明包括以下步驟:

S10:抓取視頻的名稱。

針對現有視頻數據庫中所存儲的視頻,獲取各視頻的名稱。所獲
取的名稱可按照首字母讀音進行排序。

S20:依據視頻名稱抓取對應視頻的各個標簽,存入視頻標簽數
據庫。

通過網絡爬蟲程序,根據視頻名稱依次從互聯網視頻網站抓取對
應的各個視頻標簽,并將視頻標簽存入視頻標簽數據庫。其中,由于
視頻標簽從不同的視頻網站抓取,因此需在視頻標簽存入數據庫時要
進行視頻標簽唯一性甄別,將重復的視頻標簽進行去重處理。

舉例來說,某視頻為一場足球比賽,其視頻名稱為“2014-15賽
季歐冠決賽_尤文圖斯VS巴塞羅那”,該視頻被不同的視頻網站設置
有不同的標簽,如,包括:“歐冠”、“尤文圖斯”、“巴塞羅那”、
“梅西”、“皮爾洛”、“哈維”、“莫拉塔”等等,則本步驟依次
將上述標簽從各視頻網站抓取并進行去重存儲。

S30:基于視頻標簽數據庫,進行LDA主題模型訓練,形成視頻
-主題庫。

本步驟的目的在于,基于與視頻相關的各個視頻標簽對視頻庫進
行主題歸類訓練,得到視頻庫中由視頻標簽生成視頻名稱的規律,也
即視頻由哪些主題組成,主題由哪些標簽組成,即視頻-主題庫。例
如,上述視頻標簽都可歸類于“足球”主題;“歐冠”、“尤文圖
斯”、“巴塞羅那”可歸類于“歐洲冠軍聯賽”主題;“哈維”、“皮
爾洛”可歸類于“球星”主題等等。

為了便于后面的計算,預先對所有視頻設定相同數量的主題個數
K。在對各視頻進行主題模型訓練的過程中,對所建立的主題模型的
優劣進行評估,即確定視頻的各個主題所占的比重值,所述比重值在
后續的外積法計算中以向量值表示。本發明中,根據模型的perplexity
值判定模型優劣,perplexity值越小則模型越好,表示其所對應的視
頻主題模型與所述視頻標簽越契合。在訓練過程中,計算對應的模型
的perplexity值,最終選取perplexity值最小的模型作為最優模型,對
應的K值即為最合適的主題個數。其中,模型的perplexity值計算公
式如下:

p e r p l e x i t y = exp { - Σ d = 1 M log p ( W d ) Σ d = 1 M N d } - - ( 6 ) ]]> p ( W d ) = Π n = 1 N d Σ z = 1 K p ( z | d ) p ( w n | z ) - - ( 7 ) ]]>

其中,M表示視頻庫中視頻總數,Wd表示視頻庫中第d個視頻,
Nd表示第d個視頻的視頻標簽總數,Wn表示第d個視頻標簽中第n
個詞,K表示第d個視頻的視頻主題總數,z表示第d個視頻的第z
個視頻主題。

S40:根據LDA主題模型訓練結果記錄的內容存儲各視頻的主題
分布,即視頻由哪些主題組成,以及視頻在各主題所占的向量值。

仍以上述足球比賽的視頻舉例來說,該視頻包括三個主題,即:
“足球”、歐洲冠軍聯賽”和“球星”,其中“足球”的向量(即該
主題在對應視頻中所占的比重)為0.5;“歐洲冠軍聯賽”的向量為
0.3;“球星”的向量為0.2。

S50:基于所確定出的各個視頻的主題分布,進行視頻間相似度
計算。

由背景技術所述,視頻庫中任意兩視頻相似度計算可轉化為兩個
矩陣乘法計算,且可采用HadoopMapReduce分布式計算框架進行矩
陣相乘計算。通過現有技術中對的分析,采用內積計算方法或分塊矩
陣乘法存在著運算量大或運算及邏輯控制繁瑣的問題,基于此,本發
明基于外積法利用HadoopMapReduce進行大規模矩陣相乘進行視頻
間相似度計算,

其中,外積法計算過程為:

a 11 a 21 ... a M 1 × a 11 a 21 ... M 1 = a 11 * a 11 a 11 * a 21 ... a 11 * a M 1 a 21 * a 11 a 21 * a 21 ... a 21 * a M 1 ... ... ... ... a M 1 * a 11 a M 1 * a 21 ... a M 1 * a M 1 - - ( 8 ) ]]>

a 12 a 22 ... a M 2 × a 12 a 22 ... M 2 = a 12 * a 12 a 12 * a 22 ... a 12 * a M 2 a 22 * a 12 a 22 * a 22 ... a 22 * a M 2 ... ... ... ... a M 2 * a 12 a M 2 * a 22 ... a M 2 * a M 2 - - ( 9 ) ]]>

a 1 K a 2 K ... a M K × a 1 K a 2 K ... a M K = a 1 K * a 1 K a 1 K * a 2 K ... a 1 K * a M K a 2 K * a 1 K a 2 K * a 2 K ... a 2 K * a M K ... ... ... ... a M K * a 1 K a M K * a 2 K ... a M K * a M K - - ( 10 ) ]]>

C = a 11 * a 11 + a 12 * a 12 + ... + a 1 K * a 1 K a 11 * a 21 + a 12 * a 22 + ... + a 1 K * a 2 K ... a 11 * a M 1 + a 12 * a M 2 + ... + a 1 K * a M K a 21 * a 11 + a 22 * a 12 + ... + a 2 K * a 1 K a 21 * a 21 + a 22 * a 22 + ... + a 2 K * a 2 K ... a 21 * a M 1 + a 22 * a M 2 + ... + a 2 K * a M K ... ... ... ... a M 1 * a 11 + a M 2 * a 12 + ... + a M K * a 1 K a M 1 * a 21 + a 12 * a M 2 + ... + a M K * a 2 K ... a M 1 * a M 1 + a M 2 * a M 2 + ... + a M K * a M K - - ( 11 ) ]]>

由上可知,A矩陣中每一列的每個元素與B矩陣中每一行的每個
元素依次相乘,計算結果分別是cij的組成部分,aik*ajk是獨立的可以
由不同計算節點運算,基于HadoopMapReduce模型最終只需要根據
key(i,j)將運算結果進行匯總相加即可得到cij。故,本發明選擇基于外
積法利用HadoopMapReduce進行大規模矩陣相乘進行視頻間相似度
計算,具體的,本步驟S50包括下述子步驟:

S501:將視頻主題模型進行訓練得到的各視頻的主題分布表示為
如上公式(2)所示出的互為轉置矩陣的A、B兩個矩陣,且設定A
矩陣為相乘時的左矩陣,B矩陣為相乘時的右矩陣。

如上所示,A、B互為轉置矩陣。矩陣中的各元素a11~a1K表示
第一視頻的主題分布,即第一視頻對應的各主題向量值;a21~a2K表
示第二視頻的主題分布;……;aM1~aMK表示第M視頻的主題分布。
即Map階段所接收的key是視頻的各主題序號,value值是視頻對應
各主題的向量值。

為保證左矩陣第n列元素與右矩陣第n行元素分布在同一個計算
節點,以便于后面進行矩陣乘積運算,矩陣可以按以下方式表示:

對于視頻的各主題的序號記為key(即表示在第幾列),其對應
的value值(向量值)標記為L-movieid-value形式,組成A矩陣。

其中,L表示左矩陣;movieid表示該元素在矩陣中的行位置,由
此,可以根據對應行(例如第一行表示屬于第一個視頻,第M行表
示屬于第M個視頻)和對應列(第一列表示對應第一個主題,對應
主題第一個序號,第K列表示對應第K個主題,對應主題第K個序
號)確定出該value值在左矩陣中的具體位置;value即表示該視頻的
該主題的向量值。在B矩陣中,視頻的各主題的序號同樣記為key(即
表示在第幾行),其對應的value值標記為R-movieid-value形式,組
成B矩陣。

S502:確定矩陣的分段拷貝策略。

由前述步驟可獲知視頻總數M,將M進行因數分解表示為3個
因數,記為f1、f2及f3。如果M因數分解得到因數個數小于等于2,
則其他因數用1代替。在利用HadoopMapReduce分布式計算框架進
行矩陣相乘計算時,則設置矩陣分段拷貝策略為:使矩陣的每個分段
包含f1個元素,共有f2*f3個分段;在進行分段拷貝時,拷貝f2輪,每
輪拷貝f3份。

下面對設置分段拷貝策略的原因進行介紹:

當視頻數量較多(即M值較大)時,導致矩陣規模較大,直接
左矩陣(即A矩陣)一列每個元素與右矩陣(即B矩陣)中一行中
所有元素依次相乘,計算效率會較低。故本步驟采用左矩陣元素按列
分段,右矩陣元素按行分段。

根據矩陣相乘外積法的算法思想,需要將兩個矩陣中的分段一一
對應相乘。假設每個分段包含w個元素,共有個n分段。由于左矩陣
中第k列第i分段需要與右矩陣中第k行所有分段相乘,則左矩陣第
i分段對應HadoopMapReduce的拷貝任務需要拷貝n份;同理右矩陣
第j分段需要拷貝n份。分段以后,相比于整行或整列拷貝,可以提
高拷貝效率。

進一步的,當M值較大時,左右矩陣每個分段需要拷貝份數都
很大,如果采用一輪HadoopMapReduce完成所有分段拷貝任務,則
每個Map對每行記錄都需要執行很多遍拷貝工作,大大延長了Map
執行時間,同時也沒有使盡可能多的計算節點參與計算。因此,可以
設置進行多輪MapReduce最終完成所有分段拷貝任務并將拷貝任務
分發到盡可能多的計算節點(如機器)上。

假設進行r輪拷貝,每輪拷貝n/r份,每完成一輪拷貝任務,下一
輪拷貝任務所輸入的數據比上一輪拷貝任務輸入數據膨脹n/r倍。相
應此輪參與運算的集群節點比上輪增加n/r倍,即拷貝任務被分發至
更多的機器,提升了拷貝效率,該迭代拷貝任務分發算法原理可參見
圖2所示。

S503:根據所確定的策略對矩陣進行分段與拷貝。

根據步驟S502制定的分段與拷貝策略,左矩陣每列分為f2*f3段,
每段包含f1個元素;右矩陣每行分為f2*f3段,每段包含f1個元素。
在利用HadoopMapReduce分布式計算框架進行矩陣相乘計算時,經
過f2輪拷貝完成拷貝任務,每輪HadoopMapReduce將Map每條輸
入記錄拷貝f3次。

完成矩陣所述分段后,對各個分段進行標記,例如,左矩陣第n
列第j個分段表示為:

jL-n-1#f2*f3-value_lstn∈(1,2,...,f2*f3);--(12)

同理,右矩陣第n行第j’個分段表示為:

j'R-1#f2*f3-n-value_lstn∈(1,2,...,f2*f3);--(13)

其中,L、R分別表示左、右矩陣;1#f2*f3表示元素拷貝份數的
序列號,1為開始序列號,f2*f3為拷貝總數,即終止序列號;value_lst
表示在該分段內各視頻主題向量值的列表。

采用上述表達式對矩陣內元素進行標記的目的在于,分別將各視
頻主題向量在矩陣中所處的位置進行標記,便于后續步驟的位置確定
以及矩陣外積計算。

完成r輪拷貝任務后,左、右矩陣的元素的記錄樣式分別表示為:

jL-n-r*f3#(r+1)*f3-value_lstn∈(1,2,...,f2*f3)--(14);

j'R-r*f3#(r+1)*f3-n-value_lstn∈(1,2,...,f2*f3)--(15);

完成拷貝后,所拷貝的各元素仍然帶有其所處位置的標簽,另外
還帶有拷貝的序列號,即對應為Map階段的key。

S504:執行因子相乘的準備步驟。

元素拷貝完成后,接下來就將進入最終元素相乘的最后準備工
作。此步驟依據表達式(11),將接下來將要進行相乘的具有對應位
置標記的左、右矩陣的兩條記錄合并為一條記錄,以便于在下一個步
驟中經過一輪的HadoopMapReduce就可以完成元素相乘。合并后左、
右矩陣元素的記錄為:

n-j-j'element_list-L,n,j-element_list-R,n,j'--(16)

表達式(16)中的element_list-L,n,j表示左矩陣中的第n列第j
個分段中的各向量集合,element_list-R,n,j’表示右矩陣中的第n
行第j’個分段中的各向量集合。

S505:通過矩陣相乘得到乘積矩陣中的每一個元素,即得到視頻
間相似度。

將表達式(16)中的各條記錄中左矩陣element_list向量集合中
的各個元素依次與右矩陣element_list向量集合中的各個元素相乘。
相乘過程中,左矩陣中各個元素的key表示為movieid(L),即該元素
在左矩陣的具體位置;同理,右矩陣中各個元素的key表示為
movieid(R)。value值記為兩元素的乘積,從而形成Reduce階段的
key/value對輸出。

在Reduce階段,將具有相同key的記錄匯總,即可得到最終乘積
矩陣中的每一個元素,即采用外積法計算矩陣A與矩陣B相乘,得
到的矩陣C中的每一個元素。

S60:根據相似度值的大小確定出相似度高的視頻,并進行記錄。

例如,選取每個視頻相似度值前50個視頻組成視頻相似度記錄
存入相應數據庫中。

由上,則完成了視頻相似度的判斷以及錄入數據庫,該數據庫即
可以用于視頻推薦業務等。如,當用戶觀看視頻A的時候,根據該數
據庫的記錄可確定出符合相似度要求的其他視頻,向該用戶進行推
送。

圖3所示為實現上述方法的裝置原理示意圖,包括:視頻標簽抓
取模塊31,用于從互聯網抓取視頻庫中所有視頻的內容相關標簽,并
進行去重處理所述視頻內容相關標簽如前述步驟S20中包括的“歐
冠”、“尤文圖斯”、“巴塞羅那”、“梅西”、“皮爾洛”、“哈
維”、“莫拉塔”等等。

視頻標簽數據庫模塊32,與所述視頻標簽抓取模塊31連接,用
于存儲視頻庫中各視頻的所有標簽。

LDA主題模型訓練模塊33,與所述視頻標簽抓取模塊31連接,
基于與視頻內容相關的標簽對視頻庫進行訓練得到主題建模。此模塊
即是通過對視頻庫中各個視頻進行訓練,得到各視頻中由標簽生成視
頻的規律,也即視頻由哪些主題組成,主題由哪些標簽組成,及各主
題在視頻中所占比重,即步驟S40所述的向量值。

視頻-主題接口模塊34,與所述LDA主題模型訓練模塊33連接,
用于存儲LDA主題模型訓練模塊訓練結果。該訓練結果指出了每個
視頻的主題組成,及這些主題在視頻中所占比重。

大規模視頻相似度計算模塊35,與所述LDA主題模型訓練模塊
33連接,此計算模塊基于LDA主題模型訓練結果視頻-主題分布計算
視頻相似度。

視頻相似矩陣數據庫模塊36,與大規模視頻相似度計算模塊35
連接,用于存儲視頻間相似關系,即視頻庫中每兩個視頻間相似度。

以上所述僅為本發明的較佳實施例而已,并不用以限制本發明。
總之,凡在本發明的精神和原則之內,所作的任何修改、等同替換、
改進等,均應包含在本發明的保護范圍之內。

關 鍵 詞:
基于 視頻 主題 相似 推送 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:基于視頻主題相似度的視頻推送方法.pdf
鏈接地址:http://www.wwszu.club/p-6401574.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大