数据集
本次课将使用下列数据集:关于电影评价的数据集。
下面是数据集的信息:
下载链接:
- https://ai.stanford.edu/~amaas/data/sentiment/
- http://s3.amazonaws.com/text-datasets/aclImdb.zip
Text to Sequence
文本处理的好坏很重要,直接影响到机器学习模型的准确率。
Step1:Tokenization
这里将一个单词作为一个token,有些时候还可以将一个字符作为一个token
讲究的点有如下:
- 是否将大写转为小写?(Apple 和 apple)有些时候Apple表示苹果公司,而apple表示苹果。
- 是否应该将类似于the, a, of之类的单词移除?这些单词对二分类问题是没有帮助的。
- 是否纠正拼写错误?(goood to good)
在实际的应用过程中,Tokenization重要且繁琐。
Step2:Build Dictionary
该过程与上节课讲的一致:
Step3:One-Hot 编码
- 每个人的评论长度不同,sequence的长度不同,这就意味着数据没有进行对齐。
- 而在机器学习中,我们需要把数据存储在矩阵或者tensor里面,这就需要我们把序列对其,每条序列都有相同的长度。
解决方法:
- 固定序列长度为w,只保留前面w个词或者后面w个词。
- 若一个序列太短,长度不到w,则补0。
这样数据就成功被对齐(Aligned)了。
Word Embedding:Word to Vector
- 若采用One-Hot编码,则向量的维度正比与vocabulary的个数,这样编码就太大了。
- 因此,我们需要把One-Hot的高维向量映射到低维向量。
- 方法如下:我们利用矩阵变换来实现:乘上一个矩阵P的转置,而这个矩阵P的参数是从训练中得到的:v是原来词向量的维度,d是变换后的词向量维度。其中d是用户自行决定的,会影响模型的表现,在实现中需要用Cross-Validation进行筛选。
- 下面的参数矩阵P是从文本中训练得来的,会带有感情色彩的信息:由于最终的词向量是二维的,所以可以反映在一个二维平面上。其中感情色彩接近的词会彼此接近,而相反的则会原理,而中性词则会偏中间。
如下图所示,我们在训练过程中需要下列几个参数,这些参数都需要通过交叉验证(Cross-Validation)来确认: - vocabulary: 词汇表的总词数。
- embedding_dim: 变换后的向量维度。
- word_num: 在文本中取多少个词来进行评估。
- Param: 参数量,即矩阵P的参数量,计算方法为行乘以列,需要用多少的参数量来实现高维到低维的转化。
逻辑回归进行二分类
Step1
- 使用Keras框架,导入keras相关的包
- 设置最后的词向量维度为8
- Sequential可以用来存储一系列的模型
- 首先对vocabulary做一个Embedding,取文本中word_num个词,输出20个8维的词向量
- 把这些词向量展平成1个160维的向量
- 最后用一个全连接层,激活函数用sigmoid
- summary()把这些模型的信息打印出来
Step2
- 设置训练50个epoch
- compile指定优化器,学习率,损失函数,和评估标准
- fit表示开始训练,train和vaild分别指定训练集和验证集
在测试集上的表现:大约有75%的准确率,大于随机,小于人的表现。
流程总览
Text Processing in Keras(视频中无的代码实现)