文本分类和意图识别调研思考

每天给你送来NLP技术干货!


来自:CS的陋室

作者:机智的叉烧

为了升级迭代一下自己的技术方案,所以对文本分类和意图识别业界有关的技术进行了一些新的调研。总体看来自己是不少收获的,就文章而言可能一篇写下来内容不是很多,所以打算先整一篇比较综合的,主要是讲一下自己的感受和收获,最后会给出涉及的文章。

背景

之所以把这个放一起,是因为这两个具有很高的相似性,对用户query的意图识别,本质上其实就是对文本进行分类,工业界一般很少会把文本分类单独拿出来详细综述和分享,而科研上也很少会把意图识别这种业务性比较强的内容拿来做研究(有但是真的少),但实际应用中这两者是非常相关的,所以我还是希望把这两者结合给大家介绍一下。

工业界情况

强业务耦合

首先想说的,就是工业界的实用性,这个实用性本质上是耦合于业务中的,针对意图识别,除了基本的语义理解外,很大程度上是需要依赖业务上给出的一些特征的,或者说这才是比较有必要而关键的,美团搜索[4]和腾讯搜索[1]中其实都体现了相应的观点,语义理解不是不重要,但只有语义理解是不可以的,其实还是需要一些依赖信息的介入,才能更好地解决问题。

所谓的耦合,说白了就是在NLP做语义模型的基础上,加入很多外部特征,这些外部特征都来源于业务,例如用户的点击率、query的长度等信息,这些信息大都是在实际落地场景中非常常见的特征,尤其是点击特征,这些特征在搜索场景里非常使用,因为用户的行为很大程度上代表了这个就是用户自己的意图,所以意图识别里面用起来就很正常了,当然了,这些特征的融合,其实就比较机器学习了,在[2]中其实给了一个比较常用的融合方案,这点其实和推荐系统挺像的。

说到了推荐系统,就继续聊,推荐系统作为一个完整的系统,是需要强烈耦合业务的,但是通用的理解通过模型来完成则非常有意义,比较有代表性的就是wide&deep,这种思想用在搜索里面,甚至是意图识别里,其实就是业务信息+语义信息的组合,[2]提供的也是类似的方案。

当然了,对于顶尖大厂,这种组合的方式似乎并不能满足实际的应用需求,除了语义能够用深度学习表示,还有用户的行为等,同样可以经过深度学习处理得到更加精准的表征,前段时间的我分享的KDD21有关淘宝向量搜索(前沿重器[18] | KDD21-淘宝向量检索)的文章,其实就是一个大模型的组装,用比较潮的说法就是“拼高达”的模式,把多种表征和特征都组合起来形成大模型。

当然了,由于意图识别只是搜索的一环,而且是上游,不见得要用这么大的模型,不过思想和思路是值得参考的,要想解决业务问题,耦合业务应该是一个比较好的思路。

语义理解

语义理解同样是不可或缺的角色,毕竟用户输入了非常宝贵的信息来表达他的意图——query,但从现在的了解来看,语义理解逐步成为一个通用的模块,毕竟现在绝大部分人对语言有一个通俗的认知,所以语义理解成为一个对句子泛化的辅助,相比于给定的特征和业务规则,模型能承担的鲁棒性更高,对于一些有损的信息(例如用户输错、口语化)等,模型能很大程度解决,为系统提供了这种鲁棒性。

再者,语义理解,尤其是NLP这一块的语义理解,一般会逐步形成更为通用的语义理解模块,这个模块具有比较通用的理解能力,这种理解能力能让整个模型能可插件化,在工程上其实有更高的灵活性,自由和各个业务进行组合,保持效果的同时,工程效率也提升了。

