[2016.07.22更新]

Dicaso上線至今結束,創造超過三萬瀏覽量,服務五千多次搜尋,真的很感謝大家這兩週的愛護與使用!

其實一開始,就抱持著短線目標,沒有打算持續經營或是創業,以有趣好玩的心態出發,讓辛苦的專題作品曝光,同時也透過使用者行為的觀察,瞭解什麼樣的東西會討人喜歡,大家會怎麼下關鍵字搜尋文章。在這兩週內,平日要實習,假日要到實驗室做老師接的專案,能維護的時間不多,已經盡力讓server正常運作,並改善網頁呈現的一些問題了。儘管如煙火般曇花一現,但這段時間收到的搜尋紀錄以及流量來源,才是重要的資產,發現很多有趣的事情,也激發了更多想法,希望未來有機會實踐出來XD

dicaso_index


專題背景

隨著網際網路與行動裝置的蓬勃發展,人們獲取資訊的方式逐漸從傳統的新聞媒體與入口網站,轉移至社群平台。根據E-ICP在2015的調查結果發現,全台灣民眾的行動上網比率接近九成,且有高達87.8%的受訪者每天都會使用Facebook,可以看出現代人對於社群媒體的高度依賴。也就是因為便利的行動裝置與不斷產出的社群內容,我們無時無刻都置身於網路社群世界中,接受爆炸性的資訊衝擊。因此,如何以使用者的角度出發,替用戶篩選並推薦內容,且保持其客觀性,是社群平台要面對的重要問題。

在這樣的期望下,社群平台應該要善用海量資料,鑑往知來,互通有無。需要提供強而有力的搜尋功能,讓用戶可以輕易地從過往經驗找到解決問題的方法,或是透過文章汲取知識。同時,也要預測新發布的文章未來是否受歡迎,讓推薦系統更為精準,協助過濾無意義文章,提升用戶發文品質。

 因此我們將課堂所學之技術,導入台灣最大的學生社群平台「Dcard」,希望改善熱門文章的推薦機制,並強化搜尋功能。此外,為了要驗證搜尋結果,我們重新設計排版,加入關鍵字廣告、圖片牆等功能,打造「Dicaso笛卡索網站」!

期末專題與現在的Dicaso

Dicaso是我們的資訊檢索與探勘(IR)期末專題,實作文章搜尋(資訊檢索)與熱門文章預測(資料探勘)兩大功能,也因為有之前架設hiticket以及玉山黑客松的參賽經驗,可以比較得心應手把網頁搞定(其實模板都一樣拉XD),迅速整合前後端與資料庫,服務大眾。

各位目前看到的Dicaso,僅提供文章搜尋圖片牆服務,預測熱門度的部分因為需要包成API,還需要一些時間,不過根據這幾天使用者的回饋,大致上也有了未來發展的想法,期待有很快地能釋出改版。


土炮自建的搜尋引擎

透過Dcard API,我們抓取八個看版的文章進行實驗,文章發表時間由2013/05至2016/06,替大約30萬篇文章進行搜尋索引,並獨立架設一個search server,處理query。

在建立模型前,我們先對文字做些前處理:

  • 過濾中文stopword,例如:的、了
  • 過濾項目符號、標點符號、特殊字符、網址
  • 將全型英文字元與數字轉為半型小寫
  • 利用Jieba來進行中文斷詞,使用繁體中文字典檔,並且加入自定義的特殊名詞,例如:「提拉米蘇」、「蘇打綠」
  • 替發問類型文章做標籤

之後會將標題與內文合併,以Unigram的形式建立模型。這裡使用Vector Space Model (VSM),平滑方式為 Laplace smoothing,並透過Scikit-Learn 套件 TFidfVectorizer來加速開發。用戶輸入查詢關鍵字後,我們會根據IDF轉換出一組Query vector,透過 Dot product similarity計算排序分數,並根據文章 ID到我們的 MongoDB抓取內文,最後將搜尋結果顯示在網頁上。

dicaso_flow

系統架構圖

因為搜尋結果沒有驗證依據,我們只能憑肉眼判斷好壞,下圖是搜尋“我失戀了怎麼辦”的結果比較。左邊將標題權重增加,效果顯著提升XD

compare

搜尋“我失戀了怎麼辦”的結果比較


關鍵字廣告

如同 Google, Yahoo搜尋引擎一樣,我們最後加入了關鍵字廣告,並且把關鍵字索引加入 Model中,因此用戶只要搜尋特定關鍵字,就會出現預先設定好的推薦廣告。不過分析 Log發現,都沒人搜尋我們埋的特定關鍵字阿哈哈!

dicaso_ad

關鍵字廣告功能


有趣的事情

上線之後,獲得許多關注,看到 GA後台的數字,實在是嚇了一跳

dicaso

Google Analytics 偵測的目前線上人數

當然也引來黑客好手拉!好在我們使用的是 NoSQL資料庫,對於傳統的 SQL injection免疫,不過還是體會到這股熱情

injection

SQL injection Log


因為有需求,所以存在

這不是笛卡爾的我思故我在,而是要打造一款用戶會喜歡的產品。我們都希望文章搜尋可以全文檢索,可以有文章圖片預覽,而對於進階使用者,希望有圖片牆,圖片過濾等功能。以這樣的思考方向出發,檢視了這三天的流量以及回饋,確實是驗證了我們的預期假設,而這樣的方式,也將持續套用在不同看板上,針對不同的看板做出相對應的服務!

資源本來就有,只是要以什麼樣的面貌來呈現,並加以應用。我想笛卡索提出的 Dcard圖片牆,並不是先驅,文章搜尋更是在Google面前耍大刀,可是做這些事情就是改善現有問題,滿足需求,笛卡索因此而存在!


專題團隊

最後依然要介紹一下組員,分為搜尋以及文章預測兩個部分

  • 李振皓:文章搜尋,網站前後端
  • 鄭嘉豪文章搜尋,資料庫管理
  • 劉叡聲:使用Neural Network預測文章熱門度
  • 吳宜倫使用SVM預測文章熱門度

參考資料