FastText 是由 Facebook AI Research(FAIR)开发的开源库,用于学习词表示和执行文本分类。它于 2016 年公开发布。该库将机器学习技术与对计算效率的关注相结合,使其适用于大规模自然语言处理任务。其 GitHub 仓库已于 2024 年 3 月 19 日归档,表明主动开发已结束,但源代码和预训练模型仍然可用。
词表示
FastText 建立在 word2vec 中使用的 skip-gram 模型之上,但也考虑了单词的内部结构。它不是仅为每个单词整体学习一个表示,而是使用字符 n-gram 来表示单词。因此,共享字符序列的单词可以共享部分相同的学习信息。
这种对子词信息的使用对于稀有单词和词形变化复杂的语言尤其有用,并且还使 fastText 能够为训练期间未见过的单词构建表示。Facebook AI Research 后来发布了多种语言的预训练 fastText 向量,包括基于 Common Crawl 和 Wikipedia 训练的 157 种语言的集合。这些向量已被广泛应用于下游任务,如机器学习分类器和语义相似性任务。
文本分类
FastText 也可用于监督文本分类。它结合文本中的单词和词 n-gram 信息来预测类标签。该方法旨在实现计算高效,且在其原始评估中,在训练和预测速度远快于许多当代深度学习模型的同时,达到了与之相当的准确性。监督模式使用分层 softmax 来高效处理大型标签集,使其适用于情感分析和文档标记等任务。
架构与训练
核心模型是一个具有单隐藏层的浅层神经网络,这与现代深度学习中常见的更深层架构形成对比。在无监督模式下,每个单词表示为其字符 n-gram 向量之和加上一个可选的整体词向量。在监督模式下,输入文本被嵌入为其词向量的平均值,然后通过线性分类器进行馈送。训练使用随机梯度下降和负采样执行,这降低了计算成本。这种简单性使 fastText 能在单台机器上于几分钟内扩展到数十亿词。
遗产与影响
FastText 影响了后来文本表示和分类的发展,尤其是在计算资源有限的场景中。其子词方法为形态丰富语言和词表外单词处理的研究提供了参考,并且它仍然是评估更复杂模型(如大型语言模型)的常用基线。归档的仓库和发布的预训练向量继续被学术界和工业界的研究人员和从业者使用,包括在亚马逊网络服务和谷歌云等云平台中用于自定义人工智能流水线。
参见
- Word2vec(相关概念,不在提供的列表中,但作为文本提及)
- Word2vec
- GloVe
- 神经网络(机器学习)
- 自然语言处理