资讯专栏INFORMATION COLUMN

TextGrocery,更好用的文本分类Python库

aaron / 2607人阅读

摘要:古龙说,无论什么东西,最好的都只有一种。经历半年的文本分类实践,我们基本已断定,最好的文本分类算法就是支持向量机。有没有可能把最好的文本分类算法,包装成一个超级简单的工具提供给大家这是我开发的初衷。

古龙说,无论什么东西,最好的都只有一种。经历半年的文本分类实践,我们基本已断定,最好的文本分类算法就是SVM -- 支持向量机。
但是纵然知道了天机,新手做文本分类仍然需要学习不少东西,例如算法原理、分词、向量化等等。如果用上scikit-learn这样的庞然大物,更有种高射炮打蚊子的异样感。
有没有可能把最好的文本分类算法,包装成一个超级简单的工具提供给大家?
这是我开发TextGrocery的初衷。

设计原则

幸好,我不是没有参照系。LibShortText打下了一个很好的基础,不仅提供了足够简单的API,而且背后的原理也有扎实的实验数据支撑(不过滤停用词,不过滤词性,使用线性核)。当然,LibShortText也有显著的缺陷:

不支持中文分词,这导致其在中文语料上的表现一塌糊涂

Analyzer模块不仅多余,而且输出全部为无格式文本,不可爱

如果不是专业的算法人员,默认参数永远是最好的选择,所以参数的自定义并不是很必要

中间数据的保存全部以文件格式,每次的训练和测试留下一些陌生文件,而且小规模的训练和测试用列表对象会更合适

代码很不Pythonic,也不支持Pypi的简便安装方式

总而言之,LibShorText虽然有引以为傲的技术,但对技术的使用者来说是不友好的。而TextGrocery希望把LibShortText变得更友好一些。

TextGrocery,是一个怎样的杂货铺?

引入结巴分词作为内置的默认分词器

精简LibShortText的代码,去掉Analyzer和参数自定义模块,修复bug,改善PEP8

训练和测试的文本都支持列表传入

提供Pypi的安装方式

示例代码
python>>> 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")
# 自定义分词器
>>> custom_grocery = Grocery("custom", custom_tokenize=list)
安装
pip install tgrocery

让文本分类更爽一些吧!

GitHub传送门 --> TextGrocery

未完成

训练时仍然要耗费写入.svm的文件再读取的额外I/O时间,下一步希望改成直接通过内存传递

LibLinear的输出实际上可以看成一个dict,包含一个样本对所有类别的决策变量,目前仅把值最高的类别取了出来,也许有朋友会想用这个决策变量做一些更有趣的事情。

0.2版本会提供过程数据和结果数据的统计工具

盗火者
  

普罗米修斯是希腊神话中的一个人物,他从太阳神阿波罗那里盗走火种送给人类,给人类带来的光明,他因此而受到宙斯的处罚,被绑在高加索山,每日忍受风吹日晒和鹫鹰啄食。

希望会有志同道合的同学加入到「盗火者」的行列,一起来让机器学习更简单!

  

来自:建造者说

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45338.html

相关文章

  • 15.卫星图片分类

    摘要:我们这次用的数据集不再是中内置的数据集,而是自定义的数据集,我们先看一下我们的数据所有的数据都存储在这个文件夹中文件夹中有与这两个子文件夹分别存放的是飞机与湖泊的卫星图像目录导入库导入库导入库数据处理数据处理数据处理获取 我们这次用的数据集不再是tensorflow中内置的数据集,而是自定义...

    singerye 评论0 收藏0
  • Python爬虫教学(写给入门的新手) 一

    摘要:在不懂和等协议的情况下,我直接打个比方来解释一下什么是请求,以浏览器为例,人在浏览器输入,然后敲击键,直到页面出现,整个过程,我们可以抽象为我们向百度服务器发起的一次请求。更专业,更详细的解释,自己去百度学习吧。 前言   刚学完python基础,想学习爬虫的新手,这里有你想要的东西。  本文着重点在于教新手如何学习爬虫,并且会以外行人的思维进行形象地讲解。最近我一兄弟想学,我就想写个...

    zone 评论0 收藏0
  • LSTM分类相关

    摘要:而检验模型用到的原材料,包括薛云老师提供的蒙牛牛奶的评论,以及从网络购买的某款手机的评论数据见附件。不同行业某些词语的词频会有比较大的差别,而这些词有可能是情感分类的关键词之一。这是由于文本情感分类的本质复杂性所致的。 文本情感分类--传统模型(转) showImg(https://segmentfault.com/img/bVKjWF?w=2192&h=534); 传统的基于情感词典...

    MartinHan 评论0 收藏0
  • 如何选择开源的机器学习框架?

    摘要:摘要机器学习的快速发展,使得市面上出现了很多开源框架,到底如何选择正确的框架呢今天我们就来谈一谈。在此,我们将讨论如何针对不同的用例选取开源的机器学习工具。为什么要选择机器学习框架呢使用开源工具的好处不仅仅在于其可用性。 摘要: 机器学习的快速发展,使得市面上出现了很多开源框架,到底如何选择正确的框架呢?今天我们就来谈一谈。 开源是创新和科技快速发展的核心。在此,我们将讨论如何针对不同...

    niceforbear 评论0 收藏0
  • 神经网络和深度学习

    摘要:对于监督学习数据的分类,分为结构化数据和非结构化数据结构化数据指的是数据库中的数据,可以存储在数据库中。这里的应用是可以结合的,可以在神经网络中同时应用结构话数据和非结构化数据。 课程是吴恩达的深度学习专题,分为五个部分: 神经网络和深度学习 改善深层神经网络:超参数调试、正则化以及优化 结构化机器学习项目 卷积神经网络 序列模型 我会以这五个部分为题记五份笔记,如果有人在看,欢...

    TANKING 评论0 收藏0

发表评论

0条评论

aaron

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<