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

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

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


前言

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


一、算法模型介绍

LSTM简介

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

改进版loss曲线

模型的评估

 古诗生成评估方案采用人工评估、BLEU机器评估和模型生成时间效率

 针对于以上的评估标准,人工评估方案选取采用的方法为选取对诗歌有研究的20位学者对生成的十组诗歌进行打分(满分为10分,最低分为1分),然后去除最低分和最高分最后取平均分。其公式如下所示:

 其中,n表示评委总人数,Si表示第i个评委的分数,Smax、Smin分别表示最高分和最低分。
在这里插入图片描述

 BLEU(双语评估标准),其计算速度快、不区分语言具有较好的适用性。可以用于文本生成质量的评价,BLEU输出一个0到1之间的数字,来评估生成文本和真实文本两者之间的相似度。BLEU是准确率为基础,然后对机器翻译以及文本生成的结果做出评价,因此相对于其他方法而言是一种更加主流的方法。作为机器评价两个方案的指标,利用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进行压力测试








三.成品展示

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45090.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[R语言]手把手教你如何绘图(万字)

目录 概况 常用高级图形 条形图 csv文件导入 csv文件导出 R语言sep函数 seq函数 with函数 直方图和密度估计图 盒型图 boxplot() 正态QQ图 散点图 pairs()散点矩阵图 曲线图 curve() 三维图 动态三维图 低级图形函数 abline() lines() legand()增加图例 …

古诗文本自动生成唐诗文本生成(算例代码)

首先准备好一个本地文件,在此我命名为唐诗三百首.txt如下图(https://img-blog.csdnimg. 图片: ##代码如下 import numpy as np, os from collections import Counter from warnings import filterwarnings filterwarnings(ignore) # 不打印警告from keras.utils…

UE4_UE5结合offline voice recognition插件做语音识别功能

市面上主流的语音识别大多是用科大讯飞的SDK,但是那个也不是完全免费使用的,于是我选择使用offline voice recognition的语音识别,购买插件终生使用。 offline voice recognition插件在UE官方商城卖200多元。 我将它需要的资源都打包成一个r…

AI协助理清思路?两位大学生短时间内开发的ChatMind思维导图为知识工作者带来无限便利

为什么结合ChatGPT生成的思维导图比其他ChatGPT有优势 结合ChatGPT生成的思维导图的优势在于,它可以将ChatGPT生成的信息可视化并以图形化的方式呈现出来。这样可以让用户更容易理解,记忆和组织ChatGPT生成的信息。思维导图还可以帮助人们分析ChatGPT生…

写了一首 Java 表白诗,女朋友不愁了!

祝大家 情人节快乐 一首原创 Java 诗 表白大家了 遇见你的第一天 忍不住内心的躁动 我在心里开辟了一块你的内存区域 和你的每一次美好邂逅 我都封装成记忆 深深将它压入堆栈 舍不得让它逃逸 追求你的队列很长 并发很高 我也加入了竞争 拼命挣抢着你的爱情锁 却被一直阻塞着 想…

写一首 Java 表白诗,女朋友不愁了 | 每日趣闻

作者 | 栈长 来源 | Java技术栈(ID:javastack) 遇见你的第一天 忍不住内心的躁动 我在心里开辟了一块你的内存区域 和你的每一次美好邂逅 我都封装成记忆 深深将它压入堆栈 舍不得让它逃逸 追求你的队列很长 并发很高 我也加入了竞争 拼命挣抢…

我居然帮初恋用Python去追她男神,这波舔狗真的坐实了啊~

事情的起因呢是这样的,初恋前几天突然给我发消息,内心一阵的波涛汹涌啊以为好事将近。聊了几句之后才发现她这是醉翁之意不在酒啊 特意找上我居然是因为辣条我是程序员来让我想办法帮她追现在隔壁家的小哥哥,真的是叔可忍婶不可忍啊。但是面…

【python】程序员最浪漫的表白方式,将情书写在她的照片里

前言 大家早好、午好、晚好吖~ 这不光棍节快到了,表弟准备写一封情书给他的女神,想在光棍节之前脱单。 为了提高成功率,于是跑来找我给他参谋参谋,本来我是不想理他的。 不过谁让他是我表弟呢(请我洗jio)…

程序员最浪漫的表白方式,将情书写在她的照片里,Python简直太厉害啦~

人生苦短,我用Python 序言实现步骤1、准备工作2、Pillow 介绍3、实战演练 序言 这不光棍节快到了,表弟准备写一封情书给他的女神,想在光棍节之前脱单。 为了提高成功率,于是跑来找我给他参谋参谋,本来我是不想理他的&…

一次10万token!GPT4最强对手史诗升级,百页资料一分钟总结完毕

号称ChatGPT“最强竞争对手”的Claude,今天迎来史诗级更新—— 模型记忆力原地起飞,现在1分钟看完一本数万字的小说,已经不在话下。 消息一出,评论区直接炸了,网友们蜂拥而至,“woc连连”: 疯了…

刚刚!全球科技巨头官宣:再裁 9000 人...

点关注公众号,回复“1024”获取2TB学习资源! 当地时间3月20日,全球科技巨头亚马逊宣布再裁员约9000人,目标瞄准薪酬更高的员工。按照美联社说法,最新宣布的这轮裁员规模为亚马逊“历史上第二大”,仅次于1月…

微信官方回应不会推出「已读」功能,网友:“这些功能先完善一下!”

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 7 月 11 日,#如果微信显示已读的话# 的话题冲上微博热搜,引发热议不断。 与此同时,「回复焦虑、社交困扰、意念回复、退网」等词眼,开始涌…

chatgpt赋能python:用Python进行选股——走进智能投资时代

用Python进行选股——走进智能投资时代 简介 投资者在股票投资中常常面临的问题是如何找到潜在的优质股票。传统的选股方法是基于人工分析和大量数据筛选,耗时又费力。而现代的使用 Python 进行选股的方法,可以将人工分析和大量数据筛选进行自动化&…

3.11 怎么增加小红书评论区的互动?【玩赚小红书】

今天就为大家总结了一下,关于小红书粉丝互动的一些小技巧,来供大家参考。 ​ ​ 一、 固好“真爱粉” 经常会在笔记下面评论、点赞、浏览笔记内容的粉丝,也就是所谓的“真爱粉”、“铁粉”,我们就需要用心维护这一部分粉丝。 ​…

无聊小知识.04 以下代码会输出什么?

1、前言 今天同事给我看了一段代码,然后这段简单的代码,我却陷入了沉思。 2、代码 String string ""; try {string "123";return string; } finally {string "234"; } 这段代码,string最终是“123”还是…

API接口设计不合理?个人和公司都有问题

前言 在软件产品或项目开发过程中,往往涉及到大量API接口的开发任务。而一个接口的诞生如果是令人费解的、痛苦折磨的以及有严重后遗症的,究其根本原因还在于设计API接口的时候不够清晰、合理以及缺乏长远考虑。我依据多位同事的问答、实际工作的经验和…

从亿点点失误,到一点点失误,我是如何做的【工作失误怎么办】

前言 只要我们还在做事,或者说还活着,就没有不犯错的时候。作为一名前端搬砖工,哪怕工作中再仔细小心,也免不了一些失误。 那这是不是说,失误很正常,改了就是嘛? 这么说好像没错。作为失误本…

2023年春季学期NLP总结作业

自然语言处理(Natural Language Processing,NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向…

检讨怎么写?检讨范文,秘密法宝帮你一分钟速写检讨

检讨不会写,看这里,一分钟速成班教学开始 其实。。。哪有什么一分钟速成班,就是告诉你有个秘密法宝,一分钟之内帮你写出一篇检讨,你只要输入你的问题描述,包括因为什么犯了错、需要写几百字等等&#xff0…

[Android] 检讨书生成器1.0

软件介绍 软件名称:检讨书生成器 适用设备:Android 软件大小 : 10.4 M 使用说明 进入软件后在主题对话框输入,例如:上课 吃屎,字数200,即可生成检讨书,如图所示 下载链接