FastText词向量计算和文本分类工具

FastText词向量计算和文本分类工具

一、前言

FastText是Facebook于2016年开源的一个词向量计算和文本分类工具,它的优点非常明显,在文本分类任务中,fastText(浅层网络)往往能取得和深度网络相媲美的精度,却在训练时间上比深度网络快许多数量级。在标准的多核CPU上, 能够训练10亿词级别语料库的词向量在10分钟之内,能够在1分钟之内分类有着30万多类别的50多万句子的语料。

二、FastText分类

在一般情况下,使用fastText进行文本分类的同时会产生词的embedding,即embedding是fastText分类的产物。

(一)字符级别的n-gram

word2vec将语料库中的每一个单词看成一个元素,会为每一个单词生成一个词向量,这忽略了单词的内部形态特征,例如:“love”和“loves”,"苹果公司"和“苹果”,在这两个栗子中,两个单词都有比较多的公共字符,也就是它俩内部形态相似,但是在传统的word2vec中,这种单词内部形态信息会因为被转换为不同的id而丢失。
为了解决这个问题:FastText使用了字符级别的n-grams来表示一个词,对于单词“love”,假设n取值为3,则对应的trigram有:“<lo”,“lov”,“ove”,“ve>”,其中,“<”表示前缀,“>”表示后缀。因此可以用trigram来表示“love”这个单词,进一步可以用4个trigram的向量叠加来表示“love”的词向量。
优点:

  1. 对于低频词生成的词向量效果会更好。因为它们的n-gram可以和其它词共享。
  2. 对于训练词库之外的单词,仍然可以构建它们的词向量,可以叠加它们的字符级n-gram向量。
    在这里插入图片描述
(二)模型架构

在这里插入图片描述
可以看到,和CBOW一样,fastText模型也只有三层:输入层、隐含层、输出层(Hierarchical Softmax),输入都是多个向量表示的单词,输出都是一个特定的target,隐含层都是对多个词向量的叠加平均。不同的是,CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征,这些特征用来表示单个文档;CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;CBOW的输出是目标词汇,fastText的输出是文档对应的类标。

值得注意的是,fastText在输入时,将单词的字符级别的n-gram向量作为额外的特征;在输出时,fastText采用了分层Softmax,大大降低了模型训练时间。

(三)核心思想

从隐藏层输出到输出层输出,会发现FastText就是一个softmax线性多类别分类器,分类器的输入是一个用来表征当前文档的向量;模型的前半部分,即从输入层输入到隐含层输出部分,主要在做一件事情:生成用来表征文档的向量。那么它是如何做的呢?叠加构成这篇文档的所有词及n-gram的词向量,然后取平均。叠加词向量背后的思想就是传统的词袋CBOW法,即将文档看成一个由词构成的集合。

核心思想: 将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。这中间涉及到两个技巧:字符级n-gram特征的引入以及分层Softmax分类。

(四)分类效果

使用词embedding而非词本身作为特征,这是fastText效果好的一个原因;另一个原因就是字符级n-gram特征的引入对分类效果会有一些提升 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敷衍zgf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值