跳转至

1 FastText工具介绍

学习目标

  • 了解FastText工具的作用
  • 了解FastText工具的优势及其原因
  • 掌握FastText的安装方法

1.1 什么是FastText

FastText是由Facebook AI Research (FAIR) 开发的一款高效文本表示和分类工具。它基于Word2Vec的思想,但进行了扩展,能够处理子词信息,适用于多种自然语言处理任务,如文本分类、词向量训练等

1739801644539

1.2 FastText作用

作为NLP工程领域常用的工具包, FastText有两大作用:

  • 进行文本分类
    • 提供了一种高效的文本分类方法,特别适合于大规模数据集。它通过将文本表示为词向量的平均值,结合线性分类器(如 softmax)进行训练和预测。该方法非常快速,能够在短时间内处理大量文本数据,并生成分类模型。
    • 实现快速而准确的文本分类,包括多分类和二分类。
  • 词向量训练
    • 捕捉词汇的语义信息。与Word2Vec不同,FastText还考虑了词的内部结构,因此即使遇到未登录词,也能通过其子词信息生成合理的向量表示。
    • 训练高质量的词向量,可以用于各种下游任务。

1.3 FastText特点

  • 子词信息:FastText不仅考虑整个词,还考虑词的子结构(n-grams),这使得它能够更好地处理未登录词(OOV, Out-of-Vocabulary)和形态丰富的语言。
  • 高效训练:FastText使用了层次化softmax和负采样等技术,使得训练速度非常快,尤其适合大规模数据集。
  • 多任务支持:FastText支持词向量训练和文本分类两种主要任务。

1.4 FastText核心概念

  • 字符级别的N-gram: FastText的核心思想是将单词分解成字符级别的n-grams,例如,对于单词 “apple”,当 n=3 时,其3-gram包括:<ap, app, ppl, ple, le>,单词的前后加 <> 是为了区分前缀和后缀。
  • 子词信息(Subword Representation): FastText将每个n-gram视为一个独立的单元,学习它们的向量表示。单词的向量则由组成该单词的所有n-gram向量的平均值得到。
  • 基于负采样的skipgram(Skipgram with Negative Sampling(SGNS)): FastText使用SGNS作为训练词向量的方法。SGNS的基本思想是给定一个中心词,预测其上下文词,并采用负采样来加速训练。
  • 分层softmax(Softmax Classifier): 对于文本分类任务,FastText将文本中的所有词向量取平均值,然后输入到一个softmax分类器中进行分类。

1.5 FastText优缺点

正如它的名字, 在保持较高精度的情况下, 快速的进行训练和预测是FastText的最大优势。

  • 优点:
    • FastText工具包中内含的FastText模型具有十分简单的网络结构,相比其他NLP模型,FastText在处理大规模文本数据时的速度更快。
    • 使用FastText模型训练词向量时使用层次softmax结构, 来提升超多类别下的模型性能。
    • 由于FastText模型过于简单无法捕捉词序特征, 因此会进行n-gram特征提取以弥补模型缺陷提升精度。
  • 缺点:
    • 对于非常短的文本,效果可能不如深度学习模型。
    • 需要大量数据才能训练出高质量的模型。

1.6 FastText安装

  • 在线安装

    Bash
    # 在python解析器中安装FastText包
    pip install fasttext
    
  • 离线安装:如果在线安装失败可以尝试离线安装

    官网(fasttext-wheel)下载对应操作系统对应python解析器版本的FastText模块的whl文件

    进入到base虚拟环境,然后在whl文件目录下通过以下命令安装

    Bash
    # 当前目录下要有whl文件名称
    pip install asttext_wheel-0.9.2-cp311-cp311-win_amd64.whl
    
  • 验证

    Bash
    (base) PS \xxx\xxx\xxx> python    # 进入python终端
    Python 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import fasttext
    >>> 
    

    1737984728595