诗歌是一种优美的语言形式, 诗以其意象组合和语言韵律给人带来独特的审美体验. 五言绝句是我国传统文学的结晶有着很高的文学和艺术价值. 一方面绝句诗歌本身有严格的对仗和格律要求, 诗人写作时应仔细推敲每一个字的使用, 以最精炼的文字表达出最细腻的情感, 另一方面这种结构规则含义丰富的诗歌形式, 为计算机理解人类语言提供了良好的范本. 近年来有越来越多的学者开始使用计算机模拟诗歌的规则和诗人的写作方式来生成主题明确、语言通畅的绝句诗. 这些工作对于计算机理解人类语言和思维都有着积极的探索意义.
五言律诗最基本的格律要求是: 重音位置的字平仄相对. 平仄律是六朝及隋唐诗人根据当时的语言形态和审美观念不断探索而形成的诗体规范[1]. 绝句中基本的对仗要求是: 诗歌上下两句对应位置动词对动词、名词对名词. 古代诗人可以凭借对格律的运用和文字的把控即兴赋诗而浑然天成, 如李白《将进酒》“呼儿将出换美酒, 与尔共消万古愁”, 曹植七步成诗“本是同根生, 相煎何太急”. 这对于计算机自动生成诗歌的启发是我们可以更加关注诗歌语言文字本身的搭配关系, 在诗句之间加入对联的规则, 以增强诗歌语言的韵律和感情色彩.
目前将文字向量化的算法可以捕捉到文字间细腻的语法和语义关系[2, 3], 含义相近的字在向量空间中的分布也更相近. 词向量的表达方便了句子建模, Zhang等[4]使用卷积神经网络提取语句在不同层次上的语义和模式特征, 进行句子间的语义匹配. 这可以看作是使用卷积神经网络建模句子的语义表征. 循环神经网络在语音分析和文本翻译上的表现证明它可以很好的提取和记忆输入信息前后之间的联系[5].
受到二维卷积神经网络在图像处理应用中的启发, 我们创新性地将一维卷积网络应用到绝句诗歌的生成当中, 提出了一种更具有感情色彩的诗歌生成模型.
我们的诗歌生成模型由语义模型和文字规则模型构成. 语义模型根据上句(以句号分句, 逗号分隔的子句为半句)的输入预测下半句的输出, 以增加诗歌主题和上下文的连贯性. 文字规则模型根据语义模型输出的前半句, 预测输出的后半句, 使诗句文字在感情色彩上和主题一致. 语义模型和文字规则模型共同完成一首诗歌的生成.
具体的语义模型由一维卷积网络和双向循环网络构成, 一维卷积网络用于提取诗句的抽象语义特征, 双向循环网络用于记忆语义特征之间的结构关系; 文字规则模型由词嵌入网络和带注意力机制的编码解码器构成, 用于学习诗歌文字的对仗关系和文字在高维空间的结构关系.
1 相关工作关于诗歌自动生成的研究已经有了几十年的历史, 早期的诗歌生成基于规则和模板[6, 7]之后基于统计机器学习算法的模型被用到了诗歌生成当中如SMT(Statistical Machine Translation)[8], 文献[9]设计了一种基于短语的统计机器翻译模型, 以前一句诗歌生成后一句诗歌. 文献[10]提出以统计机器翻译为理论基础, 将格律诗的上下句关系映射为统计翻译模型中源语言与目标语言的关系设计了融入诗词领域知识的统计机器翻译模型用于诗歌生成. 当前神经网络算法在诗歌自动生成任务中应用广泛, 体现出了明显的优势. 现在大部分诗歌生成基于循环神经网络RNN (Recurrent Neural Network). Zhang等[4]最早将单一的循环网络RNN应用到绝句诗的生成当中, Zhang等在词嵌入的基础上使用语句卷积模型提取上下文特征向量, 捕捉诗歌的上下文信息, 然后使用RNN依据上下文向量和之前生成的诗句得出下一句诗. 但是早期的RNN和他们使用的卷积模型较为简单, 为了提升语言的连贯性他们还引入了额外的SML (Statistical Machine Learning)特征和N-gram语言模型. 随后Yan等[11]等提出基于RNN的编码解码模型ipoet, 采用循环迭代的方式使模型每一次的输出作为下一次的输入, 模仿诗人创作反复打磨的过程. Wang等[12]采用Planning Model对诗歌的主题进行分割, 诗歌的每一行对应一个子主题, 然后诗句在子主题的指引下由编码解码网络自动生成, 作者还调整了编码网络的结构使编码器可以编码子主题和之前生成的诗句, 以生成主题连贯的诗歌. 文献[13]中, 作者将诗歌生成问题看成序列到序列的学习问题, 使用带注意力机制的编码解码模型学习字符间的联系和输入输出诗句间的相关性, 并采用了词生成句, 句生成句, 段落生成句3种独立的诗歌生成方式. 文献[14]作者认为神经网络的概率本质虽然可以学习到诗歌中出现频率较高的语言模式生成语句通顺的诗歌但它严重忽视了诗歌创新性的美学意义, 进而提出了记忆增强的神经模型(memory-augmented neural model)结合带注意力机制的神经网络和诗歌特征映射模型生成有一定创新性的诗歌. 文献[15]作者提出诗歌生成的动态记忆模型分别独立保存写作的主题向量作为主要信息, 主题向量会随着诗句的生成进行更新, 在生成每一行诗句时模型读取最相关的主题向量指导生成当前诗句. 此外作者还引用了风格嵌入控制来生成语言风格不同的诗歌.
上述的诗歌自动生成模型多把重点放在诗歌的主题控制与文字的流畅性上, 我们的模型将重点放在诗歌语言文字的本身上, 以获得语言的流畅性、主题的一致性和更强的感情色彩.
2 模型诗歌生成模型由语义模型和文字规则模型构成, 在诗歌语料库和对联语料库上联合完成训练. 模型可以根据输入的文字描述生成诗歌, 但为方便对比不同模型生成的诗句, 实验中采用50条给定诗歌的首半句(以“, ”分隔半句; “. ”分隔一句)作为输入.
诗歌生成方法如图1所示, 给定半句诗歌
在生成一句诗歌的过程中, 语义模型SM在给定诗句(上文)C后, 输出下文
$W = SM(C) $ | (1) |
文字规则模型WM根据给定的汉字W, 计算生成下文m个字的概率, 记
$P(S) = WM(W) {\rm{ }}$ | (2) |
模型整体可以看作在给定条件下, 计算生成诗句S的概率, 如式(3). 给定的条件为: 写作描述C和模型生成的前m个字.
$P(S|w;C) = \prod\nolimits_{i = 1}^m {P({w_{i + m}}|{w_{i:i + m - 1}},C)} $ | (3) |
诗歌生成的问题转换为最大化这个条件概率的问题.
2.1 语义模型 2.1.1 诗歌数据处理首先对包含30 000首五言诗的数据集进行字频统计, 统计每一个使用到的汉字出现的次数. 考虑到古汉语和现代汉语的不同, 为生成更通俗易懂的诗句, 我们过滤掉频次少于15字和所有包含这些字的诗歌, 保留18 000首诗歌和2379个汉字用于模型训练. 然后建立字典, 将保留的每一个汉字映射到一个整数. 最后构建训练数据集
使用Tensorflow1.13.0中的Keras API搭建神经网络模型. 模型的输入
$T_{i, j}^C = \sigma (\sum\limits_{k = 1}^K {T_{i + k - 1}^l \cdot f_k^j} )$ | (4) |
其中,
将卷积后的特征张量Tc输入双向LSTM(Long Short-Time Memory)模型[16]记忆学习诗歌抽象语义特征. LSTM的数学描述[17]可表达为:
${h_t} = {f_0} \circ \tanh ({c_t})$ | (5) |
${f_0} = \sigma ({w_0} \cdot [{h_{t - 1}};{x_t}] + {b_0})$ | (6) |
${c_t} = {f_t} \circ {c_{t - 1}} + {f_u} \circ {\tilde c_t}$ | (7) |
${\tilde c_t} = \tanh ({w_c} \cdot [{h_{t - 1}};{x_t}] + {b_c})$ | (8) |
${f_u} = \sigma ({w_u} \cdot [{h_{t - 1}};{x_t}] + {b_u})$ | (9) |
${f_f} = \sigma ({w_f} \cdot [{h_{t - 1}};{x_t}] + {b_f})$ | (10) |
其中,
双向LSTM将数据按时间步的顺序过程和倒序过程分别输入到两个LSTM模型中, 最后将两个模型的输出向量
LSTM网络后连接两层全连接层, 用于预测模型的输出
$L = \frac{1}{{2m}}\sum\limits_{i = 1}^m {{{({y_i} - {{\hat y}_i})}^2}} $ | (11) |
针对对联数据集构建字典, 将数据集中的每一个字映射到一个特定的整数, 构建训练数据集
模型先使用词嵌入层将输入的文字序列映射到高维的向量空间中, 拓展文字序列向量的表征能力.
将对联字典中汉字对应的整数编码
${({T^e})^{\rm T}} = [L \cdot e({w_1}),L \cdot e({w_2}),\cdots,L \cdot e({w_m})]$ | (12) |
其中,
对输入的词嵌入张量, 模型采用带注意力机制的序列到序列结构, 由编码器(ENLSTM)对输入张量编码提取特征向量后由解码器(DELSTM)结合注意力机制预测输出张量. 其运算过程可以描述为[18]:
编码器接受上联输入的词嵌入张量
${h_t} = {EN_{\rm LSTM}}({x_t},{h_{t - 1}})$ | (13) |
解码器接受下联输入的词嵌入张量
${s_t} = {DE_{\rm LSTM}}({y_t},{s_{t - 1}})$ | (14) |
由编码器和解码器的隐藏层输出
${e_{ij}} = score({s_i},{h_j}) = h_j^{\rm T}{s_i}$ | (15) |
${\alpha _{ij}} = Softmax ({e_{ij}})$ | (16) |
由编码器每一个时间步隐藏层输出的加权平均生成上下文向量
${c_i} = \sum\limits_{j = 0}^n {{\alpha _{ij}}{h_j}} $ | (17) |
将上下文向量
$P({y_t}|{y_{1:t - 1}},x) = Softmax ({W_s}[{c_t};{s_t}])$ | (18) |
模型的目标函数为交叉熵损失函数:
${J_t} = \sum\nolimits_{(x,y) \in T} { - \log p(y|x)} $ | (19) |
其中, T为训练数据集.
3 实验模型在30 000首五言诗歌数据集和50 000首对联数据集上进行训练. 我们使用3个模型进行诗歌生成的比较, 一是类似Yan等[11]的LSTM模型; 二是类似Wang等[19]的注意力模型, 三是我们的诗歌生成模型. 3个模型分别在相同测试集上生成50首诗歌, 用于测评.
3.1 评价标准参考文献[2]我们使用BLEU[20]作为诗歌生成模型的评估方法. 这种方法在评估时需要给出参考文本, 对于如何获取参考文本, He等[8]的思想是如果两句诗有相同的主题, 那这两句诗的后两句诗可以相互参考. 我们模型的诗歌生成基于给定诗歌第一句的前半句, 所以自然地我们选择给定诗句的全诗作为BLEU评分的参考文本.
因为诗歌这种特殊形式的文本其美学价值和给人的情感体验有较强的主观性, 所以我们也设计了人工评判环节, 为使评判有较强的客观性, 选择4条评判标准: 1)对仗, 模型生成诗歌句间的词语是不是相互对仗; 2)韵律, 模型生成的诗歌是不是按五言律诗的规则平仄相对; 3)意象, 诗歌意象是诗歌情感意义的主要载体, 这里考察诗歌中是否包含常见的文学意象, 如春风、秋月、旧竹、寒梅等; 4)连贯性, 诗歌整体上下句表达的情感是否流畅或一致. 每条标准按1~5分评分.
3.2 评估结果使用二元BLEU对上述3个模型生成诗句评分, 每个模型根据给定的50条输入生成50首诗歌, 50首诗歌的平均BLEU得分如表1所示.
每个模型BLEU得分前5的诗句分别由表2, 表3, 表4所示.
由实验结果可以发现虽然双层LSTM模型可以提取诗歌基本的结构特征, 但它生成的诗歌在BLEU评分中明显不如注意力模型和本文模型, 而且主题不明显. 这里需要指出的是, 双层LSTM模型只在五言诗歌的数据集上进行训练, 而后两个模型在诗歌数据集和对联数据集上联合训练, 这种对比可能对双层LSTM模型有些不公平, 但是在尽我们努力所翻阅的文献中, 前人的诗歌生成工作只利用了诗歌数据集, 而没有加入对联数据集来加强学习诗歌文字间的对仗关系, 所以这里对于基线模型双层LSTM, 我们只使用了诗歌数据集对其进行训练.
BLEU评分考察更多的是文字之间的相关性, 有较高得分的诗句不一定有诗歌的美感, 明显的主题和鲜明的情感色彩, 所以我们根据上文提到的诗歌评分标准, 邀请8位来自文学专业的同学对每个模型生成的50首诗歌打分. 每个模型生成诗歌平均得分情况如表5所示.
3.3 实验分析
在诗歌和对联数据集上训练的注意力模型和本文的模型可以较好的表现诗歌的对仗和韵律, 一方面是因为注意力机制可以更好的关注诗歌对应位置的字符关系, 另一方面是因为对联本身有较强的韵律, 字词之间也有明显的对应关系. 如注意力模型生成的诗句“大漠孤烟直, 长城满水流. 秋景复秋风, 春风复夜阑. ”, “大漠”对“长城”, “孤烟直”对“满水流”, “秋景”对“春风”, “秋风”对“夜阑”, 明显的对仗关系和相似的意象组合可以较好地表现出诗歌的美感和韵律. 又如“饮马渡秋水, 幽林出晚风. 秋景湿人衣, 春风入画屏. ”、“海上生明月, 江中出晚风. 江水向秋波, 山阴复夜色”, 但注意力模型的缺点是一方面很多相似的意象组合限制了诗歌主题的丰富性, 如秋景和春风, 秋波和夜色, 明月和晚风常常相对; 一方面不相似的意象组合也使诗歌主题损失了整体性, 如上句“大漠长城”, 下句“秋景春风”. 意境的破坏同时也弱化了诗歌的情感表达.
本文模型使用一维卷积神经网络将上句诗歌的12个字符依次输入到网络中预测下文的输出, 将文字生成看成特殊的时间序列预测问题. 我们相信一维卷积网络的卷积核可以像词嵌入网络一样提取语言的语义结构并结合LSTM模型构成具有一定语言记忆功能的模型. 如在生成的诗歌“树树皆秋色, 花花亦未央. 离惜堤竹旧, 春风草未长. ”中, 上句“未央”与下句“离惜”相呼应使诗歌主题更一致, 更有美感, 同时也使诗歌有了更鲜明的情感色彩又如: “迟日江山丽, 秋风草树闲. 听晴司可喜, 看子向陵阑. ”上句“日”与下句“晴”相呼应; “浮云游子意, 清月入人心. 初晴弥可喜, 更与故人心. ”上句“清月”与下句“初晴”相呼应, 上句“游子意”与下句“故人心”相呼应通过实验的对比分析, 我们发现在诗歌和对联数据集上联合训练的模型可以较好地提升生成诗歌对仗和韵律的效果, 同时也具有更强的语言表现力和诗歌的美感. 我们的诗歌生成模型在提高诗歌生成的对仗和韵律效果的同时也改善了主题生成的一致性. 一致的主题, 流畅的语言和对仗的意象使模型生成的诗歌更具有更强得感情色彩.
4 总结我们的语义模型创新性地提出使用一维卷积网络和长短时记忆网络(LSTM)提取诗句的语义信息, 增强诗句之间主题的一致性和情感的相关性. 文字规则模型为带注意力机制的编码解码模型, 用于学习诗歌文字的韵律和字词的对仗关系. 模型在诗歌和对联数据集上联合训练. 实验结果表明我们的模型取得了预期的效果, 可以较好地呈现出诗歌的语言特征和情感色彩, 使机器生成的诗歌有类似诗人即兴赋诗的美感和表现力.
[1] |
李飞跃. 中国古典诗歌平仄律的形成与嬗变. 中国社会科学, 2015(3): 136-157. |
[2] |
Pennington J, Socher R, Manning C. Glove: Global vectors for word representation. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing. Doha, Qatar. 2014. 1532–1543.
|
[3] |
Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space. arXiv: 1301.3781, 2013.
|
[4] |
Zhang XX, Lapata M. Chinese poetry generation with recurrent neural networks. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing. Doha, Qatar. 2014. 670–680.
|
[5] |
LeCun Y, Bengio Y, Hinton G. Deep learning. Nature, 2015, 521(7553): 436-444. DOI:10.1038/nature14539 |
[6] |
Gervás P. An expert system for the composition of formal Spanish poetry. In: Macintosh A, Moulton M, Coenen F, eds. Applications and Innovations in Intelligent Systems VIII. London: Springer, 2001. 19–32.
|
[7] |
Wu XF, Tosa N, Nakatsu R. New hitch haiku: An interactive Renku poem composition supporting tool applied for sightseeing navigation system. Proceedings of the 8th International Conference on Entertainment Computing. Berlin, Heidelberg, Germany. 2009. 191–196.
|
[8] |
He J, Zhou M, Jiang L. Generating Chinese classical poems with statistical machine translation models. Proceedings of the 26th AAAI Conference on Artificial Intelligence. Toronto, Canada. 2012. 1650–1656.
|
[9] |
何晶, 周明, 蒋龙. 基于统计的汉语格律诗生成研究. 中文信息学报, 2010, 24(2): 96-103. DOI:10.3969/j.issn.1003-0077.2010.02.013 |
[10] |
蒋锐滢, 崔磊, 何晶, 等. 基于主题模型和统计机器翻译方法的中文格律诗自动生成. 计算机学报, 2015, 38(12): 2426-2436. |
[11] |
Yan R. i, Poet: Automatic Poetry Composition through recurrent neural networks with iterative polishing schema. Proceedings of the 25th International Joint Conference on Artificial Intelligence. New York, NY, USA. 2016. 2238–2244.
|
[12] |
Wang Z, He W, Wu H, et al. Chinese poetry generation with planning based neural network. arXiv: 1610.09889, 2016.
|
[13] |
Yi XY, Li RY, Sun MS. Generating Chinese classical poems with RNN encoder-decoder. Proceedings of the 16th Chinese Computational Linguistics and Natural Language Processing Based on Naturally Annotated Big Data. Nanjing, China. 2017. 211–223.
|
[14] |
Zhang JY, Feng Y, Wang D, et al. Flexible and creative Chinese poetry generation using neural memory. arXiv: 1705.03773, 2017.
|
[15] |
Yi XY, Sun MS, Li RY, et al. Chinese poetry generation with a working memory model. arXiv: 1809.04306, 2018.
|
[16] |
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[17] |
Greff K, Srivastava RK, Koutník J, et al. LSTM: A search space odyssey. IEEE Transactions on Neural Networks and Learning Systems, 2017, 28(10): 2222-2232. DOI:10.1109/TNNLS.2016.2582924 |
[18] |
Luong MT, Pham H, Manning CD. Effective approaches to attention-based neural machine translation. arXiv: 1508.04025, 2015.
|
[19] |
Wang QX, Luo TY, Wang D, et al. Chinese song iambics generation with neural attention-based model. arXiv: 1604.06274, 2016.
|
[20] |
Papineni K, Roukos S, Ward T, et al. BLEU: A method for automatic evaluation of machine translation. Proceedings of the 40th Annual Meeting on Association for Computational Linguistics. Philadelphia, PA, USA. 2002. 311–318.
|