直接看代码:github传送门
数据集:古诗数据集
1. 数据预处理:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200620221148357.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BoaWxwYW5pYzk=,size_16,color_FFFFFF,t_70#pic_center)
将古诗存为上图的格式,每行一首诗,便于使用torchtext读取。
2. 模型定义
模型就是一个简单的GRU模型,
3. 模型训练和测试
训练过程中如同翻译模型中的teaching forcing,输入是
[
<
s
t
a
r
t
>
,
x
1
,
x
2
,
.
.
.
x
n
]
[<start>,x_1, x_2, ... x_n]
[<start>,x1,x2,...xn],期待的输出是
[
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
,
<
e
n
d
>
]
[x_1, x_2, x_3, ..., x_n,<end>]
[x1,x2,x3,...,xn,<end>],
训练完成后进行测试时也就是古诗生成时有两种可选模式,一种时将输入的文本作为古诗的开头,一种是将输入的句子的每个字作为每个诗句的开头(也就是生成藏头诗)。将输入作为开头的处理方式就是先将输入的x输入到GRU中,将最后一个time step的隐状态作为解码开始的隐状态,解码过程就是将上一步解码得到的输出作为下一个time step的输入,直到出现
<
e
n
d
>
<end>
<end>或者达到最大长度。如果是生成藏头诗,则在每一个句子的开头输入指定的单词,然后进行解码。
本实验所用到的数据集较小,生成效果还不是很好,在小样本上进行过拟合实验没问题。
结果展示:生成一首"花开有情"的藏头诗如下
花边行县柳,河桥晚泊船。
开远树,山鸟助酣歌。
有情何处,箫管凤初来。
情何处所,风吹青珊瑚,可怜王孙立。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)