自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

自然語(yǔ)言處理技術(shù)(NLP)在推薦系統(tǒng)中的應(yīng)用

大數(shù)據(jù) 自然語(yǔ)言處理
個(gè)性化推薦是大數(shù)據(jù)時(shí)代不可或缺的技術(shù),在電商、信息分發(fā)、計(jì)算廣告、互聯(lián)網(wǎng)金融等領(lǐng)域都起著重要的作用。具體來講,個(gè)性化推薦在流量高效利用、信息高效分發(fā)、提升用戶體驗(yàn)、長(zhǎng)尾物品挖掘等方面均起著核心作用。在推薦系統(tǒng)中經(jīng)常需要處理各種文本類數(shù)據(jù),例如商品描述、新聞資訊、用戶留言等等。

[[195357]]

個(gè)性化推薦是大數(shù)據(jù)時(shí)代不可或缺的技術(shù),在電商、信息分發(fā)、計(jì)算廣告、互聯(lián)網(wǎng)金融等領(lǐng)域都起著重要的作用。具體來講,個(gè)性化推薦在流量高效利用、信息高效分發(fā)、提升用戶體驗(yàn)、長(zhǎng)尾物品挖掘等方面均起著核心作用。在推薦系統(tǒng)中經(jīng)常需要處理各種文本類數(shù)據(jù),例如商品描述、新聞資訊、用戶留言等等。具體來講,我們需要使用文本數(shù)據(jù)完成以下任務(wù):

  • 候選商品召回。候選商品召回是推薦流程的第一步,用來生成待推薦的物品集合。這部分的核心操作是根據(jù)各種不同的推薦算法來獲取到對(duì)應(yīng)的物品集合。而文本類數(shù)據(jù)就是很重要的一類召回算法,具有不依賴用戶行為、多樣性豐富等優(yōu)勢(shì),在文本信息豐富或者用戶信息缺乏的場(chǎng)合中具有非常重要的作用。
  • 相關(guān)性計(jì)算。相關(guān)性計(jì)算充斥著推薦系統(tǒng)流程的各個(gè)步驟,例如召回算法中的各種文本相似度算法以及用戶畫像計(jì)算時(shí)用到的一些相關(guān)性計(jì)算等。
  • 作為特征參與模型排序(CTR/CVR)。在候選集召回之后的排序?qū)樱谋绢愄卣鞒3?梢蕴峁┖芏嗟男畔ⅲ瑥亩蔀橹匾呐判蛱卣鳌?/li>

但是相比結(jié)構(gòu)化信息(例如商品的屬性等),文本信息在具體使用時(shí)具有一些先天缺點(diǎn)。

首先,文本數(shù)據(jù)中的結(jié)構(gòu)信息量少。嚴(yán)格來說,文本數(shù)據(jù)通常是沒有什么結(jié)構(gòu)的,一般能夠有的結(jié)構(gòu)可能只是“標(biāo)題”、“正文”、“評(píng)論”這樣區(qū)分文本來源的結(jié)構(gòu),除此以外一般就沒有更多的結(jié)構(gòu)信息了。為什么我們要在意結(jié)構(gòu)信息呢?因?yàn)榻Y(jié)構(gòu)代表著信息量,無論是使用算法還是業(yè)務(wù)規(guī)則,都可以根據(jù)結(jié)構(gòu)化信息來制定推薦策略,例如“召回所有顏色為藍(lán)色的長(zhǎng)款羽絨服”這樣一個(gè)策略里就用到了“顏色”和“款式”這兩個(gè)結(jié)構(gòu)化信息。但是如果商品的描述數(shù)據(jù)庫(kù)中沒有這樣的結(jié)構(gòu)化信息,只有一句“該羽絨服為藍(lán)色長(zhǎng)款羽絨服”的自由文本,那么就無法利用結(jié)構(gòu)信息制定策略了。

其次,文本內(nèi)容的信息量不確定。與無結(jié)構(gòu)化相伴隨的,是文本數(shù)據(jù)在內(nèi)容的不確定性,這種不確定性體現(xiàn)在內(nèi)容和數(shù)量上,例如不同用戶對(duì)同一件二手商品的描述可能差異非常大,具體可能在用詞、描述、文本長(zhǎng)短等方面都具有較大差異。同樣的兩個(gè)物品,在一個(gè)物品的描述中出現(xiàn)的內(nèi)容在另外一個(gè)物品中并不一定會(huì)出現(xiàn)。這種差異性的存在使得文本數(shù)據(jù)往往難以作為一種穩(wěn)定可靠的數(shù)據(jù)源來使用,尤其是在UGC化明顯的場(chǎng)景下更是如此。

再次,自由文本中的歧義問題較多。歧義理解是自然語(yǔ)言處理中的重要研究課題,同時(shí)歧義也影響著我們?cè)谕扑]系統(tǒng)中對(duì)文本數(shù)據(jù)的使用。例如用戶在描述自己的二手手機(jī)時(shí)可能會(huì)寫“出售iPhone6一部,打算湊錢買iPhone7”這樣的話,這樣一句對(duì)人來說意思很明確的話,卻對(duì)機(jī)器造成了很大困擾:這個(gè)手機(jī)究竟是iPhone6還是iPhone7?在這樣的背景下如何保證推薦系統(tǒng)的準(zhǔn)確率便成為了一個(gè)挑戰(zhàn)。

