【开源公告】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

相关文章

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1