通過精煉讀者獲取這些內容的途徑,即在移動應用和網站上基于讀者喜好調整文章布局,能夠幫助讀者找到與他們相關的內容,比如在正確的時間推送讀者感興趣的內容、重大事件的個性化補充內容、符合他們偏好的多媒體格式故事等。
本文將介紹近在改造《紐約時報》推薦算法的過程中所做的工作,目前該算法主要應用于《紐約時報》網站“Recommended for You”(為您推薦)欄目。
基于內容的過濾
新聞推薦必須要適用于新鮮的內容:許多讀者還沒有瀏覽過的突發新聞。因此,在發布時可用的文章數據就顯得至關重要,這些數據包括:話題、作者、頻道和每篇文章相關的關鍵字標簽。
我們的個推薦系統就是根據這些關鍵詞標簽來做出推薦的。通過使用文章的標簽和用戶30天內的閱讀歷史,算法找出已經被閱讀過的內容相似的文章。
這種方法依賴于內容模型,基于內容的推薦算法有很多種,它是其中之一。
該方法從一開始就具有很強的吸引力:如果一位讀者閱讀了10篇含有“Clinton”(克林頓)標簽的文章,那么以后如果出現含有“Clinton”標簽的文章他們很可能會喜歡。這種方法不僅適用于過去的內容,也同樣適用于新內容,因為它依賴于內容發布時可用的數據。
然而,依賴于內容模型,有時可能產生意想不到的效果。因為算法是基于標簽在語料庫中的稀缺性來賦予權重的,少見的標簽影響大。絕大多數情況下這種方法有效,但偶爾也會降低用戶的體驗。比如,有位讀者指出,雖然她關注與同性相關的新聞,但她偶爾會在“婚禮”欄目中看到系統給她推薦與異性戀夫婦婚禮相關的報道。這就是因為“婚禮和訂婚”這個低頻標簽曾經在一篇之前的文章中被讀者點擊,因此權重高于其他也許更符合這位讀者興趣的標簽。
協同過濾
為了彌補前述方法的不足,我們測試了協同過濾方法。協同過濾基于有共同特征的讀者所閱讀的內容來過濾文章;在我們的案例中,“共同特征”是由閱讀歷史來決定的。
這種方法也頗有吸引力:如果一位讀者的閱讀偏好與另一位讀者非常相似,那么這位讀者讀過的文章,另一位讀者也可能感興趣,反之亦然。
然而,這種方法在推薦新發布的未閱讀文章時并不奏效:與某個讀者群相關的新文章并沒有被這個讀者群中的任何一個讀者閱讀過。協同過濾可能也會在假設情況下以一種狹隘的視角聚集一些閱讀模式。
現在看來,結合兩種技術可以取二者所長。我們建立了一種算法,靈感來源于“協同話題模型”(Collaborative Topic Modeling, CTM)技術,算法由四部分組成:
基于內容建模;
根據監測來自于讀者的信號來調整模型;
基于讀者偏好建模;
基于偏好和內容之間的共同特征來做出推薦。
概述
算法建模的步是把每篇文章處理成與其相關的話題集合。可以把話題看成是一個沒有被觀察到的主題,比如“政治”或“環境”,這個主題影響了文章中我們能夠觀察到的文字。舉個例子,如果一篇文章與環境相關,那么我們期望文章中出現類似“樹”或“保護”這類單詞。
我們基于每位讀者的話題偏好來對他們建模。然后可根據文章話題與讀者偏好話題的匹配程度來推送相關文章。
下面舉個例子:假設所有上個月《紐約時報》發布的文章都可歸屬于兩個話題,我們基于這個假設來運行算法。在這個條件下,算法會大致將這些話題識別為兩類:“政治”和“藝術”。當算法發現這樣一篇文章:《美國在伊拉克的足跡進一步深入》,這篇文章會被標記為100%的“政治”;當發現A.O.Scott(譯者注:《紐約時報》首席影評人)的一篇影評時,這篇文章會被標記為100%“藝術”。算法還可對文章混合標記,比如一篇與藝術政治相關的文章:《弗里克博物館放棄遭受質疑的翻新方案》,被標記為50%的“政治”文章和50%的“藝術”文章。
在“政治”–“藝術”空間圖中,也許可以用這種方式來描述:
下一步,假設讀者60%的時間里喜歡閱讀“藝術”文章,在40%的時間里喜歡閱讀“政治”文章。我們可以在圖中用紅色的x表示這位讀者。為神奇的一點是,他們在空間上接近于與自己興趣一致的文章,即便他們還沒有閱讀過這些文章;我們給讀者推薦的就是在空間上接近于他們的文章。
還有一些需要進一步回答的問題。這個話題空間圖能捕捉模棱兩可的單詞用法嗎?還有,如何才能好地觀察讀者偏好?畢,用戶點擊并不是穩健的數據來源:我相信在有時你點擊的內容并不是自己真正喜歡的,有時又錯過了自己會感興趣的內容。
我們仔細測試了很多方案,建立的算法讓能夠更好的回答這些問題,并且提供了一個新的理解《紐約時報》的強大方法。
算法由三部分組成:
如何基于一篇文章的文本來建立該文章的模型。
如何基于受眾的閱讀模式更新模型。
如何基于閱讀歷史描述讀者。
:如何基于一篇文章的文本來建立該文章的模型
首先,算法會檢查每篇文章的內容,然后應用“隱狄利克雷分布”(Latent Dirichlet Allocation, LDA)模型,這是一種內容建模算法。LDA模型可以學習每篇文章中的所有“話題”:這里“話題”的正式定義是基于詞匯的分布。如果一個文檔涉及某個權重值高的話題,那么文章中可觀測到的文字就更加有可能是在某個話題下權重高的文字。
LDA模型是能夠滿足我們各種目標的快速、準確的方法,可以實現在線推理計算(或者當新文章發布后實時學習話題)。LDA模型趨向于更廣泛的話題(比如“中東”、“電影”、“醫療保健”等),這使得我們可以從不同的角度來關聯不同的片段。
LDA模型基于圖形化模型,該模型可以很容易地進行擴展,整合新的假設和信息。在我們的案例中,擴展模型的方法不僅僅是對文章的文字進行建模,還會對閱讀文章的具體讀者進行建模,這點會在下節介紹。
第二:如何基于受眾的閱讀模式更新模型
LDA模型將單詞作為輸入,但是單詞經常是模棱兩可的:語境、風格和聲音都可以該表單詞的意思。比如,如果蓋爾·科林寫了一篇包含“狗”、“車”和“屋頂”的文章,我們能據此看出來她這是在諷喻嗎?能看出她不僅僅是在寫一篇關于動物或關于汽車的文章嗎?
事實上,純粹的基于LDA模型的方法會賦予“旅行”這個標簽更多的權重,并把蓋爾·科林這篇文章放在下圖中藍點的位置。
然而,大部分閱讀過這篇文章的讀者還閱讀了與希拉里·克林頓和特德·魯茲相關的文章(在下圖中用紅色x標出的地方),所以我們希望算法能讓這篇文章靠近圖中綠色的區域,也就是接近“政治”話題。正如與CTM模型相關的論文中描述的那樣,通過將偏移量(offset)添加到模型話題錯誤中,算法在內容建模基礎上包含了閱讀模式,從而創建了一種混合方法。
通過迭代調整偏移量,然后重新計算讀者評分的方式,CTM模型算法是可行的。它會正常運行至幾乎沒有什么需要調整的情況。一個隨機選擇的讀者樣本(稱之為“訓練樣本”)為我們提供了需要的信息。
我們測試過兩種計算偏移量的方法:
CTM模型和
“協同泊松分解”(Collaborative Poisson Factorization,CPF)。
在線進行A/B測試時,CTM模型表現得更好。
第三:如何基于閱讀歷史描述讀者
用于調整文章話題的方法同樣可以計算讀者偏好,但沒法擴展到所有用戶中。因此,需要一種計算讀者偏好的快速方法,可以生成文章話題后使用。
有一種簡單的方法,即計算所有閱讀過的文章的話題的平均值:如果點擊了一篇標記為40%“政治”話題和60%“藝術”的文章,并且點擊了另一篇標記為60%“政治”話題和40%“藝術”的文章,那么你在下圖的“政治”-“藝術”話題空間圖中所處的坐標點就是[.5,.5]。
然后,這種方法假設讀者的點擊完全反映其偏好。萬一讀者點擊的是一篇他們不喜歡的文章呢?抑或是他們錯過了可能喜歡的文章呢?解決這個問題的一種方法就是稍微妥協一點,比如說你雖然了點擊了一篇文章,但僅僅是“90%喜歡”這篇文章,而沒有閱讀的文章則是“10%喜歡”。這樣就給分析誤點擊的文章或者錯過的好文章留下了更多空間。
上圖中,綠點表示讀者已讀過的文章,紅點表示讀者尚未閱讀。黑色的x可能是讀者的偏好,這是通過根據已經閱讀過文章的平均值計算出來的,而藍色的x則通過妥協方法計算出來。
妥協方法允許我們在處理噪音數據時更穩健。我們還注意到,這個方法還令推薦給讀者的冷門信息減少了,讀者被推薦了更多的與其偏好不太相同但又感到意外欣喜的內容。
通過進一步提高算法速度技術,我們能在一毫秒內計算出讀者偏好,將推薦算法應用于所有注冊用戶。
通過使用話題對文章內容和讀者偏好進行建模,然后基于閱讀模式調整,我們“重組”了《紐約時報》推薦系統。
如今,該系統已大規模應用了協同話題建模中的前沿技術,與以往的推薦算法相比,性能顯著提升。
我們希望推薦系統能夠使《紐約時報》不斷變化,在恰當的時機為讀者推送有意思的文章。推薦系統還能為我們提供文章如何選材和可能吸哪些讀者方面的建議。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。