这是Datawhale和伯禹学院联合和鲸平台组织的”动手学深度学习“公益学习活动打卡笔记,同时也整理进了一些我平时学习的内容。使用的DIve into DL是pytorch版本,中文网页版链接:https://tangshusen.me/Dive-into-DL-PyTorch/#/
语言处理基础
文本预处理
通常包括四个步骤:
- 读入文本
- 分词(token)
- 建立字典,将每个词映射到一个唯一的索引index
- 将文本从词的序列转换为索引的序列
能较好帮助英文分词的库:spaCy和NLTK。
语言模型
语言模型的目标是为了判断该序列是否合理,即计算该序列的概率。
语言模型(language model)是自然语言处理的重要技术,用它来预测下一个时刻的输出。自然语言处理中最常见的数据是文本数据。我们可以把一段自然语言文本看作一段离散的时间序列。假设序列w1,w2,…,wT中的每个词是依次生成的,则有
为了计算语言模型,我们需要计算词的概率,以及一个词在给定前几个词的情况下的条件概率,即语言模型参数。
n元语法
n元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。这里的马尔可夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n)。n元语法是基于n−1阶马尔可夫链的概率语言模型,其中n权衡了计算复杂度和模型准确性。
循环神经网络Recurrent Neural Networks
由于n的增大使模型参数的数量随之呈指数级增长,故引入循环神经网络。
循环神经网络语言模型是一种用于处理序列数据的神经网络。它是一类自带循环的模型,这个循环使得其具备了记忆功能(非长久记忆)。
通过BPTT算法训练,“权共享”。
RNN模型种类
- one to many :生成领域,AI创作小说、音乐
- many to one :情感分析、舆情监控、听歌识曲、故障监控、声纹识别
- many to many(对齐):变声(实时)
- many to many(不对齐):同传、问答系统
RNN模型的重要变种——LSTM(Long short-term memory)
LSTM通过“门”来解决RNN网络在长序列训练过程中的梯度消失和梯度爆炸问题。
参考:https://colah.github.io/posts/2015-08-Understanding-LSTMs/
LSTM案例:文本生成、命名实体识别
RNN模型的其他变种
深度循环神经网络和双向循环神经网络。
- 深度循环神经网络通过增加隐藏层来实现。
- 双向循环神经网络则是nlp中十分常用的一个模型,它能同时兼顾当前时间前和后的数据信息,例如在文本处理时实现对上下文的联想。
NOT AN END
以上这些可以说只是要了解自然语言处理必须知道的一些基本内容。关于nlp的具体相关算法和思想,如word2vec、nagetive sampling等,有待整理!