NLP模型(三)——FastText介绍

news2024/11/22 15:29:17

文章目录

  • 1. FastText 概述
  • 2. FastText 分类模型
    • 2.1 结构
    • 2.2 n-gram
  • 3. FastText 词嵌入模型

1. FastText 概述

首先,我们得搞清楚,FastText 是什么?有的地方说是分类模型,有的地方又将其用于词向量,那么,FastText究竟指的是什么?我搜集资料时发现很多视频的up主都没弄清楚,其实,FastText 的指向有两个模型,一个就是指向的文本分类模型,首先在论文《Bag of Tricks for Efficient Text Classification》中提出,另一个自然就是词向量模型,首先在文章《Enriching Word Vectors with Subword Information》中提出,接下来我们将会介绍一下两种FastText模型,并将其复现。

2. FastText 分类模型

FastText的分类模型具有速度快、精度高的优点,其分类的准确率甚至不输于大型的深度学习模型,但是由于其模型简单,其训练的速度则要比后者快上好几个数量级。

2.1 结构

FastText在模型结构上采用了 C B O W CBOW CBOW 模型的结构,结构如下:
在这里插入图片描述
其中这里的 x 1 , x 2 , ⋯   , x N x_1,x_2,\cdots,x_N x1,x2,,xN 是输入的词,整个网络与 C B O W CBOW CBOW 都一样,不同之处主要有以下方面

  1. C B O W CBOW CBOW 预测的是中心词,FastText最后输出的是各个标签的概率;
  2. FastText 由于面向的是超多分类以及大量数据的情况,所以FastText 最后的输出采用了层级Softmax,大大优化了模型的运行速度

2.2 n-gram

首先要声明,在原论文中,n-gram并不是FastText必要的步骤,仅仅是一个锦上添花的步骤而已,没有n-gram它还是FastText。

引入n-gram首先是为了解决word2vec中的词序问题,比如两个句子“你礼貌吗”和“礼貌你吗”这两个句子仅仅词序不同,但是意思却天差地别,这种情况word2vec是检测不到词序的不同的,由此提出了n-gram。

注意,词分类模型的n-gram的是word级别的,并不是字符级别的,比如,有如下的句子
I h a v e a n a p p l e I \hspace{0.5em}have\hspace{0.5em} an \hspace{0.5em}apple Ihaveanapple如果n-gram中的 n = 2 n=2 n=2 时,那么输入其中的句子经过n-gram后被分为以下部分 I h a v e , h a v e a n , a n a p p l e I \hspace{0.5em}have,have\hspace{0.5em} an,an \hspace{0.5em}apple Ihave,havean,anapple三个部分,输入也是这三个部分。

尽管如此,还是需要注意一下几个方面:

  1. 分类模型的n-gram是word级别的,并非字符级别
  2. n-gram并不是FastText模型中必须的,仅仅是锦上添花
  3. C B O W CBOW CBOW 和 FastText都是用求和平均值来预测的
  4. 词向量初始化都是随机的,FastText 并没有在 word2vec 预训练词嵌入的基础上再训练

3. FastText 词嵌入模型

FastText 模型中也引入了n-gram,n-gram的引入其实是为了解决word2vec忽略词型的问题。比如单词 e a t , e a t e n eat,eaten eat,eaten 其实就是一个单词的不同时态,但是,在不同语境下,其词向量可能会相差特别大,而引入n-gram就是为了能够很好的解决词的形态学方面的问题。

例如一个单词 n o r m a l normal normal,如果使用n-gram,当 n = 3 n=3 n=3 时,可以将其分为 n o r , o r m , r m a , m a l nor,orm,rma,mal nor,orm,rma,mal 四个部分,在使用n-gram时一般会用一个尖括号将单词括起来,表示这个单词的开始和结束,如 n o r m a l normal normal 变为 < n o r m a l > <normal> <normal>,相应的n-gram也就分为 < n o , n o r , o r m , r m a , m a l , a l > <no,nor,orm,rma,mal,al> <no,nor,orm,rma,mal,al> 六个部分,其中每个部分又称为子词。

引入了n-gram后,接下来需要做的就是将n-gram后的部分输入模型,这里因为是根据word2vec改进的,所以依旧使用的是 S k i p − g r a m Skip-gram Skipgram 模型,而这里输入的时候,因为我们有子词以及词,就又会有不同的选择了。

  1. 子词
  2. 词+子词

对于word2vec而言,其训练的有中心词以及周围词矩阵,设 a a a 为中心词矩阵, b b b 为周围词矩阵,那么搭配就有很多种,这里FastText选择的是 a 3 + b 1 a3+b1 a3+b1,即对中心词使用子词+词的输入来预测周围词。

