先修课程
- Machine Learning(李航-统计学习方法-第二版,吴恩达Machine Learning,该视频建议有时间的同学做练习题matlab、python语言各来一遍,没时间的同学建议直接python或者R语言)。
- 了解神经网络RNN、CNN的知识,主要是先了解一下RNN的原理和结构。
入门简易指南
- 词向量
- 句向量
- Bi-LSTM
- dense layer
- 损失函数
- tf.Session(), variables, Tensor这些概念
- 跑一个完整的数据集,如经典的数据据yelp评论情感分析
词向量
-
[word2vec/glove/fastText/elmo/bert] 的简单介绍
作者:JayLou。
这里主要是想了解一下这几种常见的词向量模型。有个初步的认识,具体每个词向量模型肯定还有很多东西。 -
这里首先推荐看一下斯坦福自然语言处理公开课CS224d里面的word2vec,对词向量有一个基本的了解。那么恭喜,这算是自然语言处理领域里的“hello world”了。
-
word2vec、fastText等词向量训练使用gensim库即可,此处介绍一下glove模型,glove模型的论文公式了解即可,因为这个模型的公式有点玄学。理解glove模型
文章作者:饺子醋glove模型关键是要会用就行,Stanford University 官方使用c语言编写,可以下载已经训练好的数据,也可以训练自己的语料库后生成词向量字典,再用 gensim.models.Word2Vec.load_word2vec_format() 调用即可在python语言中使用。
-
接下来我主要介绍一下当前非常火热的bert模型:
传统词向量模型存在无法解决一词多义的问题,即一个token用一个固定的vector表示,也就是只有一个意思,因此需要一种动态的表示方法,bert就是这样的一种模型。
学习bert模型首先需要学习Transformer
bert模型介绍以及官方代码
想了想还是先不介绍bert了,先跑完一个经典数据集理解了nlp再来看bert吧。
入门阅读程序的参考请往下看
句向量、Bi-LSTM、全连接层、损失函数及其最小化、tensorflow入门、跑一个完整的公开数据集(yelp)
-
有了前面词向量的基本了解,也就是说文字语料表示成了向量,我们才可以对其进行训练。那么接下来的这一系列步骤,推荐大家读一个别人写的代码,就能够成功入门nlp了!我读的是用BiLSTM训练yelp数据集的代码,(作者:Ruizhang1993)。vocabulary通过统计语料库的词频来确定哪些词用作字典,其他词统一表示成unk。另外要提一点的是,这里的词向量用作一个可训练Variable,并进行了变量的随机初始化。在其他自然语言处理应用的场景下,实际上也可以用word2vec或者bert进行一个预训练,然后再将其用于下游任务。
-
另外想再说一下这个代码的具体步骤,以便于从整体思路上了解整个nlp的训练过程。
这里关键是要了解tensorflow代码的书写步骤:构建TF计算流图 、执行计算流图
构建TF计算流图:
1)占位,用来之后设置batch_size分批送入训练集
2)写模型代码,BiLSTM或者其他模型
3)计算损失函数loss
4)确定优化函数,有好几种,不过能用上就行
5)执行计算流图阶段就是设置batch_size的数据结构,分批送进去训练
6)最后学习一下模型的保存和加载
参考资料
https://zhuanlan.zhihu.com/p/56382372
https://blog.csdn.net/coderTC/article/details/73864097
https://jalammar.github.io/illustrated-transformer/
https://jalammar.github.io/illustrated-bert/
https://blog.csdn.net/g11d111/article/details/76639460
https://github.com/muenn/BiLSTM_Text_Classifier_tf