统计机器学习——让计算机学会吟诗作赋
宿建德江
唐 孟浩然
移舟泊烟渚, 日暮客愁新。
野旷天低树, 江清月近人。
图片来自互联网
格律诗是中国古典诗词的一种,也叫近体诗,特指唐代之后的古诗体。其根据篇章长度不同可分为四句的绝句和八句的律诗,按照每句字数的不同又可分为五言诗和七言诗。格律诗的创作需在规定字数内完成给定主题内容的描述,且包涵特定意境。不仅如此,格律诗还讲究文字优美、押韵,对平仄、轻重音和用韵的使用也有一定的限制,比如有时候奇 - 偶句子要讲究平仄对应。李白、杜甫、李商隐、陆游等我们耳熟能详的著名诗人在中国诗歌史上占据重要地位。如今依然有很多文学爱好者希望和他们一样用诗歌传达自己的情感和抱负。但对于未经训练的人们来说,遣词造句以及韵律等约束是创作格律诗过程中的一大障碍。
新年到,作为格律诗研究的第一步探索,微软亚洲研究院推出了全新的绝句生成系统,为热爱诗词的人们带来了乐趣。自然语言计算组的研究员们基于统计机器翻译的方法,利用计算机对格律诗进行辅助创作。首先,创作者选择几个表达创作意图的关键词,然后系统会对每一个关键词增加若干语义相关的扩展词,并通过句子韵律模板生成候选的第一句,供创作者确认或者修改。然后,系统使用一个基于短语的机器翻译模型,以前一句为输入,来生成下一句的候选。与“微软对联”系统不同的是,在生成下一句候选时,中文格律诗自动生成系统要考虑与前面一句,以及前面所有句子的语义连贯性,以及平仄、韵律和对仗的约束。如此往复,直至四句全部完成。
带你写出“原汁原味”的古体格律诗
先来看看网友用“微软绝句”写下的心情:
郊兴
拨槕茶川去,入杯花海归。
随曲柳风至,逐人桃雨垂。
秋馆雨夜
飞鸣一燕带秋回,落语千花随夜微。
手拓棂窗望萧瑟,闲宵静话喜还悲。
是不是有点意境,仿佛古代的文人穿越至此留下的感悟?
目前中文格律诗自动生成系统已可以成功实现绝句的创作。网友们在体验后纷纷表示,前沿科技原来也可以如此“文艺”。
那么中文格律诗自动生成系统是如何让诗歌的字词句如此富有古典气息的呢?
一般的格律诗创作过程可大致分为如下几步:
1) 有清晰的描述主题,这些主题可以通过具体的主题词来表述。如:写一首想念故乡的诗,可由“思乡”或“故乡”等确切的词汇来表述。
2) 根据主题词联想出更多与其语义相关的词汇,如:由“思乡”联想到“慈母”和“家书”等。
3) 在符合格律诗约束下,通过对这些词的合理组织,反复推敲创作诗句。
4) 参考上文与主题,一句一句创作下句,循环往复直至完成全诗。
为了让创作者写出符合格律诗约束的诗篇,中文格律诗自动生成系统依照传统创作过程将具体架构设计如下:
系统在统计机器翻译的基础上,引入主题模型作为用户所输入的表征题目词汇的扩展,从而辅助首句的生成,并在交互方式下生成每一个单句。在统计机器翻译模型中融入主题模型是为了加强所生成诗句与创作者拟定题目的相关性。在基于统计机器翻译的格律诗生成过程中,把格律诗中的上下句分别看作源语言句与目标语言句,可自然地通过统计机器翻译模型实现下句的自动生成。
不仅如此,系统还引入了清代学者刘文蔚在《诗学含英》中所总结归纳的古诗特性及约束,加入了《声韵启蒙》、《训蒙骈句》、《笠翁对韵》三本训练对偶技巧和声韵格律的工具书中的主题类型,如天文、时令、节序、地舆、楼馆、人伦、文学、游眺、饮食、器用、花草、竹木、飞禽、走兽等。同时,系统还包含了主题词的二级分类,对常见的古诗主题有了比较全面的覆盖。创作者可以在这些类中选择主题,“写出”符合遣词造句、格律押韵并充满意境的古诗来。
“计算机诗人”的创作过程
饮中八仙歌
唐 杜甫
李白斗酒诗百篇,长安市上酒家眠。
天子呼来不上船,自称臣是酒中仙。
图片来自互联网
在使用系统时,用户首先选择一些关键词,系统会根据这些确定的关键词生成第一句(用户可以手动选择第一句,也可以自行输入);随后点击第二句的输入框,系统则会根据第一句自动生成第二句;同理,第三句和第四句的生成也会考虑已生成前文的信息。当四句诗生成结束后,用户则可以点击“写诗题”输入诗题和姓名,然后,系统还会根据诗歌内容量身定制诗配画。最后完成保存,就可以和小伙伴们一起分享你的大作。你也可以像“诗仙”李白一样“斗酒诗百篇”!
实现这样看似轻松的格律诗创作,其背后的技术却没有那么“轻松”。
首先,在格律诗创作中,主题可由多种多样的词汇来描述。为了满足表达多样性的需求,系统根据创作者提交主题词,利用主题模型进行扩展得到更多的主题相关词。主题模型除了有助于词汇扩展,还可帮助强化主题意境。
语义相关:词A和词B同属某个主题的常用词,在撰写某类主题文章时经常被一起使用,且在训练文档库中存在很强的共现关系
除此之外,我们进一步使用深度学习技术词向量模型对于主题词进行扩展,例如当用户选择“怀古”主题时,深度学习模型可以给出更多相关的主题词如“吊古”、“览古”、“凭吊”,“怀昔”等,对于传统的主题模型是很好地增强。在借助上述主题模型得到基于主题词的语义相关词集后,首句的自动生成便呼之欲出了。以该词集中的词汇作为造句的基本元素,结合语言模型作为评价函数,搜索较优的候选句。候选句的筛选机制在宽度优先搜索上加上了扩展宽度限制,每次只从扩展节点中选择评分最优的若干个节点进行扩展。例如,对于词集 { 清溪、石桥、潺潺、绕、过 } ,首先设置扩展宽度为 1 ,生成候选词的个数也为 1 ,假定诗句长度为 5 (五言绝句)。第一次筛选时每个词均作为一个候选,假定首轮最优扩展节点为“清溪”,则第二轮筛选时,枚举词集可得到“清溪 - 石桥”、“清溪 - 潺潺”、“清溪 - 绕”、“清溪 - 过”四个扩展节点。再假定最优扩展节点为“清溪 - 潺潺”,后进入第三轮筛选,根据诗句长度 5 的约束可得到两个扩展节点“清溪 - 潺潺 - 绕”和“清溪 - 潺潺 - 过”。假定最优扩展节点为“清溪 - 潺潺 - 过”,在判断其满足三个约束后,即可生成对应语句“清溪潺潺过”。
当首句生成之后,继而采用基于统计机器翻译的方法进行二、三、四句的生成。统计机器翻译将翻译过程看作一个最优目标语句的搜索过程,对于一个给定的上句,根据以往的翻译经验,生成多种可能的译文。基于短语的统计机器翻译技术( Phrase-based Statistical Machine Translation, PBSMT )是目前一种主流的机器翻译技术,它的优势在于短语翻译结果的选词准确。由于诗词的生成讲求对仗,不涉及远距离语序调整问题,且上下句之间的对应关系往往建立于短语级别上,因此诗词的生成非常适合采用基于短语的机器翻译算法来解决。而将格律诗中的上下两句分别看作源语言与目标语言,便可以利用已生成的上句自动生成下一句。
在统计机器翻译中,特征函数的选择也不能忽略,因为这直接决定了模型能否生成正确的翻译结果。一般来讲,基于短语的统计机器翻译系统采用了如下的特征函数:正向短语翻译概率、反向短语翻译概率、正向短语词汇化翻译概率、反向短语词汇化翻译概率、使用短语个数和目标语言模型。
除此之外,中文格律诗自动生成系统还加入了概括上下文词汇使用意境一致性的的特征:互信息特征。
互信息特征的加入,可用于度量诗句间的意境关联。用 Set-A 表示即将生成的诗句中包含的词集合,用 Set-B 表示之前所有诗句包含的词集合,互信息计算方式如下:
其中, S i 和 S j 分别代表 Set-A 和 Set-B 中的词汇, p(S i , S j ) 表示 S i 和 S j 共同出现在诗歌中的概率, p(S i ) 表示 S i 出现在诗歌中的概率。这样一来,互信息可较好地估计上下文使用词汇意境的一致性。
未来新突破
登鹳雀楼
唐 王之涣
白日依山尽,黄河入海流。
欲穷千里目,更上一层楼。
图片来自互联网
经过不断的改进,微软亚洲研究院自然语言计算组的研究员们提出的这一结合统计机器翻译模型与格律诗创作知识的独创性方法,通过对大规模诗词数据进行自动学习,将格律诗中上下句变换为统计机器翻译中的双语映射关系,实现了绝句的自动生成。
“微软绝句为广大古典文化爱好者提供了帮助,对中国传统文化的传承及宣扬也具有积极意义。而机器学习技术和中国格律诗创作的结合,则是我们在人工智能领域崭新的尝试。虽然目前的系统尚为稚嫩,但是我们仍然很高兴迈出了这历史性的第一步,并为未来的长期研究奠定了基础。微软亚洲研究院自然语言计算组首席研究员周明博士介绍道,“但是,我们也清楚地认识到还有很多问题。其中最重要的是全诗的意境的连贯性。这里我相信深度学习大有用武之地。同时我们将继续改善用户体验。在此基础上,我们也准备逐步扩展到律诗甚至词的生成”中文格律诗自动生成系统充满着挑战和收获,我们前进的脚步从未停止,未来还会有更广阔的空间等待着我们“更上一层楼”。
微软 绝句传送门: http://couplet.msra.cn/jueju/
推荐阅读
欢迎关注
微软亚洲研究院官方网站:http://www.msra.cn
微软亚洲研究院微博:http://t.sina.com.cn/msra
微软亚洲研究院微信:搜索“微软研究院“或扫描下方二维码: