天天看点

【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?

先来看看下面的几首宋词:

第一感觉是不是在想这是哪位大家的手笔,如果告诉你这是由遗传算法自动生成的,你会不会对之前的上过的语文课有些许感慨。你觉得计算机的作诗能力如何呢?

<b>什么是遗传算法?</b>

遗传算法指的是迷你达尔文生物进化论自然选择,以及遗传学机理生物进化的过程的一种计算模型。

有人说遗传算法很少用,实际上,在很多地方,遗传算法都有很有趣的应用。这不,有人就把遗传算法用在宋词中。分享者称是用在nlg(自然语言生成)技术中的。

<b>自动生成宋词的遗传算法</b>

生成宋词的算法是来自厦门大学和浙江大学的三位学者,主要针对宋词这种特殊的汉语诗歌体裁,设计了其自动生成算法及其实现方法。

根据宋词特点设计了基于平仄的编码方式,将“平、仄”与“0、1”编码相对应的编码方案.比如词牌《清平乐》平仄分布如下:

⊙平⊙仄,⊙仄平平仄.⊙仄⊙平平仄仄,⊙仄⊙平⊙仄.

⊙平⊙仄平平,⊙平⊙仄平平.⊙仄⊙平⊙仄,⊙平⊙仄平平.

其中⊙表示可平可仄.根据我们的编码方案可得如下编码串:

*0*1,*1001.*1*0011,*1*0*1.

*0 *100,*0*100.*1*0*1,*0*100.

通过对大量宋词语句构成的分析,发现组成句子的有效模式的数目是有限的,并且呈现出了层次化的结构,因此比较适合采用dfa(deterministic finite automata)来表示。随机组合的词语,在产生大量的备选个体后,逐个进行dfa 分析测试,通过留下,没通过则剔除。

宋词的语义计算问题,包括词义相关度计算、词义相似度计算,以及风格情感一致性计算3 个方面。计算词义相关的目的是建立词语间的关联,发掘词语共现和搭配的可能,从而保证生成诗词行文和主题上的连贯。

下面是该算法的论文,感兴趣的可以读一读。

【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?
【逆天的算法】这几首宋词,你能看出来是出自计算机之手吗?

via w3cschool

继续阅读