豆瓣九點是如何做文章自動分類的?
11-26
如果不是人工編輯,那麼就是一個文本主題分類的問題。如果是貝葉斯,那麼是完全切詞,通過人工標註一批樣本學習一個分類器,還是通過特定的詞是否在文章中出現進行學習?如果是前者,這個樣本量是多少?後者是否需要更新特殊詞詞典?或者是別的取 feature方式學習?
不好意思,沒辦法回答的非常詳細。基本上是一個半監督的學習過程,會給每個博客計算profile確定分類,同時對博客里的文章再計算profile進行調整。豆瓣的一個優勢是擁有比較完整的用戶興趣數據,因此可以不必局限於博客和文章的文本進行分類。把用戶的興趣數據利用起來可以收到比較好的效果。
感覺這個問題本質還是選取feature的問題,在數據量這麼大的情況下,演算法的差距應該不明顯。
按照王守崑的意思,除了常用的單篇博文自身的feature(text feature),豆瓣還補充了此 blog的feature(blog feature)和該用戶的興趣數據(individual feature)。
這三個feature中,第一個feature學術上討論的比較多了,起主要作用,但是改進難度較大;第二個feature和第三個feature,感覺難度不大,但是效果會很好,這也從一個方面說明數據的重要性,呵呵。
從分類演算法來看,不管是計算博客的profile,還是具體某篇文章的feature,其實沒有多大區別,最後都是特徵,區別的是特徵提取的這個過程,以及特徵的粒度大小問題。如果只做粗糙分類,只計算博客的profile也能得出大概的分類,再根據博客的得分做下排序的話排在前面的基本也還靠譜吧。計算用戶興趣應該是做推薦排序用的吧
我感覺豆瓣應該是用人工標註訓練集/機器獲取訓練集——訓練得到分類器——完成分類這樣的過程的。量級的話,一般該在10w以上吧。
其實也不一定要人工標註訓練集,從互聯網上各網站相應的頻道應該就能獲取足夠數量的特定類型的訓練集合了。
如果是依據特殊詞判斷的話,精度會差很多。因為很難從文檔是否包含某些詞就判斷其一定屬於某些特定類別。為了保證精度,需增加這類所謂特殊詞的範圍,並結合其出現頻度。這樣其實也在往貝葉斯靠攏了。
文章的相關性基本用的是TF/IDF。說得簡單一些,就是把文章抽象成特徵向量,然後比較向量的方向。
第一步:確定辭彙表。假設我們找16個詞,分別是富強、民主、文明、和諧、自由、平等、公正、法治、愛國、敬業、誠信、友善。
第二步:計算各篇文章的特徵向量。每篇文章的特徵向量是一個十六維的向量。每個維度的值是辭彙表中各個詞的TF/IDF值。
第三步:比較各文章的向量方向,把相近的歸為一類。這裡可以用到餘弦定理。當兩條新聞特徵向量夾角的餘弦接近一時,可以歸成一類。當餘弦的夾角越小,兩條新聞越不相關。
你說的兩種方式都不是非此即彼的,完全切詞後也需要特徵提取(找一個特殊詞詞典),特定詞是否出現其實就是決策樹方法的一個特例,兩個方式都需要機器學習,說到機器學習,那就是一個方法了,只是演算法選擇有差異罷了。
完全摸不到頭腦,雖然被推薦過幾十次但是摸不到規律。
推薦閱讀:
※感覺豆瓣上影視評分歐美日韓的偏高,本質上是什麼心態呢,是不是大家不熟悉外國人正常表現而盲目追捧呢?
※豆瓣電影 Top250 榜單中,你認為哪些名不副實?
※豆瓣電影的分數和排序是怎麼算出來的?
※為什麼有很多人在豆瓣上給《大聖歸來》打一顆星或者兩顆星?