Facebook 开源的快速文本分类器 FastTex

FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。

  1. fastText 原理

fastText 方法包含三部分:模型架构、层次 Softmax 和 N-gram 特征。下面我们一一介绍。

1.1 模型架构

fastText 模型架构如下图所示。fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。

image

fastText 模型架构和 Word2Vec 中的 CBOW 模型很类似。不同之处在于,fastText 预测标签,而 CBOW 模型预测中间词。

1.2 层次 Softmax

在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈弗曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量。具体细节参见 文章 。

1.3 N-gram 特征

fastText 可以用于文本分类和句子分类。不管是文本分类还是句子分类,我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 还加入了 N-gram 特征。“我 爱 她” 这句话中的词袋模型特征是 “我”,“爱”, “她”。这些特征和句子 “她 爱 我” 的特征是一样的。如果加入 2-Ngram,第一句话的特征还有 “我-爱” 和 “爱-她”,这两句话 “我 爱 她” 和 “她 爱 我” 就能区别开来了。当然啦,为了提高效率,我们需要过滤掉低频的 N-gram。

  1. fastText VS Tagspace

Mikolov 在 fastTetxt 的论文中报告了两个实验,其中一个实验和 Tagspace 模型进行对比。实验是在 YFCC100M 数据集上进行的, YFCC100M 数据集包含将近 1 亿张图片以及摘要、标题和标签。实验使用摘要和标题去预测标签。Tagspace 模型是建立在 Wsabie 模型的基础上的。Wsabie 模型除了利用 CNN 抽取特征之外,还提出了一个带权近似配对排序 (Weighted Approximate-Rank Pairwise, WARP) 损失函数用于处理预测目标数量巨大的问题。

image

上面就是实验结果,从实验结果来看 fastText 能够取得比 Tagspace 好的效果,并拥有无以伦比的训练测试速度。但严格来说,这个实验对 Tagspace 有些不公平。YFCC100M 数据集是关于多标记分类的,即需要模型能从多个类别里预测出多个类。Tagspace 确实是做多标记分类的;但 fastText 只能做多类别分类,从多个类别里预测出一个类。而评价指标 prec@1 只评价一个预测结果,刚好能够评价多类别分类。

  1. 总结

Facebook Research 已经在 Github 上公布了 fastText 的 项目代码 。不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类,另一部分是词嵌入学习。按论文来说只有文本分类部分才是 fastText,但也有人把这两部分合在一起称为 fastText,比如这篇文章 Comparison of FastText and Word2Vec 。fastText 的词嵌入学习比 word2vec 考虑了词组成的相似性。比如 fastText 的词嵌入学习能够考虑 english-born 和 british-born 之间有相同的后缀,但 word2vec 却不能。fastText 的词嵌入学习的具体原理可以参照 论文 。

文章转载自 开源中国社区[http://www.oschina.net]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FCN-加载训练与测试数据

当我们生成了数据后,我们来看看FCN是如何加载数据的。 FCN 代码预览 其中: - data : 训练测试数据 - ilsvrc-nets:存放预训练的模型 - 剩下的框:不同数据集的训练测试prototxt - voc_layers,siftflow_layers等&am…

怎么撤销定时说说_已注册商标遇到撤三申请怎么办

很多企业的商标都遇到过商标撤三的情况,撤三简单的说就是,注册商标没有正当理由连续三年不使用的,任何单位或者个人可以向商标局申请撤销该注册商标。所以说,无论您的企业多大,商标持有的再多,也要做好商标…

Spartan-6 FPGA SelectIO Resources User Guide 笔记2 SelectIO Attributes/Constraints

1.Location Constraint 用于分配I/O端口 NET <I/O_NAME> LOC "<EXTERNAL_PORT_IDENTIFIER>"; Example: NET MY_IO LOCR7; 2.IOSTANDARD Attribute 用于选择IO标准如LVCMOS25&#xff0c;LVDS_25等 NET <I/O_NAME> IOSTANDARD”<IOSTANDARD V…

正则表达式及其在python上的应用

今天学习了一早上正则表达式。如下内容部分转载自《读懂正则表达式就这么简单》 一、什么是正则表达式 正则表达式是一种特殊的字符串模式&#xff0c;用于匹配一组字符串&#xff0c;就好比用模具做产品&#xff0c;而正则就是这个模具&#xff0c;定义一种规则去匹配符合规…

安全专家在硬盘固件中发现NSA的网络间谍程序

本周安全专家在硬盘固件中发现了美国国家安全局&#xff08;NSA&#xff09;的网络间谍程序&#xff0c;这些程序非常难以被检测或者删除。来自卡巴斯基的研究者公布了该恶意程序用来“Phone Home”的URL地址&#xff0c;NSA利用这些随机、凌乱的地址来收集硬盘上的敏感数据。 …

SVN 分支/合并/切换

本文无条理性&#xff0c;仅作自我参考。 花费了两个半下午&#xff0c;走马观花的看了一下说明文档&#xff0c;SVN设计的太复杂&#xff0c;对我这样的&#xff0c;不在一个集体的的业余开发者&#xff0c;要理解起来真是太难了。。。。 分支 Make branches as often as yo…

关于FCN的数据集着色说明

前方我们讲解了《 FCN-数据篇》。里面包含了如何制作类似pascal voc的label。很大篇幅在谈如何着色&#xff0c;如何转化为索引图像。 由于一些内容参考网上的资料&#xff0c;所以对里面的一些操作含义也有些糊涂。 其实网上的东西也不都对&#xff0c;很多人云亦云。所以需要…

Android Property Animation动画

3.0以前&#xff0c;android支持两种动画模式&#xff0c;tween animation,frame animation&#xff0c;在android3.0中又引入了一个新的动画系统&#xff1a;property animation&#xff0c;这三种动画模式在SDK中被称为property animation,view animation,drawable animation…

Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)

