课程链接:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV
文本预处理
文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤:
- 读入文本
- 分词
- 建立字典,将每个词映射到一个唯一的索引(index)
- 将文本从词的序列转换为索引的序列,方便输入模型
有很多现成的分词工具包可以使用。
语言模型
语言模型有两种:基于统计的语言模型,基于神经网络的语言模型。
- 基于统计的语言模型
主要是 ???? 元语法(n-gram),序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。 ???? 元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n)
如果n=1 ,那么有 ????(????3∣????1,????2)=????(????3∣????2) 。基于 ????−1 阶马尔可夫链,我们可以将语言模型改写为
n-1阶马尔科夫链即对应着n元语法。
n如果比较大,n元语法的缺陷是参数空间大,数据稀疏。一般常用的是3-gram,再复杂一点的就是4-gram,5及以上很少见。
循环神经网络
值得注意的是:不同时间步对应的是一样的,共享权值矩阵的参数
在使用文本构造语言模型时,如果每隔一个字就构造一条数据,那么数据量会很大,而且其中很多信息会重复,就需要采样。
步长为1构造数据的示例:
文本:我知道你才是这世界上无与伦比的美丽
num_steps=5(取连续5个字),那么得到的数据有 (形式为[输入,label])
[我知道你才,知道你才是]
[知道你才是,道你才是这]
[道你才是这,你才是这世]
…
[与伦比的美,伦比的美丽]
采样方式:相邻采样、随机采样
…
双向RNN
在输出的时候,前向和后向两个隐层向量会做concat得到h,然后f(wh+b)输出结果
LSTM和GRU
…
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:《动手学深度学习Pytorch版》Task2-文本预处理、语言模型、循环神经网络 - Python技术站