但是文本數(shù)據(jù)也不是一無是處,有缺點(diǎn)的同時(shí)也具有一些結(jié)構(gòu)化數(shù)據(jù)所不具有的優(yōu)點(diǎn):

  • 數(shù)據(jù)量大。無結(jié)構(gòu)化的文本數(shù)據(jù)一般來說是非常容易獲得的,例如各種UGC渠道,以及網(wǎng)絡(luò)爬取等方法,都可穿獲得大量文本數(shù)據(jù)。
  • 多樣性豐富。無結(jié)構(gòu)化是一把雙刃劍,不好的一面已經(jīng)分析過,好的一面就是由于其開放性,導(dǎo)致具有豐富的多樣性,會(huì)包含一些結(jié)構(gòu)規(guī)定以外的數(shù)據(jù)。
  • 信息及時(shí)。在一些新名詞,新事物出現(xiàn)之后,微博、朋友圈常常是最先能夠反應(yīng)出變化的地方,而這些都是純文本的數(shù)據(jù),對(duì)這些數(shù)據(jù)的合理分析,能夠最快得到結(jié)構(gòu)化、預(yù)定義數(shù)據(jù)所無法得到的信息,這也是文本數(shù)據(jù)的優(yōu)勢(shì)。

綜上所述,文本數(shù)據(jù)是一類量大、復(fù)雜、豐富的數(shù)據(jù),對(duì)推薦系統(tǒng)起著重要的作用,本文將針對(duì)上面提到的幾個(gè)方面,對(duì)推薦系統(tǒng)中常見的文本處理方法進(jìn)行介紹。

從這里出發(fā):詞袋模型

詞袋模型(Bag of Words,簡(jiǎn)稱BOW模型)是最簡(jiǎn)單的文本處理方法,其核心假設(shè)非常簡(jiǎn)單,就是認(rèn)為一篇文檔是由文檔中的詞組成的多重集合(多重集合與普通集合的不同在于考慮了集合中元素的出現(xiàn)次數(shù))構(gòu)成的。這是一種最簡(jiǎn)單的假設(shè),沒有考慮文檔中諸如語(yǔ)法、詞序等其他重要因素,只考慮了詞的出現(xiàn)次數(shù)。這樣簡(jiǎn)單的假設(shè)顯然丟掉了很多信息,但是帶來的好處是使用和計(jì)算都比較簡(jiǎn)單,同時(shí)也具有較大的靈活性。

在推薦系統(tǒng)中,如果將一個(gè)物品看作一個(gè)詞袋,我們可以根據(jù)袋中的詞來召回相關(guān)物品,例如用戶瀏覽了一個(gè)包含“羽絨服”關(guān)鍵詞的商品,我們可以召回包含“羽絨服”的其他商品作為該次推薦的候選商品,并且可以根據(jù)這個(gè)詞在詞袋中出現(xiàn)的次數(shù)(詞頻)對(duì)召回商品進(jìn)行排序。

這種簡(jiǎn)單的做法顯然存在著很多問題:

首先,將文本進(jìn)行分詞后得到的詞里面,并不是每個(gè)詞都可以用來做召回和排序,例如“的地得你我他”這樣的“停用詞”就該去掉,此外,一些出現(xiàn)頻率特別高或者特別低的詞也需要做特殊處理,否則會(huì)導(dǎo)致召回結(jié)果相關(guān)性低或召回結(jié)果過少等問題。

其次,使用詞頻來度量重要性也顯得合理性不足。以上面的“羽絨服”召回為例,如果在羽絨服的類別里使用“羽絨服”這個(gè)詞在商品描述中的出現(xiàn)頻率來衡量商品的相關(guān)性,會(huì)導(dǎo)致所有的羽絨服都具有類似的相關(guān)性,因?yàn)樵诿枋鲋写蠹叶紩?huì)使用類似數(shù)量的該詞匯。所以我們需要一種更為科學(xué)合理的方法來度量文本之間的相關(guān)性。

除了上面的用法,我們還可以將詞袋中的每個(gè)詞作為一維特征加入到排序模型中。例如,在一個(gè)以LR為模型的CTR排序模型中,如果這一維特征的權(quán)重為w,則可解釋為“包含這個(gè)詞的樣本相比不包含這個(gè)詞的樣本在點(diǎn)擊率的log odds上要高出w”。在排序模型中使用詞特征的時(shí)候,為了增強(qiáng)特征的區(qū)分能力,我們常常會(huì)使用簡(jiǎn)單詞袋模型的一種升級(jí)版——N-gram詞袋模型。

N-gram指的就是把N個(gè)連續(xù)的詞作為一個(gè)單位進(jìn)行處理,例如:“John likes to watch movies.Mary likes movies too.”這句話處理為簡(jiǎn)單詞袋模型后的結(jié)果為:

 

而處理為bigram(2-gram)后的結(jié)果為:

 

做這樣的處理有什么好處呢?如果將bigram作為排序模型的特征或者相似度計(jì)算的特征,最明顯的好處就是增強(qiáng)了特征的區(qū)分能力,簡(jiǎn)單來講就是:兩個(gè)有N個(gè)bigram重合的物品,其相關(guān)性要大于有N個(gè)詞重合的物品。從根本上來講,是因?yàn)閎igram的重合幾率要低于1-gram(也就是普通詞)的重合幾率。那么是不是N-gram中的N越大就越好呢?N的增大雖然增強(qiáng)了特征的區(qū)分能力,但是同時(shí)也加大了數(shù)據(jù)的稀疏性,從極端情況來講,假設(shè)N取到100,那么幾乎不會(huì)有兩個(gè)文檔有重合的100-gram了,那這樣的特征也就失去了意義。一般在實(shí)際應(yīng)用中,bigram和trigram(3-gram)能夠在區(qū)分性和稀疏性之間取到比較好的平衡,N如果繼續(xù)增大,稀疏性會(huì)有明顯增加,但是效果卻不會(huì)有明顯提升,甚至還會(huì)有降低。

綜合來看,雖然詞袋模型存在著明顯的弊端,但是只需要對(duì)文本做簡(jiǎn)單處理就可以使用,所以不失為一種對(duì)文本數(shù)據(jù)進(jìn)行快速處理的使用方法,并且在預(yù)處理(常用的預(yù)處理包括停用詞的去除,高頻/低頻詞的去除或降權(quán)等重要性處理方法,也可以借助外部高質(zhì)量數(shù)據(jù)對(duì)自由文本數(shù)據(jù)進(jìn)行過濾和限定,以求獲得質(zhì)量更高的原始數(shù)據(jù))充分的情況下,也常常能夠得到很好的效果。

