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

09-21 123阅读 0评论

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进行文本分类的基本操作就是这些内容,关于深层次的学习大家可以参考

传送门

到此这篇关于Python深度学习之FastText实现文本分类详解的文章就介绍到这了,更多相关python FastText内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,123人围观)

还没有评论,来说两句吧...