FastText

1. 为什么要学习FastText

Fext是Facebook公司2016年开源的项目,主要用于构建词向量和文本分类。FastText最大的优点是又快又好,因为本身结构非常简单,只有一层浅层网络,所以模型训练和线上预测的速度非常快,在普通的CPU上也能达到分钟级别的训练速度。不仅如此,在很多分类任务的标准数据集上模型效果也很不错。正因为速度非常快,并且模型效果还不错,所以在工业界应用范围很广。

2. FastText两个功能

FastText主要用于训练词向量和文本分类任务

2.1 训练词向量

FastText一个主要功能是训练词向量,这和word2vec非常相似,有趣的是FastText的主要作者之一就是word2vec的作者,所以说它俩是一脉相承。相比于word2vec来说,FastText主要添加了subwords特性。这里详细介绍下subwords特性,subwords是字母粒度的n-gram。以英文举例,I love NLP。英文会根据空格进行分词,这里会切分成i、love和NLP三个词,词粒度的n-gram(这里假如n为2)则会得到i-love和love-NLP,对于单词love来说字母粒度的n-gram则可以得到I-o、o-v、v-e。字母粒度的n-gram特征可以很好丰富词表示的层次,对于一些未知词可以根据字母粒度的n-gram特征进行更好的表示。

2.2 文本分类

FastText还可以用于文本分类任务,模型结构和word2vec的CBOW非常类似。FastText和word2vec的CBOW模型结构基本上是一样的,区别于word2vec的CBOW模型是根据w3周围的w1、w2、w4和w5来预测w3,属于无监督学习模型,而FastText则根据整句的词w1-w5来预测标签,属于有监督学习任务。FastText将得到的词向量和其他特征相加后取均值作为句向量特征,还会加入n-gram特征。

 如上图所示,FastText模型的输入主要包括两部分特征,第一块是词向量特征w1、w2和w3,第二块是n-gram特征w12和w23(这里n设置为2)。将这两部分特征相加之后取均值就得到这句话的语义向量特征,也就是h=(w1+w2+w3+w12+w23)/5。拿到语义向量特征之后就可以通过softmax函数进行分类。因为n-gram特征量级比词向量级大,所以不会全部存储n-gram特征,这里主要通过Hash桶的方式进行存储。将所有的n-gram特征分配到对用的Hash桶中,不仅可以使查询的效率为O(1),而且可以控制内存消耗,但是可能存在不同的n-gram特征分配在同一个桶中,引起hash冲突,但是当分桶的数量设置较大可以有效降低hash冲突。

3. FastText优化项

FastText采用了word2vec的优化流程,基于层次的softmax和负采样。当文本分类的类别很多时通过层次softmax可以有效提升模型的训练速度。

4.源码实战

!pip install fasttext # 豆瓣源

import fasttext.FastText as fasttext
classifier = fasttext.train_supervised(
  input = train_cut_path, # 训练文件路径,中文需要进行分词
  lable = '__label__', # 标签前缀
  lr = 0.01,            # 学习率
  dim = 300             # 词向量维度
  ws = 5,               # 内容窗口大小
  epoch = 5,            # 训练轮数
  loss = 'softmax',     # 使用的损失函数
  minCount = 2,         # 最小词频数
  wordNgrams = 4,       # 词n-gram的长度
)
classifier.save_model(model_path)
# 对于中文来说cut_text是经过分词的文本,k是topk概率的类别,设置-1时返回所有类别
predict_result = classifier.predict(cut_text, k=-1)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值