作為一個非電腦系學生,身邊沒人和我交流技術,所以我有一個習慣,就是經常看看CSDN大牛的部落格,看他們的研究方向。慢慢的我的關注清單裡面大牛越來越多,然後我就有個想法,能不能整個好友推薦軟體,免得我自己還得去找。所以閑來無事就寫了這麼個軟體。
其實CSDN現在也有好友推薦模組了:
,但是目測了一下,效果很差,起碼對於我這種菜鳥效果不好。使用者排名權重感覺太大了,相關性不足,CSDN有那麼豐富的資料,只做到這種程度的推薦感覺有點說不過去啊。
整個軟體包括兩個部分:後台資料和搜尋服務。後台資料是我選了幾個種子在CSDN社區裡面爬的(隔15秒左右爬一次),總共7000多個。搜尋服務主要是把後台資料放進記憶體,然後根據使用者輸入的標籤或者使用者id來檢索相似使用者,點擊按鈕可以訪問其部落格(預設是ie和firefox,如果沒裝這兩個瀏覽器可能會出問題)。
推薦演算法:本來是想參考搜尋引擎的設計思路,給每個tag設計倒排,根據tag出現次數,和使用者使用次數計算TF-IDF值。但是發現每個使用者的tag差異太大,例如同一個標籤“java”就是“JAVA”,“java”,“java學習”,“【java】”,“01_java”……,要是做切詞、近義詞庫神馬的又太麻煩,畢竟只是自己寫著玩的。所以最終的推薦演算法就是根據使用者輸入tag在候選使用者中出現的次數為基準(0.75權重),綜合考慮使用者的排名(0.15權重)以及寫的文章總數(0.15權重,寫的越多每次tag貢獻的得分越少)來給每個使用者評分,得分最高的50個使用者作為推薦結果。
軟體介面如下:
搜尋方式兩種,一種是根據輸入tag(用空格或者,分割),另一中使用者直接輸入自己id即可,通過線上爬取使用者的文章分類資訊,(當然,如果分類資訊太少,或者只是時間、序號等無意義的詞,也可以通過關注使用者的tag來替代)。
軟體在ubuntu系統寫的,在windows上也可以運行,但是我把eclipse項目拷到windows時需要重新調整eclipse裡面的jre版本配置和字元編碼。
註:本來還想根據使用者資訊來推送使用者可能相關的文章,但是CSDN已經有了部落格推薦,而且我的資料量太小,想來也不會有多大作用。
軟體:http://download.csdn.net/detail/ramboww/5905773