腾讯最新开源深度学习文本分类工具NeuralClassifier

1 简介

NeuralClassifier是一款基于PyTorch开发的深度学习文本分类工具,其设计初衷是为了快速建立层次多标签分类(Hierarchical Multi-label Classification,HMC)神经网络模型 。NeuralClassifier属于腾讯NeuralNLP的子项,而NeuralNLP是腾讯广告数据算法团队搭建的深度学习NLP公共实验平台,主要涵盖文本分类、序列标注、语义匹配、BERT微调和文本生成等。

NeuralNLP项目已在腾讯广告众多的需求场景中发挥作用:微信朋友圈的横幅广告、QQ与QQ空间、腾讯视频、安卓用户的应用宝、手机QQ浏览器、腾讯新闻、天天快报、腾讯体育。通过广告定向、相关性计算、Lookalike相似人群拓展、动态创意、点击率/转化率预估等技术,可以精准锁定目标人群进行广告投放。

NeuralClassifier不久前在Github上正式开源,以下是开源地址:
https://github.com/Tencent/NeuralNLP-NeuralClassifier

2 什么是HMC?

NeuralClassifier支持大部分的分类任务,包括二分类、多分类、多标签分类、层次分类,而层次多标签分类(HMC)则是NeuralClassifier的一大特色。

2.1 二分类(Binary classification)

二分类问题是一个非常基础且重要的课题。现实生活中有很多实际的二分类场景,如对于借贷问题,我们会根据某个人的收入、存款、职业、年龄等因素进行分析,判断是否进行借贷;对于一封邮件,根据邮件内容判断该邮件是否属于垃圾邮件。

简而言之,有两个类别,但每个实例只分配一个,这些问题被称为二分类。

2.2 多分类(Multi-class classification)

多分类是相对于二分类来定义的,比如一本书可以被分类为小说、杂文或诗歌,一条新闻报道可以涉及经济、法律或政治。此外,Sklearn数据库中的鸢尾花卉数据集(Iris)、手写数字识别数据集(Mnist)同样也是典型的多分类场景。

简而言之,有多个类别,但每个实例只分配一个,这些问题被称为多分类。
在这里插入图片描述
图例:二分类与多分类

2.3 多标签分类(Multi-label classification)

多标签分类是更加general的一种情况了,它说为什么一个对象的标签只能有1个呢?为什么一部电影不是喜剧就是爱情剧呢?难道我不能训练一个人工智能,它能告诉我这部电影既有喜剧成分又有爱情成分?

有别于多分类,多标签分类中每个标签不是互斥的;每个实例都可以使用多个类别进行分配。因此,这些问题被称为多标签分类。
在这里插入图片描述

图例:多分类与多标签分类对比

2.4 层次多标签分类(Hierarchical Multi-label Classification,HMC)

HMC是最具挑战性的机器学习任务之一。HMC可以看作是多标签分类的特殊情况:不同标签并非各自独立,而是以等级划分的,类别间存在一个树状的结构;如果一个对象属于某个子标签,那么它自然就隶属于对应的父标签。同时,每个对象可以属于多个类,因此每个对象都可以关联到类层次结构(即树状结构)的多个不同路径。

HMC典型的应用领域是文本分类问题。传统的文本分类任务中,类别间不具有彼此包含或彼此重叠等功能复杂关系;即使有一些关系,分类算法也不作考虑。而HMC则会分析两个类别的外延是否存在包含关系:比如“水果”类和“苹果”类,在树状层次结构中就属于父类与子类。

此外,目前HMC在图像标注、蛋白质功能预测等问题中也有应用。随着HMC算法的不断改进,出现了诸如HMCN(Hierarchical Multi-label Classification Networks)、HR-DGCNN(Large-Scale Hierarchical Text Classification with Recursively Regularized Deep Graph-CNN)的改进算法,将来有望解决更多领域的实际问题。

较齐全的功能

