1 FastText工具介绍¶
学习目标¶
- 了解FastText工具的作用
- 了解FastText工具的优势及其原因
- 掌握FastText的安装方法
1.1 什么是FastText¶
FastText是由Facebook AI Research (FAIR) 开发的一款高效文本表示和分类工具。它基于Word2Vec的思想,但进行了扩展,能够处理子词信息,适用于多种自然语言处理任务,如文本分类、词向量训练等。

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安装¶
-
在线安装
-
离线安装:如果在线安装失败可以尝试离线安装
官网(fasttext-wheel)下载对应操作系统对应python解析器版本的FastText模块的whl文件
进入到base虚拟环境,然后在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 >>>