一、简介
fasttext是facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。

fastText结合了自然语言处理和机器学习中最成功的理念。这些包括了使用词袋以及n-gram袋表征语句,还有使用子字(subword)信息,并通过隐藏表征在类别间共享信息。我们另外采用了一个softmax层级(利用了类别不均衡分布的优势)来加速运算过程。

这些不同概念被用于两个不同任务:

有效文本分类 :有监督学习
学习词向量表征:无监督学习
举例来说:fastText能够学会“男孩”、“女孩”、“男人”、“女人”指代的是特定的性别,并且能够将这些数值存在相关文档中。然后,当某个程序在提出一个用户请求(假设是“我女友现在在儿?”),它能够马上在fastText生成的文档中进行查找并且理解用户想要问的是有关女性的问题。

二、FastText原理
fastText方法包含三部分,模型架构,层次SoftMax和N-gram特征。

2.1 模型架构
fastText的架构和word2vec中的CBOW的架构类似。

fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。
序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。
fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。
fastText 模型架构和 Word2Vec 中的 CBOW 模型很类似。不同之处在于,fastText 预测标签,而 CBOW 模型预测中间词。
2.2 层次SoftMax
对于有大量类别的数据集,fastText使用了一个分层分类器(而非扁平式架构)。不同的类别被整合进树形结构中(想象下二叉树而非 list)。在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈弗曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量。

fastText 也利用了类别(class)不均衡这个事实(一些类别出现次数比其他的更多),通过使用 Huffman 算法建立用于表征类别的树形结构。因此,频繁出现类别的树形结构的深度要比不频繁出现类别的树形结构的深度要小,这也使得进一步的计算效率更高。

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

__label__2 , birchas chaim , yeshiva birchas chaim is a orthodox jewish mesivta high school in lakewood township new jersey . it was founded by rabbi shmuel zalmen stein in 2001 after his father rabbi chaim stein asked him to open a branch of telshe yeshiva in lakewood . as of the 2009-10 school year the school had an enrollment of 76 students and 6 . 6 classroom teachers ( on a fte basis ) for a student–teacher ratio of 11 . 5 1 .
__label__6 , motor torpedo boat pt-41 , motor torpedo boat pt-41 was a pt-20-class motor torpedo boat of the united states navy built by the electric launch company of bayonne new jersey . the boat was laid down as motor boat submarine chaser ptc-21 but was reclassified as pt-41 prior to its launch on 8 july 1941 and was completed on 23 july 1941 .
__label__11 , passiflora picturata , passiflora picturata is a species of passion flower in the passifloraceae family .
__label__13 , naya din nai raat , naya din nai raat is a 1974 bollywood drama film directed by a . bhimsingh . the film is famous as sanjeev kumar reprised the nine-role epic performance by sivaji ganesan in navarathri ( 1964 ) which was also previously reprised by akkineni nageswara rao in navarathri ( telugu 1966 ) . this film had enhanced his status and reputation as an actor in hindi cinema .

前面的label是前缀,也可以自己定义,label后接的为类别。
<以后在补充>

三、总结
3.1 fastText和word2vec的区别
相似处:
图模型结构很像,都是采用embedding向量的形式,得到word的隐向量表达。
都采用很多相似的优化方法,比如使用Hierarchical softmax优化训练和预测中的打分速度。
不同处:
模型的输出层:word2vec的输出层,对应的是每一个term,计算某term的概率最大;而fasttext的输出层对应的是 分类的label。不过不管输出层对应的是什么内容,起对应的vector都不会被保留和使用;

模型的输入层:word2vec的输出层,是 context window 内的term;而fasttext 对应的整个sentence的内容,包括term,也包括 n-gram的内容;
两者本质的不同,体现在 h-softmax的使用:

Wordvec的目的是得到词向量,该词向量 最终是在输入层得到,输出层对应的 h-softmax
也会生成一系列的向量,但最终都被抛弃,不会使用。
fasttext则充分利用了h-softmax的分类功能,遍历分类树的所有叶节点,找到概率最大的label(一个或者N个)
3.2 小结

总的来说,fastText的学习速度比较快,效果还不错。fastText适用与分类类别非常大而且数据集足够多的情况,当分类类别比较小或者数据集比较少的话,很容易过拟合。
可以完成无监督的词向量的学习,可以学习出来词向量,来保持住词和词之间,相关词之间是一个距离比较近的情况;
也可以用于有监督学习的文本分类任务,(新闻文本分类,垃圾邮件分类、情感分析中文本情感分析,电商中用户评论的褒贬分析)