在目前业界的分类工具中,层次多标签分类的神经网络模型往往主要针对特定的模型结构,缺乏一个集成的工具。NeuralClassifier的出现有望填补这一空缺。

在这里插入图片描述

2.5 支持的文本编码器

  • TextCNN (Kim, 2014)
  • RCNN (Lai et al., 2015)
  • TextRNN (Liu et al., 2016)
  • FastText (Joulin et al., 2016)
  • VDCNN (Conneau et al., 2016)
  • DPCNN (Johnson and Zhang, 2017)
  • AttentiveConvNet (Yin and Schutze, 2017)
  • DRNN (Wang, 2018)
  • Region embedding (Qiao et al., 2018)
  • Transformer encoder (Vaswani et al., 2017)
  • Star-Transformer encoder (Guo et al., 2019)
    系统环境需求
    Python 3
    PyTorch 0.4或更高版本
    Numpy 1.14.3或更高版本

2.6 系统架构

在这里插入图片描述
NeuralClassifier采用分层的架构设计,从下到上依次为:

输入层(input layer):读取文本输入并做格式处理
嵌入层(embedding layer):将文本输入转换为词向量
编码层(encoder layer):对嵌入层输出的信息进行编码表示
输出层(output layer):对编码层输出的信息做基于目标分类任务的转换,确定是二分类、多分类、多标签分类还是层次多标签分类

用户可以通过一个配置文件方便地配置不同层的各种模型和Features。

2.7 分类器表现评估

项目团队选取了业界主流的两个层次多标签分类数据集:RCV1和Yelp,通过对比SOTA(State-of-the-art, 当前业界最佳性能算法)的表现,结果表明NeuralClassifier可以取得与SOTA相当的效果。
0.数据集
在这里插入图片描述

1.与SOTA的对比

在这里插入图片描述

2.使用不同的文本分类模型(Text Encoder)

在这里插入图片描述

3.层次分类Vs单层分类
在这里插入图片描述

3 实战

  1. 使用的开发环境是 intelli ide,原因是该编译器既可以写java、scala程序,还能写python程序。

必须的包:

torch_nightly>=1.0.0.dev20190325 numpy>=1.16.2 torch>=1.0.1.post2。

安装torch:1.先确保安装python 3.X 64位;

  1. 然后输入一下命令。因为先是用本地电脑跑的,没有GPU,所以安装的NONE CUDA版本。

pip3 install https://download.pytorch.org/whl/cpu/torch-1.1.0-cp37-cp37m-win_amd64.whl
pip3 install https://download.pytorch.org/whl/cpu/torchvision-0.3.0-cp37-cp37m-win_amd64.whl

支持的任务:

二分类文本任务、多分类文本任务、多标签文本分类和多层级多标签文本分类任务。

这里我们的一个title对应多个标签,所以应该是多标签文本分类任务。

支持的文本编码器:

  1. 系统架构:

输入:语句(必须),关键词和主题(可选项)

输出:类别

工程使用:

整个文件目录大概是这样的:
在这里插入图片描述

conf:里面包含train.json文件,主要是相关的配置文件(输入输入目录、模型超参数等)。

data:数据目录,训练、测试、验证数据集。

  1. 命令

1.模型训练:

python train.py conf/train.json

训练相关的信息会输出到 log.logger_file日志文件中。

2.模型评估:

python eval.py conf/train.json

if eval.is_flat = false, hierarchical evaluation will be outputted.
eval.model_dir is the model to evaluate.
data.test_json_files is the input text file to evaluate.
模型评估的信息会输出到eval.dir。
输入的数据格式
JSON example:

{
“doc_label”: [“Computer–MachineLearning–DeepLearning”, “Neuro–ComputationalNeuro”],
“doc_token”: [“I”, “love”, “deep”, “learning”],
“doc_keyword”: [“deep learning”],
“doc_topic”: [“AI”, “Machine learning”]
}
“doc_keyword” and “doc_topic” are optional.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值