Fasttext分类任务原理--读书笔记

fasttext分类任务原理(分类任务)

1.文本预处理

分词:对于中文文本,首先需要进行分词处理,将句子拆分成单个的词或词组。这可以通过使用如jieba等中文分词工具来完成。
去除停用词:可选步骤,根据需求去除文本中的停用词(如“的”、“了”等),以减少噪声。

2.N-gram特征生成

由于fasttext模型过于简单无法捕捉词序特征, 因此会进行n-gram特征提取以弥补模型缺陷提升精度
在FastText中,除了整个词之外,还会生成文本的N-gram特征。对于中文文本,由于词是基本单位,因此N-gram是指词级别的N-gram。
例如,对于文本'我 在 苹果 公司 打工',其Bi-gram特征可能包括'我在'、'在苹果'、'苹果公司'、'公司打工'。这种方式使得低频词和未知词也能通过其字符级别的N-gram特征得到合理的Embedding表示。

3.Embedding层的初始化

FastText会初始化一个Embedding空间,空间中的每个维度都对应一个可能的词或N-gram的潜在嵌入向量。在训练过程中,不仅单词本身的Embedding向量会被调整,其N-gram特征的Embedding向量也会被同时训练。这些向量通常是随机初始化的,并在训练过程中通过反向传播算法进行调整。

4.模型训练

输入层:将文本中的每个词和N-gram特征转换为其对应的Embedding向量。
隐含层(可选):在某些情况下,fastText可能不包含显式的隐含层,而是直接将输入层的向量进行平均或求和,得到文本的表示向量。fasttext神经网络层与CBOW一样,但是CBOW预测的是中心词,FastText最后输出的是各个标签的概率。
输出层:使用softmax层或层次softmax进行分类,输出文本属于各个类别的概率。

5.分类任务

更新Embedding:在训练过程中,根据模型的损失函数(如交叉熵损失)和反向传播算法,更新每个词和N-gram特征的Embedding向量,以最小化分类错误。
考虑N-gram的Embedding:在计算文本的表示向量时,将文本中所有词和N-gram特征的Embedding向量进行平均或求和。这样做可以捕捉到文本中的局部和全局信息,从而提高分类的准确性。

fasttext的结构(分类任务)

FastText在模型结构上采用了CBOW模型的结构,结构如图,整个网络与CBOW都一样,不同之处主要有以下方面:
1.CBOW预测的是中心词,FastText最后输出的是各个标签的概率;
2.FastText由于面向的是超多分类以及大量数据的情况,所以FastText最后的输出采用了层级Softmax,大大优化了模型的运行速度。

n-gram(分类任务)

首先要声明,在原论文中,n-gram并不是FastText必要的步骤,仅仅是一个锦上添花的步骤而已,没有n-gram它还是FastText。
引入n-gram首先是为了解决词序问题,比如两个句子“你礼貌吗”和“礼貌你吗”这两个句子仅仅词序不同,但是意思却天差地别,这种情况是检测不到词序的不同的,由此提出了n-gram。

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

1.分类模型的n-gram是word级别的,并非字符级别,比如(I have an apple --> 2-gram:[I have,have an,an apple]);
2.n-gram并不是FastText模型中必须的,仅仅是锦上添花;
3.CBOW和FastText都是用求和平均值来预测的;
4.词向量初始化都是随机的,FastText并没有在word2vec预训练词嵌入的基础上再训练 。

fasttext 词嵌入模型(词编码任务)

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

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

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

1.词 2.子词 3.词+子词
fasttext选择了第三种方法,对中心词使用子词+词的输入来预测周围词。比如一个单词normal,我们将其输入到网络中时,<no,nor,orm,rma,mal,al>,normal 七个部分,并不仅是子词或是词,而normal的词向量则是七个部分的总和并求平均。

对于未登录词(Out−of−Vocabulary),这里采用的方法是将OOV词按照n-gram进行拆解,然后将每一部分的词向量进行相加并求平均值,则得到OOV词的词向量。

参考来源:

NLP模型(三)——FastText介绍-CSDN博客

  • 31
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值