【开源公告】NeuralNLP-NeuralClassifier - 深度学习文本分类工具

本文主要是介绍【开源公告】NeuralNLP-NeuralClassifier - 深度学习文本分类工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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)任务的支持,同时集成了非常多的文本分类模型。层次多标签分类的神经网络模型目前业界还主要针对特定的模型结构,并没有集成到一起的比较好用的工具。与业界层次多标签分类工具对比情况如下表所示。

640?wx_fmt=png

架构设计

NeuralClassifier采用分层的架构设计,从下到上依次为:input layer、embedding layer、encoder layer、output layer。input层负责读取文本输入并做格式处理,embedding层对文本进行embedding处理,并在encoder层进行编码表示。output层负责对encoder层输出的信息做基于目标分类任务的转换,如二分类、多分类、层次分类等。用户可以通过一个配置文件方便的配置不同层的各种模型和Features。

640?wx_fmt=png

评测效果

我们选取了业界主流的两个层次多标签分类数据集:RCV1和Yelp,并在其上对比了和SOTA的效果,结果表明根据NeuralClassifier提供的丰富模型和Features,可以取得和SOTA相当的效果。此外,我们还对比了NeuralClassifier提供的不同的文本分类模型(Text encoder)的效果,以及层次分类和普通单层分类的效果。

0. Dataset

640?wx_fmt=png

  • RCV1: Lewis et al., 2004

  • Yelp: https://www.yelp.com/dataset/challenge

1. Compare with SOTA

640?wx_fmt=png

  • HR-DGCNN (Peng et al., 2018)

  • HMCN (Wehrmann et al., 2018)

2. Different text encoders

640?wx_fmt=png

  • 基于NeuralClassifier不同text encoders的结果

  • 除了encoder层,其他层均一致:使用word输入、预训练embedding、Hierarchical Multi-label Loss

3. Hierarchical vs Flat

640?wx_fmt=png

  • 基于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

640?wx_fmt=png

腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像

640?wx_fmt=jpeg

这篇关于【开源公告】NeuralNLP-NeuralClassifier - 深度学习文本分类工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839743

相关文章

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1