很久很久以前,大家獲取信息的渠道可能就是讀書,聽廣播,看報紙,看電視等等,可以獲得的信息也非常少。然而當今的社會,我們整天都會發愁從無數的巨大的永遠都不可能看完的信息中很輕鬆地找到需要的信息,也就是說“信息過載”的問題十分嚴重。
我們每天都會看一些新聞,關注一些社會熱點。當然你可以在圍脖上看到很多大家炒的很熱的話題,但很多人更願意看的是新聞和評論。
在本文中,我想虛構出一家提供新聞資訊的網站,在你的個人頁面上會顯示每天各個領域發生的新聞大事件,以及你可能會喜歡的新聞資訊。
我們的網站需要做好下面的工作:
1、搜索
用戶面對海量的信息,他如何能夠比較快速的相對準確地找到他想要的東西,答案就是搜索引擎。
搭建一個搜索引擎需要解決下面的問題。
- 抓取
- 解析
- 索引
- 所有不同的單詞,當然這些單詞都是經過分詞器過濾出來的比較重要的有意義的單詞,而不是“的”或者“地”之類的出現頻率高但永遠不會成爲核心的詞,最好是限定一個範圍,只保留一些出現頻率在5%-50%之間的詞
- 這些單詞所在的文本
- 單詞在文本中的位置
- 搜索
2、分類
首先,先說明一個問題,爲什麼不先進行聚類,而是先做分類呢?
因爲數據的噪聲會在分類之後得到很大的抑制,聚類的效果就會非常好。但如果反過來的話,會看到很多的科技新聞被歸到國內新聞或者其他很搞笑的事情。
我們的網站將會分爲:國內新聞,國外新聞,科技新聞,娛樂新聞,體育新聞,軍事新聞這六大類。
分類的思路有兩個:
- 一個比較簡單的分類就是爬取新聞的時候就做好分類,也就是說你從新浪的科技新聞版塊爬新聞自然就會分到這個類,這種分類方法完全依靠專家分類,分類的準確性會很高。但這種辦法不能用在所有的數據源,因爲很多的新聞都是從很多並沒有分類。但是,這些專家分類的數據源可以作爲分類器的訓練集。
- 機器分類是解決這個問題的主要方法,構造一個好的分類器對於整個網站的成功起着非常重要的作用。可以想象,一個用戶如果在體育新聞中看到了中國房價常年居高不下的新聞他還是會再次訪問這個網站嗎?
3、聚類
新聞分好類後,要對新聞做一些分組的工作。這就會用到聚類算法。新聞分組有個好處在於,我們可以很容易地找到一篇新聞的相關新聞,對於每個分組會根據這個分組中的新聞提取一個關鍵詞作爲名稱。
4、個性化推薦
終於寫到重點了。
網站爲用戶提供的新聞是在太多太多了,而且每天都會更新大量的新聞,用戶如何能夠一一看的過來呢?
首先,我們會提供一個訂閱的功能,訂閱用戶自己感興趣的分類或者分組。
用戶如何找到這個分組?他可以搜索,他可以點開分類,然後他可以看到一個像樹一樣的結構。
但如果說我是用戶的話,我在一個目錄中點開一個鏈接。然後又看到無數的鏈接等着我去點,我會吐得。
所以這裏,我們可以採用標籤雲的方式來表示這些分組,當你打開一個分類時,你會看到許許多多的分組標籤,標籤的大小和顏色都不同,大小由這個分組中的新聞篇數決定。
然後,我們如何進行個性化推薦?
(1)我們會給用戶提供一個表達自己對這個新聞的喜好程度的機會,一個紅心,就像豆瓣電臺的那個紅心,當然也會讓他輕易地將這條新聞一鍵轉發至各大社交網站上。通過這個行爲我們就可以知道用戶是喜歡這篇新聞的,那麼個性化推薦也就不是問題了。
(2)當然,看過了一條新聞之後,總得讓用戶評論幾句吧。這個是用戶最基本的權利,而且是最容易出亮點的地方,網易新聞在這方面做的非常好。(釋永信爲失足女事主開光的新聞下面網友的詩詞接龍堪稱經典啊!)我們可以通過對評論進行語義分析,來分析用戶對這個新聞是否關注或者喜歡。但國內用戶很多時候都是在上面問候各自的直系親屬,這點使得對於評論的語義分析顯得沒有太大的意義哈。
我們會用到哪些算法呢?
基於內容的推薦算法是肯定的,因爲這是一個文本內容豐富而且可以利用IR的一些成熟技術來做的推薦。
基於條目的協同過濾貌似不太好用,因爲新聞具有時效性,有熱度效應,所以新聞會很頻繁地更新,用戶評分矩陣就會不斷地朝着條目的這個方向快速地增長,如果我們不加取捨的話,很快就會發現這個矩陣變成一個零矩陣,失去了意義。所以我們可以給這些數據加個時間窗口,來分析用戶的短期興趣,同時隔一段時間對歷史的陳舊的數據做一次挖掘,然後提取出用戶的興趣模型,然後丟掉這些數據。這樣我們可以得到用戶的長期興趣和短期興趣。
基於用戶的協同過濾算法,因爲它的優勢(尋找taste相同的人)在新聞類網站中顯得很單薄,所以我們棄用這種算法。
有了這些,個性化的推薦就變得簡單多了。
如果,我們把以上的這些功能和算法都做好了的話,並且用在手機客戶端上的話,可能就是這個樣子:
如果我們做成ipad客戶端後,也許就是這個樣子:
PS:因爲我是指閱的fans,真心喜歡這個產品,所以在這裏自願打了廣告哈,大家可以嘗試用一下這個產品。