0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何为文本分类任务选择正确的模型,这里有一个完整流程图!

DPVg_AI_era 来源:未知 作者:李倩 2018-07-26 10:02 次阅读

谷歌官方推出“文本分类”指南教程。为了最大限度地简化选择文本分类模型的过程,谷歌在进行大约450K的文本分类实验后,总结出一个通用的“模型选择算法”,并附上一个完整的流程图,非常实用。

文本分类(Text classification)算法是大规模处理文本数据的各种软件系统的核心。比如,电子邮件软件使用文本分类来确定受到的邮件是发送到收件箱还是过滤到垃圾邮件文件夹;讨论论坛使用文本分类来确定用户评论是否应该标记为不当。

下面是两个主题分类( topic classification)的例子,任务是将文本文档归类为预定义的一组主题。多数主题分类问题要基于文本中的关键字。

主题分类被用于标记收到的垃圾邮件,这些邮件被过滤到垃圾邮件文件夹中

另一种常见的文本分类是情感分析(sentiment analysis),其目的是识别文本内容的极性(polarity):它所表达的观点的类型。这可以采用二进制的“喜欢/不喜欢”来评级,或者使用更精细的一组选项,比如从1颗星星到5颗星星的评级。情感分析的例子包括分析Twitter上的帖子,以确定人们是否喜欢黑豹电影,或者从沃尔玛的评论中推断普通大众对耐克新品牌的看法。

这个指南将教你一些解决文本分类问题的关键的机器学习最佳实践。你将学习:

使用机器学习解决文本分类问题的高级、端到端工作流(workflow)

如何为文本分类问题选择合适的模型

如何使用TensorFlow实现你选择的模型

文本分类的workflow

以下是解决机器学习问题的workflow

步骤1:收集数据

步骤2:探索你的数据

步骤2.5:选择一个模型*

步骤3:准备数据

步骤4:构建、训练和评估你的模型

步骤5:调优超参数

步骤6:部署模型

解决机器学习问题的workflow

【注】 “选择模型”并不是传统机器学习workflow的正式步骤;但是,为你的问题选择合适的模型是一项关键的任务,它可以在接下来的步骤中明确并简化工作。

谷歌机器学习速成课程的《文本分类》指南详细解释了每个步骤,以及如何用文本数据实现这些步骤。由于篇幅限制,本文在涵盖重要的最佳实践和经验法则的基础上,重点介绍步骤2.5:如何根据数据集的统计结构选择正确的模型,并提供一个完整的流程图。

步骤1:收集数据

收集数据是解决任何有监督的机器学习问题的最重要步骤。构成它的数据集有多好,你的文本分类器就有多好。

如果你没有想要解决的特定问题,只是对探索文本分类感兴趣,那么有大量可用的开源数据集。下面的GitHub repo就足以满足你的需求:

https://github.com/google/eng-edu/blob/master/ml/guides/text_classification/load_data.py

另一方面,如果你正在处理一个特定的问题,则需要收集必要的数据。许多组织提供用于访问其数据的公共API——例如,Twitter API或NY Times API,你可以利用这些来找到想要的数据。

以下是收集数据时需要记住的一些重要事项:

如果你使用的是公共API,请在使用之前了解API的局限性。例如,一些API对查询速度设置了限制。

训练示例(在本指南的其余部分称为示例)越多越好。这将有助于模型更好地泛化。

确保每个类或主题的样本数量不会过度失衡。也就是说,每个类都应该有相当数量的样本。

确保示例充分覆盖了可能的输入空间,而不仅仅覆盖常见的情况。

在本指南中,我们将使用IMDb的电影评论数据集来说明这个workflow。这个数据集收集了人们在IMDb网站上发布的电影评论,以及相应的标签(“positive”或“negative”),表示评论者是否喜欢这部电影。这是情绪分析问题的一个典型例子。

步骤2:探索你的数据

加载数据集

检查数据

收集关键指标

构建和训练模型只是工作流程的一部分。事先了解数据的特征能够帮助你构建更好的模型。这不仅仅意味着获得更高的准确度,也意味着需要较少的训练数据,或者更少的计算资源。

步骤2.5:选择一个模型

到这一步,我们已经收集了数据集,并深入了解了数据的关键特性。接下来,根据我们在步骤2中收集的指标,我们应该考虑应该使用哪种分类模型。这意味着提出问题,例如“如何将文本数据呈现给期望输入数字的算法?”(这叫做数据预处理和矢量化),“我们应该使用什么类型的模型?”,“我们的模型应该使用什么配置参数?”,等等。

