系统学习《动手学深度学习》点击这里:
《动手学深度学习》task1_1 线性回归
《动手学深度学习》task1_2 Softmax与分类模型
《动手学深度学习》task1_3 多层感知机
《动手学深度学习》task2_1 文本预处理
《动手学深度学习》task2_2 语言模型
《动手学深度学习》task2_3 循环神经网络基础
笔记目录
1 文本预处理
文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤:
- 读入文本
- 分词
- 建立字典,将每个词映射到一个唯一的索引(index)
- 将文本从词的序列转换为索引的序列,方便输入模型
1.1 关于建立词典
这里是对Vocab类实现的理解,首先是这个类想干什么?
Vocab类想实现将词映射成一个索引,既然是索引那么相同的词就应该具有相同的索引,所以这里对于输入的文本还会进行一个去重的操作。
此外,Vocab还想方便的获取给定某个词对应的索引,以及给定一个索引获取这个索引所对应的词。除了上面说的两个功能,还有一个就是
统计了每一个词的词频。
代码部分主要是由几个列表的复杂操作,理解了那几行代码,应该就能完全看懂代码在干什么了。
1.2 关于在词典中的pad,bos, eos, unk
- pad的作用是在采用批量样本训练时,对于长度不同的样本(句子),对于短的样本采用pad进行填充,使得每个样本的长度是一致的
- bos( begin of sentence)和eos(end of sentence)是用来表示一句话的开始和结尾
- unk(unknow)的作用是,处理遇到从未出现在预料库的词时都统一认为是unknow ,在代码中还可以将一些频率特别低的词也归为这一类
1.3 关于用现有工具进行分词
前面的分词方式非常简单,它至少有以下几个缺点:
- 标点符号通常可以提供语义信息,但是我们的方法直接将其丢弃了
- 类似“shouldn’t", "doesn’t"这样的词会被错误地处理
- 类似"Mr.", "Dr."这样的词会被错误地处理
我们可以通过引入更复杂的规则来解决这些问题,但是事实上,有一些现有的工具可以很好地进行分词,我们在这里简单介绍其中的两个:spaCy和NLTK。
家里网太差了,这两个包下载不了,等网好了再实验
1.4 关于正则表达式
lines = [re.sub('[^a-z]+', ' ', line.strip().lower()) for line in f]
# 上面这行代码的正则部分为
re.sub('[^a-z]+', ' ', str)
# re.sub()函数是用来字符串替换的函数
# '[^a-z]+' 注意这里的^是非的意思,就是说非a-z字符串,+表示1个或多个
# 上面句子的含义是:将字符串str中的非小写字母开头的字符串以空格代替
正则表达式推荐链接:https://blog.csdn.net/qq_41185868/article/details/96422320#3%E3%80%81%E6%A3%80%E7%B4%A2%E5%92%8C%E6%9B%BF%E6%8D%A2
2 语言模型
2.1 n-gram
N N N元语法是基于 n − 1 n-1 n−1阶马尔可夫链的概率语言模型,其中 n n n权衡了计算复杂度和模型准确性
语言模型可用于提升语音识别和机器翻译的性能。例如,在语音识别中,给定一段“厨房里食油用完了”的语音,有可能会输出“厨房里食油用完了”和“厨房里石油用完了”这两个读音完全一样的文本序列。如果语言模型判断出前者的概率大于后者的概率,我们就可以根据相同读音的语音输出“厨房里食油用完了”的文本序列。在机器翻译中,如果对英文“you go first”逐词翻译成中文的话,可能得到“你走先”“你先走”等排列方式的文本序列。如果语言模型判断出“你先走”的概率大于其他排列方式的文本序列的概率,我们就可以把“you go first”翻译成“你先走”。
2.2 统计语言模型——n-gram模型的缺陷
-
参数空间过大
P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) P ( w 4 ∣ w 1 , w 2 , w 3 ) . P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_1, w_2, w_3). P(w1,w2,w3,w4)=P(w1)P(w2∣w1)P(
深度学习文本预处理与模型训练

本文深入探讨了深度学习中的文本预处理步骤,包括读入文本、分词、建立词典及文本向量化。同时,介绍了语言模型、n-gram模型及其缺陷,以及循环神经网络(RNN)的基本原理和实现细节。涵盖了RNN参数、梯度裁剪、模型评估指标(如困惑度)、训练技巧等内容。
最低0.47元/天 解锁文章
36万+

被折叠的 条评论
为什么被折叠?



