NLP系列之---FastText

NLP系列之—FastText

FastText模型



一、FastText模型

FastText 是一个由 Facebook AI Research(FAIR) 开发的高效文本分类和词嵌入工具,专注于生成高质量的词嵌入和高效的文本分类。它基于 Word2Vec 模型的思想,通过引入子词嵌入(Subword Embeddings)和n-gram 特征,增强了对未登录词(OOV)和词形变体的处理能力,提升了速度和内存效率。

FastText 的核心模型结构
FastText 模型的原理基于 Word2Vec,即通过上下文学习词汇的语义表示。然而,FastText 做了多个改进,使其在处理大规模文本、未登录词(OOV)以及多语言任务时表现更好。主要的改进包括:
1. 子词嵌入(Subword Embeddings)
2. n-gram 特征
3. 层次 Softmax
4. 文本分类

在这里插入图片描述

词袋模型(BoW):

  • 原理:词袋模型仅仅统计每个词在文本中出现的次数,不考虑词序、上下文、或词的内部结构。
  • 表示方式:BoW 把文本表示成一个向量,向量的每个维度代表词汇表中的一个词,值代表词出现的次数或是否出现。
  • 例子:句子 “I love cats” 和 “Cats love me” 会被表示为相同的词频向量,因为 BoW 只关心词的出现频次,忽略词序。

1. 词嵌入基础理论:Word2Vec 的扩展

什么是 Word Embedding ?
在说明 Word2vec 之前,需要先解释一下 Word Embedding。 它就是将「不可计算」「非结构化」的词转化为「可计算」「结构化」的向量。
什么是 Word2vec ?
Word2vec 是 Word Embedding 的方法之一。他是 2013 年由谷歌的 Mikolov 提出了一套新的词嵌入方法。Word2vec 在整个 NLP 里的位置可以用下图表示:
在这里插入图片描述

Word2Vec

2013年,Google团队发表了word2vec工具(参见Mikolov等人发表的《Distributed Representations of Sentences and Documents》、《Efficient estimation of word representations in vector space》等论文),通过将所有的词向量化,来定量的度量词与词之间的关系,挖掘词之间的联系。

主要包含

  • 两个模型:Skip-Gram(跳字模型)和CBOW,Continuous Bag of Words(连续词袋模型)
  • 两种高效训练的方法:Negative Sampling(负采样)和Hierarchical Softmax(层次Softmax)

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

在这里插入图片描述
在这里插入图片描述
无论是 CBOW 还是 Skip-gram,词向量的表示通过以下方式学习:

  • 在模型的输入层,每个词被表示为 one-hot 编码的向量。假设词汇表大小为 V,每个词的 one-hot 向量大小也是 V,仅在该词对应的维度上值为 1,其他位置都为 0。
  • 模型会通过一个隐藏层将输入的 one-hot 向量映射为一个低维的连续向量(即词嵌入)。假设嵌入维度为 N,则每个词会被表示为一个 N 维向量。
  • 在输出层,模型会根据输入向量进行预测,输出的是词汇表中每个词出现的概率。

在 Word2Vec 中,为了加快模型的训练,通常使用 负采样 技术。负采样是一种近似技术,它通过随机选择一些不相关的负样本(不正确的上下文词),来简化训练过程。

传统的 Softmax 在处理大规模词汇表时计算成本非常高,因为每次更新模型都需要对整个词汇表计算概率。为了减少计算量,负采样仅对少量的负样本计算损失,而不是对所有可能的词进行计算。
在这里插入图片描述

2. 子词嵌入(Subword Embeddings)

子词嵌入(Subword Embeddings) 是对词进行更细粒度的表示技术,它将词分解为多个子词或字符级别的片段,然后对这些子词片段进行嵌入学习。
FastText 的主要创新之一是引入了子词嵌入的概念。它不仅学习词的嵌入,还学习词的子词(subwords,n-gram)的嵌入。这样做的好处是:

  • 处理未登录词(OOV):即使一个词没有出现在训练集中,FastText 可以通过其子词来生成该词的嵌入。
  • 处理词形变体:对于词干相同但词形不同的词(如 “run” 和 “running”),由于它们的子词有很大的重叠,FastText 可以捕捉到它们之间的语义相似性。