統(tǒng)一度量衡:權(quán)重計(jì)算和向量空間模型

從上文我們看到簡(jiǎn)單的詞袋模型在經(jīng)過適當(dāng)預(yù)處理之后,可以用來在推薦系統(tǒng)中召回候選物品。但是在計(jì)算物品和關(guān)鍵詞的相關(guān)性,以及物品之間的相關(guān)性時(shí),僅僅使用簡(jiǎn)單的詞頻作為排序因素顯然是不合理的。為了解決這個(gè)問題,我們可以引入表達(dá)能力更強(qiáng)的基于TF-IDF的權(quán)重計(jì)算方法。在TF-IDF方法中,一個(gè)詞t在文檔d中權(quán)重的計(jì)算方法為:

 

其中tft,d代表t在d中出現(xiàn)的頻次,而dft指的是包含t的文檔數(shù)目,N代表全部文檔的數(shù)目。

TF-IDF以及其各種改進(jìn)和變種(關(guān)于TF-IDF變種和改進(jìn)的詳細(xì)介紹,可參考《Introduction to Information Retrieval》的第六章。)相比簡(jiǎn)單的TF方法,核心改進(jìn)在于對(duì)一個(gè)詞的重要性度量,例如:

  • 原始TF-IDF在TF的基礎(chǔ)上加入了對(duì)IDF的考慮,從而降低了出現(xiàn)頻率高而導(dǎo)致無區(qū)分能力的詞的重要性,典型的如停用詞。
  • 因?yàn)樵~在文檔中的重要性和出現(xiàn)次數(shù)并不是完全線性相關(guān),非線性TF縮放對(duì)TF進(jìn)行l(wèi)og縮放,從而降低出現(xiàn)頻率特別高的詞所占的權(quán)重。
  • 詞在文檔中出現(xiàn)的頻率除了和重要性相關(guān),還可能和文檔的長(zhǎng)短相關(guān),為了消除這種差異,可以使用最大TF對(duì)所有的TF進(jìn)行歸一化。

這些方法的目的都是使對(duì)詞在文檔中重要性的度量更加合理,在此基礎(chǔ)之上,我們可以對(duì)基于詞頻的方法進(jìn)行改進(jìn),例如,可以將之前使用詞頻來對(duì)物品進(jìn)行排序的方法,改進(jìn)為根據(jù)TF-IDF得分來進(jìn)行排序。

但是除此以外,我們還需要一套統(tǒng)一的方法來度量關(guān)鍵詞和文檔,以及文檔和文檔之間的相關(guān)性,這套方法就是向量空間模型(Vector Space Model,簡(jiǎn)稱VSM)。

VSM的核心思想是將一篇文檔表達(dá)為一個(gè)向量,向量的每一維可以代表一個(gè)詞,在此基礎(chǔ)上,可以使用向量運(yùn)算的方法對(duì)文檔間相似度進(jìn)行統(tǒng)一計(jì)算,而這其中最為核心的計(jì)算,就是向量的余弦相似度計(jì)算:   

 

其中V(d1)和V(d2)分別為兩個(gè)文檔的向量表示。這樣一個(gè)看似簡(jiǎn)單的計(jì)算公式其實(shí)有著非常重要的意義。首先,它給出了一種相關(guān)性計(jì)算的通用思路,那就是只要能將兩個(gè)物品用向量進(jìn)行表示,就可以使用該公式進(jìn)行相關(guān)性計(jì)算。其次,它對(duì)向量的具體表示內(nèi)容沒有任何限制——基于用戶行為的協(xié)同過濾使用的也是同樣的計(jì)算公式,而在文本相關(guān)性計(jì)算方面,我們可以使用TFIDF填充向量,同時(shí)也可以用N-gram,以及后面會(huì)介紹的文本主題的概率分布、各種詞向量等其他表示形式。只要對(duì)該公式的內(nèi)涵有了深刻理解,就可以根據(jù)需求構(gòu)造合理的向量表示。再次,該公式具有較強(qiáng)的可解釋性,它將整體的相關(guān)性拆解為多個(gè)分量的相關(guān)性的疊加,并且這個(gè)疊加方式可以通過公式進(jìn)行調(diào)節(jié),這樣一套方法很容易解釋,即使對(duì)非技術(shù)人員,也是比較容易理解的,這對(duì)于和產(chǎn)品、運(yùn)營(yíng)等非技術(shù)人員解釋算法思路有很重要的意義。最后,這個(gè)公式在實(shí)際計(jì)算中可以進(jìn)行一些很高效的工程優(yōu)化,使其能夠從容應(yīng)對(duì)大數(shù)據(jù)環(huán)境下的海量數(shù)據(jù),這一點(diǎn)是其他相關(guān)性計(jì)算方法很難匹敵的。

VSM是一種“重劍無鋒,大巧不工”的方法,形態(tài)簡(jiǎn)單而又變化多端,領(lǐng)會(huì)其精髓之后,可以發(fā)揮出極大的能量。

透過現(xiàn)象看本質(zhì):隱語(yǔ)義模型

前面介紹了文本數(shù)據(jù)的一些“顯式”使用方法,所謂顯式,是指我們將可讀可理解的文本本身作為了相關(guān)性計(jì)算、物品召回以及模型排序的特征。這樣做的好處是簡(jiǎn)單直觀,能夠清晰地看到起作用的是什么,但是其弊端是無法捕捉到隱藏在文本表面之下的深層次信息。例如,“羽絨服”和“棉衣”指的是類似的東西,“羽絨服”和“棉鞋”具有很強(qiáng)的相關(guān)性,類似這樣的深層次信息,是顯式的文本處理所無法捕捉的,因此我們需要一些更復(fù)雜的方法來捕捉,而隱語(yǔ)義模型(Latent Semantic Analysis,簡(jiǎn)稱LSA)便是這類方法的鼻祖之一。