但是也可以发现,当然也可能是调研文章的时间线问题,我发现在意图识别里用BERT等大规模预训练模型的量其实不多。这些文章都没有说原因,我大胆猜测一下。意图识别只是搜索的一个上游功能,一方面意图识别本身具有很高的灵活性需求,另一方面分的类很多,所以上BERT和不上BERT在预测效果上其实不会有太大差距,收益不高,但是成本就在这了,大家也可以发现,各个工业级技术上,大规模预训练模型甚至是一些“高达”,更倾向于放在排序,因为那里是整个流程的终端,做得好其实收益会更大,性价比更高。

从自己的经验看来,意图识别上的模型,其实更多是一个辅助的作用,效果上存在较高程度的泛化能力,对于泛需求、模糊需求有更高的理解能力,但是与之对应的是业务上的适应能力和灵活性,对于简单问题、纯名词问题等,让模型来解决的难度其实不小,更多是通过业务上的词典、规则来快速解决,这种种方式快速而稳定。

以搜代分

这个其实是我曾经讲过的一个思路(心法利器[26] | 以搜代分:文本多分类新思路)。但是在这些调研里面都没有作为一个点详细聊过,个人感觉原因是和这点本身没有非常系统地被提出作为一类型方法,其实大家日常无意识的可能就在用,例如词典匹配本身就是这种以搜代分的思想,试想拿着这个query在词典里搜是否有query这种词汇,从而完成意图识别。

按照之前我的描述,以搜代分可以是一些诸如空间分布零散、需求临时、改动频繁且量不少的场景,这次调研这方面的内容不多,所以此处不再赘述了。

科研界情况

概述

要做科研领域的调研,首先要做的肯定就是看综述了,最近的综述只能追溯到2020年的一篇[5],这篇文章也有很多博主有聊过,甚至有了翻译[6,7,8],都对很常见的模型进行了分析整理甚至是评价,这些评价其实也很符合我们的普遍认知,类似CNN适合短文本,RNNs适合捕捉序列信息,Attention对全局信息以及其相关性重要性都能获取,然后还有非常完整的结果对比和评价。

另外,要看前沿肯定还是要多看一些类似GLUE、CLUE、Paper with code之类的榜单了,但其实自己还是比较失望的,预训练霸榜应该是一个常态了,具体里面有些细节其实并没有公开,所以调研其实本质的收获不是很大,平时就有关注的话,其实再看一次区别不大。

但是,令我们感到有些惊喜的是,在文本分类领域,大家似乎并不局限在所谓的预测效果了,也就慢慢抛弃了刷榜这一唯一的目标,而是探索一些特殊场景的一些特殊用途,思路发散了不少。

然后接着来聊我的思考吧。

预训练模型霸榜

仅从对应数据集的效果这一点看来,预训练模型霸榜这应该是众所周知的事,不得不承认的是,在模型的结构上,这块确实是现在效果的天花板,而且在效果上,在多个效果上,相比于一些比较传统、单一的模型,在这些数据集上确实是碾压级别的全面提升,如果我们有资源、不计成本直接去尝试,肯定也可以是优先考虑的。

不过这里其实我还是想聊一个观点,大规模预训练模型之所以现在能霸榜,很大程度上和现在的数据集有关,相信大家在日常的使用上会发现,预训练模型并不是万能,很多场景甚至还可能不如小模型TextCNN,但是这个在现在的榜单上并不能发现,是不是侧面说明现在的数据集其实有些局限,我们如果只参考榜单就进行技术选型,很可能就踩坑,而且因为大模型本身的性能,这个坑的成本可能还不小,所以,更多而构造业务型、场景特异型的数据集应该是很有必要的。

补一个,邱锡鹏老师的一篇paper其实有指导大家怎么微调预训练模型的方案,大家直接去看吧[14]。

其他文本分类的研究

研究文本分类,当然不只是刷榜那么简单。还有大量的研究其实在文本分类的很多角度都进行了尝试。来举几个例子吧。

