web的最大優(yōu)勢之一是其開放性和分布式本質(zhì)。這也是一大挑戰(zhàn):數(shù)百萬站點(diǎn),數(shù)千項(xiàng)主題,人們?nèi)绾螢g覽內(nèi)容并發(fā)現(xiàn)新的可信賴信息源?
Feedly對這一挑戰(zhàn)的解決方案是使用數(shù)據(jù)科學(xué)組織所有這些信息源,并幫助人們?yōu)g覽主題。
本文介紹了[Feedly新的發(fā)現(xiàn)體驗(yàn)]背后的一些技術(shù),以及我從這一項(xiàng)目中學(xué)習(xí)到的經(jīng)驗(yàn)。
從用戶生成數(shù)據(jù)中學(xué)習(xí)主題
根據(jù)用戶加入新站點(diǎn)或博客時所屬的分類(數(shù)據(jù)經(jīng)過匿名化處理),可以自動創(chuàng)建新的英語主題分類。
所以,如果你是在“tech”(技術(shù))下加入The Verge和Engadget的45000人之一,那么你幫助創(chuàng)建了“tech”主題。
不過,這樣的主題列表仍然存在一些問題,主要是重復(fù)主題和“垃圾主題”。
想要理解我是如何訓(xùn)練模型識別主題的,可以想像一個矩陣或者表格,其中有關(guān)于主題和信息源的數(shù)據(jù)。
你注意到了上表第六行的“My favorites”(我的最愛)主題了沒有?這是一個極好的垃圾主題的例子,因?yàn)樗痪哂忻枋鲂浴D憧赡芤沧⒁獾搅?ldquo;tech”和“techonolgy”這一對重復(fù)主題。如果我們將矩陣擴(kuò)展至10000+主題和100000+信息源,我們會看到很多這樣的垃圾主題和重復(fù)主題。
所以我們?nèi)绾螖[脫這些垃圾主題和重復(fù)主題呢?這正是數(shù)據(jù)清洗的價值所在。
在上表中,每行有一個數(shù)字?jǐn)?shù)組,也稱為向量。所有數(shù)字同構(gòu)的行意味著垃圾主題,而特定站點(diǎn)在行中顯示為峰值的是好主題。
一圖勝千言:
我們可以通過測量相應(yīng)圖形的尖峰來檢測垃圾主題。從向量性質(zhì)的角度來說,我們可以,比方說,測量最大數(shù)字和非零值數(shù)字的比值。
類似地,下面的圖形顯示了重復(fù)主題:
我們同樣根據(jù)向量的性質(zhì)檢測這些重復(fù)主題。在我們的例子中,“Tech”向量的分量[50000, 30000, 5, 2]和“Technology”的[12000, 7500, 2, 0]在歸一化(將絕對數(shù)字轉(zhuǎn)換為百分比)后非常相似。我使用JS散度得出兩個向量的相似度。
一旦偵測出了相似向量,我們可以在系統(tǒng)中安全地合并兩者,并將搜索“technology”的用戶重定向至“tech”。
感謝使用Feedly的英語讀者的巨大社區(qū),我們得以將所有數(shù)據(jù)轉(zhuǎn)換為一個整潔、去重的包含超過2500良好主題的列表。
我們很高興地報(bào)告,我們的分類足夠深入,包含“真菌學(xué)”這樣的主題!
鏈接的強(qiáng)度與同屬兩個主題的信息源數(shù)量成正比
主題樹:創(chuàng)建層次結(jié)構(gòu)
既然我們的信息源已經(jīng)有了豐富的主題標(biāo)簽,下一個挑戰(zhàn)是引入連接相關(guān)主題的更好的組織系統(tǒng)。
有些主題是通用的(“tech”),而另一些則要專門一些(“iPad”)。“iPad”屬于“Apple”的子主題,“Apple”又是“Tech”的子主題,像這樣的主題層次結(jié)構(gòu)的內(nèi)部表示,有助于計(jì)算推薦。
我們使用模式匹配創(chuàng)建這樣的層次結(jié)構(gòu)。下圖顯示了三個主題(左側(cè))和與這些主題相關(guān)的信息源(右側(cè))的連接。線越粗,將信息源置于這一主題下的用戶就越多。
“Apple”連接“tech”主題信息源的一個子集,所以“Apple”是“tech”的子主題
上面的模式也確認(rèn)了人們以大致相同的方式使用“tech”和“technology”。“technology”的線要細(xì)一點(diǎn),因?yàn)槿藗冚^少使用這一術(shù)語。不過這兩個主題是重復(fù)的。同時,“Apple”看起來是“tech”的子主題:它連接了更少的信息源,而且它的連接同時也和“tech”相關(guān)。
基于這些模式,我們可以構(gòu)建所有主題和子主題的樹形結(jié)構(gòu)。
現(xiàn)在,如果你訪問Feedly的Discover(發(fā)現(xiàn))頁面,你會找到一個特色主題列表。點(diǎn)擊任意主題即可開始瀏覽。相關(guān)主題有助于你進(jìn)一步深入層次結(jié)構(gòu)。
排列每個主題的推薦信息源
創(chuàng)建主題并組織為層次結(jié)構(gòu)后,我們?nèi)匀恍枰獩Q定推薦哪些信息源,以什么順序推薦。我們想要根據(jù)以下三個標(biāo)準(zhǔn)進(jìn)行優(yōu)化:
相關(guān)性 —— 用戶添加信息源至該主題與其他主題的比例
關(guān)注數(shù) —— 多少用戶連接了這一信息源
粘度 —— 質(zhì)量和關(guān)注的代理
前兩個標(biāo)準(zhǔn)很是直截了當(dāng)。人們期望看到和他們?yōu)g覽的主題相關(guān)的流行網(wǎng)站,同時常常需要折衷這兩個測度。
第三個標(biāo)準(zhǔn)更加主觀。它應(yīng)該反映網(wǎng)站的質(zhì)量,獨(dú)立于閱讀該站點(diǎn)的用戶絕對數(shù)量。事實(shí)上,我們相信,一些小眾站點(diǎn)可能讀者較少,但內(nèi)容更好。
“信息源之戰(zhàn)”試驗(yàn)
為了計(jì)算粘度評分,我們在Feedly社區(qū)中運(yùn)行了一項(xiàng)試驗(yàn)。我們選擇了一些和“tech”主題相關(guān)的信息源,并讓用戶投票更喜歡哪些信息源。
我們在一周內(nèi)收集了25000張票,生成了這些站點(diǎn)的排名。我們尋找和用戶喜歡程度最相關(guān)的特征。
例如,在下表中,我們展示了信息源得分和閱讀該信息源的平均時間之間的關(guān)系(“read_time”,閱讀時間,相關(guān)性大致等于0.45)。相關(guān)性是正的,這意味著評分越高,人們花在該信息源上的時間大概就越長。這里例子中的其他特征同樣顯示了正相關(guān)性,因?yàn)樗鼈兌际呛眯畔⒃吹闹笜?biāo)。我們的方法讓我們得以選出和投票結(jié)果最相關(guān)的特征。接著我們就可以加權(quán)組合這些特征,以稍微提升最好的那些信息源的排名。
感謝所有為“信息源之戰(zhàn)”試驗(yàn)投票的人。在Discover頁面瀏覽特色主題,或者搜索你最喜歡的主題的時候,都用到了這次試驗(yàn)的結(jié)果。
生成“你可能也喜歡”信息源和更多“相關(guān)主題”
相關(guān)主題不僅包括上面提到的子主題(取自層次結(jié)構(gòu)),還包括基于item2vec協(xié)同過濾得到的主題。
我們同樣基于item2vec技術(shù),根據(jù)你已經(jīng)關(guān)注的信息源,推薦“你可能也喜歡”(You Might Also Like)的信息源。
結(jié)語
十分感謝Feedly社區(qū)為發(fā)現(xiàn)項(xiàng)目所做的直接和間接貢獻(xiàn)。祝探索愉快!