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