fastText 库:高效文本处理库

fastText 库简介

fastText 是由 Facebook AI 研究院(FAIR)开发的 高效文本处理库,用于 词向量训练、文本分类、相似度计算,适用于 自然语言处理(NLP) 任务。

fastText 结合了 n-gram、子词信息,可以 快速训练大规模文本数据,尤其适用于 低资源语言


1. fastText 的主要功能

  • 无监督学习(词向量训练):训练 Word Embeddings,支持 Skip-gramCBOW 模型。
  • 有监督学习(文本分类):用于 情感分析、新闻分类、垃圾邮件检测 等任务。
  • 支持 OOV(未登录词):基于 子词(subword n-grams) 处理低频词,提高泛化能力。
  • 计算相似词:可以找到语义相似的词,例如 "king""queen"
  • 速度快:比 Word2Vec、GloVe 训练更快,适用于 大规模数据集

2. 安装 fastText

2.1 通过 pip 安装

pip install fasttext

注意:官方 fastText 需要 C++ 编译,有时安装 fasttext 可能失败,可以使用以下方法:

pip install fasttext-wheel

2.2 从源码安装

如果 pip 安装失败,可以从 GitHub 编译:

git clone https://github.com/facebookresearch/fastText.git
cd fastText
pip install .

3. 训练词向量

3.1 训练 fastText 词向量

fastText 可以训练 Word Embeddings(类似 Word2Vec)。

import fasttext

# 训练 skip-gram 词向量
model = fasttext.train_unsupervised("data.txt", model="skipgram")

# 保存模型
model.save_model("fasttext_model.bin")

参数

  • "data.txt":文本语料,每行一句话。
  • model="skipgram":使用 Skip-gram 训练模型(也可以使用 "cbow")。
  • save_model():保存模型为 .bin 文件。

3.2 使用训练好的词向量

# 加载模型
model = fasttext.load_model("fasttext_model.bin")

# 获取单词的词向量
vector = model.get_word_vector("python")
print(vector[:10])  # 只打印前 10 维

# 查找相似词
print(model.get_nearest_neighbors("king"))

输出示例

[(0.89, 'queen'), (0.85, 'prince'), (0.81, 'monarch')]

fastText 可以查找语义相近的词,适用于 信息检索、推荐系统


4. 训练文本分类模型

4.1 准备数据

fastText 需要 每行数据前加 __label__ 作为标签

__label__positive This movie is amazing and full of life.
__label__negative I didn't like the movie at all.
__label__positive A fantastic film with great acting.
__label__negative The worst movie I have ever seen.

4.2 训练文本分类模型

import fasttext

# 训练分类模型
model = fasttext.train_supervised("train.txt", epoch=25, lr=0.5)

# 保存模型
model.save_model("text_classification.bin")

参数

  • train_supervised():用于 监督学习(文本分类)
  • epoch=25:训练 25 轮
  • lr=0.5:学习率。

4.3 使用文本分类模型

# 加载模型
model = fasttext.load_model("text_classification.bin")

# 进行文本分类
print(model.predict("I love this movie!"))  # 输出类别

输出

('__label__positive',)

fastText 适用于新闻分类、情感分析、垃圾邮件检测等任务


5. 预训练 fastText 词向量

Facebook 提供了 预训练的 fastText 词向量,可以直接下载并使用:

wget https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.en.300.bin.gz
gunzip cc.en.300.bin.gz

加载预训练模型:

import fasttext

model = fasttext.load_model("cc.en.300.bin")
print(model.get_nearest_neighbors("computer"))

fastText 预训练模型支持 157 种语言,可用于 NLP 任务。


6. fastText vs. Word2Vec vs. BERT

模型适用任务速度是否支持 OOV语义信息
Word2Vec词向量训练仅基于词
fastText词向量、文本分类更快✅(支持子词)考虑子词信息
BERT句向量、NLP 任务较慢基于 Transformer,语义更强

fastText 比 Word2Vec 更强大(支持 OOV),但不如 BERT 处理句子关系


7. 总结

  • fastText 支持词向量训练和文本分类,适用于 大规模 NLP 任务
  • 比 Word2Vec 更快,支持 子词(subword n-grams),可处理未登录词(OOV)。
  • 适用于 文本分类、语义搜索、情感分析、低资源语言建模
  • 提供 预训练模型(支持 157 种语言),可直接用于 NLP 任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值