隱語(yǔ)義模型中的“隱”指的是隱含的主題,這個(gè)模型的核心假設(shè),是認(rèn)為雖然一個(gè)文檔由很多的詞組成,但是這些詞背后的主題并不是很多。換句話說,詞不過是由背后的主題產(chǎn)生的,這背后的主題才是更為核心的信息。這種從詞下沉到主題的思路,貫穿著我們后面要介紹到的其他模型,也是各種不同文本主體模型(Topic Model)的共同中心思想,因此理解這種思路非常的重要。

在對(duì)文檔做LSA分解之前,我們需要構(gòu)造文檔和詞之間的關(guān)系,一個(gè)由5個(gè)文檔和5個(gè)詞組成的簡(jiǎn)單例子如下:

 

LSA的做法是將這個(gè)原始矩陣C進(jìn)行如下形式的SVD分解:

 

其中U是矩陣CCT的正交特征向量矩陣,V是矩陣CTC的正交特征向量矩陣,∑k是包含前k個(gè)奇異值的對(duì)角矩陣,k是事先選定的一個(gè)降維參數(shù)。

  • 得到原始數(shù)據(jù)的一個(gè)低維表示,降低后的維度包含了更多的信息,可以認(rèn)為每個(gè)維度代表了一個(gè)主題。
  • 降維后的每個(gè)維度包含了更豐富的信息,例如可以識(shí)別近義詞和一詞多義。
  • 可以將不在訓(xùn)練文檔中的文檔d通過變換為新向量空間內(nèi)的一個(gè)向量(這樣的變換無法捕捉到新文檔中的信息,例如詞的共現(xiàn),以及新詞的出現(xiàn)等等,所以該模型需要定期進(jìn)行全量訓(xùn)練。),從而可以在降維后的空間里計(jì)算文檔間相似度。由于新的向量空間包含了同義詞等更深層的信息,這樣的變換會(huì)提高相似度計(jì)算的準(zhǔn)確率和召回率。 

為什么LSA能具有這樣的能力?我們可以從這樣一個(gè)角度來看待:CCT中每個(gè)元素CCTi,j代表同時(shí)包含詞i和詞j的文檔數(shù)量,而CTC中每個(gè)元素CTCi,j代表文檔i和文檔j共享的詞的數(shù)量。所以這兩個(gè)矩陣中包含了不同詞的共同出現(xiàn)情況,以及文檔對(duì)詞的共享情況,通過分解這些信息得到了類似主題一樣比關(guān)鍵詞信息量更高的低維度數(shù)據(jù)。

從另外一個(gè)角度來看,LSA相當(dāng)于是對(duì)文檔進(jìn)行了一次軟聚類,降維后的每個(gè)維度可看做是一個(gè)類,而文檔在這個(gè)維度上的取值則代表了文檔對(duì)于這個(gè)聚類的歸屬程度。

LSA處理之后的數(shù)據(jù)推薦中能做什么用呢?首先,我們可以將分解后的新維度(主題維度)作為索引的單位對(duì)物品進(jìn)行索引,來替代傳統(tǒng)的以詞為單位的索引,再將用戶對(duì)物品的行為映射為對(duì)新維度的行為。這兩個(gè)數(shù)據(jù)準(zhǔn)備好之后,就可以使用新的數(shù)據(jù)維度對(duì)候選商品進(jìn)行召回,召回之后可以使用VSM進(jìn)行相似度計(jì)算,如前文所述,降維后的計(jì)算會(huì)帶來更高的準(zhǔn)確率和召回率,同時(shí)也能夠減少噪音詞的干擾,典型的,即使兩個(gè)文檔沒有任何共享的詞,它們之間仍然會(huì)存在相關(guān)性,而這正是LSA帶來的核心優(yōu)勢(shì)之一。此外,還可以將其作為排序模型的排序特征。

簡(jiǎn)單來講,我們能在普通關(guān)鍵詞上面使用的方法,在LSA上面仍然全部可用,因?yàn)長(zhǎng)SA的本質(zhì)就是對(duì)原始數(shù)據(jù)進(jìn)行了語(yǔ)義的降維,只需將其看作是信息量更豐富的關(guān)鍵詞即可。

可以看到LSA相比關(guān)鍵詞來說前進(jìn)了一大步,主要體現(xiàn)在信息量的提升,維度的降低,以及對(duì)近義詞和多義詞的理解。但是LSA同時(shí)也具有一些缺點(diǎn),例如:

  • 訓(xùn)練復(fù)雜度高。LSA的訓(xùn)練時(shí)通過SVD進(jìn)行的,而SVD本身的復(fù)雜度是很高的,在海量文檔和海量詞匯的場(chǎng)景下難以計(jì)算,雖然有一些優(yōu)化方法可降低計(jì)算的復(fù)雜度,但該問題仍然沒有得到根本解決。
  • 檢索(召回)復(fù)雜度高。如上文所述,使用LSA做召回需要先將文檔或者查詢關(guān)鍵詞映射到LSA的向量空間中,這顯然也是一個(gè)耗時(shí)的操作。
  • LSA中每個(gè)主題下詞的值沒有概率含義,甚至可能出現(xiàn)負(fù)值,只能反應(yīng)數(shù)值大小關(guān)系。這讓我們難以從概率角度來解釋和理解主題和詞的關(guān)系,從而限制了我們對(duì)其結(jié)果更豐富的使用。

概率的魔力:概率隱語(yǔ)義模型

