本章开始介绍的是纯理论知识,目的是向读者阐述自然语言的传统方法和深度学习方法的差异,并介绍了其不同和各自的优缺点。接着搭建好了开发环境,让读者可以动手编写代码。下面以酒店评论为例,使用深度学习方法和Python语言做一个简单情感分类。
说明
本例的目的是为了演示一个demo,如果读者已经安装好开发环境,可以直接运行;如果没有,可学完本章后再回头练习。笔者会在后续的章节中详细介绍每一步的过程和设计方法。
深度学习的第一步(也是重要的步骤)就是数据的准备。数据的来源多种多样,既有不同类型的数据集,也有根据项目需求由项目组自行准备的数据集。本例中笔者准备一份酒店评论的数据集,形式如图1.24所示。
图1.24 一份酒店评论的数据集
这里由逗号将一个文本分成两部分,分别是情感分类和评价主体。其中标记为数字“1”的是正面评论,标注为数字“0”的是负面评论。
准备好数据后遇到的第一个问题就是数据的处理。对于计算机来说,直接的文本文字是计算机所不能理解的,因此一个最简单的办法是将文字转化成数字符号进行替代,之后对每个数字生成一个独一无二的“指纹”,也就是“词嵌入(embedding)”。在这里读者只需要将其理解成使用一个“指纹”来替代汉字字符。代码处理如下:
(1)创建3个“容器”,对切分出的字符进行存储。
(2)读取字符和文本。
(3)读取字符并获得字符的长度。
(4)将文本内容转换成数字符号,并对长度进行补全。
对于深度学习而言,模型的设计是一个非常重要的内容,本例只是演示,采用的是最为简单的一个判别模型,代码如下(仅供读者演示,详细的内容在后续章节中介绍):
下面一步是对模型的训练,需要定义模型的一些训练参数,如优化器、损失函数、准确率的衡量、训练的循环次数等。代码如下(这里不要求读者理解,能够运行即可):
完整的程序代码如程序1-3所示。
【程序1-3】
最后一步是模型的结果展示,笔者使用了epochs=10,即运行10轮对数据进行训练,结果如图1.25所示。
图1.25 结果展示
可以看到,经过10轮训练后,准确率达到了96%,这是一个不错的成绩。