经过数十年的研究,我们已经能够访问大量的数据预处理和模型配置选项。然而,大量可供选择的可行方案大大增加了手头的特定问题的复杂性和范围。考虑到最好的选择可能并不明显,一个想当然的解决方案是尝试尽每一种可能的选择,通过直觉排除一些选择。但是,这样做成本是非常昂贵的。

在本指南中,我们试图最大限度地简化选择文本分类模型的过程。对于给定的数据集,我们的目标是找到在最小化训练所需的计算时间的同时,实现接近最大精度的算法。我们使用12个数据集针对不同类型的问题(尤其是情感分析和主题分类问题)进行了大量(~450K)实验,将不同的数据预处理技术和不同的模型架构交替用于每个数据集。这有助于我们找到影响最佳选择的数据集参数。

下面的模型选择算法(model selection algorithm)和流程图是我们的大量实验的总结。

数据准备和模型构建算法

1. 计算样本的数量/每个样本中单词的数量这个比率。

2. 如果这个比率小于1500,那么将文本标记为n-grams并使用简单的MLP模型进行分类(下面的流程图的左边分支):

a. 将样本分解成word n-grams;把n-grams转换成向量。

b. 给向量的重要性打分,然后根据分支选择前20K。

c. 构建一个MLP模型。

3. 如果比率大于1500,则将文本标记为序列,并使用sepCNN模型进行分类(流程图右边分支):

a. 将样本分解成单词;根据频率选择前20K的单词。

b. 将样本转换为单词序列向量。

c. 如果原始样本数/每个样本的单词数这个比率小于15K,则使用微调的预训练sepCNN模型,可能得到最优的结果。

4. 用不同的超参数值来测量模型的性能,以找到数据集的最佳模型配置。

在下面的流程图中,黄色框表示数据和模型准备过程。灰色框和绿色框表示我们为每个流程考虑的选项。绿色框表示我们对每个流程的推荐选项。

你可以用这个流程图作为你的第一个实验的起点,因为它可以让你在低计算成本下获得良好的准确度。你可以在后面的迭代中继续改进初始模型。

文本分类流程图(点击可放大查看)

此流程图回答了两个关键问题:

我们应该使用哪种学习算法或模型?

我们应该如何准备数据,才能有效地学习文本和标签之间的关系?

第二个问题的答案取决于第一个问题的答案;我们预处理数据的方式将取决于我们选择的模型。模型可以大致分为两类:使用单词排序信息的模型(序列模型),以及仅将文本视为单词的“bags”(sets)的模型(n-gram模型)。

序列模型包括卷积神经网络(CNN),递归神经网络(RNN)及其变体。 n-gram模型包括逻辑回归,简单多层感知机(MLP或全连接神经网络),梯度提升树(gradient boosted trees)和支持向量机(SVM)。

在实验中,我们观察到“样本数”(S)与“每个样本的单词数”(W)的比率与模型的性能具有相关性。

当该比率的值很小(<1500)时,以n-gram作为输入的小型多层感知机(选项A)表现得更好,或者说至少与序列模型一样好。 MLP易于定义和理解,而且比序列模型花费的计算时间更少。

当此比率的值很大(> = 1500)时,我们就使用序列模型(选项B)。在接下来的步骤中,你可以根据这个比率值的大小,直接阅读所选模型的相关章节。

对于我们的IMDb评论数据集,样本数/每个样本的单词数的比值在144以下。这意味着我们将创建一个MLP模型。

步骤3:准备数据

N-gram向量[选项A]

序列向量[选项B]

标签的向量化

步骤4:构建,训练和评估模型

构建最后一层

构建n-gram模型[选项A]

构建序列模型[选项B]

训练模型

步骤5:调优超参数

步骤6:部署模型

结论

文本分类是机器学习中的基本问题,在各种产品应用中均有涉及。在本指南中,我们将文本分类的workflow分解为几个步骤。对于每个步骤,我们都根据特定数据集的特征,建议自定义的实现方法。尤其是,我们根据样本数量与每个样本中的单词数量的比值,来建议你使用哪一种模型,从而能够更快地让模型接近最佳性能。其他的步骤都是基于模型选择这个步骤的。遵循这个指南中的建议,参考附录中的代码和流程图将有助于你的学习和理解,并快速获取文本分类问题的解决方案。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    705

    浏览量

    41245
  • 文本分类
    +关注

    关注

    0

    文章

    18

    浏览量

    7259
  • 机器学习
    +关注

    关注

    66

    文章

    8104

    浏览量

    130540

