【人人都能学得会的NLP - 文本分类篇 01】使用ML方法做文本分类任务

【人人都能学得会的NLP - 文本分类篇 01】使用ML方法做文本分类任务


NLP Github 项目:


1、文本分类介绍

NLP中, 文本分类是一项基础且广泛应用的任务, 它将文本依据规则标准划分到为特定的类别空间,并且它能够应用到多种应用场景

  • 垃圾邮件识别:判断一封邮件“是”“否”为垃圾邮件
  • 情感分析: 判断一篇文章情感极性为“正面”“负面”“中性”
  • 聊天意图:判断聊天文本中用户的意图为“发货时间”、“运费价格”等

……

以新闻文本分类为例,我们来了解文本分类任务的类型

1、“今天大盘涨了3%,地产、传媒板块领涨”

2、“NBA湖人队赢下了与掘金队的比赛”

上述分别属于财经体育类新闻。

3、“汪峰今天发布了新歌,娱乐圈又将有大事发生”

以3为例的新闻既可以归为音乐类新闻,又可以归为娱乐类新闻,与1和2有一定区别。

定义:

由上述例子,我们可以得到不同的分类任务类型****:多分类任务和多标签分类任务。

  • 多分类任务中一条数据只有一个标签,但是标签有多种类别,就比如1、2的新闻属于具体的单一新闻类别。
  • 多标签分类任务指的是一条数据可能有一个或者多个标签,就比如3的新闻具有多个新闻类别。

任务实现过程:

完成的分类任务一般需要经历两个阶段,分别是训练阶段预测阶段

  • 训练阶段的目标是基于训练集数据(带label)。训练文本分类模型
  • 预测阶段的目标是使用上一阶段训练好的模型,对于新数据(无label),预测其类别。

技术演化:

分类模型随着技术的进步也经历从规则匹配—>机器学习—>传统深度学习—>前沿深度学习以下四个阶段的演化:

  • 规则匹配:基于关键词匹配等方法
  • 机器学习:基于LR、SVM、集成学习等方法
  • 传统深度学习:基于FastText、TextCNN、BiLSTM等神经网络方法
  • 前沿深度学习:基于Transformer、BERT的pretrain-finetune和prompt范式。

效果评估:

在模型完成后,需要根据预测结果对模型的效果进行整体评估

对于分类任务,直观指标可以由准确率(accuracy)进行表示:

  • 准确率:分类正确的样本数占样本总数的比例,通过记录正确的数量占比即可。

但是上述指标评估存在一定局限,以情感分析任务为例,如果我们想评测模型(1)返回的正面情绪结果中的正确数量,或者在(2)所有真实的正面情绪文本中,模型识别出来的数量,只依靠准确率无法实现任务。(3)且在样本类别数量极度不平衡下,准确率的意义不大,例如,一批数据中,正样本只有几个,即使没能正确预测出来,准确率依旧很高。

基于上述情况,需要考虑新的评测指标,如果我们用的是个二分类的模型,那么把预测情况与实际情况的所有结果两两混合,结果就会出现以下4种情况,就组成了如下所示的混淆矩阵

精准率(Precision)又叫查准率,它是针对预测结果而言的,它的含义是在所有被预测为正的样本中实际为正的样本的概率,意思就是在预测为正样本的结果中,我们有多少把握可以预测正确,其公式如下,它能够解决上述局限中(1)的情况:

召回率(Recall)又叫查全率,它是针对原样本而言的,它的含义是在实际为正的样本中被预测为正样本的概率,其公式如下,它能够解决上述局限中(2)的情况:

一般来讲,准确率和召回率会互相矛盾,假设你想实现较高的召回率,那尽可能召回样本越多越好,这样子的精准率就会下降。通常,如果想要找到精准率与召回率之间的一个平衡点,我们就需要一个新的指标:F1分数。F1分数同时考虑了查准率和查全率,让二者同时达到最高,取一个平衡,其计算公式如下,一般任务用F1进行衡量较为科学。

举例如下:

模型预测结果:0,1,0,0,1

实际样本结果:1,1,0,1,0

各项评测指标如下所示:

准确率(accuracy):2/5 = 0.4

