意图识别和文本分类(六)

news2024/11/24 15:17:51

一、分类的目的和分类的方法

目标

  1. 能够说出项目中进行文本的目的
  2. 能够说出意图识别的方法
  3. 能够说出常见的分类的方法

1.1 文本分类的目的

回顾之前的流程,我们可以发现文本分类的目的就是为了进行意图识别
在当前我们的项目的下,我们只有两种意图需要被识别出来,所以对应的是2分类的问题
可以想象,如果我们的聊天机器人有多个功能,那么我们需要分类的类别就有多个,这样就是一个多分类的问题。例如,如果希望聊天机器人能够播报当前的时间,那么我们就需要准备关于询问时间的语料,同时其目标值就是一个新的类别。在训练后,通过这个新的模型,判断出用户询问的是当前的时间这个类别,那么就返回当前的时间。
同理,如果还希望聊天机器人能够播报未来某一天的天气,那么这个机器人就还需要增加一个新的进行分类的意图,重新进行训练。

1.2. 机器学习中常见的分类方法

在前面的机器学习的课程中我们学习了朴素贝叶斯,决策树等方法都能够帮助我们进行文本的分类,那么我们具体该怎么做呢?

1.2.1 步骤

  1. 特征工程:对文本进行处理,转化为能够被计算的向量来表示。我们可以考虑使用所有词语的出现次数,也可以考虑使用tfidf这种方法来处理。
  2. 对模型进行训练。
  3. 对模型进行评估

1.2.2 优化

使用机器学习的方法进行文本分类的时候,为了让结果更好,我们经常从两个角度出发

  1. 特征工程的过程中处理的更加细致,比如文本中类似你,我,他这种词语可以把它剔除;某些词话出现的次数太少,可能并不具有代表意义;某些词语出现的次数太多,可能导致影响的程度过大等等都是我们可以考虑的地方。
  2. 使用不同的算法进行训练,获取不同算法的结果,选择最好的,或者是使用集成学习方法。

1.2. 深度学习实现文本分类

前面我们简单回顾了使用机器学习如何来进行文本分类,那么使用深度学习该如何实现呢?
在深度学习中我们常见的操作就是:

  1. 对文本进行embedding的操作,转化为向量
  2. 之后再通过多层的神经网络进行线性和非线性的变化得到结果
  3. 变换后的结果和目标值进行计管得到损失函数,比如对数似然损失等
  4. 通过最小化损失函数,去更新原来模型中的参数

二、fasttext实现文本分类

目标

  1. 知道fastext是什么
  2. 能够应用fasttext进行文本分类
  3. 能够完成项目中意图识别的代码

2.1 fastText的介绍

文档地t址: https://fasttext.cc/docs/en/support.html.fastText is a library for efficient learning of word representations and sentenceclassification.
fastText是一个单词表示学习和文本分类的库
优点: 在标准的多核CPU上,能够训练10亿河级别话料库的词向量在10分钟之内,能够在1分钟之内给30万多类别的50多万句子进行分类。
fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率

fasttext是什么
a 用来获取词向量,进行文本分类的模块
b 分类的效率,得到词向量的效率高

2.2 安装和基本使用

2.2.1 安装步骤:

  1. 下载 git clone https://github ,com/facebookresearch/fastText.git
  2. cd cd fastText
  3. 编译make
  4. 安装 python setup.py install

2.2.2 基本使用

  1. 把数据准备为需要的格式
  2. 进行模型的训练、保存和加载、预测
