FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法;其由两部分组成,在文末有连接以及github代码源与文本分类案例。

  1. fastText 原理

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

1.1 模型架构

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


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) 损失函数用于处理预测目标数量巨大的问题。

上面就是实验结果,从实验结果来看 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 的词嵌入学习的具体原理可以参照 论文如下:

这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类(paper:A. Joulin, E. Grave, P. Bojanowski, T. Mikolov, Bag of Tricks for Efficient Text Classification(高效文本分类技巧)),
另一部分是词嵌入学习(paper:P. Bojanowski*, E. Grave*, A. Joulin, T. Mikolov, Enriching Word Vectors with Subword Information(使用子字信息丰富词汇向量))。
按论文来说只有文本分类部分才是 fastText,但也有人把这两部分合在一起称为 fastText。笔者,在这即认为词嵌入学习属于FastText项目。
github链接:https://github.com/facebookresearch/fastText
分本分类案例:http://blog.csdn.net/lxg0807/article/details/52960072

文本分类算法带监督的FastText相关推荐

  1. 基于协同训练的半监督文本分类算法

    标签: 半监督学习,文本分类 作者:炼己者 --- 本博客所有内容以学习.研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! 如果大家觉得格式看着不舒服,也欢迎大家去看我的 ...

  2. 【NLP从零入门】预训练时代下,深度学习模型的文本分类算法(超多干货,小白友好,内附实践代码和文本分类常见中文数据集)

    如今NLP可以说是预训练模型的时代,希望借此抛砖引玉,能多多交流探讨当前预训练模型在文本分类上的应用. 1. 任务介绍与实际应用 文本分类任务是自然语言处理(NLP)中最常见.最基础的任务之一,顾名思 ...

  3. 【NLP文本分类算法集锦】零基础入门经典文本分类项目实战(附代码+数据集)

    前言 大家好,我是阿光. 本专栏整理了<NLP文本分类算法集锦>,内包含了各种常见的中英文文本分类算法,以及常见的NLP任务:情感分析.新闻分类以及谣言检测等. 文本分类是NLP的必备入门 ...

  4. 基于朴素贝叶斯的文本分类算法

    基于朴素贝叶斯的文本分类算法 摘要:常用的文本分类方法有支持向量机.K-近邻算法和朴素贝叶斯.其中朴素贝叶斯具有容易实现,运行速度快的特点,被广泛使用.本文详细介绍了朴素贝叶斯的基本原理,讨论多项式模 ...

  5. 文本分类算法研究与实现

    1 设计题目 文本分类的算法研究与实现 2 课题背景及研究现状 2.1 课题背景 近年来,随着Internet的迅猛发展,网络信息和数据信息不断扩展,如何有效利用这一丰富的数据信息,己成为广大信息技术 ...

  6. 【文本分类】《融合后验概率校准训练的文本分类算法》

    ·阅读摘要:   本文主要提出后验概率校准.负例监督两个创新点,提升了实验精度. ·参考文献:   [1] 融合后验概率校准训练的文本分类算法 参考论文信息   论文名称:<融合后验概率校准训练 ...

  7. 使用python语言编写常见的文本分类算法

    自然语言处理中一个很常见的操作就是文本分类,比如一组新闻文本,通过分类模型,将新闻文本分为政治.体育.军事.娱乐.财经等等几大类.那么分类第一步就是文本向量化,前一篇博客讲了一些,本文可以说是前文的实 ...

  8. c语言贝叶斯分类,基于朴素贝叶斯分类器的文本分类算法(C语言)

    基于朴素贝叶斯分类器的文本分类算法(C语言) 基于朴素贝叶斯分类器的文本分类算法(C语言).txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情.#include ...

  9. 菜鸟进阶: C++实现KNN文本分类算法

    作者:finallyliuyu(转载请注明原作者和出处) (代码暂不发布源码下载版,以后会发布) KNN文本分类算法又称为(k nearest neighhor).它是一种基于事例的学习方法,也称懒惰 ...

最新文章

  1. jquery设置输入框为只读_将SQL中几张表设为只读,这是什么奇怪需求?
  2. 数据eda_银行数据EDA:逐步
  3. sqlserver 微信昵称_sql server用户名和登录名的区别和联系
  4. 高通modem启动过程_苹果首次承认正自研基带芯片,高通要被抛弃了?
  5. 加速引擎SmartFlow助力浪潮云海超融合2021H1中国市场增速第一
  6. 2019年12月计算机统考答案,2019年12月计算机等级WPS考前冲刺练习题及答案
  7. SecureRandom-随机数的生成
  8. 产业链加入爆料行列!2019年新iPhone:外形无变化 后置摄像头升级
  9. apache Apache winnt_accept: Asynchronous AcceptEx failed 错误的解决
  10. @程序员,如何轻松实现数据可视化?
  11. 远程桌面,此计算机无法连接到远程计算机
  12. C语言经典程序100例
  13. 苹果电脑上好用的五个文档文本编辑工具
  14. linux防火墙reject,linux 防火墙配置与REJECT导致没有生效问题
  15. Javascript笔记大全03
  16. 如何在线把pdf转换成word转换器
  17. 计算机笔记Excel,秦路天善智能EXCEL学习笔记1-文本清洗函数
  18. 高校青年教师应该怎么提高收入
  19. 编写优质嵌入式C程序(转)
  20. ElasticSearch实战(三十六)-Ingest Pipeline 多管道处理器

热门文章

  1. phpcms上传改为H5上传
  2. linux系统下通过tc命令实现对端口的限速,实用脚本
  3. 01-Spring Boot 2.0 迁移指南
  4. mac book docker desktop for k8s 无法安装
  5. 球面两点间的球面距离的计算
  6. Jsp利用pageoffice实现在线excel文档的编辑并保存到服务器
  7. UPS功率和电池容量计算方法
  8. 关于 MySQL Installer is running in Community mode 的解决办法
  9. 【千锋Python2205班8.25笔记-day04-循环和列表】
  10. 电脑浏览器被劫持的用户求助