基于深度学习的古诗生成
系统简介 利用深度学习自然语言处理模型,学习《全唐诗》所录诗歌,自动创作符合要求的绝句诗歌 系统功能 五言诗生成:无输入,自由发挥创作五言诗 七言诗生成:同上 藏头诗生成:根据用户输入的1~4个字,生成对应的藏头五\七言诗 使用了循环神经网络(GRU)和position embedding生成古诗。输入第一个汉字,生成剩余诗句,并且在生成过程中依概率在topk中选字。 效果 五言绝句 玉照上阳宫,清秋凝素风。日寒人未到,云尽雁还来。 七言绝句 月落寒天末风清,夜深吹落向南平。故人世乱唯应见,此夕空流万里情。 藏头诗(小鸟依人、我爱调参) 小径微凉风,鸟来林下生。依稀有相思,人事竟无情。 我有相思物,爱君花下衣。调琴一别曲,参差不见稀。 运行方法 直接python demo.py即可使用预训练模型。main.py用于训练,参数详见代码。 模型介绍 框架模型:GRU+MLP GRU是RNN的一种,用以处理和生成序列。是对LSTM的改进,使用同一门控控制遗忘和记忆,有更高的训练效率。 将GRU每一步得到的结果再通过一个输入为GRU的隐状态维数,输出为字典维度的MLP,并通过softmax归一化为概率。 训练过程 我们认为诗歌的生成过程是auto-regressive的,即每一个字的生成概率仅与前面的内容有关。因此使用前面基于循环神经网络的方法建模。 训练时,我们使用了teacher forcing的方法:即输入首字,并将模型输出与真实的第二字对比计算交叉熵损失;输入真实的第二字,并将模型的输出与真实的第三字对比…… 生成时,通过给定的每句首字(未给定则依首字频率采样),通过如图所示的传统步骤生成诗歌。我们用位置向量来确定句子位置。 汉字和位置嵌入 word embedding 方法 将字视为向量,在高维空间中使不同字的意义能够充分体现 采用在《四库全书》上预训练的embedding,生成300维字向量。《Analogical Reasoning on Chinese Morphological and Semantic Relations》 position embedding 方法: 将字在句中的位置信息也作为特征,充分利用诗歌的格式要求 能够有效的提高诗句的整体性,降低断句错误发生的概率 采用《Attention is All You Need》中的方法,生成100维位置向量,输入时并(concatenate)到word embedding后。 via:https://github.com/Sleepychord/ChinesePoemGeneration