不多说&#xff0c;直接上干货&#xff01; 前期博客 Ubuntu14.04下Mongodb&#xff08;离线安装方式|非apt-get&#xff09;安装部署步骤&#xff08;图文详解&#xff09;&#xff08;博主推荐&#xff09; Ubuntu14.04下Mongodb官网安装部署步骤&#xff08;图文详解&#x…

tensorboard使用_colab打不开tensorboard的解决办法

2020.4.1更新&#xff1a;colab现在自带tensorboard的魔术方法了&#xff0c;用这个命令就能展示tensorboard%load_ext tensorboard %tensorboard --logdir ./log/train# 加载一次后&#xff0c;如果要重新加载&#xff0c;就需要使用reload方法 %reload_ext tensorboard %tens…

小程序“自定义关键词”功能的常见问答

我们知道小程序可以通过线下扫码、公众号、好友分享、长按小程序码、搜索小程序名称来找到&#xff0c;现在又多了一个新方式——小程序后台新增自定义关键词功能&#xff1a;已发布小程序的开发者&#xff0c;可提交最多10个与小程序业务相关的关键词&#xff0c;帮助你的小程…

语义分割深度学习方法集锦

转载&#xff1a;https://github.com/handong1587/handong1587.github.io/edit/master/_posts/deep_learning/2015-10-09-segmentation.md Papers Deep Joint Task Learning for Generic Object Extraction intro: NIPS 2014homepage: http://vision.sysu.edu.cn/projects/d…

员工培训与开发实训心得体会_公司新员工培训心得体会800字范文

点击蓝字关注我们培训是一次能够快速提升我们的机会&#xff0c;而每个新员工也是通过培训尽快的融入公司的。因此&#xff0c;我们要更加重视培训一些!下面是小编为大家整理的公司新员工培训心得体会&#xff0c;希望对大家有帮助。公司新员工培训心得体会800字为了让我们新进…

Nginx ab压力测试

20-ab压力测试及nginx性能统计模块 优化的启发&#xff0c;打开的文件太多 Nginx 错误日志显示&#xff0c;打开文件数太多 系统层面 more /proc/sys/net/core/somaxconn 单个Nginx 测试index.html 没优化前 [root/home/www]#ab -c 4000 -n 100000 http://test.demo.com/inde…

Code First02---CodeFirst配置实体与数据库映射的两种方式

Code First有两种配置数据库映射的方式&#xff0c;一种是使用数据属性DataAnnotation&#xff0c;另一种是Fluent API.这两种方式分别是什么呢&#xff1f;下面进行一一解释&#xff1a;DataAnnotation的配置方式需要你给定义实体和值对象的类和类中的属性加上与数据库映射相关…

sigmoid函数的数值稳定性

在深度学习中&#xff0c;我们常常选用sigmoid函数作为激活函数。sigmoid函数的具体形式如下&#xff1a; f(x)11e−xf(x)=\frac{1}{1+e^{-x}}曲线表示为&#xff1a; 再画大一点&#xff0c;取x区间更大一些&#xff0c;则为&#xff1a; 显然从图像上看&#xff0c;sigmoid函…

windows远程连接ubuntu 黑屏_Windows跟Windows远程连接传输文件

关注奕奇科技&#xff0c;学习更多小妙招电脑小知识&#xff0c;值得收藏我们一般在使用windows远程连接时需要传输文件该怎么办&#xff1f;我们可以插入U盘导入导出&#xff0c;但这样很是麻烦而且如果身边暂时没有U盘的情况就要通过社交工具传播文件&#xff0c;大的文件也更…

思维导图分析http之前端组成

思维导图分析http前端组成全文总览本文分为三个部分&#xff1a;前端组成&#xff0c;http协议&#xff0c;http服务器应用程序。http的应用按照我自己的理解分为前端应用以及后端应用&#xff0c;所以我分别写了前端组成以及http服务器应用程序两章&#xff0c;中间穿插了一章…

caffe 关于Deconvolution的初始化注意事项

对于fcn&#xff0c;经常要使用到Deconvolution进行上采样。对于caffe使用者&#xff0c;使用Deconvolution上采样&#xff0c;其参数往往直接给定&#xff0c;不需要通过学习获得。 给定参数的方式很有意思&#xff0c;可以通过两种方式实现&#xff0c;但是这两种方式并非完…

多目标进化优化_SDIM 学术讲座|分解多目标优化与帕累托多任务学习

分解多目标优化与帕累托多任务学习2020年11月4日晚&#xff0c;香港城市大学电脑学系讲座教授、博士生导师、IEEE Fellow张青富教授应我院王振坤教授的邀请&#xff0c;在线举办了一场主题为“分解多目标优化与帕累托多任务学习”的学术讲座。此次讲座采用线上和线下两种渠道&a…