1. 文本预先
(1)读入文本
(2)分词
(3)建立字典
字典其实与python学习到的字典类似,都是建立列表(token) 与索引(index)之间的映射。
使用字典,我们可以将原文本中的句子从单词序列转换为索引序列
(4)现有的分词工具
spaCy 和 NLTK这两个都是较为成熟的
2.语言模型
(1)基于统计的语言模型、基于神经网络的语言模型(用于评估一段给定的序列是否合理)
n元法:n元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面
n个词(一段序列由多个词组成)相关,即n阶马尔可夫链
P(w1,w2,…,wT)=∏t=1TP(wt∣wt−(n−1),…,wt−1).
n元法的缺点:参数空间过大、数据稀疏
(2)读取数据集
(3)建立字符索引
索引:读取句中每一个字符,并为其编号,作为字符的索引。
映射:字符和索引之间的串联。
(4)时序数据的采样
随机采样
相邻采样
这两个采样所得数据都与步频和批量有关
步频:用于决定每个批量包含的字符的大小
标签:用所提取的字符从下一位顺延同样步频所得的字符作为它本身的标签
3.循环神经网络
基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量H,用Ht表示H在时间步t的值。Ht的计算基于Xt和Ht−1,可以认为Ht记录了到当前字符为止的序列信息,利用Ht对序列的下一个字符进行预测。