情感分類推薦使用什麽算法和軟件包
從最基本的開始吧: 基於詞典的正負詞詞頻, 我們實驗室壹個小組曾經在新浪微博上使用這個方法, 驚訝的發現這個如此不優美的方法的效果竟然那麽的“可以看”。 在此之上壹個改進的辦法是對大量數據做壹次二元的離散化(假定是正負情感), 以此選定閾值, 離散化的方法有很多, 不再贅述。接下來的方法主要分為兩類:基於特征(feature-based): 這類方法比較好理解, 無非是人來選定特征空間, 然後對每壹個數據項生成壹個特征向量, 使用分類器對向量進行分類, 理論上所有的分類器都可以實現這個需求, 只是效果更不同。 方法之壹是就是KNN, 但是和所有基於特征的方法壹樣, 特征的選取是壹個永恒的話題,像KNN這種還需要維護巨大矩陣的方法尤其難以滿足實用需求, 但是對於KNN的空間優化也有相應的辦法, 就是對每個數據項指記錄K項最近距離, 也就是K個<數據項ID, 距離>, 當有更近的數據項進來時, 替換最遠的數據項, 此外, 我也同意@範文閣下的觀點, 覺得KNN的效果不會好於SVM。 SVM: 經典分類器, 我決不敢自稱完全理解SVM, 但使用方法大同, 也是將數據項生成特征向量(稍後會介紹另壹種方法), 但是特征的選取是壹個永恒的話題, 因為壹切特征對於描述壹個數據項來說都是必要的(但是不壹定重要), 但是我們盡量選取合適的特征組來保證分類的準確率, 這壹切, 這所做的壹切都是對無法枚舉出所有特征的現狀的妥協。 SVM的開源包有很多, 樓主可以試試libsvm和svmlight。基於核函數(KernelMethod-based): 前面提到人為的選取特征的局限性, 並且隱含的線性不可分問題。 核函數是壹個計算兩個對象之間“相關度”(kernel)的函數。 有關核函數的定義和優化方法不壹會兒能夠談清, 僅列出文獻: wiki:/tutorials/KMtalk.pdf(*以下方法沒有經過驗證) 基於核函數的SVM, 應用方式(以情感分類為例)可以簡單地做文本分類(當然可以預先做詞性過濾), 對於每壹個需要做情感分類的文本之間算出kernel值, 用這個矩陣在svm中得到model, 然後對於測試數據, 或者預測數據在對訓練數據中的每壹項算kernel值, 拿這個矩陣用model去做測試(預測)。 這個過程的壹個“快餐”的理解方式是: 將每壹個數據與測試數據集中的每壹項的相似度的向量當成之前feature-based的方法中的特征向量, 整個過程不過還是壹個基於特征的訓練-預測過程(當然, 這說法是不對的)。 libsvm中自帶subsequence kernel 的實現使用參數-t來進行使用, 此外也支持自定義核函數。 之前談過的KNN, 我覺得也可以引入kernel, 但是至於可行性和必要性嘛, 大家也就當討論壹下吧。 簡單來說就是將KNN中的歐式距離替換成kernel值。==============================CRF應該沒辦法做情感分類吧, 畢竟不是分類器, 拿它做過實體識別, 感覺序列標註器不適合這個問題。嚴重同意@範文閣下的說法, 在實用領域, 預處理和數據獲取(語料)才是王道, 機器學習就和人學習壹樣, 教育方法再好, 教的東西不好壹樣是浮雲。 拿我大二數據挖掘老師的話講, 統計模型都是現成的, 拼得就是數據。