NeuralNLP是腾讯广告(Tencent Marketing Solution,TMS)(https://e.qq.com/)数据算法团队搭建的一个基于PyTorch的深度学习NLP公共实验平台,主要涵盖文本分类、序列标注、语义匹配、BERT微调和文本生成等,目前已经广泛应用于腾讯广告业务文本相关的需求场景中,如广告定向、相关性计算、LookAlike、动态创意、点击率/转化率预估等。
NeuralClassifier是NeuralNLP的一个子项目,是一款基于PyTorch开发的深度学习文本分类工具。NeuralClassifier旨在通过良好的架构设计,集成业界主流的文本分类模型和各种优化机制,支持尽可能广泛的文本分类任务,如多标签分类,层次分类等,并方便用户在工具基础上自定义模型和进行更灵活的扩展。
NeuralClassifier的功能汇总如下:
- 支持大部分的分类任务:二分类、多分类、多标签分类、层次分类
- 支持众多模型:主流模型如FastText、TextCNN、TextRNN(Bi-GRU/LSTM)等,还支持最新的state-of-the-art模型,如VDCNN、DPCNN、Region Embedding、AttentiveConvNet、DRNN、Transformer等,并方便支持用户自定义模型结构
- 支持主流机制,如Attention、Pre-trained embedding等
- 支持数据输入的多线程加速读取、变长和定长输入、词和字符级输入、自定义输入等
- 支持多种损失函数,如Softmax/Sigmoid交叉熵、Focal Loss等
与业界工具对比
NeuralClassifier的一个特色是提供了对于层次多标签分类(Hierarchical Multi-label Classification, HMC)任务的支持,同时集成了非常多的文本分类模型。层次多标签分类的神经网络模型目前业界还主要针对特定的模型结构,并没有集成到一起的比较好用的工具。与业界层次多标签分类工具对比情况如下表所示。
架构设计
NeuralClassifier采用分层的架构设计,从下到上依次为:input layer、embedding layer、encoder layer、output layer。input层负责读取文本输入并做格式处理,embedding层对文本进行embedding处理,并在encoder层进行编码表示。output层负责对encoder层输出的信息做基于目标分类任务的转换,如二分类、多分类、层次分类等。用户可以通过一个配置文件方便的配置不同层的各种模型和Features。
评测效果
我们选取了业界主流的两个层次多标签分类数据集:RCV1和Yelp,并在其上对比了和SOTA的效果,结果表明根据NeuralClassifier提供的丰富模型和Features,可以取得和SOTA相当的效果。此外,我们还对比了NeuralClassifier提供的不同的文本分类模型(Text encoder)的效果,以及层次分类和普通单层分类的效果。
0. Dataset
- RCV1: Lewis et al., 2004
- Yelp: https://www.yelp.com/dataset/challenge
1. Compare with SOTA
- HR-DGCNN (Peng et al., 2018)
- HMCN (Wehrmann et al., 2018)
2. Different text encoders
- 基于NeuralClassifier不同text encoders的结果
- 除了encoder层,其他层均一致:使用word输入、预训练embedding、Hierarchical Multi-label Loss
3. Hierarchical vs Flat
- 基于NeuralClassifier的层次和单层分类的对比结果
- 除了encoder和output层,其他层均一致:使用word输入、预训练embedding
真情期待开源贡献
我们期望NeuralClassifier工具能够帮助业界的同仁快速的搭建深度学习文本分类应用,也希望我们实现的功能,尤其是对于多标签分类和层次分类,能够有助于业界相关领域的应用。深度学习的自然语言处理技术发展非常迅速,神经网络的模型和实现方式也很灵活,NeuralClassifier期待大家共同完善。
NeuralClassifier详细的介绍也可以参考我们发表在ACL2019的System demonstration paper: NeuralClassifier: An Open-source Neural Hierarchical Multi-label Text Classification Toolkit.
NeuralClassifier 正式开源
Github 开源地址:
https://github.com/Tencent/NeuralNLP-NeuralClassifier
(点击文末阅读原文直接访问)
请给 NeuralClassifier一个 Star !
欢迎提出你的 issue 和 PR!
NeuralClassifier 国内镜像地址:
https://git.code.tencent.com/Tencent_Open_Source/NeuralNLP-NeuralClassifier
腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像