首頁(yè)技術(shù)文章正文

如何設(shè)計(jì)一個(gè)簡(jiǎn)單的新聞聚合產(chǎn)品?

更新時(shí)間:2018-01-25 來(lái)源:黑馬程序員 瀏覽量:

如何設(shè)計(jì)一個(gè)簡(jiǎn)單的新聞聚合產(chǎn)品?文章介紹了制作極簡(jiǎn)的新聞聚合產(chǎn)品的7步驟,好奇的你和我一起來(lái)看看。

你知道在三四線的縣城,用戶在哪里看新聞么?不是在今日頭條里,而是在微信中的那個(gè)騰訊新聞里。這是三線城市絕大多數(shù)人給我的回答。這或許說(shuō)明一點(diǎn):用戶沒有像設(shè)計(jì)師那樣的潔癖,期望每一個(gè)app都有明確的邊界。誰(shuí)說(shuō)不能在一個(gè)社交app里看新聞,我還要加一句,誰(shuí)說(shuō)不能在本地頭條里看全國(guó)頭條。說(shuō)是這么說(shuō)了,但是心里清楚這只是產(chǎn)品的外延,既然是外延就應(yīng)該追求做產(chǎn)品的性價(jià)比,所以才有了這個(gè)極簡(jiǎn)的新聞聚合產(chǎn)品。

先定個(gè)產(chǎn)品的小目標(biāo):通過(guò)全技術(shù)的方式,給用戶提供一個(gè)高頻更新的新聞列表,運(yùn)營(yíng)可進(jìn)行微調(diào)干預(yù)。

整個(gè)過(guò)程7步完成。

1、構(gòu)建標(biāo)簽庫(kù)

標(biāo)簽庫(kù)其實(shí)就是詞條庫(kù),詞條哪里來(lái)?或者換一個(gè)問(wèn)法,互聯(lián)網(wǎng)上誰(shuí)最懂中文?答案當(dāng)然是百度咯。跑到百度百科首頁(yè)一看,我們要的東西就躺在下面的紅框里。

新聞聚合

那我們還客氣啥,爬呀,等等……1400萬(wàn)是不是有點(diǎn)太多了?那我們就去掉一點(diǎn)吧,只留下名詞好了,這樣可以把詞庫(kù)控制在百萬(wàn)量級(jí)。

2、抓取新聞

接下來(lái),就是抓新聞,新聞哪里有,找門戶網(wǎng)站唄,公眾號(hào)app就算了,費(fèi)時(shí)費(fèi)力,爬PC站不是一樣的嘛,以體育為例,我們可以挑選新浪體育,搜狐體育,鳳凰體育,還有什么體育?你也看出來(lái)了其實(shí)我對(duì)體育無(wú)感,這里就假設(shè)有10個(gè)體育專題網(wǎng)站吧。

我們要抓的是熱門新聞,啥叫熱門,出現(xiàn)在第一屏的就是熱門,所以我們抓取的時(shí)候,只抓取首屏新聞。結(jié)果就是我有了一堆標(biāo)題和鏈接,還有鏈接后面的正文。

新聞聚合

3、建立新聞和標(biāo)簽的關(guān)聯(lián)

現(xiàn)在到了建立新聞和標(biāo)簽關(guān)聯(lián)的時(shí)候了,首先當(dāng)然是要分詞,怎么分?呃,這個(gè)好像有很多自然語(yǔ)言詞庫(kù)的吧,你自己去找吧,分詞完了之后,計(jì)算各個(gè)詞的出現(xiàn)頻率,出現(xiàn)頻率越高說(shuō)明它越可能是這篇文章的關(guān)鍵詞。出現(xiàn)在標(biāo)題里的詞是不是比出現(xiàn)在正文里的詞更重要呢?所以你可以把標(biāo)題里的詞加個(gè)N倍權(quán)重,N等于幾?關(guān)注我私信我就告訴你。

這里分出來(lái)的詞,其實(shí)就是標(biāo)簽庫(kù)里的標(biāo)簽。這樣每一篇文章就有一個(gè)對(duì)應(yīng)的詞頻由高到低的標(biāo)簽列表了,太長(zhǎng)了也沒用,就取TOP5吧。

這里有個(gè)問(wèn)題留給你,既然文章要分詞,文章分出來(lái)的詞直接做詞庫(kù)不就好了,為啥要去百度爬呢?答案還是要關(guān)注我私信我才告訴你。

4、標(biāo)簽熱度排序

現(xiàn)在我們?yōu)轶w育頻道選擇了10個(gè)數(shù)據(jù)源(就是新浪體育這樣的網(wǎng)站),每個(gè)數(shù)據(jù)源下抓了50篇文章,每篇文章都有5個(gè)標(biāo)簽,現(xiàn)在我們要看哪個(gè)標(biāo)簽最熱了。我們的方式簡(jiǎn)單得很,否則怎么說(shuō)我們?cè)O(shè)計(jì)了一個(gè)極(jian)簡(jiǎn)(lou)的產(chǎn)品呢,方法是如果一個(gè)標(biāo)簽在一個(gè)數(shù)據(jù)源出現(xiàn)了,就加1,在10個(gè)數(shù)據(jù)源都出現(xiàn)了那就是10。通過(guò)這種方式你會(huì)得到每一個(gè)標(biāo)簽的值,這個(gè)值除以數(shù)據(jù)源總數(shù)就是“熱度值”,在我們這里就是0.1到1之間的分布。

