Python深度学习之FastText实现文本分类详解
作者:小鱼干儿? 发布时间:2022-09-03 10:35:28
FastText是一个三层的神经网络,输入层、隐含层和输出层。
FastText的优点:
使用浅层的神经网络实现了word2vec以及文本分类功能,效果与深层网络差不多,节约资源,且有百倍的速度提升
深度学习和机器学习的区别:
与传统机器学习不同,深度学习既提供特征提取功能,也可以完成分类的功能。机器学习需要再根据提取到的特征再进行分类。
安装FastText
使用pip安装
pip install fasttext
因为FastText依赖C++的环境,安装的时候可能会报错,有的是C++ 11
有的是C++14看报错里面缺少那个版本的C++环境就安装那个版本的环境就可以了
使用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分钟
"""
# 如果想查看对应的参数,可以使用
对象.属性的方式进行查看
举例:
使用FastText进行文本分类的基本操作就是这些内容,关于深层次的学习大家可以参考
传送门
来源:https://blog.csdn.net/qq_52007481/article/details/126628609
猜你喜欢
- 本文介绍使用ADODB.Stream组件来下载服务器文件,例如:download.asp?file=相对路径的文件。就可以把这个文件下载下来
- “选项卡”经常会被混同为“滑动门”,滑动门只是一种背景自适应内容的实现方法,不只可以应用在导航菜单,一样也可以应用在其他地方。例如选项卡中就
- Python 多线程多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可
- 作者:Henny Swan / co-lead of WaSP ILG译者:JunChen / member of WaSP ILG原文:h
- 1、slice结构体首先我们来看一段代码package mainimport ( "fmt"
- 不用切图,只要设置基本的 图片及其属性即可!用鼠标右键控制图片翻转!<style>*{ FONT-SIZE: 12px; }se
- 详细参考:https://gitee.com/copperpeas/uniapp-paymentuniapp-payment介绍uniapp
- 本文实例总结了php处理json格式数据的方法。分享给大家供大家参考,具体如下:1.json简介:何为json?简 单地说,JSON 可以将
- 首先要做的就是去豆瓣网找对应的接口,这里就不赘述了,谷歌浏览器抓包即可,然后要做的就是分析返回的json数据的结构:https://movi
- 二叉树中和为某一值的路径:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直
- 使用Django中遇到这样一个需求,对一个表的几个字段做 联合唯一索引,例如学生表中 姓名和班级 2个字段在一起表示一个唯一记录。Djang
- OpenCV函数原型:cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, i
- 当管理SQL Server内在的帐户和密码时,我们很容易认为这一切都相当的安全。但实际上并非如此。在这里,我们列出了一些对于SQL Serv
- 本文整理了一部分我们平时在项目中经常遇到的关于go语言JSON数据与结构体之间相互转换的问题及解决办法。基本的序列化首先我们来看一下Go语言
- Oracle的Nvl函数nvl( ) 函数从两个表达式返回一个非null 值。语法NVL(eExpression1, eExpression
- 本文实例讲述了Python常见数字运算操作。分享给大家供大家参考,具体如下:Python 解释器可以作为一个简单的计算器:您可以在解释器里输
- 如下所示:dic = dict()dic['a'] = 1dic['b'] = 2dic['c
- 1、先放个大招:去除字符串中所有的空格和tab换行符str=" a b c de f "pri
- 环境配置新建python虚拟环境并激活conda create -n pyqt python=3.8conda activate py36安
- 用python搭建百万答题、自动百度搜索答案。使用平台windows7python3.6MIX2手机代码原理手机屏幕内容同步到pc端对问题截