前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >fasttext工具

fasttext工具

原创
作者头像
@小森
发布2024-12-28 18:32:03
发布2024-12-28 18:32:03
1240
举报

FastText 是由 Facebook AI Research (FAIR) 开发的一款高效文本处理工具包,主要用于文本分类和词向量表示。

fasttext工具包的优势

  • 在保持较高精度的情况下, 快速的进行训练和预测是fasttext的最大优势
  • FastText 是开源的,用户可以自由使用、修改和分发。
  • fasttext工具包中内含的fasttext模型具有十分简单的网络结构。
  • 由于fasttext模型过于简单无法捕捉词序特征, 因此会进行n-gram特征提取以弥补模型缺陷提升精度
  • 使用fasttext模型训练词向量时使用层次softmax结构, 来提升超多类别下的模型性能

fasttext的安装

代码语言:txt
复制
pip install fasttext

文本分类种类

  • 二分类:
    • 文本被分类两个类别中, 往往这两个类别是对立面, 比如: 判断一句评论是好评还是差评.
  • 单标签多分类:
    • 文本被分入到多个类别中, 且每条文本只能属于某一个类别(即被打上某一个标签), 比如: 输入一个人名, 判断它是来自哪个国家的人名.
  • 多标签多分类:
    • 文本被分人到多个类别中, 但每条文本可以属于多个类别(即被打上多个标签), 比如: 输入一段描述, 判断可能是和哪些兴趣爱好有关, 一段描述中可能即讨论了美食, 又太讨论了游戏爱好

fasttext训练模型

FastText 的训练数据需要满足以下格式:

  • 每行一个样本。
  • 样本的格式为:__label__<标签> <文本>
代码语言:txt
复制
__label__positive I love this movie!
__label__negative This film is terrible.

训练模型

代码语言:txt
复制
import fasttext

# 训练模型
model = fasttext.train_supervised(input="train.txt", epoch=10, lr=1.0, wordNgrams=2)

# 保存模型
model.save_model("model.bin")
  • input:训练数据文件路径。
  • epoch:训练轮数。
  • lr:学习率。
  • wordNgrams:使用 n-gram 特征(例如 wordNgrams=2 表示使用二元语法)。

加载模型并进行预测

代码语言:txt
复制
# 加载模型
model = fasttext.load_model("model.bin")

# 预测
text = "This movie is amazing!"
predictions = model.predict(text)
print(predictions)  # 输出: (('__label__positive',), array([0.99999994]))

评估模型

代码语言:txt
复制
test_result = model.test("test.txt")
print(f"Precision: {test_result[1]}")
print(f"Recall: {test_result[2]}")
print(f"Number of examples: {test_result[0]}")

输出:

代码语言:txt
复制
Precision: 0.95
Recall: 0.95
Number of examples: 100
  • 预测结果:模型对输入文本的分类标签及其置信度。
  • 评估结果:模型在测试集上的精度(Precision)、召回率(Recall)和测试样本数量。

训练词向量

  • 第一步: 获取数据
  • 第二步: 训练词向量
  • 第三步: 模型超参数设定
  • 第四步: 模型效果检验
  • 第五步: 模型的保存与重加载
代码语言:txt
复制
import fasttext
model1 = fasttext.train_unsupervised('data/fil9') 
model = fasttext.train_unsupervised('data/fil9', "cbow", dim=300, epoch=1, lr=0.1, thread=8)
model.get_nearest_neighbors('sports')
#
[(0.8414610624313354, 'sportsnet'), (0.8134572505950928, 'sport'), (0.8100415468215942, 'sportscars'), (0.8021156787872314, 'sportsground'), (0.7889881134033203, 'sportswomen'), (0.7863013744354248, 'sportsplex'), (0.7786710262298584, 'sporty'), (0.7696356177330017, 'sportscar'), (0.7619683146476746, 'sportswear'), (0.7600985765457153, 'sportin')]
model.save_model("data/fil91.bin")
# 加载
model = fasttext.load_model("data/fil91.bin")
model.get_word_vector("the")

NLP中的标准数据集

  • CoLA 数据集
  • SST-2 数据集
  • MRPC 数据集
  • STS-B 数据集
  • QQP 数据集
  • MNLI 数据集
  • SNLI 数据集
  • QNLI 数据集
  • RTE 数据集
  • WNLI 数据集
  • diagnostics数据集

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • fasttext工具包的优势
  • fasttext的安装
  • 文本分类种类
  • 训练词向量
  • NLP中的标准数据集
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档