這個(gè)時(shí)候運(yùn)營(yíng)的妹子來(lái)亂入了,她說(shuō)她的特長(zhǎng)就是八卦,而且是先人一步的八卦,讓我們千萬(wàn)要相信她判斷熱點(diǎn)的是否會(huì)大熱的能力。這句話的意思是:她想來(lái)人肉預(yù)先提升一個(gè)標(biāo)簽的熱度值,雖然現(xiàn)在它還沒有大熱。嗯,平常關(guān)系辣么好,我不信也得做個(gè)姿勢(shì)選擇相信,于是就有了下面的線框。她可以調(diào)整一個(gè)標(biāo)簽次的熱度值。

新聞聚合

呀,最后怎么還有兩個(gè)詞連接在一起的?實(shí)際上多個(gè)詞比單個(gè)詞更接近于一個(gè)熱點(diǎn)事件。當(dāng)然對(duì)于這種二元詞,計(jì)算方式和一元詞略有不同,細(xì)節(jié)此處不展開。

5、文章按頻道排好序

到這里我們已經(jīng)有了標(biāo)簽的熱度排序,那文章的熱度怎么算呢?文章不是有5個(gè)標(biāo)簽嘛,那個(gè)最高熱度值標(biāo)簽的熱度就是文章的熱度。

實(shí)際上熱度只是文章的一個(gè)維度,要給文章排序,你自然還會(huì)想到以下的幾個(gè)維度:

質(zhì)量分:一篇結(jié)構(gòu)完整、圖片豐富的文章顯然具有更高的質(zhì)量

時(shí)效分:越新的越優(yōu)先,大家是來(lái)看新聞的嘛。

具體算法上可以用高斯衰減,比如72小時(shí)內(nèi)基本無(wú)衰減,超過(guò)72小時(shí)后每過(guò)12小時(shí)就衰減一點(diǎn)。說(shuō)到衰減,最近看了采銅的效益半衰期理論感覺頗為受用,大意是:一個(gè)人管理自己日常的行為,可以考慮這個(gè)行為對(duì)自己長(zhǎng)期受用程度來(lái)衡量,有些事情效益半衰期很長(zhǎng)比如讀書和健身,就應(yīng)該多做,另外一些事情效益半衰期很短比如游戲,就可以少做。

扯一扯防松一下,接回來(lái)說(shuō)。

文章要排序,就是看這3個(gè)因子,編一個(gè)數(shù)據(jù)公式把:熱度分,質(zhì)量分,時(shí)效分串起來(lái)計(jì)算出一個(gè)數(shù)值就ok了,想要公式?好像不是很方便哎,再說(shuō)你那么聰明,自己也能搞出來(lái)。

6、按頻道權(quán)重整合輸出

文章有了排序,下一步直接輸出么?可是當(dāng)前我們只有一個(gè)全國(guó)新聞?lì)l道,細(xì)分分頻道啊,個(gè)性化呀那都是以后的事情,極簡(jiǎn)系統(tǒng)就是千人一面的啦。所以下一步我們要定一下各種頻道的內(nèi)容如何混在一起。這個(gè)沒有啥技術(shù)含量,就是給各個(gè)頻道定個(gè)權(quán)重,然后按這個(gè)權(quán)重計(jì)算個(gè)比例去混合就好了。技術(shù)上可確保,用戶看的越多,實(shí)際比例就越接近預(yù)先定義的權(quán)重分布

新聞聚合

咦,好像漏了說(shuō)文章屬于什么頻道的了。在我們第2步里決定去哪些數(shù)據(jù)源抓新聞的時(shí)候就決定了。每個(gè)數(shù)據(jù)源都對(duì)應(yīng)了一個(gè)頻道, 那么從這個(gè)數(shù)據(jù)源里抓取的文章也就對(duì)應(yīng)了一個(gè)頻道。主要的幾個(gè)頻道是:社會(huì)、娛樂、體育、汽車、歷史、房產(chǎn)、科技、財(cái)經(jīng)、軍事、國(guó)際。

7、過(guò)濾用戶已讀

終于來(lái)到了最后一步,作詩(shī)也沒這么累啊。

對(duì)于全國(guó)新聞這種用之不盡、取之不竭、看過(guò)就忘、不看兩遍的題材來(lái)說(shuō),給用戶最好的閱讀體驗(yàn)就是每次都給他沒看過(guò)的,過(guò)濾掉所有已經(jīng)看過(guò)的。

那如何盡可能簡(jiǎn)潔地實(shí)現(xiàn)呢?簡(jiǎn)潔的本質(zhì)就是照顧主要場(chǎng)景忽略次要場(chǎng)景。主要場(chǎng)景是用戶每幾個(gè)小時(shí)打開一次,打開一次看十來(lái)分鐘。如果我們每小時(shí)爬取的新聞數(shù)足夠多,衰減做的足夠高,是否需要過(guò)濾已讀都是可以商量的了。實(shí)操里,我們還是記錄了用戶的已讀信息,然后一次請(qǐng)求里返回足夠多的新聞,比如10個(gè)頻道每個(gè)頻道300篇,也就是3000篇,然后再過(guò)濾一下,性能上完全可接受,主要場(chǎng)景里也不會(huì)出現(xiàn)新聞看完的情況。

總結(jié)一下:

在設(shè)計(jì)這個(gè)熱門新聞列表產(chǎn)品的過(guò)程中,主要是幾個(gè)點(diǎn):

新聞的熱度本質(zhì)上是標(biāo)簽的熱度,標(biāo)簽用百度的詞條。

標(biāo)簽的熱度其實(shí)就是同時(shí)出現(xiàn)在多個(gè)網(wǎng)站上的頻度。

文章的排序就是文章熱度分,質(zhì)量分,時(shí)效分的綜合打分。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!