文本预处理;语言模型;循环神经网络基础
发布于 11天前 作者 andy 来自分享

文本预处理

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

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

语言模型

假设序列w1,w2,,wT中的每个词是依次生成的,我们有

P(w1,w2,,wT)=t=1TP(wtw1,,wt1)=P(w1)P(w2w1)P(wTw1w2wT1)

例如,一段含有4个词的文本序列的概率

P(w1,w2,w3,w4)=P(w1)P(w2w1)P(w3w1,w2)P(w4w1,w2,w3).

语言模型的参数就是词的概率以及给定前几个词情况下的条件概率。设训练数据集为一个大型文本语料库,如维基百科的所有条目,词的概率可以通过该词在训练数据集中的相对词频来计算,例如,w1的概率可以计算为:

P^(w1)=n(w1)n

其中n(w1)为语料库中以w1作为第一个词的文本的数量,n为语料库中文本的总数量。

类似的,给定w1情况下,w2的条件概率可以计算为:

P^(w2w1)=n(w1,w2)n(w1)

其中n(w1,w2)为语料库中以w1作为第一个词,w2作为第二个词的文本的数量。

循环神经网络

本节介绍循环神经网络,下图展示了如何基于循环神经网络实现语言模型。我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量H,用Ht表示H在时间步t的值。Ht的计算基于XtHt1,可以认为Ht记录了到当前字符为止的序列信息,利用Ht对序列的下一个字符进行预测。

循环神经网络的构造

我们先看循环神经网络的具体构造。假设XtRn×d是时间步t的小批量输入,HtRn×h是该时间步的隐藏变量,则:

Ht=ϕ(XtWxh+Ht1Whh+bh).

其中,WxhRd×hWhhRh×hbhR1×hϕ函数是非线性激活函数。由于引入了Ht1WhhHt能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于Ht的计算基于Ht1,上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。

在时间步t,输出层的输出为:

Ot=HtWhq+bq.

其中WhqRh×qbqR1×q


回到顶部