先來看看下面的幾首宋詞:
第一感覺是不是在想這是哪位大家的手筆,如果告訴你這是由遺傳算法自動生成的,你會不會對之前的上過的國文課有些許感慨。你覺得計算機的作詩能力如何呢?
<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