自然语言处理(第17课 文本分类和聚类)

一、学习目标

1.学习文本分类的两种传统机器学习方法:朴素贝叶斯和支持向量机

2.学习文本分类的深度学习方法

3.学习文本分类的性能评估标准

4.学习文本聚类的相似性度量、具体算法、性能评估

二、文本分类

        1.概述

        将文本分类,主要工作是让机器分析文章内容,辨别其类别。常见的应用有:新闻文章归类,垃圾邮件识别:

         2.传统机器方法

        文本分类的传统机器方法,主要包含三个重要核心:文本表示、特征选择、分类算法。放在整体流程,就是:(图中的模式来源于模式识别,这里可以认为是测试文本)

        (1)文本表示

        之所以要文本表示,是因为机器无法直接看懂原始文本,需要将文本转化为数字向量才行。一般在实验中,我们都会先使用词袋模型来表示一个文章:

         一个文章就表示成右边的向量,这个向量长度是词典长度,词的排序认为确定,后面要按照这种顺序进行其他操作。(显然,词袋模型的缺点是不好扩展,有集外词时就要人工重新设定其向量长度,但其好在使用方便,集外词可以用<unk>统称,中文则拆成字保存)

        词袋向量的元素表示某个词的出现次数,一般认为出现多的词说明更重要,但“的”这个词显然对我们没用。所以我们需要对向量元素进行重新订正,让其变成某个词对文本分类的重要程度,于是引入了以下几个参数:

         一般实验中,都使用TF-IDF作为最后的向量元素。

        (2)特征选择

        虽然现在的特征选择都直接使用词向量了,但还是要了解一下前人如何做特征选择的。特征选择的工作是,比如有“文本是否有词x”、“词x和词y接连出现”等一系列特征,要判断这些特征对分类的影响程度,以前一般就统计“文本是否有词x”作为特征了。(相当于上面计算词的权重,这里计算词的得分(也可以说是重要性),两者相乘得到概率,再综合所有词的概率,就能判别整个文本的类别了)。

        特征选择的方法:

        其中,将互信息应用到特征选择中,反映为点互信息:(MI是评判ti特征对分类的重要性的,MI取max则选择ti对某个分类影响最大的效果,MI取avg则综合ti对所有类别的影响程度。红色字描述有错,忽略即可)

        信息增益(IG)定义如下:

        例子如下:

        通过信息增益,可以对特征进行排序,从而减少没必要的特征,即忽视没用的词:

         (3)分类算法

        分类算法也有许多方法,我们重点讲述朴素贝叶斯和支持向量机法:

        (a)朴素贝叶斯

        首先需要了解贝叶斯理论,看一遍就行,应该都知道:

        之所以说其理论最优,是因为,如果数据量足够大,贝叶斯通过统计数据库信息学习得到的结果就是最好,没必要用什么神经网络、大模型来实现。但问题在于其要求数据量实在太大,解释性也不够。

        我们先要确定文本的特征就是文本中的词,然后根据贝叶斯函数得到我们的目标函数:

        然后要计算P(c)和P(w|c),这两块我们是通过统计数据库情况得到的:

         所以,来一个文本,我们就相当于根据文本的词特征,查数据库中的历史信息,判别文本的类别。

        (b)线性支持向量机

        支持向量机的核心思想就是在向量空间中找到一个超平面,将两类数据分隔开:

        对于一系列的样本点(一个样本点表示一个文本),最开始使用最大间隔作为目标,但通过数学转化,可以转化为最小超平面方向:

         列出目标函数和约束函数,就可以使用各种优化算法来求解该问题了(一般用拟牛顿法来求解,详见我另一个专栏:算法中的最优化方法与实现)。求解出超平面后,就通过计算判别函数的正负性来判断。(有人好奇如果是多类别呢,也是有另外的方法实现的,大不了就每一类作一个判别函数,为正就是该类,为负就是别的类)

        3.深度学习方法

        深度学习方法的效能不不是基于深度学习本身,其本身就是些全连接结构,实际起决定作用的还是文本表示的好坏,神经网络完成的工作对应于传统机器学习中的特征选择和分类算法。例如下面这个经典的文本词向量化后输入到神经网咯作分类:

        或者是使用循环神经网络去搞:

        影响分类结果的关键点在于词向量(词嵌入),所以后面人们针对词向量学习,提出预训练+微调的方法,预训练的目标是学习词向量,学习方法是完型填空:

        学习得到的词向量表运用到实际任务中,只需要加上一些全连接层就行,就是微调的工作,只调整全连接层的参数,一般不再调词向量表参数。 

        4.文本分类性能评估

        来到分类任务中,性能评估方法就显得简单多了,因为就判断模型结果和实际标签是否对应就可以了;于是要定义四种情况:

       

        于是,简单的召回率、精确率和F1值就可以计算出来:

        还有正确率:

        后面,又有人提出了宏平均和微平均的概念,直接看公式就明白在干嘛了(公式有点错误,累加符号写的j,但元素下标是i,实际上应该j=i)

         为了更直观展示模型的好坏,人们提出了P-R曲线和ROC曲线:(P-R曲线越往右上,效果越好,ROC曲线越往左上靠,效果越好)