原文标题:谷歌做了45万次不同类型的文本分类后,总结出一个通用的“模型选择算法”

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    visio画程序流程图

    ”更改字体的各种格式,例如字体、字号、颜色。 (3)选择“常用工具栏”连接线工具,将各个图形符号连接起来。 (4)完毕。 二、制作分支结构的流程图(见图2) 例2:编写加法练习程
    发表于 07-03 00:19

    怎样绘制流程图

    此操作。在输入内容的同时,右面的工具栏可以对文本样式,背景颜色,以及排列方式进行设置,使用很方便。 5.绘制完成的流程图需要对添加的图形以及线段文本内容进行检查,在面板中的编辑选项中选择
    发表于 01-15 11:38

    pyhanlp文本分类与情感分析

    关系如下:训练训练指的是,利用给定训练集寻找能描述这种语言现象的模型的过程。开发者只需调用train接口即可,但在实现中,许多细节。分词目前,本系统中的分词器接口
    发表于 02-20 15:37

    TensorFlow的CNN文本分类

    在TensorFlow中实现CNN进行文本分类(译)
    发表于 10-31 09:27

    NLPIR平台在文本分类方面的技术解析

    文本分类问题就是将篇文档归入预先定义的几个类别中的或几个,而文本的自动分类则是使用计算机程
    发表于 11-18 17:46

    基于GA和信息熵的文本分类规则抽取方法

    文本分类文本数据挖掘中一个非常重要的技术,已经被广泛地应用于信息管理、搜索引擎、推荐系统等多个领域。现有的文本分类方法,大多是基于向量空间模型的算法。这
    发表于 06-03 09:22 26次下载

    基于PLSA主题模型的多标记文本分类_蒋铭初

    基于PLSA主题模型的多标记文本分类_蒋铭初
    发表于 01-08 10:40 0次下载

    结合BERT模型的中文文本分类算法

    针对现有中文短文夲分类算法通常存在特征稀疏、用词不规范和数据海量等问题,提出一种基于Transformer的双向编码器表示(BERT)的中文短文本分类算法,使用BERT预训练语言模型对短文本
    发表于 03-11 16:10 6次下载
    结合BERT<b class='flag-5'>模型</b>的中文<b class='flag-5'>文本分类</b>算法

    融合文本分类和摘要的多任务学习摘要模型

    文本摘要应包含源文本中所有重要信息,传统基于编码器-解码器架构的摘要模型生成的摘要准确性较低。根据文本分类文本摘要的相关性,提出一种多
    发表于 04-27 16:18 11次下载
    融合<b class='flag-5'>文本分类</b>和摘要的多<b class='flag-5'>任务</b>学习摘要<b class='flag-5'>模型</b>

    基于主题相似度聚类的文本分类算法综述

    传统的文本分类方法仅使用一种模型进行分类,容易忽略不同类别特征词出现交叉的情况,影响分类性能。为提高文本分类的准确率,提岀基于主题相似性聚类
    发表于 05-12 16:25 6次下载

    基于双通道词向量的卷积胶囊网络文本分类算法

    的词向量与基于特定文本分类任务扩展的语境词向量作为神经网络的2个输入通道,并采用具有动态路由机制的卷积胶囊网络模型进行文本分类。在多个英文数据集上的实验结果表明,双通道的词向量训练方式
    发表于 05-24 15:07 6次下载

    基于LSTM的表示学习-文本分类模型

    的关键。为了获得妤的文本表示,提高文本分类性能,构建了基于LSTM的表示学习-文本分类模型,其中表示学习模型利用语言
    发表于 06-15 16:17 18次下载

    基于注意力机制的新闻文本分类模型

    基于注意力机制的新闻文本分类模型
    发表于 06-27 15:32 29次下载

    带你从头构建文本分类

    文本分类是 NLP 中最常见的任务之一, 它可用于广泛的应用或者开发成程序,例如将用户反馈文本标记为某种类别,或者根据客户文本语言自动归类。另外向我们平时见到的邮件垃圾过滤器也是
    的头像 发表于 03-22 10:49 2988次阅读

    PyTorch文本分类任务的基本流程

    文本分类是NLP领域的较为容易的入门问题,本文记录文本分类任务的基本流程,大部分操作使用了**torch**和**torchtext**两个库。 ## 1.
    的头像 发表于 02-22 14:23 770次阅读