文本分类任务算法演变(一)

文本分类任务算法演变

  • 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.简介和应用场景

定义: 预先设定好一个文本类别集合,对于一篇文本,预测其所属的类别。

示例:

  1. 情感分析:
    这家饭店太难吃了 -> 正类
    这家菜很好吃 -> 负类
  2. 领域分类:
    今日A股行情大好 -> 经济
    今日湖人击败勇士 -> 体育

    至于分类为正向、还是负向、经济还是体育,是根据业务和训练者自己拟定的规则。

分类的普适流程
在这里插入图片描述

步骤:
定义类别
收集数据
模型训练
预测

1.1使用场景-打标签

简介: 我们常见的资讯文章分为财经板块,财经板块又分股票、基金等;网络小说分为悬疑、科幻等。

我们可以训练模型对文章进行分类;还可以通过多个模型串联,进行多级分类,比如:先判断是财经;再用下一个模型判断是财经的那个板块

1.2使用场景-电商评论分析

如图
在这里插入图片描述
业务逻辑:

1.目的:一个卖品,对于商家来说,需要关注,客户对这个产品的那些维度更加重视、那些维度缺陷较大、便于后期改进和制定营销策略。
2.我们可以把评论,拆分为:鞋子耐穿、鞋子颜色、鞋子款式、鞋子价格等,对评论进行分类或者打上标签。
3.统计各类标签的评价占总评价的比例等,针对这个信息做后续营销。

1.3使用场景-违规检测

简介: 这个很好理解,就不过多阐述。

常见:

  1. 涉黄、涉暴、涉恐、辱骂等
    主要应用在客服、销售对话质检,或网站内容审查等

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.核函数的选取以及参数的选取较为困难

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401387.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

libnl教程(2):发送请求

文章目录 前言示例示例代码构造请求创建套接字发送请求 简化示例 前言 前置阅读要求:libnl教程(1):订阅内核的netlink广播通知 本文介绍,libnl如何向内核发送请求。这包含三个部分:构建请求;创建套接字;发送请求。 …

Web开发:web服务器-Nginx的基础介绍(含AI文稿)

目录 一、Nginx的功能: 二、正向代理和反向代理的区别 三、Nginx负载均衡的主要功能 四、nginx安装目录下的各个文件(夹)的作用: 五、常用命令 一、Nginx的功能: 1.反向代理:例如我有三台服务器&#x…

大数据项目——实战项目:广告数仓(第二部分)集群环境部署

目录 第4章 广告数仓架构设计 第5章 集群环境准备 5.1 服务器准备 5.1.1 创建3台虚拟机 5.1.2 SSH无密登录配置 5.1.3 编写集群分发脚本xsync 5.1.4 JDK准备 5.1.5 环境变量配置说明 5.2 Hadoop部署 5.2.1 完全分布式运行模式(开发重点) 5.2…

去噪、梯度与边缘检测

图像噪点消除 噪声在图像处理中指的是图像中出现的干扰因素,通常由采集设备或传输过程引起。噪声使得图像的亮度变得不均匀或引入了随机的干扰点。常见的噪声类型包括: 高斯噪声:符合正态分布的噪声,会使图像变得模糊或出现噪点。…

Java基础之switch分支语句

