能用计算机写和算,计算机也能写宋词!

自动作词:离我们有多遥远?

26453a64d53b9541ecdf38294812e676.png

分词完成后,词频的统计就是小事一桩了。之前有人把宋词的高频词语统计表 发到网上 ,一时间几乎每个理科生都能写宋词了。就技术层面而言,大部分自动作诗词的尝试都是在“高频——关联”这样的框架下完成的。即给定一个词语,搜索与之关联度较大的另外一批词作为候选集合,再通过预先设定好的准则进行筛选。

但这样的方法显然比较简陋。相比之下,有人研究了更高级的方法,例如有一篇名为 一种宋词自动生成的遗传算法及其机器实现 的论文就采用填词的思想:给定一个词牌,就相应地给出了格律、押韵和平仄等硬性要求,将满足要求的词语填入相应的句法中,再通过一系列评价指标计算每个填词组合的“得分”,最后利用 遗传算法 计算出“得分”最高的填词方案。

以“清平乐”这个词牌为例,其填词约束为

*0 / *1, *1 / 0 / 01. *1 / *0 / 0 / 11, *1 / *0 / *1.

*0 / *1 / 00, *0 / *1 / 00. *1 / *0 / *1, *0 / *1 / 00.

其中 0 表示平声, 1 表示仄声, * 表示两者皆可, / 是词语的分割。可以看到,对于“清平乐”这个词牌,实际上就是要将 24 个词填入相应的空档中,其中第一个词以平声结尾,第二个词以仄声结尾,第四个词是一个平声单字……此外如果再考虑押韵,那么搜索的词语空间又会进一步减小。

在给定了一种填词方案后,就可以构造这种方案的评分体系。上述的论文从四个方面(句法合法性、主题相关性、词句搭配的适当性、风格和情感统一性)考虑,最后得到一个综合加权的指标。因此,自动作词的过程就抽象为了一个高维的最优化问题,即试图找到一种填词的组合,使得最终这个加权指标达到最大。

这篇论文的一个亮点在于使用了遗传算法作为主要的优化方法。遗传算法的细节比较复杂,在自动作词这一特定问题中,其主要思想是:

1、 随机生成若干个满足约束条件(格律、押韵等)的填词方案;

2、 选取其中较优的一些结果作为父代,然后利用遗传算法中的交叉和变异操作,从父代来生成子代。换言之,就是在已有的填词方案基础上生成新的填词方案;

3、 不断进行评判和迭代,直到跳出循环。

遗传算法的好处在于其算法的不确定性和可变异性,这是受生物的进化得到启发而发展起来的。虽然遗传算法作出的算词像模像样(例如本文开头的例子),但需要说明的是,遗传算法本质上是一个最优化算法,因此填词的好坏仍然与词库和评价指标直接相关。从某种意义上说,计算机作词实际上是利用已有的词库进行组合,而不是创造。

无论如何,一个丰富而优秀的词库仍然是有意义的——对于电脑来说,这是它进行“创作”的基石;对于人来说,它至少能告诉读者以往词人常用的意象是什么,从而提供一些创作上的灵感(当然不应该是词作本身)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值