NLP论文学习笔记-fasttext

论文题目: Bag of Tricks for Efficient Text Classification
作者:Armand Joulin (Facebook)
发表时间:EACL 2017

论文思想:融合基于深度学习和机器学习的文本分类模型,特点速度快,可以在CPU上运行。

Abstract

  1. 本文为文本分类任务提出了一种简单并且高效的基准模型——Fasttext。
  2. Fasttext模型在精度上和基于深度学习的分类器平分秋色,但是在训练和测试速度上Fasttext快几个数量级。
  3. 我们使用标准的多核CPU在10亿词的数据集上训练Fasttext,用时少于10分钟,并且在一分钟内分类好具有312K类别的50万个句子。

网络结构

该网络结构类似CBOW模型,输入的是词向量,经过隐藏层,获取句子向量,然后线性变换,获取分类。
在这里插入图片描述

# embedding层,获取词向量特征
# AvgPool1d 平均池化,获取句子特征
# 线性变换
class Fasttext(nn.Module):
    def __init__(self, vocab_size, embedding_size, max_length, label_num):
        super(Fasttext, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embedding_size)
        self.avg_pool = nn.AvgPool1d(kernel_size=max_length, stride=1)
        self.fc = nn.Linear(embedding_size, label_num)

    def forward(self, x):
        print("forward1:", x.shape)
        print("forward2:", x)
        out = self.embedding(x)  # batch_size*length*embedding_size
        out = out.transpose(1, 2).contiguous()  # batch_size*embedding_size*length
        out = self.avg_pool(out).squeeze()
        out = self.fc(out)  # batch_size*label_num
        return out

优点:

  • 速度非常快,embedding size 实验中使用的是10,远小于深度学习使用的size;
  • facebook开源项目,可以用作baseline;

缺点:

  • 模型结构简单,目前不是最优选择;
  • 当类别非常多的时候,最后的softmax速度依旧非常慢;(使用层次softmax)
  • 使用词袋模型,语义信息获取有限;(N-GRAM,词向量,SubWord)

//TODO 层次softmax具体讲解

实验结果与分析

在这里插入图片描述
在效果上基本达到了SOTA,但是它的优点是速度有了质的飞跃,可以用于实时任务;
在这里插入图片描述

论文总结

关键点:

  • 基于深度学习的文本分类方法效果好,但是速度比较慢
  • 基于线性分类器的机器学习方法效果还行,速度也比较快,但是需要做烦琐的特征工程
  • fasttext结合了两者的优势

创新点:

  • 提出了一种新的文本分类模型
  • 加快文本分类和使得文本分类效果更好的Trick:层次softmax和n-gram特征
  • 在文本分类和tag预测两个任务上得到了又快又好的结果。
本课程隶属于自然语言处理(NLP)实战系列。自然语言处理(NLP)是数据科学里的一个分支,它的主要覆盖的内容是:以一种智能与高效的方式,对文本数据进行系统化分析、理解与信息提取的过程。通过使用NLP以及它的组件,我们可以管理非常大块的文本数据,或者执行大量的自动化任务,并且解决各式各样的问题,如自动摘要,机器翻译,命名实体识别,关系提取,情感分析,语音识别,以及主题分割等等。 一般情况下一个初级NLP工程师的工资从15万-35万不等,所以掌握NLP技术,对于人工智能学习者来讲是非常关键的一个环节。 【超实用课程内容】 课程从自然语言处理的基本概念与基本任务出发,对目前主流的自然语言处理应用进行全面细致的讲解,包括文本分类,文本摘要提取,文本相似度,文本情感分析,文本特征提取等,同时算法方面包括经典算法与深度学习算法的结合,例如LSTM,BiLSTM等,并结合京东电商评论分类、豆瓣电影摘要提取、今日头条舆情挖掘、饿了么情感分析等过个案例,帮助大家熟悉自然语言处理工程师在工作中会接触到的常见应用的实施的基本实施流程,从0-1入门变成自然语言处理研发工程师。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/25649 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 下载方式:电脑登录https://edu.csdn.net/course/detail/25649,点击右下方课程资料、代码、课件等打包下载 通过第二课时下载材料
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页