FastText原理相关推荐

  1. 转:fastText原理及实践(达观数据王江)

    http://www.52nlp.cn/fasttext 1条回复 本文首先会介绍一些预备知识,比如softmax.ngram等,然后简单介绍word2vec原理,之后来讲解fastText的原理,并 ...

  2. win10+python3.6下安装fastText+fastText原理和使用

    fastText的安装+原理和使用 1. 安装fastText 运行环境: win10+Python 3.6+64位 1.1 报错: 直接运行 pip install fastText, 会报以下错误 ...

  3. FastText原理总结

    目录: 1.应用场景 2.优缺点 3.FastText的原理 4.FastText词向量与word2vec对比 目录: 1.应用场景 fastText是一种Facebook AI Research在1 ...

  4. fastText原理和文本分类实战

            9. 结论 在小节中,详细展示了如果在wikipedia上获得词向量,对于其他语言也都可以同样运行,下面网址提供了fastText在词向量上的多个预训练模型,可以参考使用预训练模型网址 ...

  5. [转] fastText

    mark- from : https://www.jiqizhixin.com/articles/2018-06-05-3 fastText的起源 fastText是FAIR(Facebook AIR ...

  6. FastText情感分析和词向量训练实战——Keras算法练习

    fasttext是facebook开源的一个词向量与文本分类工具 ,其最大的优点就是快,同时不失精度. 此算法有两个主要应用场景: 文本分类 词向量训练 工业界碰到一些简单分类问题时,经常采用这种简单 ...

  7. 【NLP傻瓜式教程】手把手带你fastText文本分类(附代码)

    写在前面 已经发布: [NLP傻瓜式教程]手把手带你CNN文本分类(附代码) [NLP傻瓜式教程]手把手带你RNN文本分类(附代码) 继续NLP傻瓜式教程系列,今天的教程是基于FAIR的Bag of ...

  8. 【论文复现】使用fastText进行文本分类

    写在前面 今天是补笔记的一天... 今天的论文是来自Facebook AI Research的Bag of Tricks for Efficient Text Classification 也就是我们 ...

  9. [转]Facebook 开源的快速文本分类器 FastText

    比深度学习快几个数量级,详解Facebook最新开源工具--fastText 导读:Facebook声称fastText比其他学习方法要快得多,能够训练模型"在使用标准多核CPU的情况下10 ...

最新文章

  1. react native TypeError network request failed
  2. spring中bean的高级属性之list, set, map以及props元素(含举例)
  3. SSIS 学习之旅 FTP访问类
  4. JDK环境变量配置(一次性成功)
  5. c调用python keras模型_tensorflow中调用keras训练模型作为一个计算过程
  6. idea阅读器插件开发实现
  7. Asterisk怎样配置才能出视频
  8. from fake_useragent import UserAgent
  9. 【数学建模】2021 年全国大学生数学建模竞赛A题一等奖获奖论文
  10. Java面试之Java基础5——面向对象的三大特性之封装、继承和多态
  11. 【文本】HTML5 Canvas小项目:为坐标轴添加数字标签(带刻度线)
  12. kali linux 通过粘贴板攻击对方服务器
  13. 如何用AARRR模型拆解社群运营,实现用户的裂变增长
  14. IE浏览器不能上网原因及解决方案
  15. 说说Mac上的截图快捷键
  16. TCP/IP协议基础(转)
  17. 原创_Android Jetpack Compose 最全上手指南,互联网寒冬公司倒闭后
  18. 安搭Share:“张而不弛,文武佛能也;一张一弛,文武之道也。”
  19. django处理ajax,使用AJAX获取Django后端数据
  20. mp8播放器 android 1.4,listview(自定义适配器)与媒体播放器android

热门文章

  1. 电缆sa是不是普通计算机电缆,IC-SA IC-MPIA IAC-CA IAC-MA仪表控制计算机电缆
  2. 前端excel导出适应中国式复杂报表
  3. 职场分享:职场中的关键技巧--说服力
  4. 对当前虚拟货币问题的思考(下)
  5. Linux如何有效禁用nouveau
  6. c语言购买游戏币文件夹设置,金币银币问题
  7. Android 仿美团网,探索使用ViewPager+GridView实现左右滑动查看更多分类的功能
  8. 大数据分析太难了学的想哭
  9. 今年175只解禁股解禁当日平均涨0.83%
  10. 最小二乘法与主成分分析法原理及应用详解和它们的联系