在线古诗自动生成器的设计与实现

  • 前言
  • 一、算法模型介绍
    • LSTM简介
    • 模型框架
    • 实验环境
    • 实验与分析
      • 实验数据集
      • 数据集预处理
      • 训练过程
      • 模型训练结果
      • 模型的评估
  • 二.在线古诗生成器的设计与实现
    • 系统结构
    • 远程服务器的项目部署
    • 系统测试
  • 三.成品展示

前言

  古诗,作为中华文化的凝结,诠释了古人至上无比的智慧,是千千万万文人墨客的思想结晶。古诗不论是句式的结构,文字的结合,亦或是对文字音调的搭配都达到了一个相当高的水准。同时,古诗是一种不朽的文化精髓,更是中华名族的文化瑰宝。近年来,随着人们生活水平的提高,传统的诗词文化再一次掀起了人们对于传统文化的学习浪潮。越来越多的人希望创作出符合自己意愿的诗句,但是却因为诗歌创作的难度便望而却步。
近年来,随着计算机人工智能技术的不断发展,循环神经网络在自然语言处理方面得到了广泛的应用,在技术的支持下,开发出一款在线古诗自动生成的软件具有充分的现实意义,该软件集结了海量的诗词库,支持古诗的检索,可以按照智能的方法生成特定的诗句,解决了人们在诗歌创作方面的部分难题。
本论文在对比了不同神经网络模型在古诗自动生成的基础上,结合在线古诗自动生成软件的具体需求,采用了基于长短期记忆网络模型(LSTM)的神经网络结构,进行古诗自动生成算法模型的构建,并对模型的诗歌生成效果给出了评估结果,最终结合软件开发的流程完成了在线古诗自动生成系统的设计。


一、算法模型介绍

LSTM简介

  LSTM作为深度学习的模型之一,是一种RNN的改进版,解决了普通RNN神经网络训练过程中出现的梯度消失和梯度爆炸的问题,能够学习长期的依赖关系。通过门控状态来控制传输,记住需要记忆的信息,忘记不重要的信息。
  下图是LSTM神经网络结构图。对于此结构图,每一行都表示一个完整的向量,代表从一个节点的输入到另外一个节点的输入。粉圈表示点化操作,黄框表示学习神经网络网络层,行合并表示连接,分叉表示复制的内容到对应位置。

  LSTM改善了RNN中的长期依赖问题,作为非线性模型可以用于构造更大深度的神经网络。但是,RNN的梯度问题虽然在LSTM的一个变种中得到解决,但是还是不彻底,更长序列依然存在问题,以及受时间跨度和网络深度的影响。由于LSTM模型可以实现长期记忆,可以保存上下文的关联性,因此在自然语言处理方面得到了广泛的应用。

模型框架

  古诗自动生成模型,基于python中第三方库Keras以及Tensorflow2.0,采用Keras中的LSTM模型进行实验。模型主要构造了两层LSTM layer和两层dropout layer以及一个全连接层和softmax作为输出层,利用自定义构造器进行数据输入,使得数据批量载入内存,使用Adam优化器以及交叉熵损失的模型损失函数。

实验环境

硬件实验环境参数

硬件类型 硬件型号
CPU 英特尔 Core i7 主频 2.00GHz
显卡 NVIDIA GeForce GTX 1050 Ti
内存 8G

软件实验环境参数

硬件类型 硬件型号
操作系统 Windows10
GPU 运算平台 CUDA Toolkit 8.0
Anaconda 机器学习平台
深度学习框架 Keras开源框架
Python开发环境 Python 3.8
JupyterLab 训练平台

实验与分析

实验数据集

  数据集来源于Github社区作者Sheng You开源的古诗文本文件poetry.txt。如下图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进行压力测试

三.成品展示

注:(源码:古诗生成器源码)

在线古诗自动生成器的设计与实现相关推荐

  1. 车牌自动生成器软件设计与实现

    目  录 摘要 Abstract 1. 绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 本文主要工作 1.4 论文组织结构 2. 相关技术 2.1 车牌生成流程概述 2.2 国内车牌相关 ...

  2. AI自动写文章平台推荐,免费在线原创文章生成器

    AI自动写文章平台推荐,免费在线原创文章生成器.这些平台能通过强大的自然语言模型来一键生成各种内容,不仅在营销服务领域有很强的竞争力,同时也为个人和企业提供了一站式的内容创作需求. 五个AI写作助手平 ...

  3. 推荐几个代码自动生成器

    文章目录 老的代码生成器的地址:[https://www.cnblogs.com/skyme/archive/2011/12/22/2297592.html](https://link.zhihu.c ...

  4. 我收集了 12 款自动生成器,效果太逆天!

    整理 | Jane 出品 | AI科技大本营 此前,CSDN为大家介绍一个火爆文章生成器系统 BullshitGenerator,专以生成各种奇葩."狗屁不通"的文章,还因此上了微 ...

  5. 感悟开发.Net代码自动生成器,为软件起个好名字

    前两天收到成都罗斌的再次来信,突然有些感悟.征求了作者本人意见后,现刊登一些网友的来信,同时就一些问题欢迎大家讨论. ----------------------------------------- ...

  6. 这篇文章告诉你艺术签名自动生成器有哪些

    当今社会无论是大人还是小孩:无论是在工作中还是学习上,签名都是我们经常要做的事情,例如:新课本写上名字.孩子成绩单签名.合同签订等等.但是并不是所有人签出来的名字都很好看,很多人跟我一样都是先借助一些 ...

  7. 在线css三角形生成器 「干货」

    为了提高 前端开发 效率, 笔者先后写了上百个前端工具, 有些是给公司内部使用的, 有些单纯是因为自己太"懒", 不想写代码, 所以才"被迫"做的. 接下来介绍 ...

  8. unity 根据模型生成碰撞体_快速准确立体碰撞体自动生成器Unity游戏素材资源

    本游戏资料是快速准确立体碰撞体自动生成器Unity游戏素材资源,大小:5 MB ,格式:unitypackage,使用软件:unity5.6.4或更高,资产版本:Version 1.1(current ...

  9. C语言花样霓虹灯程序,霓虹灯花式自动生成器

    霓虹灯花式自动生成器是一款专为霓虹灯广告设计用户打造的霓虹灯效果图制作软件,能随意搭配灯管排列和标题颜色,直接预览总体的霓虹灯设置效果,需要的用户赶快下载体验吧! 使用说明: 1.设定文字标题: 文字 ...

  10. 简易双色球自动生成器

    设计一个双色球号码自动生成器,运行起来以后可以自动生成出推荐号码. 双色球号码规则:6个红球,1个兰球.其中红球数字范围从1-33,但不能重复. 兰球范围1-16,可以和红球重复 //号码自动生成器 ...

最新文章

  1. SAP变式配置的完整指南(中英文双语版)
  2. python写入csv(解决了乱码问题)
  3. 外媒:社交媒体的大量使用与精神疾病有关
  4. 非模态的titlewindow,点击外部时的事件
  5. WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理【02】
  6. 配置错误:未能使用提供程序“RsaProtectedConfigurationProvider”进行解密。提供程序返回错误信息为: 打不开 RSA 密钥容器。...
  7. Akka并发编程——第七节:Actor模型(六)
  8. NAS: One-Shot
  9. 从72万现金到骨灰盒,还有什么是不能被忘在网约车上的?
  10. 52 - 算法 - 数据结构 vector
  11. Asp.Net MVC中DropDownListFor的用法(转)
  12. ROS入门 通信架构
  13. xilinx set up debug
  14. win10 visualBox 新建虚拟机出现 UUID 错误
  15. 尽量使用条件属性(Conditional Attribute)而不是#if/#endif预处理
  16. java基础——java学习心得
  17. 视频如何分解成图片?怎么提取视频中的图片?
  18. 编写算法将数字编号“翻译”成英文编号(C语言)
  19. python批量下载兰科植物网站的图片,并重命名文件
  20. launcher矩形图标

热门文章

  1. ABB机器人Whlie循环指令
  2. ocx控件注册和解除注册
  3. 关系代数表达式_英语学数学 | 英语学代数XYZ,一样很简单
  4. Matlab模拟四旋翼飞行器PID控制仿真
  5. 换行符CR,LF和CRLF
  6. JavaScript判断数组的几种方法
  7. 数控数据采集跨平台免授权扎克(mazak)西门子(Siemens)海德汉(heidenhain)广数(GSK)、凯恩帝(knd)、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科(Fanuc)、华中
  8. 松下服务器型号说明,透析数码相机型号命名规则(松下篇
  9. 网络安全-跨站脚本攻击(XSS)的原理、攻击及防御
  10. imageJ下载 安装插件