2017 ACL 的 FastText展示提问环节,有人问过为什么不是 a 2 a2 a2,作者的回答是他们试过 a 2 a2 a2,发现效果并不好。

比如一个单词 n o r m a l normal normal,我们将其输入到网络中时,输入的是 < n o , n o r , o r m , r m a , m a l , a l > , n o r m a l <no,nor,orm,rma,mal,al>,normal <no,nor,orm,rma,mal,al>,normal 七个部分,并不仅是子词或是词,而 n o r m a l normal normal 的词向量则是七个部分的总和并求平均。

对于未登录词 ( O u t − o f − V o c a b u l a r y ) (Out-of-Vocabulary) (OutofVocabulary),这里采用的方法是将 O O V OOV OOV 词按照n-gram进行拆解,然后将每一部分的词向量进行相加并求平均值,则得到 O O V OOV OOV 词的词向量。

当然,对于进行 n-gram 后没有的部分也是无法进行词向量的计算的,而且,这样做的前提是基于词的拼写、子词在形态学上是有意义的。因此,不同语言,不同效果,作者发现这种方法对阿拉伯语、德语和俄语就比对英语、法语和西班牙语效果好。

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

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

相关文章

ppt复现CVPR顶会流程图

本次目标如下图&#xff0c;难点在于立方体和矩阵格网的绘制 文末附机器学习绘图模板~ 先来绘制立方体&#xff0c;插入——形状——立方体&#xff0c;调节成如下图&#xff0c;再点击水平翻转&#xff1a; 绘制矩形&#xff0c;多绘制几个组合成矩形格网&#xff0c;右键设置…

TFT-LCD屏幕读取Flash芯片图片资源并显示

TFT-LCD屏幕读取Flash芯片图片资源并显示 在前面用TFT-LCD显示图片的实验中&#xff0c;由于图片资源过大&#xff0c;240 * 320 的图片大小为150K&#xff0c;而STM32F103ZET6的内部Flash才512K&#xff0c;最多能放三张图片&#xff0c;所以这次将图片放到外部Flash中&#…

【Java八股文总结】之Redis数据库

文章目录Redis 数据库一、Redis基础1、Redis应用场景2、Redis数据类型3、Redis常用命令4、Redis为什么速度快&#xff1f;5、Redis和Memcached的区别和共同点6、Redis和MySQL的区别&#xff1f;二、高可用1、主从复制Q&#xff1a;主从复制主要的作用?2、Redis主从复制原理Red…

Cadence之Allegro:蛇形与差分等长

文章目录 一、三种等长方法二、直接等长法设置教程1、差分设置2、analysis设置三、pin-pair法设置教程一、三种等长方法 直接等长法 适用pin和pin之间没有容抗和阻抗的情况,即pin和pin之间只有一根线、没有电阻和电容的时候才可以使用这种方法。 pin-pair法 建立Sigxplorer模形…

基于stm32的光照强度检测智能窗帘系统

资料编号&#xff1a;098 下面是相关功能视频演示&#xff1a; 98-基于stm32的光照强度检测智能窗帘系统Proteus仿真&#xff08;源码仿真全套资料&#xff09;功能介绍&#xff1a; 检测当前的光照强度&#xff0c;LCD1602显示&#xff0c;并且可以自动打开关闭窗帘&#xf…

Tomcat AJP 文件包含漏洞(CVE-2020-1938)

目录 1&#xff0e;漏洞简介 2、AJP13 协议介绍 Tomcat 主要有两大功能&#xff1a; 3&#xff0e;Tomcat 远程文件包含漏洞分析 4&#xff0e;漏洞复现 5、漏洞分析 6&#xff0e;RCE 实现的原理 1&#xff0e;漏洞简介 2020 年 2 月 20 日&#xff0c;公开CNVD 的漏洞公…

【ACL 2022】用于多标签文本分类的对比学习增强最近邻机制

论文地址&#xff1a;https://aclanthology.org/2022.acl-short.75.pdf 1. 摘要 多标签文本分类&#xff08;MLTC&#xff09;是自然语言处理中的一项基本且具有挑战性的任务。以往的研究主要集中在学习文本表示和建模标签相关性上。然而&#xff0c;在预测特定文本的标签时&…

玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!

sql语句group by使用详解group by的基本语法基本语法什么是分组查询(一个字段)多个字段的分组查询1.两个字段的分组查询2.三个字段及N个字段进行分组查询having子句的使用基本语法having是干什么的演示分组查询select关键字后面列名书写的注意事项group by的基本语法 基本语法…

