一个简单而高效的短文本分类Python库:TextGrocery

3y8nn 4年前

一个简单而高效的短文本分类工具,基于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.open-open.com/lib/view/home/1421311226406