一個簡單而高效的短文本分類Python庫:TextGrocery

3y8nn 9年前發布 | 135K 次閱讀 文本分類 Python開發

一個簡單而高效的短文本分類工具,基于LibLinear

整合結巴分詞作為默認的分詞單元,以支持中文分詞.

  1. 引入結巴分詞作為內置的默認分詞器
  2. 精簡LibShortText的代碼,去掉Analyzer和參數自定義模塊,修復bug,改善PEP8
  3. 訓練和測試的文本都支持列表傳入
  4. 提供Pypi的安裝方式

性能

  • 訓練集:來自32個類別的4.8萬條新聞標題
  • 測試集:來自32個類別的1.6萬條新聞標題
  • scikit-learn的svm和樸素貝葉斯算法做橫向對比
分類器 準確率 計算時間(秒)
scikit-learn(nb) 76.8% 134
scikit-learn(svm) 76.9% 121
TextGrocery 79.6% 49

示例代碼
>>> from tgrocery import Grocery
# 新開張一個雜貨鋪,別忘了取名!
>>> grocery = Grocery('sample')
# 訓練文本可以用列表傳入
>>> train_src = [
    ('education', '名師指導托福語法技巧:名詞的復數形式'),
    ('education', '中國高考成績海外認可 是“狼來了”嗎?'),
    ('sports', '圖文:法網孟菲爾斯苦戰進16強 孟菲爾斯怒吼'),
    ('sports', '四川丹棱舉行全國長距登山挑戰賽 近萬人參與')
]
>>> grocery.train(train_src)
# 也可以用文件傳入
>>> grocery.train('train_ch.txt')
# 保存模型
>>> grocery.save()
# 加載模型(名字和保存的一樣)
>>> new_grocery = Grocery('sample')
>>> new_grocery.load()
# 預測
>>> new_grocery.predict('考生必讀:新托福寫作考試評分標準')
education
# 測試
>>> test_src = [
    ('education', '福建春季公務員考試報名18日截止 2月6日考試'),
    ('sports', '意甲首輪補賽交戰記錄:米蘭客場8戰不敗國米10年連勝'),
]
>>> new_grocery.test(test_src)
# 準確率
0.5
# 同樣可以用文本傳入
>>> new_grocery.test('test_ch.txt')
# 自定義分詞器

項目主頁:http://www.baiduhome.net/lib/view/home/1421311226406

 本文由用戶 3y8nn 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!