入门必写项目之图书管理系统(分析详解+完美运行+代码可拿)

文章目录一、需求分析二、思路分析三、包分类四、模块代码展示1.1书籍类&#xff08;Book&#xff09;实现1.2书架类&#xff08;BookList类&#xff09;实现2.1功能接口&#xff08;IOperation&#xff09;实现2.2增加图书&#xff08;Addoperation&#xff09;实现2.3删除图书…

家庭实验室系列文章-电脑如何配置网络唤醒 (WOL)?

前言 其实这个专题很久很久之前就想写了&#xff0c;但是一直因为各种原因拖着没动笔。 因为没有资格&#xff0c;也没有钱在一线城市买房 (&#x1f602;&#x1f602;&#x1f602;); 但是在要结婚之前&#xff0c;婚房又是刚需。 我和太太最终一起在一线城市周边的某二线城…

Pyspark学习笔记小总

pyspark官方文档: https://spark.apache.org/docs/latest/api/python/index.html pyspark案例教程: https://sparkbyexamples.com/pyspark-tutorial/ 1. 写在前面 这篇文章记录下最近学习的有关Pyspark以及用spark sql去处理大规模数据的一些常用语法&#xff0c;之前总觉得p…

中小企业办公自动化系统设计与实现(SSH)

目 录 摘 要 I ABSTRACT II 目 录 IV 第1章 绪论 1 1.1 课题背景 1 1.1.1 办公自动化概述 1 1.1.2 中小企业办公模式的现状 2 1.2 研究意义 3 1.3 设计技术及开发环境 5 1.3.1 设计技术 5 1.3.2 开发环境 7 第2章 可行性分析 9 2.1 组织和管理可行性 9 2.2 经济可行性 9 2.3 技…

动态规划模板总结(1)

动态规划思想(1) 背包问题 ​ 分类&#xff1a; 01 背包问题 ​ 含义&#xff1a;每个物体最多选1次&#xff0c;在不超过总体积的情况下价值最大图解&#xff1a; f(i,j)表示的是集合的某种属性&#xff0c;是个值。 集合是所有选法 i 只从前i个中选 朴素实现 #include&…

ElasticSearch是什么?ElasticSearch在SpringBoot中怎么用?SpringBoot整合ElasticSearch

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.4.3.4 ElasticSearch(ES) 3.4.3.4.1 介绍 是一个…

MySQL JDBC编程

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;MySQL &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 文章目录前置知识APIJDBC的使用安装数据库代码插入操作查找操作前置知识 API API(Application Program Interface)被定义为应用程…

金属纳米颗粒图像分割和计数

代码下载链接&#xff0c;直接上程序运行的效果&#xff1a; 为了便于大家学习&#xff0c;把原图也都贴上了&#xff1a;

乐趣国学—品读《弟子规》中的“亲仁”之道

文章目录亲仁同是人 类不齐 流俗众 仁者希果仁者 人多畏 言不讳 色不媚能亲仁 无限好 德日进 过日少不亲仁 无限害 小人进 百事坏亲仁 “亲仁”&#xff0c;亲是亲近、学习的意思&#xff0c;亲近那些有道德、有学问、有人生境界、有情操的人&#xff0c;这是讲择师。一个人的学…

【Redis】配置项与发布订阅

一、配置项 redis相关配置项都存放在redis.conf文件中&#xff0c;暂时只列举常见的几个&#xff0c;其余的工作中用到再回来更新 1、网络 bind&#xff1a;指定redis只能接受来自此IP绑定的网卡的请求&#xff0c;注意此默认值默认外网是不可访问的&#xff0c;如果想要开启…

Unity3D制作塔防类游戏

演示 功能简介 制作细节详解 演示 资源包:链接&#xff1a;https://pan.baidu.com/s/15MMtYeKkNk5xChvCx0EckQ?pwdd1ub 提取码&#xff1a;d1ub 对应视频教学:01-开始介绍和创建工程_哔哩哔哩_bilibili 功能简介 分为蓝&#xff0c;紫&#xff0c;粉&#xff0c;红四…

[iOS]UI分析工具Reveal

Reveal是ITTY BITTY发布的UI分析工具&#xff0c;可以很直观的查看App的UI布局。 去官网下载安装Reveal&#xff0c;启动后样式如下。 下面介绍一下如何在非越狱设备和越狱设备上用Reveal工具分析UI 一、非越狱设备用Reveal分析UI 1.安装MonkeyDev 安装流程可查看前文[iOS]…