TextClf:简单易上手的基于pytorch/sklearn的文本分类工具

TextClf是一个文本分类工具,支持机器学习和深度学习模型,如逻辑回归、TextCNN等。通过配置文件,用户能轻松调整参数、搭建模型,专注于数据特性的分析和优化。工具包含预处理、训练和测试阶段,具有清晰的代码结构,适合初学者和高级用户。
摘要由CSDN通过智能技术生成

文本分类是自然语言处理中最常见的任务之一。从邮箱应用中的垃圾邮件识别到搜索引擎中的query意图判别,
再到商品评论中的情感分析, 这些其实都是我们身边对文本分类的常见需求。
为了帮助大家更好的应对经常遇到的文本分类场景,我最近开发了一个工具箱TextClf,使用TextClf
你可以通过生成和修改配置文件,快速尝试多种分类算法模型、调整参数、搭建baseline,
有了这个工具箱,你可以从模型搭建、模型训练、模型测试等一系列复杂的实现中脱离出来, 让你能有更多精力关注于数据本身的特点,做针对性的改进优化。

如果你是一个文本分类任务的初学者,那么TextClf的简单易用会让你很快上手。如果你是更高级的用户,
想尝试更多新奇的想法,比如搭建一个分类模型或者是使用你自己设计的训练方式),那么你也可以借助TextClf
TextClf基础上进行开发,它会帮你省下很多麻烦的工作。

TextClf的github主页在
https://github.com/luopeixiang/textclf
想直接看代码的同学可以移步GitHub。

下面我将主要通过以下几点来介绍TextClf

TextClf简介

概览

如前言所述,TextClf 是一个面向文本分类场景的工具箱,它的目标是可以通过配置文件快速尝试多种分类算法模型、调整参数、搭建baseline,从而让使用者能有更多精力关注于数据本身的特点,做针对性改进优化。

TextClf有以下这些特性:

  • 同时支持机器学习模型如逻辑回归、线性向量机与深度学习模型如TextCNN、TextRNN、TextRCNN、DRNN、DPCNN、Bert等等。
  • 支持多种优化方法,如AdamAdamWAdamaxRMSprop等等
  • 支持多种学习率调整的方式,如ReduceLROnPlateauStepLRMultiStepLR
  • 支持多种损失函数,如CrossEntropyLossCrossEntropyLoss with label smoothingFocalLoss
  • 可以通过和程序交互生成配置,再通过修改配置文件快速调整参数。
  • 在训练深度学习模型时,支持使用对embedding层和classifier层分别使用不同的学习率进行训练
  • 支持从断点(checkpoint)重新训练
  • 具有清晰的代码结构,可以让你很方便的加入自己的模型,使用textclf,你可以不用去关注优化方法、数据加载等方面,可以把更多精力放在模型实现上。

与其他文本分类框架 NeuralClassifier 的比较:

  • NeuralClassifier不支持机器学习模型,也不支持Bert/Xlnet等深度的预训练模型。

  • TextClf会比NeuralClassifier对新手更加友好,清晰的代码结构也会使得你能方便地对它进行拓展。

  • 特别地,对于深度学习模型,TextClf将其看成两个部分,Embedding层和Classifier层。

    Embedding层可以是随机初始化的词向量,也可以是预训练好的静态词向量(word2vec、glove、fasttext),也可以是动态词向量如BertXlnet等等。

    Classifier层可以是MLP,CNN,将来也会支持RCNN,RNN with attention等各种模型。

    通过将embedding层和classifier层分开,在配置深度学习模型时,我们可以选择对embedding层和classifier层进行排列组合,比如Bert embedding + CNNword2vec + RCNN 等等。

    这样,通过比较少的代码实现,textclf就可以涵盖更多的模型组合的可能。

系统设计思路

TextClf将文本分类的流程看成预处理、模型训练、模型测试三个阶段。

预处理阶段做的事情主要是:

  • 读入原始数据,进行分词,构建词典
  • 分析标签分布等数据特点
  • 保存成二进制的形式方便快速读入

数据经过预处理之后,我们就可以在上面训练各种模型、比较模型的效果。

模型训练阶段负责的是:

  • 读入预处理过的数据
  • 根据配置初始化模型、优化器等训练模型必需的因素
  • 训练模型,根据需要最优模型

测试阶段的功能主要是:

  • 加载训练阶段保存的模型进行测试
  • 支持使用文件输入或者终端输入两种方式进行测试

为了方便地对预处理、模型训练、模型测试阶段进行控制,TextClf使用了json文件来对相关的参数(如预处理中指定原始文件的路径、模型训练阶段指定模型参数、优化器参数等等)进行配置。运行的时候,只要指定配置文件,TextClf就会根据文件中的参数完成预处理、训练或者测试等工作,详情可参见 快速开始 部分。

目录结构

textclf源代码目录下有六个子目录和两个文件,每项的作用如下所示:

├── config		# 包括预处理、模型训练、模型测试的各种参数及其默认设置
├── data		# 数据预处理、数据加载的代码
├── models		# 主要包括深度学习模型的实现
├── tester		# 负责加载模型进行测试
├── __init__.py # 模块的初始化文件
├── main.py		# textclf的接口文件,运行textclf会调用该文件中的main函数
├── trainer		# 负责模型的训练
└── utils		# 包含各种工具函数

安装

依赖环境:python >=3.6

使用pip安装:

pip install textclf

上述命令首先将代码clone到本地, 然后切换到项目目录,使用pip安装textclf及其依赖。
之后就可以使用textclf了!

快速开始

下面我们看一下如何使用textclf训练模型进行文本分类。

在目录examples/toutiao 下有以下文件:

  3900行 train.csv
   600行 valid.csv
   600行 test.csv
  5100行 total

这些数据来自
今日头条新闻分类数据集
在这里用作演示。

文件的格式如下:

下周一(5.7日)手上持有这些股的要小心   news_
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值