文字分類 libsvm

2021-06-17 23:57:44 字數 1542 閱讀 2927

關於

libsvm

的介紹以及相關**網上很多,感興趣可以找找。

這是libsvm

這裡主要是針對之前學習過的幾種特徵篩選演算法用

libsvm

進行比較。

採用搜狗實驗室的資料,選擇商業類文字

1001

篇,娛樂類文字

1208

篇,測試集

29904

篇。分別採用文件頻次,卡方分布,互資訊,資訊增益來篩選特徵——詞。

對於每個演算法分別選出該演算法認為最重要的詞

200個詞。然後對各個測試文字進行分詞,向量化,訓練,測試。

特徵值採用詞頻,歸一化方法如下

其中wi表示詞wi

在當前文件中出現的次數。

特徵篩選演算法

召回率(%

) 準確率(%)

正確率(%

) 文件頻次

93.5558

98.593

95.0508

卡方分布

96.1419

97.2563

95.82

互資訊97.4928

96.8817

96.4085

資訊增益

96.5887

96.782

95.7865

從這個結果來看效果還是不錯,其中從正確率的角度來看互資訊稍微好些。其實這乙個效果比我之前在微軟實習時候用

svm做的分類效果好多了,乙個可能的原因可能是這些語料確實非常乾淨。

tf-idf簇的計算公式非常多,從最簡單的到後續研究人員針對其特點進行優化的。下面選用一套最簡單的公式進行計算比較。在tf

作為特徵值裡直接用的裸

tf,即

tf(t,d)=

,這裡打算對詞進行一些平滑處理,如下:

tf(t,d

)= 1 + logtf(i,j)

idf——逆文件頻次,計算方法如下:

為所有文件數,

df(t)為t

在文件集中出現的文件數。為什麼

idf,有什麼好處?從

idf的計算公式可以看出

df(t)

越大其值越小,這也說明乙個詞如果在越多文件中出現,那麼它的重要性也就越低,反之也是成立的。這是符合我們對乙個事物重要性判斷的直覺的。

當前的權重計算方法已經確定如下:

歸一化方法和前面介紹的一樣。

特徵篩選演算法

召回率(%

) 準確率(%)

正確率(%

) 文件頻次

92.0894

99.1623

94.4723

卡方分布

95.1432

98.584

96.0407

互資訊90.4809

99.5835

93.7032

資訊增益

96.1997

97.8455

96.2346

從這兩個**對比來看

tfidf

提高了分類的準確性,但是召回率下降了。

libsvm文字分類使用筆記 一

參考按其步驟一步步往前走,記錄中間步驟和遇到的問題cd bamboo mkdir build cd build cmake dcmake build type release make allmake install 第四步 安裝bamboo的php擴充套件 cd opt bamboo exts p...

利用LibSVM進行二類文字分類系列

筆者按 此系列博文僅對於libsvm二分類做入門性的介紹,並非研究libsvm的專業水準文章。至於如何用libsvm進行回歸,多分類,筆者目前還沒有涉及,請您查閱libsvm的相關文件說明。這裡給出文字預處理模組 python語言編寫 呼叫libsvm進行文字分類模組採用c語言編寫 實驗結果處理模組...

文字分類四

下面是使用knn演算法來做的。資料均是由前面的程式生成的。做完這個之後,就是將每一步整合起來。然後再盡可能的優化,使得程式效率更好。然後可以嘗試不同的特徵選擇演算法和分類演算法,當然最後要是能有自己的一些小小改進就好了。不過至少有了乙個還可以的結果了。include include include ...