前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitHub 项目推荐 | 多层多标签文本分类

GitHub 项目推荐 | 多层多标签文本分类

作者头像
机器学习之禅
发布2022-07-11 15:13:23
2.6K0
发布2022-07-11 15:13:23
举报
文章被收录于专栏:机器学习之禅机器学习之禅

文本分类或者说文本打标是一个非常非常非常常见的任务,尤其是做内容的公司,当然做商品的公司也是需要的,如何能够快速准确的实现一个文本多分类任务,今天就把这个项目分享一下。

今天我给大家推荐一个多层多标签文本分类工具包--NeuralClassifier。它是腾讯开源的文本分类项目,是可以快速实现分层多标签分类任务的神经模型。

NeuralClassifier 当前提供了多种文本编码器,例如:FastText,TextCNN,TextRNN,RCNN,VDCNN,DPCNN,DRNN,AttentiveConvNet 和 Transformer 等。

我们可以使用 NeuralClassifier 执行以下分类任务。

  • Binary-class text classifcation:二分类任务
  • Multi-class text classification:多分类任务
  • Multi-label text classification:多标签任务
  • Hiearchical (multi-label) text classification (HMC):多层多标签任务

项目的整体框架

项目的整体架构如下图所示:

先看最底层的输入层,这里可以是词、词的组合、字符以及字符的组合。另外,关键词和主题特征也可以加入输入特征。

然后是嵌入层,可以使用不同的 Embedding 方式,包括预训练、位置、随机编码等。

接着是编码层,这层可以用不同的算法来实现。

最后是输出层,根据不同的任务类型输出不同的结果。我们重点针对第四个任务来讲解下。

多层多标签的任务

在实际场景中,我们经常遇到的不是单纯的多分类问题,而是一个比较复杂的分类体系。对应本项目的分类体系文件位于 data/rcv1.taxonomy,以树的形式展示。我们来看下这个文件吧。

第一行表示存在四个一级分类,分别为 CCAT、ECAT、GCAT、MCAT。第二行代表 CCAT 下拥有的二级分类。第三行表示 C15 拥有的三级分类,以此类推。

我们把这些数据整理成表格会更清楚,以 CCAT 分类为例:

一级分类

二级分类

三级分类

四级分类

CCAT

C11

C12

C13

C14

C15

C151

C1511

C152

C16

C17

C171

C172

C173

我们再来看下本项目的训练集:

{"doc_label": ["C15", "C152", "CCAT"], "doc_token": ["Year", "June", "in", "billions", "yen", "unless", "specified", "LATEST", "ACTUAL", "Parent", "FORECAST", "YEARAGO", "Sales", "Current", "mln", "Net", "mln", "mln", "EPS", "yen", "yen", "Ord", "div", "yen", "yen", "NOTE", "Snow", "Brand", "Seed", "producer", "seller", "pasture", "feed", "crop", "seeds", "seedlings"], "doc_keyword": [], "doc_topic": []}

可以看到,多层多标签的任务会将每条数据都给到这条数据的标签以及标签的父级标签。

接下来,我们就来看看该项目是如何真正运行使用的。

开发环境

  • Python 3
  • PyTorch 0.4+
  • Numpy 1.14.3+

模型训练

python train.py conf/train.json

conf/train.json 里包含任务配置信息,如果是多层多标签任务,配置多标签任务:("label_type": "multi_label"),具有层级结构 ("hierarchical": true)。配置里可以选择你要使用的算法模型,FastText、TextCNN、TextRNN、TextRCNN、DRNN、VDCNN、DPCNN、AttentiveConvNet、Transformer 都可以。比如要使用 FastText:("model_name": "TextCNN")。

模型验证和预测

python eval.py conf/train.json

python predict.py conf/train.json data/predict.json

最后我们展示下本项目的效果表现如何,如下表:

Text Encoders

Hierarchical

Flat

Micro-F1

Macro-F1

Micro-F1

Macro-F1

TextCNN

0.7717

0.5246

0.7367

0.4224

TextRNN

0.8152

0.5458

0.7546

0.4505

RCNN

0.8313

0.6047

0.7955

0.5123

FastText

0.6887

0.2701

0.6865

0.2816

DRNN

0.7846

0.5147

0.7506

0.445

DPCNN

0.822

0.5609

0.7423

0.4261

VDCNN

0.7263

0.386

0.711

0.3593

AttentiveConvNet

0.7533

0.4373

0.7511

0.4286

RegionEmbedding

0.778

0.4888

0.764

0.4617

Transformer

0.7603

0.4274

0.7602

0.4339

Star-Transformer

0.7668

0.484

0.7618

0.4745

最最后,给大家附加上项目的 GitHub 地址:https://github.com/Tencent/NeuralNLP-NeuralClassifier,感兴趣的小伙伴快去学习吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习之禅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档