Python深度学习之FastText实现文本分类详解

作者:小鱼干儿? 时间:2022-09-03 10:35:28 

FastText是一个三层的神经网络,输入层、隐含层和输出层。

Python深度学习之FastText实现文本分类详解

FastText的优点:

使用浅层的神经网络实现了word2vec以及文本分类功能,效果与深层网络差不多,节约资源,且有百倍的速度提升

深度学习和机器学习的区别:

与传统机器学习不同,深度学习既提供特征提取功能,也可以完成分类的功能。机器学习需要再根据提取到的特征再进行分类。

安装FastText

使用pip安装

pip install fasttext

因为FastText依赖C++的环境,安装的时候可能会报错,有的是C++ 11

有的是C++14看报错里面缺少那个版本的C++环境就安装那个版本的环境就可以了

使用FastText进行文本分类的一般步骤

Python深度学习之FastText实现文本分类详解

数据格式的要求:

__label__标签 文本内容  或  文本内容 __label__标签
__label__标签\t文本内容  或  文本内容\t__label__标签
文本内容和标签之间用\t或空格都可以
目前这几种形式都支持

数据预处理:

将原数据处理为数据要求的格式,分词以后词于词之间用空格连接

这个根据自己数据的情况自己进行处理

训练模型

import fasttext
model = fasttext.train_supervised('train.csv', lr=1.0, wordNgrams=2, verbose=2, minCount=1, epoch=25, loss="hs")     # 训练模型
# train.csv 文件路径,也可以是txt文件,里面的参数根据需要调
"""
 训练一个监督模型, 返回一个模型对象
 input:           训练数据文件路径
 lr:              学习率
 dim:             向量维度
 ws:              cbow模型时使用
 epoch:           次数
 minCount:        词频阈值, 小于该值在初始化时会过滤掉
 minCountLabel:   类别阈值,类别小于该值初始化时会过滤掉
 minn:            构造subword时最小char个数
 maxn:            构造subword时最大char个数
 neg:             负采样
 wordNgrams:      n-gram个数
 loss:            损失函数类型, softmax, ns: 负采样, hs: 分层softmax
 bucket:          词扩充大小, [A, B]: A语料中包含的词向量, B不在语料中的词向量
 thread:          线程个数, 每个线程处理输入数据的一段, 0号线程负责loss输出
 lrUpdateRate:    学习率更新
 t:               负采样阈值
 label:           类别前缀
 verbose:         ??
 pretrainedVectors: 预训练的词向量文件路径, 如果word出现在文件夹中初始化不再随机
 model object
 """

预测数据

使用predict预测数据,预测一段文本属于的类别

model.predict(x)  # x文本内容 返回的数据格式(('__label__4',), array([0.99441689]))
# 可能性最大的标签和准确率

使用test验证模型的准确率,传入的是一个文件,文件的格式和训练集一样

返回一个元组(样本数,精确率,找回率)

模型的保存

model.save_model("model_cooking.bin") # 文件路径

模型读取

fasttext.load_model("model_cooking.bin") # 读取模型

模型的优化

直接使用默认参数去训练模型一般都得不到特别好的结果,可以通过一些手段来优化模型。第一种可以采取的手段是去掉语料库当中的停止词,对于英文的语料库来说,还可以把所有的大写字母都转化成小写字母。另一种可以采取的手段是调整超参数,比如说修改学习速率、修改epoch等,大家可以参照着fastTest的文档去进行相应的调整,fastText的文档中介绍了一种更加方便的自动调参方法,只要我们同时提供训练集和测试集就可以了,带来的精确度提升还是非常显著的:

model = fasttext.train_supervised(input='train.csv', autotuneValidationFile='test.csv', autotuneDuration=600)
"""
autotuneValidationFile='test.csv',   测试集数据集
autotuneDuration=600                 时间限制,单位为秒,默认为5分钟
"""
# 如果想查看对应的参数,可以使用
对象.属性的方式进行查看

举例:

Python深度学习之FastText实现文本分类详解

使用FastText进行文本分类的基本操作就是这些内容,关于深层次的学习大家可以参考

传送门

来源:https://blog.csdn.net/qq_52007481/article/details/126628609

标签:Python,FastText,文本分类
0
投稿

猜你喜欢

  • 浅谈javascript中onbeforeunload与onunload事件

    2024-04-19 09:46:08
  • SqlServer数据库远程连接案例教程

    2024-01-21 10:16:08
  • Golang实现异步上传文件支持进度条查询的方法

    2024-05-08 10:13:17
  • 如何利用python给图片添加半透明水印

    2022-08-16 09:34:28
  • Python下opencv使用hough变换检测直线与圆

    2021-04-20 20:15:53
  • MySQL开启Slow慢查询的方法示例

    2024-01-14 17:43:26
  • Python迭代器的实现原理

    2022-12-13 09:26:22
  • 使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例

    2023-05-19 13:05:18
  • 关于Python核心框架tornado的异步协程的2种方法详解

    2022-01-24 08:26:00
  • Java面试题冲刺第十二天--数据库(2)

    2024-01-21 18:34:27
  • Python实现身份证前六位地区码对照表文件

    2022-12-25 10:55:16
  • python实现提取str字符串/json中多级目录下的某个值

    2022-02-25 23:07:15
  • Pycharm中配置远程Docker运行环境的教程图解

    2022-08-06 09:39:19
  • 原生JS实现九宫格抽奖效果

    2024-04-17 10:33:38
  • 在线HTML编辑器原理(eweb原理)

    2009-01-08 12:25:00
  • 如何使用Python处理HDF格式数据及可视化问题

    2023-11-21 00:17:01
  • keras处理欠拟合和过拟合的实例讲解

    2022-06-23 05:14:38
  • 使用Dreamweaver代码片断提高css开发效率

    2007-10-28 15:46:00
  • 关于Matplotlib绘制动态实时曲线的方法改进指南

    2021-03-17 23:48:10
  • vue如何根据权限生成动态路由、导航栏

    2024-05-05 09:25:43
  • asp之家 网络编程 m.aspxhome.com