为什么需要子词嵌入?
传统的词嵌入模型(如 Word2Vec、GloVe)直接为每个完整的词生成一个固定的向量表示。虽然这在捕捉词语之间的语义关系时非常有效,但它也有以下几个明显的局限性:

  • 无法处理未见词:模型只能生成训练集中出现过的词的向量表示,对于训练中没有见过的词(如新词或罕见词),模型无法提供向量。
  • 对词的形态变化不敏感:词嵌入模型无法很好地捕捉同一个词的不同形态。例如,“run”和“running”在传统词嵌入中会被视为两个完全独立的词,而没有考虑到它们的相似性。

3. n-gram 特征的引入

n-gram 特征允许 FastText 捕捉词汇之间的局部上下文依赖性,提高了模型对短语的理解。n-gram 特征主要用来表示连续的 n 个词的组合,从而增强对词汇序列和搭配的处理能力。

什么是 n-gram?
n-gram 是指由**连续的 n 个元素(词、字符等)**组成的片段。在处理文本时,n-gram 可以表示为连续的 n 个词语或 n 个字符。这种方法能够捕捉上下文的局部信息,帮助模型理解语言中的短语结构和词序列。

  • 单词级 n-gram:以单词为单位生成 n-gram。
  • 字符级 n-gram:以字符为单位生成 n-gram。

(1) n-gram 表示的生成
FastText 不仅会对每个单词生成嵌入,还会对多个连续词组合生成嵌入。例如,对于句子 “I love apples”,可以生成以下 2-gram:

  • I love
  • love apples

(2) n-gram 的优势

  • 捕捉词的搭配关系:n-gram 特征能够捕捉到多个词的组合关系,适合文本分类和上下文丰富的场景。
  • 增强短文本的语义理解:对于短文本或短语,n-gram 特征能够更好地表示局部依赖关系。

(3) n-gram 在 FastText 中的作用

  • 文本分类增强:在 FastText 中,n-gram 特征用于增强文本分类的效果。通过将输入文本划分为若干 n-gram片段,FastText 能够捕捉到更多词组和短语的信息。这有助于改善模型的分类能力,尤其是在处理短文本或稀有词时。
  • 捕捉局部上下文信息:n-gram 能帮助模型捕捉短语和词汇之间的局部依赖性,这对于理解自然语言中的常用搭配和短语非常重要。

4. 层次 Softmax(Hierarchical Softmax)

层次 Softmax 是一种优化大规模分类问题的方法。它通过将类别结构化为二叉树,将计算复杂度从线性(O(N))降低到对数级(O(log N)),特别适合大规模词汇表的场景。
(1) 原理:
FastText 使用层次 Softmax 来处理大规模词汇分类问题。每个词作为叶节点,构建一个 Huffman 树,通过遍历树的路径来预测词。这种方式大大减少了计算量,尤其是在词汇表很大的情况下。
(2) 优势:
大规模词汇表的高效计算:相比于标准 Softmax,层次 Softmax 在处理大规模词汇表时极大地降低了计算复杂度。

二、FastText 的工作流程

FastText 的工作流程主要包含以下几个步骤:

  • n-gram 切分:

每个词被分解为多个 n-gram(子词片段)。这些 n-gram 将参与到模型的训练中。例如,单词 “banana” 可能会被分解为 “ban”, “ana”, “nan” 等 n-gram。

  • 词表示:

句子中的每个词会由它的 n-gram 嵌入表示。整个句子的向量表示则是它包含的所有词的 n-gram 嵌入的平均值或加权和。

  • 训练模型:

使用 CBOW 或 Skip-gram 训练模型,模型的目标是最大化上下文词和目标词之间的相似性。负采样和分层 Softmax 用来提高计算效率。

  • 词嵌入生成:

训练完成后,模型能够为每个词生成嵌入向量,包括训练集中未见过的词(通过它们的 n-gram 生成)。

  • 分类器训练:

在文本分类任务中,FastText 使用嵌入的句子向量作为输入,训练一个简单的分类器(如线性分类器)来预测文本所属的类别。

在这里插入图片描述


总结

**FastText 的原理是通过结合词袋模型与 n-gram 技术,在生成词嵌入时既能够保留词的上下文信息,也能捕捉词的内部结构。它通过 skip-gram 或 CBOW 模型进行上下文预测,并结合分层 Softmax 和负采样来加速训练。**FastText 的 n-gram 机制使得它能够处理未见词和拼写错误,同时也在保持高效性和准确性的前提下适应大规模文本处理任务。

FastText 在 Word2Vec 的基础上,添加了 n-gram 特征,即通过将每个词分解为多个字符级别的片段(n-gram)来进行学习。这样,它不仅可以学习到词的整体表示,还能捕捉到词的内部结构信息。这一改进使得 FastText 在处理词形变化和未见词(out-of-vocabulary)方面更加有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值