為了進(jìn)一步發(fā)揚(yáng)隱語(yǔ)義模型的威力,并盡力克服LSA模型的問題,Thomas Hofmann在1999年提出了概率隱語(yǔ)義模型(probabilistic Latent Semantic Analysis,簡(jiǎn)稱pLSA)。從前面LSA的介紹可以看出,雖然具體的優(yōu)化方法使用的是矩陣分解,但是從另一個(gè)角度來講,我們可以認(rèn)為分解后的U和V兩個(gè)矩陣中的向量,分別代表文檔和詞在隱語(yǔ)義空間中的表示,例如一個(gè)文檔的隱向量表示為(1,2,0)T, 代表其在第一維隱向量上取值為1,第二維上取值為2,第三維上取值為0。如果這些取值能夠構(gòu)成一個(gè)概率分布,那么不僅模型的結(jié)果更利于理解,同時(shí)還會(huì)帶來很多優(yōu)良的性質(zhì),這正是pLSA思想的核心:將文檔和詞的關(guān)系看作概率分布,然后試圖找出這個(gè)概率分布來,有了文檔和詞的概率分布,我們就可以得到一切我們想要得到的東西了。

在pLSA的基本假設(shè)中,文檔d和詞w的生成過程如下:

  • 以 P(d) 的概率選擇文檔d。
  • 以 P(z|d) 的概率選擇隱類z。
  • 以 P(w|z) 的概率從z生成w。
  • P(z|d)和P(w|z) 均為多項(xiàng)式分布。

將這個(gè)過程用聯(lián)合概率進(jìn)行表達(dá)得到:

 

圖1 pLSA的生成過程

可以看到,我們將隱變量z作為中間橋梁,將文檔和詞連接了起來,形成了一個(gè)定義良好、環(huán)環(huán)相扣的概率生成鏈條(如圖1所示)。雖然pLSA的核心是一種概率模型,但是同樣可以用類似LSI的矩陣分解形式進(jìn)行表達(dá)。為此,我們將LSI中等號(hào)右邊的三個(gè)矩陣進(jìn)行重新定義:

 

在這樣的定義下,原始的矩陣C仍然可以表述為C=U∑VT。這樣的對(duì)應(yīng)關(guān)系讓我們更加清晰地看到了前面提到的pLSA在概率方面的良好定義和清晰含義,同時(shí)也揭示了隱語(yǔ)義概率模型和矩陣分解之間的密切關(guān)系(關(guān)于概率模型和矩陣分解的密切關(guān)系可參考這篇文檔:http://www.cs.cmu.edu/~epxing/Class/10708-15/slides/LDA_SC.pdf)。在這樣的定義,隱變量z所代表的主題含義更加明顯,也就是說,我們可以明確的把一個(gè)z看作一個(gè)主題,主題里的詞和文檔中的主題都有著明確的概率含義。也正是由于這樣良好的性質(zhì),再加上優(yōu)化方法的便捷性,使得從pLSA開始,文本主題開始在各種大數(shù)據(jù)應(yīng)用中占據(jù)重要地位。

從矩陣的角度來看,LSA和pLSA看上去非常像,但是它們的內(nèi)涵卻有著本質(zhì)的不同,這其中最為重要的一點(diǎn)就是兩者的優(yōu)化目標(biāo)是完全不同的:LSA本質(zhì)上是在優(yōu)化SVD分解后的矩陣和原始矩陣之間的平方誤差,而pLSA本質(zhì)上是在優(yōu)化似然函數(shù),是一種標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)優(yōu)化套路。也正是由于這一點(diǎn)本質(zhì)的不同,導(dǎo)致了兩者在優(yōu)化結(jié)果和解釋能力方面的不同。

至此我們看到,pLSA將LSA的思想從概率分布的角度進(jìn)行了一大步擴(kuò)展,得到了一個(gè)性質(zhì)更加優(yōu)良的結(jié)果,但是pLSA仍然存在一些問題,主要包括:

  • 由于pLSA為每個(gè)文檔生成一組文檔級(jí)參數(shù),模型中參數(shù)的數(shù)量隨著與文檔數(shù)成正比,因此在文檔數(shù)較多的情況下容易過擬合。
  • pLSA將每個(gè)文檔d表示為一組主題的混合,然而具體的混合比例卻沒有對(duì)應(yīng)的生成概率模型,換句話說,對(duì)于不在訓(xùn)練集中的新文檔,pLSA無法給予一個(gè)很好的主題分布。簡(jiǎn)言之,pLSA并非完全的生成式模型。

而LDA的出現(xiàn),就是為了解決這些問題。

概率的概率:生成式概率模型

為了解決上面提到的pLSA存在的問題,David Blei等人在2003年提出了一個(gè)新模型,名為“隱狄利克雷分配”(Latent Dirichlet Allocation,簡(jiǎn)稱LDA),這個(gè)名字念起來頗為隱晦,而且從名字上似乎也看不出究竟是個(gè)什么模型,在這里我們?cè)囍鲆环N可能的解讀:

  • Latent:這個(gè)詞不用多說,是說這個(gè)模型仍然是個(gè)隱語(yǔ)義模型。
  • Dirichlet:這個(gè)詞是在說該模型涉及到的主要概率分布式狄利克雷分布。
  • Allocation:這個(gè)詞是在說這個(gè)模型的生成過程就是在使用狄利克雷分布不斷地分配主題和詞。

上面并非官方解釋,但希望能對(duì)理解這個(gè)模型能起到一些幫助作用。

LDA的中心思想就是在pLSA外面又包了一層先驗(yàn),使得文檔中的主題分布和主題下的詞分布都有了生成概率,從而解決了上面pLSA存在的“非生成式”的問題,順便也減少了模型中的參數(shù),從而解決了pLSA的另外一個(gè)問題。在LDA中為一篇文檔di生成詞的過程如下:

  • 從泊松分布中抽樣一個(gè)數(shù)字N作為文檔的長(zhǎng)度(這一步并非必須,也不影響后面的過程)。
  • 從狄利克雷分布Dir(α)中抽樣一個(gè)樣本θi,代表該篇文檔下主題的分布。
  • 從狄利克雷分布Dir(β)中抽樣一組樣本Φk,代表每個(gè)主題下詞的分布。
  • 對(duì)于1到N的每個(gè)詞wn:
    • 從多項(xiàng)式分布Multinomial(θi) 中抽樣一個(gè)主題ci,j。
    • 從多項(xiàng)式分布Multinomial(Φi) 中抽樣一個(gè)詞wi,j。

 