三、文本聚类

        文本聚类,即无监督学习,需要模型根据文本样本点相似性计算(没有标签),将相似的文本聚为一类。与文本分类一样,其重点步骤分三个:文本表示,文本相似性度量,聚类算法。文本表示前面说了,这里主要讲后面两步,而文本相似性度量是核心步骤。

        1.文本相似性度量

        根据对象不同,相似性度量分三种:

       (1)文本之间

        对于两个文本之间,从样本点的距离角度来考虑,我们可以使用范数来进行度量:

        当然还有基于角度、杰卡德相似系数、基于分布的度量等,都不是很常用的方法。

        (2)集合之间

        与人的基本想法一样,可以有四种方法:

        重心法就是对两个集合分别求平均,用平均点的距离作为集合的距离。显然是最方便的方法。此外,还有一个比较好的方法:(这个方法好在其判别两类合并前后的各点到中心距离的变化,能方便后面应该将哪两类进行合并)

        (3)文本与集合之间

        ppt是如下面这样写(当然也没错),但实际上,就三种常用方法,文本点到集合最近点的距离,文本点戴集合最远点距离,样本点到集合均值点距离。

        2.文本聚类算法

        聚类算法基本上就是这4种,基本没有什么拓展,建议直接去我的机器学习专栏第6章的讲解。他这里的讲解并没有比那边好太多,且例子不够那边好。

       首先先讲一下文本在聚类前需要做的一些准备工作:

        然后再大体上过一遍4个算法的思想。

        K-均值聚类法,主要思想和EM很像,分两步:划分和更新。我们初始化n个聚类中心点,计算所有点到这n个点的距离,将样本点划分到离其最近的中心点的类别中,然后更新:将一个类中的点再取平均,更新出新的n个聚类中心点,直到中心点不再变动。

        单遍聚类,按照数据库顺序读入一个一个样本,如果样本离某些集合距离小于阈值,则划分到最近的一类,如果大于阈值,则自己划分为一类。

        层次聚类,分自顶向下和自底向上两个,自顶向下,相当于将所有样本点看为一类,然后不断切分,自底向上相当于每个样本点都是一类,然后两两聚合。

        ,密度聚类认为,分布密集的样本点是被稀疏的样本点所分割的,于是那些联通的稠密的样本点集合就是我们的聚类。例子如下:

        3.文本聚类性能评估

        首先,聚类方法由于没有标签,所以不能用分类方法的评估标准来评判聚类方法。而非要用标签来判别,也不是不行,其就是聚类评估里的外部标准,当然还有内部标准。

        (1)外部标准

        即使是有标签,我们也无法像分类那样计算,因为聚类并没给数据打标签。所以只能通过一对样本点是否在同一类中,进行评价,于是定于以下参数:

        直观上,我们希望a和d更大,b和c越小,效果则越好,于是评价指标就是:

        (2)内部指标

        缺少标签后,我们只能通过聚类的形状来计算其效果:

        轮廓系数是需要计算一个样本点与类内其他的点的平均距离a,以及一个离它最近的别的类均值点的距离b,综合a和b得到的结果来进行评估。计算公式如下:

