fasttext(1) -- 认识 fasttext 和 初步使用
fastText 的 Python接口:https://github.com/salestock/fastText.py
(1) fasttext 简介:
FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。
fastText 方法包含三部分:模型架构、层次 Softmax 和 N-gram 特征。
模型架构:fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。
层次softmax:在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈夫曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量。
N-gram 特征:fastText 可以用于文本分类和句子分类。不管是文本分类还是句子分类,我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 还加入了 N-gram 特征。
(2)分类过程
fasttext在进行文本分类时,huffmax树叶子节点处是每一个类别标签的词向量。在训练过程中,训练语料的每一个词也会得到响应的词向量。输入为一个window 内的词对应的词向量,隐藏层为这几个词的线性相加。相加的结果作为该文档的向量。再通过softmax层得到预测标签。结合文档真实标签计算 loss,梯度与迭代更新词向量(优化词向量的表达)。
参数方面的建议:
1. loss function 选用 hs(hierarchical softmax)要比 ns(negative sampling)训练速度更快,准确率也更高
2. wordNgram 默认为1,建议设置为 2 或以上更好
3. 如果词数不是很多,可以把 bucket 设置小一些,否则会预留太多的 bucket 使模型太大
(3) 初步使用示例
1.我们先获得一批训练语料,格式是 已经分词的文档 + /t + __label__标签,比如 fasttex_train.txt 文件中,部分数据如下
驻 阿 北约 部队 打死 两名 阿富汗 平民 中新网 6 月 12 日电 据 美国 媒体报道 , 驻 阿 北约 部队 11 日 在 阿富汗 东部 使用 迫击炮 打击 武装 分子 时 , 打死 两名 平民 。 北约 部队 当天 发表声明 称 , 北约 部队 在 Kunar 省 受到 了 武装 分子 袭击 , 随后 北约 部队 使用 迫击炮 进行 反击 , 但 打死 两名 平民 , 打伤 五人 。 此外 , 同样 在 Kunar 省 , 当天 阿富汗 一辆 卡车 同 北约 部队 车辆 相撞 , 导致 四名 阿富汗 平民 丧生 。 声明 并未 提及 两车 相撞 的 原因 。 <span> </span>__label__affairs
俄罗斯 发射 飞船 为 国际 空间站 送货 新华网 快讯 : 北京 时间 15 日 9 时 15 分 , 俄罗斯 在 哈萨克斯坦 境内 的 拜科努尔 发射场 发射 了 一艘 货运 飞船 , 它 将 为 国际 空间站 送去 总重 约 2.5 吨 的 货物 。 <span> </span>__label__affairs
2.训练模型 ,由于代码插入出现混乱,故改用文本格式
import fasttext
# 第一个参数是前面得到的 fasttex_train.txt ,第二个参数是将要保存模型的路径,默认会加上 .bin
# label_prefix 就是标签或类别的起始符号
classifier = fasttext.supervised("fasttext_train.txt","fasttext.model",label_prefix = "__label__")
3.测试模型和使用模型分类
import fasttext
# 加载模型
classifier = fasttext.load_model("fasttext.model.bin",label_prefix = "__label__")
# 测试模型 其中 fasttext_test.txt 就是测试数据,格式和 fasttext_train.txt 一样
result = classifier.test("fasttext_test.txt")
print "准确率:",result.precision
print "回归率:",result.recall
# 使用模型,以测试集中第一个文档为例
f = open("fasttext_test.txt")
line = f.readlines()[0]
f.close()
result = classifier.predict([line])
print result
输出结果如下:
---------------------
作者:ouprince
来源:CSDN
原文:https://blog.csdn.net/qq_32023541/article/details/80839800
版权声明:本文为博主原创文章,转载请附上博文链接!
fasttext(1) -- 认识 fasttext 和 初步使用的更多相关文章
- NLP︱高级词向量表达(二)——FastText(简述、学习笔记)
FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类(paper: ...
- [转] fastText
mark- from : https://www.jiqizhixin.com/articles/2018-06-05-3 fastText的起源 fastText是FAIR(Facebook AIR ...
- 文本分类需要CNN?No!fastText完美解决你的需求(后篇)
http://blog.csdn.net/weixin_36604953/article/details/78324834 想必通过前一篇的介绍,各位小主已经对word2vec以及CBOW和Skip- ...
- 文本分类(六):使用fastText对文本进行分类--小插曲
http://blog.csdn.net/lxg0807/article/details/52960072 环境说明:python2.7.linux 自己打自己脸,目前官方的包只能在linux,mac ...
- windows+python3.6下安装fasttext+fasttext在win上的使用+gensim(fasttext)
真是坑了好久,faxttext对win并不是很友好,所以遇到了很多坑,记录下来,以供大家少走弯路. 法1:刚开始直接用pip install fasttext,最后一直报下面这个错误 “error:M ...
- FastText 分析与实践
一. 前言 自然语言处理(NLP)是机器学习,人工智能中的一个重要领域.文本表达是 NLP中的基础技术,文本分类则是 NLP 的重要应用.在 2016 年, Facebook Research 开源了 ...
- fastText训练word2vec并用于训练任务
最近测试OpenNRE,没有GPU服务器,bert的跑不动,于是考虑用word2vec,捡起fasttext 下载安装 先clone代码 git clone https://github.com/fa ...
- fastText一个库用于词表示的高效学习和句子分类
fastText fastText 是 Facebook 开发的一个用于高效学习单词呈现以及语句分类的开源库. 要求 fastText 使用 C++11 特性,因此需要一个对 C++11 支持良好的编 ...
- fasttext的基本使用 java 、python为例子
fasttext的基本使用 java .python为例子 今天早上在地铁上看到知乎上看到有人使用fasttext进行文本分类,到公司试了下情况在GitHub上找了下,最开始是c++版本的实现,不过有 ...
随机推荐
- codevs——1049 棋盘染色
1049 棋盘染色 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 有一个5×5的棋盘,上面有一 ...
- Java普通员工管理系统
login GUI界面(登录) package 普通员工管理系统; import java.awt.event.ActionEvent; import java.awt.event.ActionLis ...
- validation set以及cross validation的常见做法
如果给定的样本充足,进行模型选择的一种简单方法是随机地将数据集切分成三部分,分为训练集(training set).验证集(validation set)和测试集(testing set).训练集用来 ...
- SqlServer 数据恢复
首先看看微软官方的给出的建议(摘自:http://technet.microsoft.com/zh-cn/library/ms189272.aspx): 在从完整恢复模式或大容量日志恢复模式切换前,请 ...
- 【iOS】系统框架学习
iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa Touch l ...
- Android中View自己定义XML属性具体解释以及R.attr与R.styleable的差别
为View加入自己定义XML属性 Android中的各种Widget都提供了非常多XML属性,我们能够利用这些XML属性在layout文件里为Widget的属性赋值. 例如以下所看到的: <Te ...
- 性能測试JMeter趟的坑之JMeter的bug:TPS周期性波动问题
先说下问题: 我在做性能測试时,使用JMeter搞了100个并发,以100TPS的压力压測十分钟,但压力一直出现波动.并且出现波动时JMeter十分卡,例如以下图: 周期性TPS波动 各种猜測: 所以 ...
- Ubuntu E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 不要删掉这些目录!! ...
- Mysql性能优化笔记
一,索引 1.Innodb索引使用的是B+树 2.尽量简化where条件,比如不要出现 where id + 3 = 5,这无法使用索引 3.索引很大时,可以冗余一列来模拟哈希索引 4.小的表不需要使 ...
- 初识Restful(学习笔记)
什么是Restful? REST -- Resource Representational State Transfer(表现层状态转移) 本质上是一种优雅的URL表达方式,描述资源的状态和状态的转移 ...