圖2 LDA的生成過程

忽略掉最開始選擇文檔長(zhǎng)度的步驟,我們發(fā)現(xiàn)LDA的生成過程相比pLSA來講,在文檔到主題的分布和主題到詞的分布上面都加了一層概率,使得這兩者都加上了一層不確定性,從而能夠很自然地容納訓(xùn)練文檔中沒有出現(xiàn)過的文檔和詞,這使得LDA具有了比pLSA更好的概率性質(zhì)。

LDA的應(yīng)用

這部分我們介紹LDA在用作相似度計(jì)算和排序特征時(shí)需要注意的一些地方,然后介紹以LDA為代表的文本主題在推薦系統(tǒng)中更多不同角度的應(yīng)用。

相似度計(jì)算

上面提到LSA可以直接套用到VSM中進(jìn)行相似度計(jì)算,在LDA中也可以做類似的計(jì)算,具體方法是把文檔的主題分布值向量化然后用余弦公式進(jìn)行計(jì)算。但是把余弦相似度替換為KL divergence或Jensen–Shannon divergence效果更好,原因是LDA給出的主題分布是含義明確的概率值,用度量概率之間相似度的方法來進(jìn)行度量更為合理。

排序特征

將物品的LDA主題作為排序模型的特征是一種很自然的使用方法,但并不是所有的主題都有用。物品上的主題分布一般有兩種情況:

  • 有少數(shù)主題(三個(gè)或更少)占據(jù)了比較大的概率,剩余的主題概率加起來比較小。
  • 所有主題的概率值都差不多,都比較小。

在第一種情況下,只有前面幾個(gè)概率比較大的主題是有用的,而在第二種情況下,基本上所有的主題都沒有用。那么該如何識(shí)別這兩種情況呢?第一種方法,可以根據(jù)主題的概率值對(duì)主題做一個(gè)簡(jiǎn)單的K-Means聚類,K選為2,如果是第一種情況,那么兩個(gè)類中的主題數(shù)量會(huì)相差較大——一個(gè)類中包含少量有用主題,另一個(gè)類包含其他無用主題;而第二種情況下主題數(shù)量則相差不大,可以用這種方法來識(shí)別主題的重要性。第二種方法,可以計(jì)算主題分布的信息熵,第一種情況對(duì)應(yīng)的信息熵會(huì)比較小,而第二種情況會(huì)比較大,選取合適的閾值也可以區(qū)分這兩種情況。

物品打標(biāo)簽&用戶打標(biāo)簽

為物品計(jì)算出其對(duì)應(yīng)的主題,以及主題下面對(duì)應(yīng)的詞分布之后,我們可以選取概率最大的幾個(gè)主題,然后從這幾個(gè)主題下選取概率最大的幾個(gè)詞,作為這個(gè)物品的標(biāo)簽。在此基礎(chǔ)上,如果用戶對(duì)該物品發(fā)生了行為,則可以將這些標(biāo)簽傳播到用戶身上。

這種方法打出的標(biāo)簽,具有非常直觀的解釋,在適當(dāng)場(chǎng)景下可以充當(dāng)推薦解釋的理由。例如我們?cè)谧鲆苿?dòng)端個(gè)性化推送時(shí),可供展示文案的空間非常小,可以通過上面的方式先為物品打上標(biāo)簽,然后再根據(jù)用戶把標(biāo)簽傳播到用戶身上,在推送時(shí)將這些標(biāo)簽詞同時(shí)作為召回源和推薦理由,讓用戶明白為什么給他做出這樣的推薦。

主題&詞的重要性度量

LDA訓(xùn)練生成的主題中,雖然都有著同等的位置,但是其重要性卻是各不相同的,有的主題包含了重要的信息,有的則不然。例如,一個(gè)主題可能包含“教育、讀書、學(xué)校”等詞,和這樣主題相關(guān)的文檔,一般來說是和教育相關(guān)的主題,那么這就是一個(gè)信息量高的主題;相反,有的主題可能會(huì)包含“第一冊(cè)、第二冊(cè)、第三冊(cè)……”等詞(如果在一個(gè)圖書銷售網(wǎng)站的所有圖書上訓(xùn)練LDA,就有可能得到這樣的主題,因?yàn)橛泻芏嗵籽b圖書都包含這樣的信息),和這樣主題相關(guān)的文檔卻有可能是任何主題,這樣的主題就是信息量低的主題。

如何區(qū)分主題是否重要呢?從上面的例子中我們可以得到啟發(fā):重要的主題不會(huì)到處出現(xiàn),只會(huì)出現(xiàn)在小部分與之相關(guān)的文檔中,而不重要的主題則可能在各種文章中都出現(xiàn)?;谶@樣的思想,我們可以使用信息熵的方法來衡量一個(gè)主題中的信息量。通過對(duì)LDA輸出信息做適當(dāng)?shù)淖儞Q,我們可以得到主題θi在不同文檔中的概率分布,然后我們對(duì)這個(gè)概率分布計(jì)算其信息熵,通俗來講信息熵衡量了一個(gè)概率分布中概率值分散程度,越分散熵越大,越集中熵越小。所以在我們的問題中,信息熵越小的主題,說明該主題所對(duì)應(yīng)的文檔越少,主題的重要性越高。

使用類似的方法,我們還可以計(jì)算詞的重要性,在此不再贅述。

更多應(yīng)用

