0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fastText有两大用途——文本分类和Word Embedding

深度学习自然语言处理 来源:SimpleAI 作者:SimpleAI 2021-03-05 15:38 次阅读

今天我们来看 Mikolov 大佬 2016 年的另一大巨作——fastText。2013 年大佬在 Google 开源了 Word2Vec,2016 年刚就职于 FaceBook 就开源了 fastText,全都掀起了轩然大波。

fastText 模型有两篇相关论文:

《Bag of Tricks for Efficient Text Classification》

《Enriching Word Vectors with Subword Information》

截至目前为止,第一篇有 1500 多引用量,第二篇有 2700 多引用量。

从这两篇文的标题我们可以看出来 fastText 有两大用途——文本分类和Word Embedding。

由于 fastText 模型比较简单,所以我们可以把两篇论文放在一起看。

1. Introduction

fastText 提供了简单而高效的文本分类和 Word Embedding 方法,分类精度比肩深度学习而且速度快上几个数量级。

举个例子:使用标准的 CPU 可以在十分钟的时间里训练超过 10 亿个单词,在不到一分钟的时间里可以将 50 万个句子分到 31 万个类别中。

可以看到 fastText 的速度有多惊人。

2. fastText

fastText 之所以能做到速度快效果好主要是两个原因:N-Gram 和 Hierarchical softmax。由于 Hierarchical softmax 在 Word2Vec 中已经介绍过了,所以我们只介绍一下 N-gram。

2.1 N-gram

N-gram 是一种基于统计语言模型的算法,常用于 NLP 领域。其思想在于将文本内容按照字节顺序进行大小为 N 的滑动窗口操作,从而形成了长度为 N 的字节片段序列,其片段我们称为 gram。

以“谷歌是家好公司” 为例子:

二元 Bi-gram 特征为:谷歌 歌是 是家 家好 好公 公司

三元 Tri-gram 特征为:谷歌是 歌是家 是家好 家好公 好公司

当然,我们可以用字粒度也可以用词粒度。

例如:谷歌 是 家 好 公司二元 Bi-gram 特征为:谷歌是 是家 家好 好公司三元 Tri-gram 特征为:谷歌是家 是家好 家好公司

N-gram 产生的特征只是作为文本特征的候选集,后面还可以通过信息熵、卡方统计、IDF 等文本特征选择方式筛选出比较重要的特征。

2.2 Embedding Model

这边值得注意的是,fastText 是一个库,而不是一个算法。类似于 Word2Vec 也只是一个工具,Skip-Gram 和 CBOW 才是其中的算法。

fastText is a library for efficient learning of word representations and sentence classification.

fastText 在 Skip-Gram 的基础上实现 Word Embedding,具体来说:fastText 通过 Skip-Gram 训练了字符级别 N-gram 的 Embedding,然后通过将其相加得到词向量。

举个例子:对于 “where” 这个单词来说,它的 Tri-gram 为:“”。由于字符串首尾会有符号,所以这里用 < 表示前缀, > 表示后缀。textFast 是对 这些 Tri-gram 进行训练,然后将这 5 个 tri-gram 的向量求和来表示 “where” 的词向量。

这样做主要有两个好处:

低频词生成的 Embedding 效果会更好,因为它们的 N-gram 可以和其它词共享而不用担心词频过低无法得到充分的训练;

对于训练词库之外的单词(比如拼错了),仍然可以通过对它们字符级的 N-gram 向量求和来构建它们的词向量。

为了节省内存空间,我们使用 HashMap 将 N-gram 映射到 1 到 K,所以单词的除了存储自己在单词表的 Index 外,还存储了其包含的 N-gram 的哈希索引

2.3 Classification Model

一般来说,速度快的模型其结构都会比较简单,fastText 也不例外,其架构图如下图所示:

2279e3e0-7c22-11eb-8b86-12bb97331649.png

fastText Architecture

其中, 为一个句子的 N-gram 特征。

我们看到这个架构是不是感觉似曾相似?

fastText 与 Word2Vec 的 CBOW 架构是非常相似的,但与 CBOW 不同的是:fastText 输入不仅是多个单词 Embedding 向量,还将字符级别的 N-gram 向量作为额外的特征,其预测是也不是单词,而是 Label(fastText 主要用于文本分类,所以预测的是分类标签)。

3. Experiment

我们简单看下 fastText 的两个实验——Embedding 和文本分类;

3.1 Embeddng

sisg 是 fastText 用于 Embedding 的模型,实验效果如下:

3.2 Classification

分类实验的精度 fastText 比 char-CNN、 char-RCNN 要好,但比 VDCNN 要差。(但这里注意:fastText 仅仅使用 10 个隐藏层节点 ,训练了 5 次 epochs。)

在速度上 fastText 快了几个数量级。(此处注意:CNN 和 VDCNN 用的都是 Tesla K40 的 GPU,而 fastText 用的是 CPU)

下面是标签预测的结果,两个模型都使用 CPU 并开了 20 个线程:

4. Conclusion

一句话总结:fastText 是一个用于文本分类和 Embedding 计算的工具库,主要通过 N-gram 和 Hierarchical softmax 保证算法的速度和精度。

关于 Hierarchical softmax 为什么会使 fastText 速度那么快?而在 Word2Vec 中没有看到类似的效果?

我觉得是因为 fastText 的标签数量相比 Word2Vec 来说要少很多,所以速度会变的非常快。其次 Hierarchical softmax 是必要的,如果不同的话速度会慢非常多。

另外,fastText 可能没有什么创新,但他却异常火爆,可能有多个原因,其中包括开源了高质量的 fastText,类似 Work2Vec,当然也会有 Mikolov 大佬和 Facebook 的背书。