四、本章小节

1.学习了文本分类的各个步骤和各种实现方法

2.学习文本聚类的准备工作和具体的聚类方法

3.学习了文本分类和聚类不同的评估方法和标准

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

迅为RK3588开发板RTMP推流之视频监控之搭建 RTMP 媒流体服务器

1.安装 nginxrtmp 运行所要用到的库和依赖环境 apt-get update apt-get install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev openssl 2. 下 载 nginx-1.20.2 源 码 ( 下 载 地 址 &#xff1a; http://nginx.org/download/nginx-1.20.2.tar.gz) 和nginx-…

【力扣题解】P226-翻转二叉树-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P226-翻转二叉树-Java题解&#x1f30f;题目描述&#x1f4a1;题解&#x1f30f;总结…

MySQL高级SQL语句补充

目录 1.空值&#xff08;NULL&#xff09;和 无值&#xff08; &#xff09;的区别 2.正则表达式 3.存储过程 存储过程的优点 创建存储过程 调用存储过程 查看存储过程 存储过程的参数 IN 输入参数 OUT 输出参数 INOUT 输入输出参数 删除存储过程 存储过程的控制语…

QT中的信号与槽的讲解

文章目录 信号及其特点槽及其特点代码演示标准信号与标准槽函数方式一方式二 自定义信号和槽connect()函数信号和槽函数存在函数重载的情况下Qt的信号槽机制注意事项 信号及其特点 信号&#xff1a;是一种特殊的函数&#xff0c;又称信号函数&#xff0c;俗称信号&#xff0c;…

vue 项目 添加 页面上方 NProgress进度条

NProgress官网和Github地址 路由 跳转时 页面上方 和 右上角 会有一个加载进度 安装 使用npm安装 npm install --save nprogress 基本用法 main.js 引入 import NProgress from “nprogress”; import “nprogress/nprogress.css”; 开关和关闭 start()开启NProgress进度条d…

李宏毅 自然语言处理(Voice Conversion) 笔记

前一章笔记&#xff1a;李宏毅 自然语言处理&#xff08;Speech Recognition&#xff09; 笔记 引入 什么是voice conversion&#xff1f; 输入一段声音&#xff0c;输出另一段声音&#xff0c;我们希望这两端声音&#xff1a;内容一样&#xff0c;其他方面不一样&#xff08…

移动硬盘打不开怎么办?没有比这更好的办法了

移动硬盘打不开是常见故障&#xff0c;可能的原因有很多&#xff0c;例如硬盘驱动器故障、文件系统损坏、分区表错误等。本文将详细分析这些原因&#xff0c;并提供相应的解决方法&#xff0c;帮助您解决移动硬盘打不开的问题。 当移动硬盘打不开时&#xff0c;为了保留其中的文…

web:[BJDCTF2020]The mystery of ip(ssti模板注入、Smarty 模板引擎)

题目 进入页面显示如下 点击flag页面得到ip 点击hint页面 在hint.php的源代码页面中发现 由题目可以知道要从ip入手 这里尝试抓包加上X-Forwarded-For请求头修改为127.0.0.1 因为直接将127.0.0.1输出到页面&#xff0c;可以猜测是ssti模板注入 可以继续验证 这里发现输入什么…

<JavaEE> TCP 的通信机制(四) -- 流量控制 和 拥塞控制

目录 TCP的通信机制的核心特性 五、流量控制 1&#xff09;什么是“流量控制”&#xff1f; 2&#xff09;如何做到“流量控制”&#xff1f; 3&#xff09;“流量控制”的作用 六、拥塞控制 1&#xff09;什么是“拥塞控制”&#xff1f; 2&#xff09;如何做到“拥塞…

用通俗易懂的方式讲解大模型:ChatGLM3-6B 部署指南

最近智谱 AI 对底层大模型又进行了一次升级&#xff0c;ChatGLM3-6B 正式发布&#xff0c;不仅在性能测试和各种测评的数据上有显著提升&#xff0c;还新增了一些新功能&#xff0c;包括工具调用、代码解释器等&#xff0c;最重要的一点是还是保持 6B 的这种低参数量&#xff0…

ESP32入门八(DHT温湿度传感器)

在本章中&#xff0c;将介结DHT温湿度传感器的使用&#xff0c;本文中所使用的版本为DHT11。 传感器介绍 DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度5%RH&#xff0c; 温度2℃&#xff0c;量程湿度5~95%RH&#xff0c; 温度-20~60℃ 图样&#xff1a; 以下为…

C语言-第十七周做题总结-数组2

id&#xff1a;464 A.求矩阵各行元素之和 题目描述 本题要求编写程序&#xff0c;求一个给定的mn矩阵各行元素之和。 输入 输入第一行给出两个正整数m和n&#xff08;1≤m, n≤6&#xff09;。随后m行&#xff0c;每行给出n个整数&#xff0c;其间以空格分隔。 输出 每行…

概率论基础复习题

一、填空题 二、选择题 答案&#xff1a;B 答案&#xff1a;C 答案&#xff1a;C 答案&#xff1a;D。统计量不含任何未知参数。 答案&#xff1a;A 答案&#xff1a;C 样本均值是总体均值的无偏估计&#xff1b;样本方差是总体方差的无偏估计。 答案&#xff1a;B。统计值是一…

appium安装运行报错的解决方案

appium版本2.3 java17 运行报错&#xff1a; Caused by: org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: An unknown server-side error occurred while processing the command. Original error: Could not…

【hcie-cloud】【14】华为云Stack版本升级

文章目录 前言华为云Stack版本升级介绍华为云Stack 8.1.1升级总体概览单Region升级步骤介绍多Region的升级顺序版本升级工具链介绍 华为云Stack版本升级主要操作步骤升级信息收集方法升级方案制定 - 策略配置升级方案制定 - 创建任务升级方案制定 - 生成方案升级软件包下载步骤…

Matlab figure窗口最大化 窗口全屏 图表窗口最大化

我有一个项目&#xff0c;需要把多个数据文件画成的曲线一个个保存为图片&#xff0c;然后再进行集中对比分析。程序运行后&#xff0c;打开目录下保存的图片&#xff0c;发现图片的尺寸都很小&#xff0c;画质也不清晰&#xff0c;后来发现原来matlab显示图片的时候&#xff0…

MySQL所有常见问题

一、事务 定义:一组操作要么全部成功,要么全部失败,目的是为了保证数据最终的一致性 在MySQL中,提供了一系列事务相关的命令: start transaction | begin | begin work:开启一个事务commit:提交一个事务rollback:回滚一个事务事务的ACID 原子性(Atomicity):当前事…

计算机毕业设计------ssm茶叶溯源系统

项目介绍 茶叶溯源系统&#xff0c;分为前台与后台。普通用户可在前台通过18位的编码查询茶叶的出售历史。 后台分为两种角色&#xff0c;管理员与经销商&#xff1b; 管理员主要功能包括&#xff1a; 主界面&#xff1b; 管理员管理&#xff1a;管理员列表、添加管理员&am…

2023年度总结———豫见及遇见

目录 一.AI 人工智能方向 二.华为数通网络方向 三.腾讯云AI绘画方向 四.年度心得总结板块 博主C站主页&#xff1a;知孤云出岫_网络,计算机,计算机网络教案-CSDN博客 博主腾讯云主页&#xff1a; 知孤云出岫 - 个人中心 - 腾讯云开发者社区-腾讯云 2023年年度词&#xff1a…

MariaDB数据库本地部署结合cpolar内网穿透实现远程连接

文章目录 1. 配置MariaDB数据库1.1 安装MariaDB数据库1.2 测试局域网内远程连接 2. 内网穿透2.1 创建隧道映射2.2 测试随机地址公网远程访问3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问3.3 测试固定地址…