#1,训练.
model = fastText.train_supervised("./data/text_classify.txt",wordngrams=1,epoch=20
#2,保存
model.save_mode(" /data/ft_classify.model")
#3,加载
model = fastTextload_model("./data/ft_classify.model")
textlist =[句子1,句了2]
#4,预测,传入句子列表
ret = model.predict(textlist)

2.3 意图识别实现

2.3.1 数据准备

数据准备最终需要的形式如下:
在这里插入图片描述
在这里插入图片描述

2.3.1.1 准备特征文本

使用之前通过模板构造的样本和通过爬虫抓取的百度上的相似问题

2.3.1.2 准备闲聊文本

使用小黄鸡的语料,地址: https://github.com/faleleak/dgk lost conv/tree/master/results

2.3.1.3 把文本转化为需要的格式

对两部分文本进行分词、合并,转化为需要的格式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.1.4 思考:

是否可以把文本分制为单个字作为特征呢?
修改上述代码,准备一份以单个字作为特征的符合要求的文本

2.3.2 模型的训练

在这里插入图片描述
在这里插入图片描述

2.3.2.2 模型的准确率该如何观察呢?

观察准备去,首先需要对文本进行划分,分为训练集和测试集,之后再使用测试集观察模型的准
确率

2.3.3 模型的封装

为了在项目中更好的使用模型,需要对模型进行简单的封装,输入文本,返回结果
这里我们可以使用把单个字作为特征和把词语作为特征的手段结合起来实现
在这里插入图片描述
在这里插入图片描述

三、fasttext的原理剖析

目标

  1. 能够说出fasttext的架构
  2. 能够说出fasttext速度快的原因
  3. 能够说出fastText中层次化的softmax是如何实现的

3.1 fastText的模型架构

fastText的架构非常简单,有三层: 输入层、隐藏层、输出层(Hierarchical Softmax)
输入层: 是对文档embedding之后的向量,包含有N-garm特征
隐藏层: 是对输入数据的求和平均
输出层: 是文档对应标签
如下图所示:
在这里插入图片描述

3.1.1 N-garm的理解

3.1.1.1 bag of word

在这里插入图片描述

3.1.1.2 N-gram模型

在这里插入图片描述

3.2 fastText模型中的层次化的softmax

为了得高效率,在fastText中计算分类标签的概率的时候,不再是使用传统的softmax来进行多分类的计算,而是使用的哈夫曼树(Huffman,也成为夫曼树),使用层次化的softmax (Hierarchial softmax) 来进行概率的计算。

3.2.1 哈夫曼树

在这里插入图片描述

3.2.1.1 哈夫曼树的定义

哈夫曼树概念:给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。
哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

3.2.1.2 哈夫曼树的相关概念

在这里插入图片描述

3.2.1.3 哈夫曼树的构造算法

在这里插入图片描述
可见

  1. 权重越大,距高根节点越近
  2. 叶子的个数为n,构造哈夫曼树中新增的节点的个数为n-1

3.2.2 哈夫曼编码

在这里插入图片描述在这里插入图片描述

3.2.3 梯度计算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法刷题打卡第75天:合并两个链表

合并两个链表 难度:中等 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将 list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果: 请你…

php debug yasd手记

yasd 调试器 v0.2.5 版本发布,支持 PHP8 以及在 IDE 中使用调试 - 知乎 GitHub - swoole/yasd: Yet Another Swoole Debugger 安装 yasd 在编译安装之前你需要安装boost库。 macOS: brew install boostUbuntu: apt-get install libboos…

Python编程 装饰器

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:b网络豆的主页​​​​​​ 目录 前言 一.函数 1.装饰器引入 (1)时间模块 封装函数&am…

软件测试简历没有邀约,为什么?8类细节通通告诉你(附赠高薪简历)

求职不顺,没有邀约,大概率是你的简历出现了问题。本篇文章列出高薪简历应该注意的细节,合计36处,涉及简历的八大组成部分。现在就讲。一、简历样式要求(3点要求)1、简历格式,推荐使用PDF格式的简…

shopee、lazada跨境电商产品定位和快速获取流量来源是什么?

曹哥首先说的是产品的定位的思路 当确定好具体的经营类目后,就需要去给店铺的商品进行架构分类,一般分为3类,分为爆款,引流款,利润款 关于爆款主要指那些流量高,转化率高,销量高,但…

51单片机学习笔记-9蜂鸣器

9 蜂鸣器 [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 9.1 蜂鸣器简介 蜂鸣器 是一种将电信号转换为声音信号的器件,常用来产生…

Hystrix工作步骤说明以及服务监控hystrixDashboard

目录 一、步骤说明和流程解析 二、服务监控hystrixDashboard 官网:How it Works Netflix/Hystrix Wiki GitHub 一、步骤说明和流程解析 1 创建 HystrixCommand(用在依赖的服务返回单个操作结果的时候) 或 HystrixObserableCommand&am…

threadLocal的分享

问题描述:1、书城首页的书明明是广告解锁的,但是没有free标识,经过多次接口请求得出结论,相同的请求参数,有时会展示出free标识,有时不会展示free标识问题分析:1、长时间分析也没有得出结论&…

Linux用户及用户组知识总结

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

SAP 供应商创建默认字段(屏幕格式)后台配置总结

供应商创建默认字段(屏幕格式)后台配置总结 供应商创建时默认字段(屏幕格式的配置在好几个地方的配置来控制。 一 、定义与采购组织特定的屏幕格式 (事务代码: OMFK) IMG路径为如下图: 在这里…

commons-beanutils的三种利用原理构造与POC

写在前面 commons-beanutils 是 Apache 提供的一个用于操作 JAVA bean 的工具包。里面提供了各种各样的工具类,让我们可以很方便的对bean对象的属性进行各种操作。其中比较常使用的有 MethodUtils/ConstructorUtils/PropertyUtils/BeanUtils/ConvertUtils等。 分析…

Python-文件、eval函数

1.文件的概念和作用1.1文件的概念和作用计算机的文件,就是存储在某种长期储存设备上的一段数据长期存储设备包括:硬盘、U盘、移动硬盘、光盘......文件的作用将数据长期保存下来,在需要的时候使用CPU内存 硬盘1.2文件的存储方式在计算机中&am…

机器视觉_HALCON_HDevelop用户指南_3.用HDevelop采集图像

文章目录三、用HDevelop采集/获取图像3.1. 从文件中读取图像3.2. 查看图像3.3. 图像采集助手3.3.1. 从文件或文件夹中获取图像3.3.2. 通过图像获取接口获取图像3.3.3. 修改生成的代码三、用HDevelop采集/获取图像 本章节标题的英文是Image Acquisition,直译是图像采…

微信小程序跳转页面三种方式

wx.navigateTo 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。 wx.navigateBack 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面…

搜索入门技能树

搜索地址 以下哪个网址不能用来搜索: https://so.csdn.net/so/searchhttps://so.csdn.net/waphttps://devbit.csdn.net/searchhttps://dev.csdn.net/ 搜索频道 以下哪个不属于搜索频道: 全站博客下载图片 技能树 在搜索结果页展示的技能树模块中&am…

51单片机学习笔记-2数码管显示

2 数码管显示 [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 2.1 静态数码管显示 2.1.1 原理介绍   LED数码管:数码管是一种简单…

办公技巧:分享7个非常实用的PPT技巧

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️荣誉: CSDN博客专家、数据库优质创作者🏆&…

分享14个你可能还未用上但又实用的CSS属性

大家好,今天分享 14 个实用的CSS属性,你可能还未用上,这些 CSS 属性将帮助你提高开发的效率,本篇文章将介绍上半部分,废话不多说,我们快来了解下吧。一、:in-range 和 :out-of-range 伪类:in-range 和 :out…

域内权限维持:DSRM后门

01、简介 每个域控制器都有一个目录还原模式(DSRM)帐户,它的密码是在安装域控时设置的,实际上它对应的就是sam文件里的本地管理员“administrator”,基本很少会被重置,因此有着极强的隐蔽性。攻击者通过获取域控的DSRM密码&#x…

分布式事务| 使用 dotnetcore/CAP 的本地消息表模式

本地消息表模式本地消息表模式,其作为柔性事务的一种,核心是将一个分布式事务拆分为多个本地事务,事务之间通过事件消息衔接,事件消息和上个事务共用一个本地事务存储到本地消息表,再通过定时任务轮询本地消息表进行消…