switch分支语句 ​ switch语句也称为分支语句,其和if语句有点类似,都是用来判断值是否相等,但switch默认只支持byte、short、int、char这四种类型的比较,JDK8中也允许String类型的变量做对比。 语法: switch (表达式…

8.15 哈希表中等 139 Word Break review 467 Unique Substrings in Wraparound String

139 Word Break【逐一对比vs.多种 分割 组合】 片面思考的思路&#xff1a; class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {//字符串和对应的字典&#xff0c;如果s种可以用空格分隔出一个或多个字典里的词就返回true//核心&#x…

windows 安装TVM

TVM支持在Windows环境下使用&#xff0c;但需要一些额外的配置。以下是如何在Windows Python环境中安装TVM的详细步骤。 1. 安装TVM的预备条件 在Windows上安装TVM之前&#xff0c;需要确保系统已经安装了以下工具和依赖项&#xff1a; Visual Studio: 安装包含C开发工具的V…

利用ZXing.Net Bindings for EmguCV识别条形码及绘制条形码边框17(C#)

上一篇博文&#xff1a;绘制条形码的效果不是很好&#xff1a;利用Emgucv绘制条形码边框16(C#)-CSDN博客 测试环境&#xff1a; win11 64位操作系统 visual studio 2022 ZXing.Net.Bindings.EmguCV 0.16.4 测试步骤如下&#xff1a; 1 新建.net framework 4.8的控制台项目…

Linux日常运维-主机名hosts

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 本小章内容就是Linux进阶部分的日常运维部分&#xff0c;掌握这些日常运维技巧或者方法在我们的日常运维过程中会带来很多方…

【Vue3】嵌套路由

【Vue3】嵌套路由 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文内…

【Linux】缓冲区和文件系统

目录 一、缓冲区 1.1 概念 1.2 用户缓冲区和内核缓冲区 二、磁盘的结构 三、文件系统 3.1 初识“块”和inode 3.2 磁盘分区和文件系统 一、缓冲区 1.1 概念 要理解什么是缓冲区&#xff0c;先看这段代码 #include <stdio.h> #include <string.h> #includ…

Linux系统驱动(十八)SPI总线(未整理)

文章目录 一、SPI总线协议简介二、SPI子系统驱动&#xff08;二&#xff09;SPI子系统API&#xff08;三&#xff09;SPI设备树节点 三、代码示例 一、SPI总线协议简介 高速、同步、全双工、非差分、总线式 传输速度在几十M 差分总线和非差分总线 非差分总线&#xff1a;受压…

江协科技STM32学习笔记(第13章 WDG看门狗)

第13章 WDG看门狗 13.1 WDG看门狗 13.1.1 WDG简介 看门狗就是程序运行的一个保障措施&#xff0c;我们得在程序中定期地喂狗&#xff0c;如果程序卡死了&#xff0c;没有在规定的时间里喂狗&#xff0c;那么看门狗硬件电路就会自动帮我们复位一下&#xff0c;防止程序长时间…

最新爆火文生图模型FLUX

在AI图片生成领域&#xff0c;Flux模型的推出引起了广泛关注。随着AI技术的不断进步&#xff0c;新的模型层出不穷&#xff0c;而Flux正是其中的一颗新星。 Flux&#xff1a;一款迅速走红的AI图片生成模型 8月初&#xff0c;初创公司Black Forest Labs推出了文本生成图像模型…

米联客-FPGA程序设计Verilog语法入门篇连载-10 Verilog语法_一般设计规范

软件版本&#xff1a;无 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用所有系列FPGA 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑&#xff01; 1概述 本小节讲解Verilog语法的一般…

合并两个有序数组(LeetCode)

题目 给你两个按 非递减顺序 排列的整数数组 和 &#xff0c;另有两个整数 和 &#xff0c;分别表示 和 中的元素数目。请你 合并 到 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&#xff0c;合并后数组不应由函数返回&#xff0c;而是…

Docker最佳实践进阶(一):Dockerfile介绍使用

大家好&#xff0c;上一个系列我们使用docker安装了一系列的基础服务&#xff0c;但在实际开发过程中这样一个个的安装以及繁杂命令不仅仅浪费时间&#xff0c;更是容易遗忘&#xff0c;下面我们进行Docker的进阶教程&#xff0c;帮助我们更快速的部署和演示项目。 一、什么是…

【初阶数据结构】通讯录项目(可用作课程设计)

文章目录 概述1. 通讯录的效果2. SeqList.h3. Contact.h4. SeqList.c5. Contact.c6. test.c 概述 通讯录项目是基于顺序表这个数据结构来实现的。如果说数组是苍蝇小馆&#xff0c;顺序表是米其林的话&#xff0c;那么通讯录就是国宴。 换句话说&#xff0c;通讯录就是顺序表…

个人可识别信息(PII) AI 去除 API 数据接口

个人可识别信息(PII) AI 去除 API 数据接口 ai / 隐私保护 基于 AI 模型自动去除个人识别信息&#xff08;PII&#xff09; 个人信息保护 / AI 模型 。 1. 产品功能 基于自有专业模型进行 PII 自动去除高效处理敏感信息全接口支持 HTTPS&#xff08;TLS v1.0 / v1.1 / v1.2 /…

【剑指 offer】镜像二叉树

目 录 描述&#xff1a; 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像 思路&#xff1a; 仔细观察可以发现&#xff0c;所谓的二叉树镜像本质是自顶向下(or自底向上)进行左右子树交换的过程 public class Solution {public void Mirror(TreeNode root) {if(root nu…