Dicaso上線至今結束,創造超過三萬瀏覽量,服務五千多次搜尋,真的很感謝大家這兩週的愛護與使用![2016.07.22更新]
其實一開始,就抱持著短線目標,沒有打算持續經營或是創業,以有趣好玩的心態出發,讓辛苦的專題作品曝光,同時也透過使用者行為的觀察,瞭解什麼樣的東西會討人喜歡,大家會怎麼下關鍵字搜尋文章。在這兩週內,平日要實習,假日要到實驗室做老師接的專案,能維護的時間不多,已經盡力讓 Server 正常運作,並改善網頁呈現的一些問題了。
儘管如煙火般曇花一現,但這段時間收到的搜尋紀錄以及流量來源,才是重要的資產,發現很多有趣的事情,也激發了更多想法,希望未來有機會實踐出來
期末專題與現在的 Dicaso
Dicaso 是我們的資訊檢索與探勘 (IR) 期末專題,實作文章搜尋 (資訊檢索) 與熱門文章預測 (資料探勘) 兩大功能,也因為有之前架設 HiTicket 以及玉山黑客松的參賽經驗,可以比較得心應手把網頁搞定 (其實模板都一樣拉 XD),迅速整合前後端與資料庫,服務大眾。
各位目前看到的 Dicaso,僅提供文章搜尋與圖片牆服務,預測熱門度的部分因為需要包成 API,還需要一些時間,不過根據這幾天使用者的回饋,大致上也有了未來發展的想法,期待有很快地能釋出改版
土炮自建的搜尋引擎
透過 Dcard API,我們抓取八個看版的文章進行實驗,文章發表時間由 2013/05 至 2016/06,替大約 30 萬篇文章進行搜尋索引,並獨立架設一個 Search Server,處理 Query。 在建立模型前,我們先對文字做些前處理:
- 過濾中文 Stopword,例如:的、了
- 過濾項目符號、標點符號、特殊字符、網址
- 將全型英文字元與數字轉為半型小寫
- 利用Jieba來進行中文斷詞,使用繁體中文字典檔,並且加入自定義的特殊名詞,例如:「提拉米蘇」、「蘇打綠」
- 替發問類型文章做標籤
之後會將標題與內文合併,以 Uni-gram 的形式建立模型。這裡使用 Vector Space Model (VSM),平滑方式為 Laplace Smoothing,並透過 Scikit-Learn 套件 TFidfVectorizer 來加速開發。用戶輸入查詢關鍵字後,我們會根據 IDF 轉換出一組 Query Vector,透過 Dot Product Similarity 計算排序分數,並根據文章 ID 到我們的 MongoDB 抓取內文,最後將搜尋結果顯示在網頁上。
因為搜尋結果沒有驗證依據,我們只能憑肉眼判斷好壞,下圖是搜尋“我失戀了怎麼辦”的結果比較。左邊將標題權重增加,效果顯著提升
關鍵字廣告
如同 Google, Yahoo 搜尋引擎一樣,我們最後加入了關鍵字廣告,並且把關鍵字索引加入 Model 中,因此用戶只要搜尋特定關鍵字,就會出現預先設定好的推薦廣告。不過分析 Log 發現,都沒人搜尋我們埋的特定關鍵字阿哈哈!
有趣的事情
上線之後,獲得許多關注,看到 Google Analytics 後台的數字,實在是嚇了一跳
Google Analytics 偵測的目前線上人數
當然也有不懷好意的攻擊,好在我們使用的是 NoSQL 資料庫,對於傳統的 SQL injection 免疫
因為有需求,所以存在
這不是笛卡爾的我思故我在,而是要打造一款用戶會喜歡的產品。我們都希望文章搜尋可以全文檢索,可以有文章圖片預覽,而對於進階使用者,希望有圖片牆,圖片過濾等功能。以這樣的思考方向出發,檢視了這三天的流量以及回饋,確實是驗證了我們的預期假設,而這樣的方式,也將持續套用在不同看板上,針對不同的看板做出相對應的服務!
資源本來就有,只是要以什麼樣的面貌來呈現,並加以應用。我想笛卡索提出的 Dcard 圖片牆,並不是先驅,文章搜尋更是在 Google 面前耍大刀,可是做這些事情就是改善現有問題,滿足需求,笛卡索因此而存在!