诗歌是人们常用又比较喜欢的一种写作形式,简短的话语又蕴含作者丰富的情感。诗歌的语言一般都高度凝练,具有一定节奏和韵律,而这其中,又以唐代的诗歌最为杰出,创造了历史的巅峰。可以说,诗歌是一种艺术。现代,随着科技的高度发展,自动写作机器人慢慢开始出现在人们的生活中,各式各样的APP更是层出不穷,那么未来有没有可能产生一种诗歌自动写作APP,能够自动创造出像唐代诗人李白、杜甫他们所写的诗歌一样的优秀APP。下面,笔者就尝试着分析一下诗歌自动写作APP的可行性。
诗歌的写作一般都是常用字,汉语的常用字大概在2500-7000个字之间,这里我们选择最常用的字,大概3000字,如果写一首七言的绝句,完全机器自由选择的话,七言的绝句有28个字,也就是3000的28次方,也就是3000累积相乘28次,这个数字是惊人的,不知大家有没有听过宰相的麦子这个故事,说是古印度的舍罕王很喜欢国际象棋。所以他准备好好的奖赏象棋的发明人——当朝的宰相西萨"班"达依尔。结果这位宰相要求好低,他和国王说,“尊敬的国王陛下,只要您在这张棋盘的第一个小格内赏我一粒麦子,第二个小格内赏二粒,第三个小格内赏四粒,依此下去,每一个小格内的麦粒数都是前一个小格内的2倍,把这样摆满棋盘上的所有64格的麦粒,都赏我就行了!” 国王听了,心理想,宰相是不是老糊涂了,还是清高,他命人把一袋麦子扛到宝座前,心想有这一袋麦子就足够了。然后就是开始按照宰相的方法开始计算麦粒,结果可想而知,这是一个天文数字,付给宰相的麦子要达到140亿升,相当于当时全世界麦子年产量的两千倍。而我们这个诗歌自动写作APP的要计算的次数比宰相的麦子还多的多,所以肯定不可行。如果这样做出来的APP,出现在你的手机屏幕上的肯定是一堆乱码,28个奇奇怪怪的文字,乱七八糟的凑在一起,那怎么办,肯定要在这个算法上精简,那怎么来精简呢?
首先,诗歌讲求韵律,我们以五言诗歌为例,五言律诗的平仄,有四个基本句式:(一)仄仄平平仄; (二)平平仄仄平;(三)平平平仄仄;(四)仄仄仄平平。如杜甫的《旅夜书怀》就是这种格式:细草微风岸,危樯独夜舟。星垂平野阔,月涌大江流。那么这里就出现了一种精简算法的方式,需要把仄声的汉字放在一起,把平声的汉字放在一起,这样,一次就减少了1500种方法,整个工程量少了一半。
第二,诗歌中很多语句是需要词语的,这样,我们就需要把常见的词语组合在一起,让程序去自动选择,比如说微风组合在一起,大江组合在一起,明月组合在一起,这些常见的词语形成一个词语库,工作量又大大减少了。
第三,诗歌会有一些对应关系,清朝李渔就写过一本著名的《笠翁对韵》,这本书就是他仿照《声律启蒙》,写的旨在作诗的韵书。书中的内容大家一看便知道,“天对地,雨对风。大陆对长空。山花对海树,赤日对苍穹。雷隐隐,雾蒙蒙。日下对天中。风高秋月白,雨霁晚霞红。牛女二星河左右,参商两曜斗西东。十月塞边,飒飒寒霜惊戍旅;三冬江上,漫漫朔雪冷渔翁。”当你的程序上一句出现了天这个字的时候,下一句你就要重点考虑地这个字,同样的道理,上一句你选择了大陆这个词的时候,下一句程序优先考虑的就是长空这个词。至此,自动写诗APP的程序又得到进一步的优化,算法得到进一步的精简。
《笠翁对韵》这本书很神奇,上文只是它提出的第一种方法,它还提出了第二种方法,它分为很多模块,例如冬天模块,晨对午,夏对冬。下饷对高舂。青春对白昼,古柏对苍松。垂钓客,荷锄翁。仙鹤对神龙。凤冠珠闪烁,螭带玉玲珑。三元及第才千顷,一品当朝禄万钟。花萼楼间,仙李盘根调国脉;沉香亭畔,娇杨擅宠起边风,例如佳模块,门对户,陌对街。枝叶对根荄。斗鸡对挥麈,凤髻对鸾钗。登楚岫,渡秦淮。子犯对夫差。石鼎龙头缩,银筝雁翅排。百年诗礼延馀庆,万里风云入壮怀。能辨名伦,死矣野哉悲季路;不由径窦,生乎愚也有高柴。在设计自动写诗APP的时候,程序员肯定也要考虑模块,把不同的字,词语归类,成为一个模块,在主题确定了以后,就进入相应的模块,是不是又使算法得到进一步的精炼。
上面我们所谈论的是穷尽法,但是自从阿尔法狗机器人击败李世石以后,人们开始注意另外一种算法,深度搜索算法,具体到阿尔法狗这里是蒙特卡洛树搜索,先声明一下,本来知识有限,可能理解错误,万勿见怪。阿尔法狗用了什么方法呢,可以让机器自动学习,第一个就是如何通过常年的试错来计算每个行为的结果,所谓一朝被蛇咬,十年怕井绳。另一个就是不断下棋,和高手对话直接学习它们的经验。引申到诗歌自动写作APP上大概就是这样来操作,把写得不好的,很烂的诗歌罗列出来,和诗歌自动写作APP每一次写出来的诗歌做对比,看看相似度,这里要设定一个阈值,例如相似度达到五,那么这首诗歌是烂诗歌,选择放弃,相似度越低就越是优秀的诗歌。同样的道理可以引申到第二条,诗歌自动写作APP可以网罗例如李白,杜甫,王维、白居易等等著名诗人的著名诗歌,同样设置一个阈值,在穷举的时候不断的去和他们的诗歌做对比,这里当然是相似度越高越好,但是要注意雷同度,如果完全雷同,这是抄袭。最后,就是要把写好的诗歌认可度传回数据中心,每次都做相应的记录,下次优秀诗歌的写作方法要经常被推荐出来。说白了,如果诗歌自动写作APP能够实现,肯定需要站在巨人的肩膀上,还有就是不断的去试错,不断的去撞南墙,然后总结为什么会撞南墙,减少无用的生成方法。
其实写作网络上面有一些诗歌自动生成器,效果都不是很理想,最终产生的结果就是需要人力不断的选择,而且生成的效果都不是很好,主要是借鉴一些模板,硬套进去,但我想随着阿尔法狗的横空出世,未来可能真的会出现一款优秀的诗歌自动写作APP,未来的你,可能在朋友圈能够借助APP不断的展示着你写作诗歌的精湛功力。