[9] [11]的出发点其实挺像的,文章更像是一个网络优化的工作,考虑attention在预测过程更多关注上下位置的信息而不是全局,所以弄了个cnn来关注局部,这样能把全局信息释放给attention来关注,[9]之前就看过但是觉得不足以成文所以没有单独聊,不过这次重看感觉有必要好好讲讲,这样的文章其实不少,这篇的代表性还是挺强的。

[12]其实是挺工业界的方案,出发点其实是希望能在语义模型里加入更多的side info来让模型预测更准,这里是提了一个门控制单元来操作。怎么说呢,个人感觉这个思路其实挺卷的,现在其实已经有很多简单快捷的方案,门控单元的加入感觉是有些过渡操作的感觉了,另外,不知道是不是我看的太少,感觉文章在对比的时候的baseline设计的不是很好,说服力不太够吧。

当然了,其实很多别的场景也会有文本分类的身影,类似few-shot、超多分类、短文本,样本不平衡等,其实都会有文本分类的一些技术,大家可以自己多看看,这里我不多列举了。

当然了,其实还有一些别的工作,其实还是能提升最终的预测效果的,这里提两个,一个是R-dropout,这个我之前就有文章有讲过,这里不赘述了(前沿重器[15] | R-Dropout——一次不行就两次),另一个方案是比赛里面有用过的对抗学习(之前参与的小布语义相似度竞赛里,进入决赛的队伍几乎都用了),FGM/PGD等,都是非常热门的提升手段,这些方案挺推荐大家在日常中使用,甚至可以刷新自己的baseline,这些方案的使用可能比直接上预训练要更快涨点。

补充

补充一些比较好的文本分类教程和综合的方案代码。[15,16,17]

总结

总体下来,感觉自己的收获是不小的,大概分这几点吧:

  • 语义理解的地位应该是不可撼动了,但是应该更加通用而稳定固定。

  • 业务耦合可以结合词典规则、side info的方式来进行处理,不见得要渴求语义理解模型完成整个任务。

  • 至少在意图识别模块,仍没有很大必要非得上预训练模型,优先级更高的应该在下游。

  • 文本分类研究目前的方向更倾向于场景理解和深度、特异性问题的解决。

  • 数据集可能是局限这个方向的特殊课题深入研究的一个点。

参考资料

[1] 腾讯技术工程:全面理解搜索Query:当你在搜索引擎中敲下回车后,发生了什么:https://zhuanlan.zhihu.com/p/112719984
[2] 基于DNN+GBDT的Query类目预测融合模型:https://developer.aliyun.com/article/420506
[3] 达观数据:“搜你所想”之用户搜索意图识别:https://cloud.tencent.com/developer/article/1079150
[4] 美团搜索:Query理解在美团搜索中的应用:https://zhuanlan.zhihu.com/p/411329247
[5] A Survey on Text Classification: From Shallow to Deep Learning
[6] https://zhuanlan.zhihu.com/p/349928514
[7] https://zhuanlan.zhihu.com/p/141351569
[8] https://zhuanlan.zhihu.com/p/133328283
[9] Lite Transformer with Long-Short Range Attention:https://www.cnblogs.com/shona/p/12980079.html
[10] 2021年AAAI会议关于文本分类的论文汇总:https://zhuanlan.zhihu.com/p/383622996
[11] ACT: An Attentive Convolutional Transformer for Efficient Text Classification
[12] Merging Statistical Feature via Adaptive Gate for Improved Text Classification
[13] Task-Aware Representation of Sentences for Generic Text Classification
[14] How to Fine-Tune BERT for Text Classification?
[15] https://zhuanlan.zhihu.com/p/349086747
[16] https://github.com/brightmart/text_classification
[17] https://github.com/649453932/Chinese-Text-Classification-Pytorch


下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
下载二:南大模式识别PPT  后台回复【南大模式识别】

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

文本分类和意图识别调研思考_第1张图片

记得备注呦

整理不易,还望给个在看!

你可能感兴趣的:(大数据,编程语言,python,机器学习,人工智能)