文本预处理
文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤:
- 读入文本
- 分词
- 建立字典,将每个词映射到一个唯一的索引(index)
- 将文本从词的序列转换为索引的序列,方便输入模型
- 用现有工具进行分词
前面介绍的分词方式非常简单,至少有以下几个缺点:
- 标点符号通常可以提供语义信息,但是我们的方法直接将其丢弃了
- 类似“shouldn’t", "doesn’t"这样的词会被错误地处理
- 类似"Mr.", "Dr."这样的词会被错误地处理
可以通过引入更复杂的规则来解决这些问题,但是事实上,有一些现有的工具可以很好地进行分词,简单介绍其中的两个:spaCy和NLTK。
语言模型
不难理解就是统计学意义上的概率问题。注意一下随机采样与相邻采样之间的区别。
循环神经网络
使用 Pytorch 中的 nn.RNN 构造神经网络
所以需要裁剪梯度。
对于语言模型的评价,采用困惑度。
GRU
区别:
- RNN存在问题:梯度容易出现衰减或者爆炸。
- GRU:捕捉时间序列中时间步距离较大的依赖关系。