除了上面提到的,LDA還有很多其他應(yīng)用,甚至在文本領(lǐng)域以外的圖像等領(lǐng)域也存在著廣泛應(yīng)用。LSA/pLSA/LDA這些主題模型的核心基礎(chǔ)是詞在文檔中的共現(xiàn),在此基礎(chǔ)上才有了各種概率分布,把握住這個(gè)核心基礎(chǔ),就可以找到文本主體模型的更多應(yīng)用。例如,協(xié)同過濾問題中,基礎(chǔ)數(shù)據(jù)也是用戶對(duì)物品的共同行為,這也構(gòu)成了文本主題模型的基礎(chǔ),因此也可以使用LDA對(duì)用戶對(duì)物品的行為進(jìn)行建模,得到用戶行為的主題,以及主題下對(duì)應(yīng)的物品,然后進(jìn)行物品/用戶的推薦。

捕捉上下文信息:神經(jīng)概率語(yǔ)言模型

以LDA為代表的文本主題模型通過對(duì)詞的共現(xiàn)信息的分解處理,得到了很多有用的信息,但是pLSA/LDA有一個(gè)很重要的假設(shè),那就是文檔集合中的文檔,以及一篇文檔中的詞在選定了主題分布的情況下都是相互獨(dú)立,可交換的,換句話說,模型中沒有考慮詞的順序以及詞和詞之間的關(guān)系,這種假設(shè)隱含了兩個(gè)含義:

  • 在生成詞的過程中,之前生成的詞對(duì)接下來生成的詞是沒有影響的。
  • 兩篇文檔如果包含同樣的詞,但是詞的出現(xiàn)順序不同,那么在LDA看來他們是完全相同的。

這樣的假設(shè)使得LDA會(huì)丟失一些重要的信息,而近年來得到關(guān)注越來越多的以word2vec為代表的神經(jīng)概率語(yǔ)言模型恰好在這方面和LDA形成了一定程度的互補(bǔ)關(guān)系,從而可以捕捉到LDA所無法捕捉到的信息。

word2vector的中心思想用一句話來講就是:A word is characterized by the company it keeps(一個(gè)詞的特征由它周圍的詞所決定)。

這是一句頗有哲理的話,很像是成語(yǔ)中的“物以類聚人以群分”。具體來講,詞向量模型使用“周圍的詞=>當(dāng)前詞”或“當(dāng)前詞=>周圍的詞”這樣的方式構(gòu)造訓(xùn)練樣本,然后使用神經(jīng)網(wǎng)絡(luò)來訓(xùn)練模型,訓(xùn)練完成之后,輸入詞的輸入向量表示便成為了該詞的向量表示,如圖3所示。

 

這樣的訓(xùn)練方式,本質(zhì)上是在說,如果兩個(gè)詞具有類似的上下文(上下文由周圍的詞組成),那么這兩個(gè)詞就會(huì)具有類似的向量表示。有了詞的向量表示之后,我們可以做很多事情,最常見的是將這一層向量表示作為更深層次模型的一個(gè)嵌入層。除了在深度學(xué)習(xí)中的使用以外,在推薦系統(tǒng)中還可以做很多其他的事情,其中之一就是做詞的聚類,以及尋找相似詞。我們知道LDA天然就可以做到詞的聚類和相似詞的計(jì)算,那么使用word2vec計(jì)算出來的結(jié)果和LDA有什么不同呢?它們之間的不同具體體現(xiàn)在兩點(diǎn):第一是聚類的粒度不同,LDA關(guān)注的主題級(jí)別的粒度,層次更高,而詞向量關(guān)注的是更低層次的語(yǔ)法語(yǔ)義級(jí)別的含義。例如“蘋果”,“小米”和“三星”這三個(gè)詞,在LDA方法中很可能會(huì)被聚類在一個(gè)主題中,但是在詞向量的角度來看,“蘋果”和“小米”可能會(huì)具有更高的相似度,就像“喬布斯”和“雷軍”在詞向量下的關(guān)系一樣,所以在詞向量中可能會(huì)有:“vector(小米)- vector(蘋果)+vector(喬布斯)= vector(雷軍)”這樣的結(jié)果。

除此以外,由于word2vec有著“根據(jù)上下文預(yù)測(cè)當(dāng)前內(nèi)容”的能力,將其做適當(dāng)修改之后,還可以用來對(duì)用戶行為喜好做出預(yù)測(cè)。首先我們將用戶的行為日志進(jìn)行收集,進(jìn)行session劃分,得到類似文本語(yǔ)料的訓(xùn)練數(shù)據(jù),在這個(gè)數(shù)據(jù)上訓(xùn)練word2vec模型,可以得到一個(gè)“根據(jù)上下文行為預(yù)測(cè)當(dāng)前行為”的模型。但是原始的行為數(shù)據(jù)中行為的對(duì)象常常是id級(jí)的,例如商品、視頻的id等等,如果直接放到模型中訓(xùn)練,會(huì)造成訓(xùn)練速度慢、泛化能力差等問題,因此需要對(duì)原始行為做降維,具體來說可以將行為映射到搜索詞、LDA Topic、類別等等低維度特征上,然后再進(jìn)行訓(xùn)練。例如,我們可以對(duì)用戶的搜索詞訓(xùn)練一個(gè)word2vec模型,然后就可以根據(jù)用戶的歷史搜索行為預(yù)測(cè)他的下一步搜索行為,并在此基礎(chǔ)上進(jìn)行推薦。這種方法考慮到了上下文,但是對(duì)前后關(guān)系并沒有做最恰當(dāng)?shù)奶幚?,因?yàn)閣ord2vec的思想是“根據(jù)上下文預(yù)測(cè)當(dāng)前內(nèi)容”,但我們希望得到的模型是“根據(jù)歷史行為預(yù)測(cè)下一步行為”,這兩者之間有著微妙的差別。例如用戶的行為序列為“ABCDE”,每個(gè)字母代表對(duì)一個(gè)物品(或關(guān)鍵詞)的行為,標(biāo)準(zhǔn)的word2vec算法可能會(huì)構(gòu)造出下面這些樣本:AC→B, BD→C, CE→D… 但是我們希望的形式其實(shí)是這樣的:AB→C, BC→D,CD→E…因此,需要對(duì)word2vec生成樣本的邏輯進(jìn)行修改,使其只包含我們需要的單方向的樣本,方可在最終模型中得到我們真正期望的結(jié)果。

