網路上有關 Weka機器學習 軟體的文字分類範例大部份都是針對英文,以下示範針對繁體中文的作法。
由於繁體中文的標記語料很少,本範例將取自 SnowNLP 釋放的簡體中文標記語料。 SnowNLP 正負情感資料集 共計34,880筆(35k)日常聊天語料,包括負面情感(neg.txt) 18,576筆(19k),正面情感(pos.txt) 16,304筆(16k)。前處理利用 OpenCC 軟體轉換為繁體,再利用 jieba 軟體空格斷詞,存成.csv檔,其中3欄位為原始文字 text, 空格斷詞文字 token_text, 情感判定 sentiment,0表示負面,1表示正面。
用Weka分類軟體讀入.csv檔,利用StringToWordVector過濾器將 token_text 欄位由String型別轉為眾多nominal欄位,以sentiment欄位為預測目標,進行1次性訓練及測試。測試選項: Percent 66% 當訓練集(23k),34%當測集(12k)。
所有分類器都使用預設參數,準確率accuracy,訓練時間training time,測試時間testing time的結果如下,可發覺準確率表現最好為RandomForest分類器。
SnowNLP | classifiers | accuracy | training time (s) | testing time (s) |
weka.classifiers.rules | ||||
ZeroR | 52.80 | 0.03 | 0.44 | |
OneR | 62.10 | 12.23 | 0.38 | |
weka.classifiers.trees | ||||
J48 | 85.00 | 2,694.75 | 0.37 | |
RandomForest | 93.64 | 459.36 | 8.94 | |
weka.classifiers.bayes | ||||
NavieBayesSimple | 8.14 | 5.43 | 7.35 | |
NaiveBayesMultinominalText | 52.80 | 0.14 | 0.28 | |
NaiveBayes | 70.60 | 14.10 | 9.77 | |
NaiveBayesMultinominal | 78.50 | 0.14 | 0.94 | |
weka.classifiers.functions | ||||
MLP | 52.80 | 405,797.00 | 83.62 | |
SimpleLogistic | 81.90 | 1,101.32 | 1.39 | |
Logistic | 83.00 | 294.00 | 0.86 | |
SMO | 83.20 | 5,231.83 | 1.94 | |
weka.classifiers.lazy | ||||
IB1 | 86.20 | 1.80 | 23,146.80 | |
IBk | 86.70 | 0.04 | 99.95 |