越来越多的人选择参加算法赛事,为了提升项目实践能力,同时也希望能拿到好的成绩增加履历的丰富度。期望如此美好,现实却是:看完赛题,一点思路都木有。那么,当我们拿到一个算法赛题后,如何破题,如何找到可能的解题思路呢。
本文针对NLP项目给出了4种常见的解题思路,其中包含1种基于机器学习的思路和3种基于深度学习的思路。
一、数据及背景
https://tianchi.aliyun.com/competition/entrance/531810/information(阿里天池-零基础入门NLP赛事)
我们直接打开数据下载地址,看到的是这样一个页面:
接着就三步走:注册报名下载数据,查看数据前五行可以看到我们获得的数据如下:
其中左边的label是数据集文本对应的标签,而右边的text则是编码后的文本,文本对应的标签列举如下:
同时我们还应该注意到官网有给出结果评价指标,我们也需要根据这个评价指标衡量我们的验证集数据误差:
既然该拿到的我们都拿到了,我们接下来就开始构思我们都应该使用哪些思路来完成我们的预测。
2.2 常见思路
因此本次赛题的难点是需要对匿名字符进行建模,进而完成文本分类的过程。由于文本数据是一种典型的非结构化数据,因此可能涉及到特征提取
和分类模型
两个部分。为了减低参赛难度,我们提供了一些解题思路供大家参考:
思路4:Bert词向量:Bert是高配款的词向量,具有强大的建模学习能力。
三、基于机器学习的文本分类
3.1 TF-IDF+机器学习分类器(思路1)
3.1.1. 什么是TF-IDF?
当有TF(词频)和IDF(逆文档频率)后,将这两个词相乘,就能得到一个词的TF-IDF的值。某个词在文章中的TF-IDF越大,那么一般而言这个词在这篇文章的重要性会越高,所以通过计算文章中各个词的TF-IDF,由大到小排序,排在最前面的几个词,就是该文章的关键词。
3.2.2. TF-IDF算法步骤
第一步,计算词频:
这时,需要一个语料库(corpus),用来模拟语言的使用环境。
第三步,计算TF-IDF:
可以看到,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。所以,自动提取关键词的算法就很清楚了,就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。
3.3.3. 优缺点
TF-IDF的优点是简单快速,而且容易理解。缺点是有时候用词频来衡量文章中的一个词的重要性不够全面,有时候重要的词出现的可能不够多,而且这种计算无法体现位置信息,无法体现词在上下文的重要性。如果要体现词的上下文结构,那么你可能需要使用word2vec算法来支持。
四、基于深度学习的文本分类
4.1 FastText(思路2)
4.1.1 FastText的核心思想
将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。这中间涉及到两个技巧:字符级N-gram特征的引入以及分层Softmax分类。
4.1.2 字符级N-gram特征
我来到达观数据参观
相应的bigram特征为:我来 来到 到达 达观 观数 数据 据参 参观
相应的trigram特征为:我来到 来到达 到达观 达观数 观数据 数据参 据参观
注意一点:n-gram中的gram根据粒度不同,有不同的含义。它可以是字粒度,也可以是词粒度的。上面所举的例子属于字粒度的n-gram,词粒度的n-gram看下面例子:
我 来到 达观数据 参观
相应的bigram特征为:我/来到 来到/达观数据 达观数据/参观
相应的trigram特征为:我/来到/达观数据 来到/达观数据/参观
4.1.3 分层Softmax分类
下图是一个分层Softmax示例:
通过分层的Softmax,计算复杂度一下从|K|降低到log|K|。
4.2 Word2Vec+深度学习分类器(思路3)
4.2.1 Word2Vec
Word2vec 是 Word Embedding 的方法之一。他是 2013 年由谷歌的 Mikolov 提出了一套新的词嵌入方法。
4.2.2 优化方法
为了提高速度,Word2vec 经常采用 2 种加速方式:
1、Negative Sample(负采样)
2、Hierarchical Softmax
4.2.3 优缺点
优点:
由于 Word2vec 会考虑上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之后的方法)
比之前的 Embedding方 法维度更少,所以速度更快
通用性很强,可以用在各种 NLP 任务中
缺点:
由于词和向量是一对一的关系,所以多义词的问题无法解决。
Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化
4.3 Bert词向量(思路4)
BERT(Bidirectional Encoder Representations from Transformers)词向量模型,2018年10月在《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》这篇论文中被Google提出,在11种不同nlp测试中创出最佳成绩,包括将glue基准推至80.4%(绝对改进7.6%),multinli准确度达到86.7% (绝对改进率5.6%)等。
4.3.1 特征
1、通过联合调节所有层中的左右上下文来预训练深度双向表示
2、the first fine-tuning based representation model that achieves state-of-the-art performance on a large suite of sentence-level and token-level tasks, outperforming many systems with task-specific architectures
3、所需计算量非常大。Jacob 说:「OpenAI 的 Transformer 有 12 层、768 个隐藏单元,他们使用 8 块 P100 在 8 亿词量的数据集上训练 40 个 Epoch 需要一个月,而 BERT-Large 模型有 24 层、2014 个隐藏单元,它们在有 33 亿词量的数据集上需要训练 40 个 Epoch,因此在 8 块 P100 上可能需要 1 年?16 Cloud TPU 已经是非常大的计算力了。
4、预训练的BERT表示可以通过一个额外的输出层进行微调,适用于广泛任务的state-of-the-art模型的构建,比如问答任务和语言推理,无需针对具体任务做大幅架构修改。
5、一词多义问题
联系客服