下面是按照該方法生成的一些預(yù)測(cè)例子:

 

可以看出,預(yù)測(cè)搜索詞都與歷史搜索詞有著緊密的關(guān)系,是對(duì)歷史搜索詞的延伸(例如學(xué)生書桌和烤腸機(jī)的例子)或者細(xì)化(例如小龜王和西鐵城手表的例子),具有比較好的預(yù)測(cè)屬性,是非常好的推薦策略來源。沿著這樣的思路,我們還可以對(duì)word2vec作進(jìn)一步修改,得到對(duì)時(shí)序關(guān)系更為敏感的模型,以及嘗試使用RNN、LSTM等純時(shí)序模型來得到更好的預(yù)測(cè)結(jié)果,但由于篇幅所限,在此不做展開。

行業(yè)應(yīng)用現(xiàn)狀

文本主題模型在被提出之后,由于其良好的概率性質(zhì),以及對(duì)文本數(shù)據(jù)有意義的聚類抽象能力,在互聯(lián)網(wǎng)的各個(gè)行業(yè)中都取得了廣泛的應(yīng)用。搜索巨頭Google在其系統(tǒng)的各個(gè)方面都在廣泛使用文本主題模型,并為此開發(fā)了大規(guī)模文本主題系統(tǒng)Rephil。例如在為用戶搜索產(chǎn)生廣告的過程中,就使用了文本主題來計(jì)算網(wǎng)頁(yè)內(nèi)容和廣告之間的匹配度,是其廣告產(chǎn)品成功的重要因素之一。此外,在匹配用戶搜索詞和網(wǎng)頁(yè)間關(guān)系的時(shí)候,文本主題也可用來提高匹配召回率和準(zhǔn)確性。Yahoo!也在其搜索排序模型中大量使用了LDA主題特征,還為此開源了著名的Yahoo!LDA工具。

在國(guó)內(nèi),文本主題最著名的系統(tǒng)當(dāng)屬騰訊開發(fā)的Peacock系統(tǒng),該系統(tǒng)可以捕捉百萬級(jí)別的文本主題,在騰訊的廣告分類、網(wǎng)頁(yè)分類、精準(zhǔn)廣告定向、QQ群分類等重要業(yè)務(wù)上均起著重要的作用。該系統(tǒng)使用的HDP(Hierarchical Dirichlet Process)模型是LDA模型的一個(gè)擴(kuò)展,可智能選擇數(shù)據(jù)中主題的數(shù)量,還具有捕捉長(zhǎng)尾主題的能力。除了騰訊以外,文本主題模型在各公司的推薦、搜索等業(yè)務(wù)中也已經(jīng)在廣泛使用,使用方法根據(jù)各自業(yè)務(wù)有所不同。

以word2vec為代表的神經(jīng)網(wǎng)絡(luò)模型近年來的使用也比較廣泛,典型的應(yīng)用如詞的聚類、近義詞的發(fā)現(xiàn)、quer y的擴(kuò)展、推薦興趣的擴(kuò)展等。Facebook開發(fā)了一種word2vec的替代方案FastText,該方案在傳統(tǒng)詞向量的基礎(chǔ)上,考慮子詞(subword)的概念,取得了比word2vec更好的效果 。

總結(jié)和展望

我們從簡(jiǎn)單的文本關(guān)鍵詞出發(fā),沿著結(jié)構(gòu)化、降維、聚類、概率、時(shí)序的思路,結(jié)合推薦系統(tǒng)中候選集召回、相關(guān)性計(jì)算、排序模型特征等具體應(yīng)用,介紹了推薦系統(tǒng)中一些常用的自然語(yǔ)言處理技術(shù)和具體應(yīng)用方法。自然語(yǔ)言處理技術(shù)借著深度學(xué)習(xí)的東風(fēng),近年來取得了長(zhǎng)足的進(jìn)步,而其與推薦系統(tǒng)的緊密關(guān)系,也意味著推薦系統(tǒng)在這方面仍然有著巨大的提升空間,讓我們拭目以待。 

責(zé)任編輯:龐桂玉 來源: CSDN大數(shù)據(jù)
相關(guān)推薦

2017-04-10 16:15:55

人工智能深度學(xué)習(xí)應(yīng)用

2024-04-24 11:38:46

語(yǔ)言模型NLP人工智能

2021-05-17 09:00:00

自然語(yǔ)言人工智能技術(shù)

2022-03-29 09:58:15

自然語(yǔ)言處理人工智能技術(shù)

2021-05-18 07:15:37

Python

2020-04-24 10:53:08

自然語(yǔ)言處理NLP是人工智能

2018-04-04 12:00:00

2023-08-04 10:18:15

2021-06-01 12:46:26

人工智能機(jī)器人 機(jī)器學(xué)習(xí)

2017-11-14 19:19:07

人工智能自然語(yǔ)言處理百度

2020-11-12 18:57:14

摘要PythonNLP

2023-08-03 09:56:47

自然語(yǔ)言AI

2022-03-10 10:13:15

自然語(yǔ)言處理醫(yī)療保健數(shù)據(jù)

2023-12-05 15:09:57

PythonNLP

2017-09-19 13:56:46

神經(jīng)網(wǎng)絡(luò)自然語(yǔ)言深度學(xué)習(xí)

2018-07-08 07:08:07

2021-11-12 15:43:10

Python自然語(yǔ)言數(shù)據(jù)

2021-06-28 10:10:42

人工智能AI自然語(yǔ)言

2023-06-26 15:11:30

智能家居自然語(yǔ)言

2021-05-13 07:17:13

Snownlp自然語(yǔ)言處理庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)