Familia:開源的中文主題模型應用工具包

 2017-08-07 10:01:35.0

作者:百度NLP

本期百度NLP 專欄介紹了百度開源的中文主題模型應用工具包 Familia。在本文中,作者結合 Familia 匯總主題模型在工業界的一些典型應用案例,方便開發者按圖索驥,找到適合自己任務的模型以及該模型的應用方式。

主題模型是文本挖掘的重要工具,近年來在學術界和工業界都獲得了非常多的關注。雖然學術界的研究人員提出了多種多樣的主題模型來適應不同的場景,這些工作主要集中在「建模」層面,即設計合理的模型來適配各色各樣的數據,而指導主題模型在工業場景「落地」的資源和文獻卻非常稀少。

為了推動主題模型技術在工業界的應用,我們開源了 Familia 工具 (https://github.com/baidu/Familia)。在本文中,我們結合 Familia 匯總主題模型在工業界的一些典型應用案例,方便開發者按圖索驥,找到適合自己任務的模型以及該模型的應用方式。希望這裡匯總的經驗可以幫助開發者跨越「建模」和「落地」之間的鴻溝,使主題模型技術在實際應用中發揮更大的價值。

主題模型概覽

在主題模型中,「主題」通常被定義為一系列語義相關的詞。 Latent Dirichlet Allocation(LDA)是其中最具代表性的模型。下表中給出了 LDA 的部分訓練結果。其中,每列詞屬於一個主題,每個詞後面的數值表示該詞在主題中的重要程度。


由於 LDA 中採用文檔內的 Bag-of-Words 假設,詞與詞之間的位置信息是被忽略的。在很多工業界場景中,我們往往需要限制某些位置相近的詞產生自同一主題,通過 SentenceLDA 能很好地滿足這個需求。 SentenceLDA 假設同一個句子裡的詞產生自同一主題,對句子內的詞進行了進一步的建模,能捕捉到更加細粒度的共現關係。 LDA 產生的主題往往被高頻詞佔據,這種現象導致低頻詞在實際應用中的作用非常有限。 Topical Word Embedding (TWE) 利用 LDA 訓練獲得的主題為詞向量的訓練提供補充信息,進而得到詞和主題的向量表示。有鑑於向量表示可以較好地建模低頻詞的語義信息,通過利用詞和主題的向量表示,我們可以更好地捕捉每個主題下的低頻詞的語義信息,提升下游應用的效果。

主題模型在工業界的應用範式可以分為兩類:語義表示和語義匹配。我們選取一些成功的應用案例對這兩類應用範式加以介紹。

語義表示

主題模型產生的主題分佈可看做文檔的語義表示,該表示能夠用於文檔分類、聚類、內容豐富度分析、CTR 預估等多種任務。基於主題模型的文檔特徵表示可以分為兩類,如圖1 所示:一類是經過主題模型降維,得到文檔在主題上的多項分佈,LDA、SentenceLDA 等模型支持這一類的文檔特徵表示;另一類是聯合使用主題向量和文檔主題分佈,生成的文檔向量表示,TWE 等融合了詞向量的主題模型可以支持這一類的文檔特徵表示。


分類

案例 1: 新聞質量分類

新聞 APP 通過各種來源獲得到的新聞的質量良莠不齊。在表 2 中列出了一些低質新聞與優質新聞的標題的示例。


為了提升用戶體驗,我們通常會構建一個分類器來自動過濾低質量的新聞。我們可以人工設計一些傳統特徵:新聞來源站點、新聞內容長度、圖片數量、新聞熱度等等。除了這些人工特徵,也可利用主題模型來計算每篇新聞的主題分佈,作為附加特徵與人工特徵一起組成新特徵集合 (圖 2(a))。我們對 7000 篇新聞進行人工標註,新聞質量劃分為 0、1、2 共 3 個檔位,其中 0 檔表示質量最差,2 檔表示質量最優。我們採用 Gradient Boost Decision Tree (GBDT) 在 5000 篇新聞上進行訓練,並在另外 2000 篇標註新聞數據上做測試。圖 2(b) 展示了只使用人工特徵和加入主題模型特徵上的實驗結果。從這些實驗結果可以看出,主題分佈作為特徵擴充可以有效提升分類器的效果。


聚類

案例 2: 新聞聚類

文檔的主題分佈可看做是包含語義信息的一個降維過程,低維的主題分佈特徵可以用來對文檔進行聚類。表 3 中展示了基於主題分佈特徵進行 K-means 聚類的部分結果。從表中可以看出,新聞的主題分佈可以很好的完成聚類任務,在簇 1 中顯示的是與房子裝修相關的新聞,簇 2 中則是聚集了與股票相關的新聞。每個簇內的新聞都具有很好的語義相關性。


內容豐富度

案例 3: 網頁內容豐富度

在一些信息檢索的場景中,我們需要度量網頁內容的豐富度,豐富度以在一定程度上反映網頁的質量。通過計算網頁的主題分佈,我們進一步計算該分佈的信息熵,作為衡量網頁內容豐富度的指標。信息熵越大,表示網頁內容越豐富。網頁內容豐富度可以作為一維特徵引入到更為複雜的網頁排序函數中。

語義匹配

工業界的很多應用都有在語義上衡量本文相似度的需求,我們將這類需求統稱為「語義匹配」。根據文本長度的不同,語義匹配可以細分為三類:短文本-短文本語義匹配,短文本-長文本語義匹配和長文本-長文本語義匹配。基於主題模型的語義匹配通常作為經典文本匹配技術的補充,而不是取代傳統的文本匹配技術。

短文本-短文本語義匹配

短文本-短文本的語義匹配在工業界的應用場景非常廣泛。例如,在網頁搜索中,我們需要度量用戶查詢 (query) 和網頁標題 (web page title) 的語義相關性;在 query 推薦中,我們需要度量 query 和其他 query 之間的相似度。這些場景都會用到短文本-短文本的語義匹配。由於主題模型在短文本上的效果不太理想,在短文本-短文本匹配任務中詞向量的應用比主題模型更為普遍。簡單的任務可以使用 Word2Vec 這種淺層的神經網絡模型訓練出來的詞向量。

比如,query 推薦任務中,我們經常要計算兩個 query 的相似度,例如「推薦好看的電影」與「2016年好看的電影」。通過詞向量按位累加的方式,得到這兩個 query 的向量表示之後,可以利用 Cosine Similarity 來計算兩者的相似度。對於較難的短文本-短文本語義匹配任務,則可以考慮引入有監督信號的訓練數據並利用Deep Structured Semantic Model (DSSM) 或Convolutional Latent Semantic Model (CLSM) 這些更複雜的神經網絡模型進行語義相關性的計算。

短文本-長文本語義匹配

短文本-長文本語義匹配的應用場景在工業界非常普遍。例如,在搜索引擎中,我們需要計算一個用戶查詢(query)和一個網頁正文(content)的語義相關度。由於 query 通常較短,而網頁 content 較長,因此 query 與 content 的匹配與上文提到的短文本-短文本不同,通常需要使用短文本-長文本語義匹配,以得到更好的匹配效果。在計算相似度的時候,我們規避對短文本直接進行主題映射,而是根據長文本的主題分佈,計算該分佈生成短文本的概率,作為它們之間的相似度:

其中 q 表示 query,c 表示 content,w 表示 q 中的詞,

表示第 k 個主題。

案例 1:用戶查詢-廣告頁面相似度


在線廣告場景中,我們需要計算用戶查詢和廣告頁面的語義相似度。這時可應用 SentenceLDA,將廣告頁面中各個域的文本視為句子,如圖 3 所示(紅框內容為句子)。我們首先通過主題模型學習得到廣告的主題分佈,再使用公式 (1) 計算用戶查詢和廣告頁面的語義相似度。該相似度可以作為一維特徵,應用在更複雜的排序模型中。在圖 4 中,對於 query=“婚慶拍攝”,我們對比了不同特徵組合的結果。其中左圖為 Baseline,右圖則是引入 SentenceLDA 相似度(基於 SentenceLDA 計算 query 與廣告頁面的相似度)後得到的結果。可以看出,相比於 Baseline,引入新特徵後召回的結果更加符合 query 語義,能更好的滿足用戶需求。


案例 2: 文檔關鍵詞抽取

在分析文檔時,我們往往會抽取一些文檔的關鍵詞做標籤(tag),這些 tag 在用戶畫像和推薦任務中扮演著重要角色。從文檔中抽取關鍵詞,常用的方法是利用詞的 TF 和 IDF 信息,此外,還可利用主題模型,估計一個文檔產生單詞的概率作為該單詞的重要度指標:


其中,d 表示文檔內容,w 表示詞,

表示第 k 個主題。但由於

常被高頻詞主導,導致一些語義上重要的低頻詞難以被選為關鍵詞。為了解決上述問題,我們利用 TWE 訓練得到主題和單詞的向量表示,再使用公式 (3) 計算每個詞與文檔主題的相似度作為衡量語義重要度的指標。

其中,

表示 對應的詞向量,

表示主題 k 對應的主題向量,並且詞向量和主題向量在處於同一個向量空間中。下面一段文字是我們隨機從網上取的一個新聞片段,對其進行分詞處理以及應用主題模型 LDA 或 TWE 後,然後分別選取公式 (2) 或公式 (3) 計算每個詞的重要度。在表 5 中,我們列出了 LDA 和 TWE 模型計算得到的 Top-10 關鍵詞集合 (已去除停用詞)。從表中可以看出,採用 TWE 得到的 Top-10 關鍵詞 能更好地體現出新聞的重要信息。

台灣《自由時報》4 月 13 日綜合外媒報導稱,全美髮起拒搭聯航運動,並在社群網站上 發酵。居住在美國紐約的網友許柏祥表示,本身是聯合航空會員,在得知聯航將乘客拖下飛機後,就向航空公司取消下個月的預訂班機,並稱「我不想被人打!」許柏祥說, 他完全不能接受航空公司的處理方式, 而且是對待一名69 歲的老人。報導稱,聯航會員「剪卡」風潮也 席捲社群網路,許多網友將自己的聯航會員卡剪掉抵制。網友薩赫哈 (Aninda Sadhukhan) 表示,身為聯航多年的乘客,在看到影片後, 讓他決定不再搭聯航,並將會員卡放入碎卡機內。另一名會員布朗 (Phyllis Brown) 表示, 呼籲民眾剪掉聯航會員卡,並改搭其他航空公司班機,以此抗議聯航暴力對待乘客。


長文本-長文本語義匹配

通過使用主題模型,我們可以得到兩個長文本的主題分佈,再通過計算兩個多項分佈的距離來衡量它們之間的相似度。衡量多項分佈的距離可以利用 Hellinger Distance 和 Jensen-Shannon Divergence (JSD)。

案例 3: 新聞個性化推薦

長文本-長文本的語義匹配可用於個性化推薦的任務中。在互聯網應用中,當我們積累了用戶大量的行為信息後,這些行為信息對應的文本內容可以組合成一篇抽象的「文檔」,對該「文檔」進行主題映射後獲得的主題分佈可以作為用戶畫像。例如,在新聞個性化推薦中,我們可以將用戶近期閱讀的新聞(或新聞標題)合併成一篇長「文檔」,並將該「文檔」的主題分佈作為表達用戶閱讀興趣的用戶畫像。如圖 5 所示,通過計算每篇實時新聞的主題分佈與用戶畫像之間的 Hellinger Distance,可作為向用戶推送新聞的選擇依據,達到新聞個性化推薦的效果。

案例 4: 小說個性化推薦

小說推薦任務是根據用戶的歷史偏好進行小說推薦,具體場景如圖 6(a) 所示。最常見的推薦算法技術為協同過濾,其中矩陣分解是協同過濾算法中常用的技術之一,主要的思想是從評分矩陣(用戶對物品的評價等)中分解出用戶-特性矩陣,特性-物品矩陣,從而得到用戶的偏好和物品的特性,用以預測用戶對未接觸過的物品的打分情況。基於特徵的矩陣分解 (SVDFeature),是一個靈活的推薦框架,允許向模型中增加一些全局特徵、用戶特徵以及物品特徵,使得模型在推薦上可以取得更好的效果。考慮到每個用戶有一些收藏或者下載的小說,我們可以將這些小說對應的主題分佈進行聚合,從而得到用戶的主題表示,作為描述用戶閱讀興趣的用戶畫像。通過計算每篇小說的主題分佈與用戶畫像之間的 JSD 距離,可以用來衡量用戶對該小說的感興趣程度。我們將 JSD 評分作為全局特徵加入到 SVDFeature 中參與訓練,對小說進行排序後推薦給用戶。對比傳統的 SVDFeature 打分與結合了主題模型策略的 SVDFeature 打分,後者在多個指標上的效果均超過前者,如圖 6(b) 所示。


案例 5:垂類新聞 CTR 預估

新聞推薦服務涉及多個垂類新聞方向,如體育、汽車、娛樂等。在這些方向上,我們往往需要做更精細的個性化推薦。為了實現這個目的,我們需要在垂類新聞數據的基礎上,訓練針對該垂類的主題模型。對於某個用戶而言,我們把該用戶歷史上點擊的新聞拼接成一篇文檔,基於垂類主題模型做主題推斷,獲得文檔的主題分佈作為該用戶的畫像。垂類新聞的 CTR 預估模型利用的特徵可以分為三類:新聞-用戶相似度特徵 (語義匹配範式),新聞主題特徵 (語義表示範式) 和其他常規的統計特徵。新聞-用戶相似度特徵指的是利用長文本-長文本語義匹配的方式計算的新聞和用戶畫像的相似度。新聞主題特徵是該新聞的主題分佈。常規的統計特徵包括時間,新聞源,點擊率等等。在工業界應用中,用戶模型數據空間較大,會存在垂類主題分佈的壓縮需求,可以考慮根據 CTR 預估模型的權重進行刪減和重訓。上述方案在垂類新聞推薦上取得了很好的效果提升。

總結

在本文中,我們介紹了主題模型在工業界的應用範式,並結合一些案例加以講解,希望對主題模型技術在工業界的有效「落地」起到一定的指導作用。我們會逐步開源更多垂類主題模型工具,滿足不同場景的應用需求,同時,我們也將公開更多的應用案例與方法經驗,供讀者參考討論。我們期望廣大的開發者和研究人員將主題模型應用於更多的場景中,挖掘主題模型的應用潛力。我們樂於與大家進行深入的交流,推動主題模型的技術進一步發展與應用創新。

文章來源:機器之心