精准率(precision):1/2 = 0.5

召回率(recall):1/3 = 0.333

F1:2*p*r/(p+r) = 0.4

当回顾文本分类的全流程后,我们接下来引入较为主流的模型进行文本分类任务的处理。

2、机器学习模型

由于文本的模式较为复杂,普通的规则匹配已经无法跟上潮流,我们需要机器学习模型的进一步帮助。机器学习模型是基于统计方法,自动地从文本数据中学习模式,然后自动地对文本进行分类。而集成学习作为各类机器学习的集成版本,在竞赛、科研等实践中起着重要作用,因此,本章节主要讨论集成学习在文本分类中的应用。

集成学习思路:

从任务实现角度来看:

首先产生一组“个体学习器”,也称作基学习器,这都来源于各类机器学习模型,在各个基学习器完成训练之后,通过一定的集成策略结合产生最终的输出结果。

其中有几个重要概念需要厘清:

首先,各类基学习器可以是同质学习器也可以是异质学习器,同质和异质的区别在于集成的多个模型是否为同一种学习器。

其次,在集成策略上也有不同的做法,可分为平均法加权法投票法

集成学习的思想如上所示,但在实践中,根据基学习器的生成方式不同,集成学习也产生了两种不同的方法。

第一种方法是并行生成基学习器的Bagging方式,其代表模型为随机森林。

第二种方法是串行生成基学习器的Boosting方式,其代表模型为GBDT等。

Bagging

“三个臭皮匠,顶个诸葛亮” 是对Bagging方式的形象解释,Bagging相比于各类基学习器的较好效果更关注其不同

实现流程主要经历以下几个步骤:

1、 首先使用有放回取样的方法,采样N个样本子集

2、 分别使用N个样本子集,训练N个基学习器

3、 最终使用合适的集成策略来产生最终的输出

流程如下图所示:

以Bagging方式中经典模型随机森林模型作为介绍,

首先解释随机森林的字面含义,随机方法思路,通过bagging方式使样本异质,并且特征同样随机抽取;森林多棵决策树

任务流程如下所示:

  1. 首先选择决策树作为所有的基学习器
  2. 维持了Bagging的有放回抽取的方式去产生个体学习器的训练样本子集
  3. 同时引入了随机属性选择;(标准的决策树每次划分时,考虑所有属性;这里每次划分时,考虑一个属性子集)

随机森林简单、容易实现、计算开销小, 在很多任务中展现出强大的性能, 被誉为“代表集成学习技术水平的方法”。

通过sklearn提供的接口,我们能够很容易的实现随机森林这种方法,为方便大家理解,我们对其中重要参数做了详细注解:

Boosting

如果说“三个臭皮匠,顶个诸葛亮”是Bagging的特征反映,那么“知错能改,善莫大焉”是Boosting的形象解释,它更关注基学习的训练出好的效果

实现流程主要经历以下几个步骤:

  1. 先从初始训练集训练出一个基学习器
  2. 再根据个体学习器的表现,对训练样本分布进行调整,使得上个基学习器分错的样本,在后续受到更多的关注;
  3. 基于调整后的样本分布,来训练下一个基学习器
  4. 如此重复,直到训练满N个学习器
  5. 将N个学习器的输出进行加权结合

这里以最常用的GBDT(梯度提升决策树) 为例分析,

它的思想是用本轮基学习器(一颗CART回归树),去拟合上一个学习器的残差,流程如下图所示:

举例辅助大家理解:

  1. 假如有个人30岁, 首先用第一个CART树去拟合, 输出为20岁, 损失还差10岁;
  2. 这时第二个CART树去拟合剩下的10岁, 输出为6岁, 损失还差4岁;
  3. 第三轮用第三个CART树去拟合剩下的4岁, 输出为3岁, 损失还差1岁;
  4. 不断拟合, 直到满 T 个CART树;

其中,sklearn也提供了关于GBDT的接口,为了方便大家理解,我们同样对其参数提供了注解:


【动手学 RAG】系列文章:


【动手部署大模型】系列文章:


【人人都能学得会的NLP】系列文章:

本文由mdnice多平台发布

posted @   青松^_^  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示