文本分类任务算法演变
- 1.简介和应用场景
- 1.1使用场景-打标签
- 1.2使用场景-电商评论分析
- 1.3使用场景-违规检测
- 1.4使用场景-放开想象空间
- 2贝叶斯算法
- 2.1预备知识-全概率公式
- 2.2贝叶斯公式
- 2.3文本分类中的应用
- 2.3.1任务如下
- 2.4贝叶斯的优缺点
- 3.支持向量机
- 3.1支持向量机-决策函数
- 3.2支持向量机-线性不可分问题
- 3.3支持向量机-核函数
- 3.4支持向量机-多分类问题
- 3.4.1one vs one
- 3.4.2one vs rest
- 3.5优缺点
1.简介和应用场景
定义: 预先设定好一个文本类别集合,对于一篇文本,预测其所属的类别。
示例:
- 情感分析:
这家饭店太难吃了 -> 正类
这家菜很好吃 -> 负类 - 领域分类:
今日A股行情大好 -> 经济
今日湖人击败勇士 -> 体育
…
至于分类为正向、还是负向、经济还是体育,是根据业务和训练者自己拟定的规则。
分类的普适流程
步骤:
定义类别
收集数据
模型训练
预测
1.1使用场景-打标签
简介: 我们常见的资讯文章分为财经板块,财经板块又分股票、基金等;网络小说分为悬疑、科幻等。
我们可以训练模型对文章进行分类;还可以通过多个模型串联,进行多级分类,比如:先判断是财经
;再用下一个模型判断
是财经的那个板块
。
1.2使用场景-电商评论分析
如图
业务逻辑:
1.
目的:
一个卖品,对于商家来说,需要关注,客户对这个产品的那些维度更加重视、那些维度缺陷较大、便于后期改进和制定营销策略。
2.我们可以把评论,拆分为:鞋子耐穿、鞋子颜色、鞋子款式、鞋子价格等,对评论进行分类或者打上标签。
3.统计各类标签的评价占总评价的比例等,针对这个信息做后续营销。
1.3使用场景-违规检测
简介: 这个很好理解,就不过多阐述。
常见:
- 涉黄、涉暴、涉恐、辱骂等
主要应用在客服、销售对话质检,或网站内容审查等
1.4使用场景-放开想象空间
类别的定义方式是任意的;
只要人能够基于文本能够判断,都可以作为分类类别。
示例:
垃圾邮件分类
对话、文章是否与汽车交易相关
文章风格是否与某作者风格一致
文章是否是机器生成
合同文本是否符合规范
文章适合阅读人群(未成年、中年、老年、孕妇等)
2贝叶斯算法
2.1预备知识-全概率公式
公式如下:
举例释义:
扔一个正常的骰子
P(B1) = 结果为奇数
P(B2) = 结果为偶数
P(A) = 结果为3
P(A) = P(B1) * P(A|B1) + P(B2) * P(A|B2)
我们通过经验或者直觉判断,可以知道,扔一次筛子,值为3的概率为 1/6
也可以为
:结果为奇数1/2 * 1/3
(在奇数下值为3的概率)加上结果为偶数1/2 * 0
在偶数情况下值为3的概率之和
2.2贝叶斯公式
如下:
释义:
左侧:即在B发生的条件下,A发生的概率
右侧:在A发生的条件下,发生B的概率;和B发生的概率的比值;和A发生的概率之积,等于左侧
变形:
2.3文本分类中的应用
应用基础假设: 文本属于哪个类别,与文本中包含哪些词相关;所以可以通过文本中有哪些词,预测文本属于某类别的概率。
2.3.1任务如下
假定
1.有3个类别A1, A2, A3
2.一个文本S有n个词组成,W1, W2, W3…Wn
3.想要计算文本S属于A1类别的概率P(A1|S) = P(A1|W1, W2, W3…Wn)
通过贝叶斯公式转换得:
P(A1|S) = P(W1, W2…Wn|A1) * P(A1) / P(W1,W2…Wn)
P(A2|S) = P(W1, W2…Wn|A2) * P(A2) / P(W1,W2…Wn)
P(A3|S) = P(W1, W2…Wn|A3) * P(A3) / P(W1,W2…Wn)
注意:
1.计算中的P(A1)、P(A2)、 P(A3) 项,我们可以通过
统计训练语料或者已经分好类的语料中计算得到
2.由于我们分类是比较P(A1|S)、P(A2|S)、P(A3|S) 的大小,而公式中的第三项
P(W1,W2…Wn)都相同,所以我们可以直接忽略
。
3.P(W1, W2…Wn|A1)、P(W1, W2…Wn|A2) 、P(W1, W2…Wn|A3)这三项比较难算,或者在实际语料中不好统计定义;因为其含义是,在所有语料中,是An类的情况下,出现这个句子的概率,正常来说,重复的语料是很少的,而且也会被有意筛选掉,其次当做预测时,很可能会遇到没有统计过的句子
;为了计算,我们提出了词的独立性假设
词的独立性假设
1.即原来我们计算的是在An分类下,句子出现的概率;现在更改为,
在An类中,其中的词出现过的概率;
这个我们是可以通过语料分类后进行统计的
2.缺点:
这样由于将句子中的词拆开来看了,就会忽略句子中,词的顺序、词与词的组合有特定含义,即损失了部分规律或者句子的含义
3.即上述公式转化为下
:
4.P(Wn|A3)的含义是语料中,A3分类中的所有词出现的总次数中,Wn词出现的次数
P(W1, W2…Wn|A3) = P(W1|A3) * P(W2|A3)…P(Wn|A3)
2.4贝叶斯的优缺点
优点:
1.简单高效
2.一定的可解释性
3.如果样本覆盖的好,效果是不错的
4.训练数据可以很好的分批处理
缺点:
1.如果样本不均衡会极大影响
先验概率(即统计出来的概率)
2.对于未见过的特征或样本,条件概率为零,失去预测的意义(可以引入平滑)
3.特征独立假设只是个假设
4.没有考虑语序,也没有词义
3.支持向量机
简介: SVM:support vector machine;属于有监督学习 supervised learning。通过数据样本,学习最大边距超平面。
释义:
1.通过图示,我们可以知道,需要
找一个函数
,使得函数可以将现有的两类数据
:篮球和红球分开
2.在1的情况下我们得到了这条线,我们后续新的数据进入,我们就可以把这条线(函数)作为分割线
3.这条线怎么最好呢?就是离这条线的最近的红球和篮球的距离之和最大
,我们可以理解将篮球、红球就分的最开。
4.其中距离分割线(函数)较近的几个球,用于判定这条线位置最优的点
,被称为支持向量
3.1支持向量机-决策函数
释义: 即如何计算出距离两类样本距离最大的直线(函数)
3.2支持向量机-线性不可分问题
线性不可分问题示例: 我们要将下面平面图中的蓝球何红球用一条直线分开。
我们知道上述无法通过直线分开,**解决办法:**
将空间映射到更高维度来分类非线性数据,如下图,投射到高维中,用一个平面去分割。
举例说明:
1.有一组一维数据
[-1, 0, 1] 为正样本,[-3, -2, 2, 3]为负样本
在一维的轴上无法用一条直线区分:
2.
将x映射为[x, x2]后
,可以得到下面的图,即可以用直线划分:
思维类比: 这里映射到高维可分,和BERT中的前馈网络增大了向量,增加了可训练参数有相似的含义。和我们在神经网络中,越多的神经网络层和可训练参数,可拟合的规律越复杂相似。
3.3支持向量机-核函数
在前面处理线性不可分问题时,我们说要映射到高维中,但是这样出现一个问题,维度过高的向量计算在进行内积运算非常耗时
,而svm的求解中内积运算很频繁
。可以将这种运算表示为:
我们希望有一种方法快速计算;就是核函数;核函数即为满足,通过简单的计算K(x1, x2) 得到的结果
是为上面我们说的内积运算结果的函数统称
常见核函数:
3.4支持向量机-多分类问题
上面我们看到支持向量机,都是在解决二分类的问题,解决多分类问题,我们该怎么做呢?有以下两种思想
3.4.1one vs one
1.假设要解决一个K分类问题,即有K个目标类别
2.建立 K(K - 1)/2 个svm分类器,每个分类器负责K个类别中的两个类别,判断输入样本属于哪个类别
3.对于一个待预测的样本,使用所有分类器进行分类,最后保留被预测词数最多的类别
4.假设类别有[A,B,C]
X->SVM(A,B)->A
X->SVM(A,C)->A
X->SVM(B,C)->B
5.最终判断 X->A
3.4.2one vs rest
1.假设要解决一个K分类问题,即有K个目标类别
2.建立K个svm分类器,每个分类器负责划分输入样本属于K个类别中的某一个类别,还是其他类别
3.最后保留预测分值最高的类别
4.假设类别有[A,B,C]
X->SVM(A,rest)->0.1
X->SVM(B,rest)->0.2
X->SVM(C,rest)->0.5
5.最终判断 X->C
3.5优缺点
优点
1.少数支持向量决定了最终结果,对异常值不敏感;因为主要又支持向量决定。
2.对于样本数量需求较低,主要是支持向量。
3.可以处理高维度数据,当前并不是优势,十多年前是。
缺点
1.样本数量过多的时候,计算负担很大、
2.多分类任务处理起来比较麻烦
3.核函数的选取以及参数的选取较为困难