总的来说,fastText 还是一个极具竞争力的一个工具包。

5. Reference

《Bag of Tricks for Efficient Text Classification》

《Enriching Word Vectors with Subword Information》

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4551

    浏览量

    92019
  • 文本分类
    +关注

    关注

    0

    文章

    18

    浏览量

    7279
  • 深度学习
    +关注

    关注

    73

    文章

    5422

    浏览量

    120588

原文标题:fastText:极快的文本分类工具

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    普强成功荣登两大榜单

    普强凭借其深厚的技术积累和创新能力,不断推出高性能、高质量的产品和解决方案,成功荣登两大榜单,这是对普强卓越的技术实力和应用层面的肯定。
    的头像 发表于 09-13 10:34 475次阅读

    雷达的基本分类方法

    电子发烧友网站提供《雷达的基本分类方法.pdf》资料免费下载
    发表于 09-11 09:09 4次下载

    利用TensorFlow实现基于深度神经网络的文本分类模型

    要利用TensorFlow实现一个基于深度神经网络(DNN)的文本分类模型,我们首先需要明确几个关键步骤:数据预处理、模型构建、模型训练、模型评估与调优,以及最终的模型部署(尽管在本文中,我们将重点放在前四个步骤上)。下面,我将详细阐述这些步骤,并给出一个具体的示例。
    的头像 发表于 07-12 16:39 461次阅读

    卷积神经网络在文本分类领域的应用

    在自然语言处理(NLP)领域,文本分类一直是一个重要的研究方向。随着深度学习技术的飞速发展,卷积神经网络(Convolutional Neural Network,简称CNN)在图像识别领域取得了
    的头像 发表于 07-01 16:25 377次阅读

    交换机的基本分类

      交换机作为网络通讯中的核心设备之一,其在网络架构中起着至关重要的作用。随着信息技术的飞速发展,交换机也在不断演进和革新,以满足日益复杂的网络需求。本文将对交换机的分类及其特点进行详细介绍,以期为读者提供清晰、深入的理解。
    的头像 发表于 06-06 11:06 738次阅读

    鸿蒙UI界面——@ohos.measure (文本计算)

    : MeasureOptions): number 计算指定文本单行布局下的宽度。 系统能力: SystemCapability.ArkUI.ArkUI.Full 参数:   参数名 类型 必填 说明 options
    的头像 发表于 02-22 17:02 517次阅读
    鸿蒙UI界面——@ohos.measure (<b class='flag-5'>文本</b>计算)

    了解如何使用PyTorch构建图神经网络

    图神经网络直接应用于图数据集,您可以训练它们以预测节点、边缘和与图相关的任务。它用于图和节点分类、链路预测、图聚类和生成,以及图像和文本分类
    发表于 02-21 12:19 595次阅读
    了解如何使用PyTorch构建图神经网络

    村田电感用途分类

    村田电感用途分类
    的头像 发表于 02-18 14:20 265次阅读

    交流接触器的分类哪些

    触点分类: 交流接触器按照其内部是否有机械触点,可以分为触点接触器和无触点接触器两大类。触点接触器:这是传统且广泛使用的接触器类型,它们依靠物理触点的闭合与断开来控制电路的通断。这
    的头像 发表于 01-25 10:19 1383次阅读

    深度解析大语言模型的位置编码及其外推性

    我们先来回顾一下绝对位置编码的问题。绝对位置编码通过可学习的 Positional Embedding 来编码位置信息,这种方案直接对不同的位置随机初始化一个 postion embedding,然后与 word
    发表于 01-16 11:37 702次阅读
    深度解析大语言模型的位置编码及其外推性

    人工智能中文本分类的基本原理和关键技术

    在本文中,我们全面探讨了文本分类技术的发展历程、基本原理、关键技术、深度学习的应用,以及从RNN到Transformer的技术演进。文章详细介绍了各种模型的原理和实战应用,旨在提供对文本分类技术深入理解的全面视角。
    的头像 发表于 12-16 11:37 985次阅读
    人工智能中<b class='flag-5'>文本分类</b>的基本原理和关键技术

    在英特尔开发套件上用OpenVIN实现中文图文检索

    embedding,根据特征相似度匹配可完成图像分类和相似查找任务。CLIP 模型的 zero-shot 分类效果就能达到在 Imagenet 上监督训练的 ResNet 分类效果,
    的头像 发表于 10-27 11:06 657次阅读
    在英特尔开发套件上用OpenVIN实现中文图文检索

    电压型逆变电路分类解读 逆变电路可分为哪两大

    电压型逆变电路分类解读 逆变电路可分为哪两大类 电压型逆变电路是一种将直流电转化为交流电的电路,是现代电力电子技术中的重要应用之一。根据不同的控制方式和输出波形,逆变电路可以分为几种类型,下面我们来
    的头像 发表于 10-16 15:52 1817次阅读

    华为云 API 自然语言处理的魅力—AI 情感分析、文本分

    云服务、API、SDK,调试,查看,我都行  阅读短文您可以学习到:人工智能 AI 自言语言的情感分析、文本分词、文本翻译 IntelliJ IDEA 之 API 插件介绍 API 插件支持 VS
    的头像 发表于 10-12 11:02 355次阅读
    华为云 API 自然语言处理的魅力—AI 情感分析、<b class='flag-5'>文本分</b>析

    如何使用Python读取写入Word文件

    01 准备 Python 是一种通用编程语言,也可以用于处理 Microsoft Word 文件。在本文中,我将向你介绍如何使用 Python 和 python-docx 库读取、写入和操作
    的头像 发表于 09-27 17:03 1868次阅读