课程链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV

文本预处理

文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤:

  1. 读入文本
  2. 分词
  3. 建立字典,将每个词映射到一个唯一的索引(index)
  4. 将文本从词的序列转换为索引的序列,方便输入模型

有很多现成的分词工具包可以使用。

语言模型

语言模型有两种:基于统计的语言模型,基于神经网络的语言模型。

  • 基于统计的语言模型
    主要是 ???? 元语法(n-gram),序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。 ???? 元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n)
    如果n=1 ,那么有 ????(????3∣????1,????2)=????(????3∣????2) 。基于 ????−1 阶马尔可夫链,我们可以将语言模型改写为
    P(w1,w2,...,wT)=t=1TP(wtwt(n1),...,wt1)P(w_1,w_2,...,w_T) = prod_{t=1}^T P(w_t|w_{t-(n-1)},...,w_{t-1})
    n-1阶马尔科夫链即对应着n元语法。
    n如果比较大,n元语法的缺陷是参数空间大,数据稀疏。一般常用的是3-gram,再复杂一点的就是4-gram,5及以上很少见。

循环神经网络

《动手学深度学习Pytorch版》Task2-文本预处理、语言模型、循环神经网络《动手学深度学习Pytorch版》Task2-文本预处理、语言模型、循环神经网络
值得注意的是:不同时间步对应的Wxh,WhhW_{xh}, W_{hh}是一样的,共享权值矩阵的参数

在使用文本构造语言模型时,如果每隔一个字就构造一条数据,那么数据量会很大,而且其中很多信息会重复,就需要采样。
步长为1构造数据的示例:
文本:我知道你才是这世界上无与伦比的美丽
num_steps=5(取连续5个字),那么得到的数据有 (形式为[输入,label])
[我知道你才,知道你才是]
[知道你才是,道你才是这]
[道你才是这,你才是这世]

[与伦比的美,伦比的美丽]

采样方式:相邻采样、随机采样

双向RNN
在输出的时候,前向和后向两个隐层向量会做concat得到h,然后f(wh+b)输出结果

LSTM和GRU