在线古诗自动生成器的设计与实现前言1、算法模型介绍LSTM模型框架实验环境实验与分析实验数据集预处理训练过程模型训练结果模型的评估2、在线古诗生成器的设计与实现系统结构远程服务器的项目部署系统测试3、成品
前文古诗,作为中华文化的凝结,诠释了古人至高无上的智慧,是千万sqdhj的思想结晶。 古诗无论是句法结构、文字结合,还是文字间距组合,都达到了相当高的水平。 同时,古诗是不朽文化的精髓,也是中华民族的文化瑰宝。 近年来,随着人们生活水平的提高,传统诗词文化再次掀起了人们对传统文化的学习浪潮。 越来越多的人想创作符合自己意愿的诗句,却被诗歌创作的难度所折服。
近年来随着计算机人工智能技术的发展循环神经网络在自然语言处理方面得到了广泛的应用在技术的支持下,开发一个在线古诗自动生成软件是十分现实的,它可以收集海量的诗词库,支持古诗的检索,并通过智能的方式生成特定的诗词,解决了人们在诗歌创作中的一些难题。
本文在比较不同神经网络模型的古诗自动生成的基础上,结合在线古诗自动生成软件的具体需求,采用基于长短期记忆网络模型(LSTM )的神经网络结构,建立了古诗自动生成算法模型的
一、算法模型介绍LSTM介绍LSTM是深度学习的模型之一,是RNN的改进版,可以解决普通RNN神经网络训练过程中出现的梯度消失和梯度爆炸问题,学习长期依赖关系。 门控状态下控制传输,记住应该存储的信息,忘记不重要的信息。
下图是LSTM神经网络的结构图。 在此结构图中,每行表示一个完整的向量,以及从一个节点到另一个节点的输入。 圆圈表示点化操作,黄框表示学习神经网络的网络层,行连接表示连接,分支表示复制的内容在对应位置。
LTM改善了RNN中的长期依赖问题,可作为非线性模型用于构建更深的神经网络。 但是,虽然RNN的梯度问题通过LSTM的变种之一得到了解决,但仍然不彻底,更长的序列仍然存在问题,受到时间宽度和网络深度的影响。 LSTM模型可以实现长期记忆,保存上下文相关性,因此被广泛应用于自然语言处理。
模型框架古诗自动生成模型基于python的第三方库Keras和Tensorflow2.0,利用Keras的LSTM模型进行了实验。 模型主要构建两层LSTM layer、两层dropout layer、一个全连接层和softmax作为输出层,利用定制构建器进行数据输入,将数据大量加载到内存中,与Adam优化器进行交叉熵损失的模型损失函数
实验环境硬件实验环境参数硬件类型硬件模型CPU英特尔酷睿I 7主频2.00GHz显卡NVIDIA GeForce GTX 1050 Ti内存8G软件实验环境参数硬件模型Windows10GPU Toolkit 8.0Anaconda机器学习平台深度学习框架Keras开源框架Python开发环境Python 3.8JupyterLab培训平台实验和分析实验数据集为github core 如下图2.3所示。 数据集包含唐宋时期常见的40030首古诗,涵盖了古诗生成机器学习的常见诗。 另外,数据集按照一定的规则排列,主题和作者由特定的字符分割,每首古诗占一行,便于机器学习中文本的处理和矢量转换。
数据集预处理数据集预处理算法:
输入:古诗数据集poetry.txt
输出: word和id映射的词典
1 .逐行读取预期文本内容
2.for t=1 : max
2 .根据五言律诗的诗句长短筛选训练集
3 .统计排序选定训练集中的诗句字数
4 .删除不常用单词
5 .打包成元组列表,生成word到id的映射和id到word的映射关系
返回过滤后的古诗文本和映射了word和id的词典|
训练过程模型由两层LSTM层、两层Dropout层和最后的完全连接层组成,包含输入的训练对象五言律诗的诗句,即6个向量,可以通过不断的训练转化为对应的输出向量。
在实验训练过程中,受传统梯度下降法和反向传播法优化的影响较大,模型可能难以学习相关参数。 本实验采用了Adam算法作为一阶优化算法。 Adam算法和其他算法一样,不仅可以根据基于一次矩阵的平均值计算自适应参数的学习率,还可以使用二次矩阵平均值。 因此,Adam算法可以基于用户训练数据,迭代更新神经网络的权重。
模型训练的过程由于分割的训练任务大,不使用fit方法输入向量,而是使用fit_generator方法实现自定义生成器,批量生成数据并加载到内存中在回调函数中使用tensorboard库查看对应的模型学习曲线,在每个Epoch打印损失率和准确率的同时调用模型仿真旧
诗的生成,将训练结果保存在out.txt文件中。
模型训练结果
初始训练效果accuracy曲线
初始训练效果loss曲线
改进版loss曲线 模型的评估
古诗生成评估方案采用人工评估、BLEU机器评估和模型生成时间效率
针对于以上的评估标准,人工评估方案选取采用的方法为选取对诗歌有研究的20位学者对生成的十组诗歌进行打分(满分为10分,最低分为1分),然后去除最低分和最高分最后取平均分。其公式如下所示:
其中,n表示评委总人数,Si表示第i个评委的分数,Smax、Smin分别表示最高分和最低分。
BLEU(双语评估标准),其计算速度快、不区分语言具有较好的适用性。可以用于文本生成质量的评价,BLEU输出一个0到1之间的数字,来评估生成文本和真实文本两者之间的相似度。BLEU是准确率为基础,然后对机器翻译以及文本生成的结果做出评价,因此相对于其他方法而言是一种更加主流的方法。作为机器评价两个方案的指标,利用BLEU的重叠计算公式计算待评估文本中的词组在实际的参考文本中出现的频率。也就是,计算古诗自动生成的诗句结果和原本实际的诗句之间的差异度,由于其结果已经标签化为向量的形式,因此可以针对于向量的结果进行计算,其计算公式如下:
公式中,一组待评估的文本表示为Ci,对应的参考文本为si={si1,si2,…,sim},n是语法词组长度,hk(ci)表示wk在待评估文本ci中出现的次数,hk(sij)表示wk在参考文本中sij出现的次数。
古诗生成时间作为两个方案的另一个评价指标,通过比较两个方案在十组不同的古诗自动生成的过程中需要花费的平均时间,以此来衡量不同模型的调度效率。
古诗生成时间效率计算公式如下:
二.在线古诗生成器的设计与实现 系统结构
根据系统开发的简易需求,本系统采用B/S架构的模式实现设计,分为表现层、逻辑层和数据层。表现层负责用户的交互以及最终运行结果的输出,逻辑层使用服务器完成客户端请求的相关处理,数据层针对不同的请求从后台数据库进行操作和数据的返回。
系统总体结构如下图所示:
远程服务器的项目部署
首选申请一台服务器,此为阿里云服务器实例,获取ip,也可以设置域名绑定到对应的公有ip地址上,同时在阿里云控制台添加访问的安全组。使用xshell连接远程服务器,使用FileZilla Client实现文件远程传输,将项目拉取到服务器相应位置。
其次,在服务器上可以按照界面文件实现可视化操作,安装python的虚拟环境virtualenv 安装对应3.8版本的python,激活虚拟环境,设置虚拟环境的环境变量,同时在虚拟环境中安装所需要的机器学习库(tensorflow,django,keras等),运行本地服务器命令便可以实现项目在远程服务器本地拉取,可在浏览器查看对应的界面。
在实现远程本地拉取成功之后,下载安装nginx,配置nginx相关的conf文件,实现项目部署中的反向代理,同时收集静态的文件资源。除此之外,下载安装uwsgi包,配置相关的配置文件,实现python项目的服务器运行,最后通过命令调用配置文件可以实现项目成功部署,可以设置日志保存位置,方便应用调试和对出错信息的查看。
系统测试
1.编写测试样例进行功能测试
2.jmeter进行压力测试
三.成品展示
注:(需要源代码的可以在我csdn里面上传的资源中下载,具体部署流程和安装实验流程也可以加我QQ:1285219547交流,感谢大家的关注!!!)