64

企业中的文本分类

 5 years ago
source link: https://www.tuicool.com/articles/6zQbIzN
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

a22u6v7.jpg!web

文章作者:张小凡 

编辑整理:Hoh Xil

内容来源: 作者授权发布

出品社区:DataFun

注:欢迎转载,转载请注明出处

概述

新型深度模型天天刷屏刷榜,模型日新月异,做算法的不免感到焦虑。发现自己看论文的速度已经赶不上他们发论文的速度了。在此启发下,想写一写自己工作的思考,面对一个领域,我们如何进行技术选型,这个系列我会结合着自己的工作,帮助大家选择一个好的 Baseline 模型。可能这也是我的困惑,大家模型介绍的欢天喜地,并没有指出哪些适合做 baseline ,到头还得自己一个一个试,希望我的经验能帮助大家节省一点点时间。我就很满足了。技术更新太快,自己并不是专家,您看到这篇文章的时候,可能已经有点过时,择优享用吧。

问题描述

今日主角:文本分类

问题定义:给定一段文本,预测一个或者多个标签。

问题举例:

  • 搜索类目预测:

    query - 红色连衣裙

    label - 女装_连衣裙

  • 智能客服意图分类:

    query - 我的快递怎么还没到

    label - 物流没到

  • 新闻分类:

    query - 哈登今日xx分

    label - 体育

  • 情感分类:

    query - 我好难过啊

    label - 伤心

技术侧划分:

  • query 的长度:短句、段落、文章

  • 预测 label:一个、多个 (同时满足)

  • label 数量

技术价值:该技术非常的实用,一方面可以帮助公司节省一些人力标注成本,另一方面,可以赋能业务,让业务做一些之前无法做到的分析、运营。

模型介绍

本文不一一对比各个模型的原理,参看 用深度学习 ( CNN RNN Attention ) 解决大规模文本分类问题 - 综述和实践 这里我一句话介绍一下模型的区别。

一句话模型总结:

传统非 embedding 模型: baseline 太低,我直接忽略。有能超过 textcnn 的请指教。

textcnn: 抽取 Ngram 特性,适用于词语特征明显的业务,几个词就能很好的区分问题,参数量要够大,size 取正常词语长度 ( 1,2,3,4,5 ) 即可,非常好用的短文本 Baseline 。

textrnn: 抽取序列特征,正常情况下和 cnn 几乎没有太大差异,企业场景几乎可以忽略,性能够的话,可以无脑和 textcnn 做概率层面的模型融合。

rcnn: 几乎可以忽略,企业场景几乎可以忽略提升。

bert: 比 textcnn / textrnn 会有不同幅度提升,可以适应更小的训练数据,但是性能和复杂度都不太适合做 baseline 。能用好 bert 的可能也不在这篇文章的适用人群范围了。

HAN ( Hierarchical Attention Networks for Document Classification ) :双层的 attention ,文本较长的可以作为 baseline 非常不错。

好了,模型介绍到此结束。

文本分类 Trick

这里,我来说一下,具体应用场景下我们一般关注什么样的问题。以及我们有哪些解决对策。个人做的应用偏向于短文本,所以 trick 也会偏向短文本。

思考1:训练数据量、标签量

1. 每个标签需要有足够丰富度,主观评估一个新 case 进来,要能找到大概相似的问法 ( 不要幻想模型可以无中生有,以上模型都不具备此能力 ) 。

2. 评估训练集准确率,不要有太多脏数据。

3. 标签是否变化,变化标签需要定时训练,增量数据来源需要有保障。

4. 每个标签下的数据量:1w 条通常就够了。( 这条针对对数据量没概念的同学 )

5. 记住:文本分类,至少在短文本分类下,数据决定一切,99%的质的提升都来自数据的处理。

思考2:数据来源

1. 用户行为数据:如果用户的行为能抽取出高质量的标签,那这一定是个非常 nice 的来源,他可以是应付动态。

2. 业务标注:人工标注,需要一定的人力成本,可以提供好用的工具帮助业务快速标注。

3. 无标注抽取:通常我们有大量无标注的数据,这些数据是真实的,所以要好好利用这部分,正则、规则、模型预训练抽取都是能有非常大提升的地方。

思考3:评估与调整

1. 主观评估:做业务不是打比赛,不是一个死的东西,你需要知道你模型能干啥,textcnn 来说,就是能抽取词语特性,有类似的训练集数据大多都是能出结果的。不要单瞅着一个 top1 准确率,要看 badcase 是什么原因造成的,能从数据层处理的,就在数据层处理。

2. 关注80%:企业中的文本分类都多都是类目分布不均匀的,不要太在意一些很少很少的 case ,先把头部的做好。

3. 模型调参:参数先要自己摸一摸,知道大致的参数规模。参数规模尽可能大就好了,这里会有个边际效应。比如 textcnn filter_num 我一般设置200-400,少了不够,多了无用。不管选取哪个 baseline ,都需要把模型给玩熟悉,他能干啥,不能干啥要知道,然后去就搞数据。

4. 关注过拟合:需要大致看下训练集和测试机的 loss 差异,注意不要过拟合。

关于模型优化、流程优化

技术层面的东西讲完了,留下一些自己的思考,当作和大家讨论。

作为一项基础技术,文本分类服务很多业务。人力有限的情况下,很难做一些定制化的优化。所以模型的更新一定是有较大提升的,即在性能无影响的情况下,所有场景都能比较稳步提升。当然这并不容易。但是可以尝试做出一些新东西,更贴近业务或者其他更易用的模型。

模型提升点:

1. 文本分类可以融入特征:比如加入问题的类目、品牌、甚至用户等信息,丰富文本分类的信息。这里就需要设计一下网络结果,适应这种特征的融入。

2. 更自然语言的模型:比如业务同学的观点都很抽象,是否可以通过半阅读理解的形式补充。举个例子:生鲜坏果是一个常见的客服问题。很多非生鲜的可能会被错判,业务是否能加一个选项:生鲜水果。通过这个词选项能优化部分 case 。这部分可以通过语义向量的引入解决。

3. 迁移学习:BERT 的迁移效果非常好,各个业务如果有类似的话,迁移也是个非常不错的优化点。

4. 实体化:词语实体化一直是比较想探索的模块,词语实体化后能大大减少训练数据的复杂度,并且具有更高的泛化性和可控性。

流程提升点:

数据为王的模型下,如何让打标的人更快的达标也是个技术活。

1. 提供近义词:水果->苹果、梨子...能自动出来当然更好啦,这也比较容易用 w2v 实现。

2. 提供近似语句:模型可以预测出相似的句子来辅助标注。

3. 聚类:帮助发现一些新的类簇,很多标签可能需要新搞一个。

对作者感兴趣的同学,欢迎点击文末阅读原文与作者交流。

——END——

文章推荐:

电商推荐系统

关于 DataFun:

DataFun 定位于最实用的数据智能平台,主要形式为线下的深度沙龙、线上的内容整理。希望将工业界专家在各自场景下的实践经验,通过 DataFun 的平台传播和扩散,对即将或已经开始相关尝试的同学有启发和借鉴。

DataFun 的愿景是:为大数据、人工智能从业者和爱好者打造一个分享、交流、学习、成长的平台,让数据科学领域的知识和经验更好的传播和落地产生价值。

DataFun 成立至今,已经成功在全国范围内举办数十场线下技术沙龙,有超过三百位的业内专家参与分享,聚集了数万大数据、算法相关领域从业者。

nQry6nn.jpg!web

您的「在看」,我的动力!:point_down:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK