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

简介: 遗传算法指的是迷你达尔文生物进化论自然选择,以及遗传学机理生物进化的过程的一种计算模型。有人说遗传算法很少用,实际上,在很多地方,遗传算法都有很有趣的应用。这不,有人就把遗传算法用在宋词中。
先来看看下面的几首宋词:

宋词一:
西江月
饮酒开怀酣畅,洞箫笑语尊前。欲看尽岁岁年年,悠然轻云一片。
赏美景开新酿,人生堪笑欢颜。故人何处向天边,醉里时光渐渐。

宋词二:
清平乐
相逢缥缈,窗外又拂晓。长忆清弦弄浅笑,只恨人间花少。
风雨重阳又过,登高多少黄昏。黄菊不待清尊,相思飘落无痕。

宋词三:
佳人 点绛唇
人静风清,兰心蕙性盼如许.夜寒疏雨,临水闻娇语.
佳人多情,千里独回首.别离后,泪痕衣袖,惜梦回依旧.


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


什么是遗传算法?


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

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

自动生成宋词的遗传算法


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

根据宋词特点设计了基于平仄的编码方式,将“平、仄”与“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 个方面。计算词义相关的目的是建立词语间的关联,发掘词语共现和搭配的可能,从而保证生成诗词行文和主题上的连贯。


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

82a2d3ac21de117203d8b611005e13d64c5deacd a6259865e8914838ba3d4cb2770866d0154ee523 ba3198e788a3aba6b4f31df353e9ca164690d435 4b69ff913d8b9e7d37623d569b979d617ec4c606 6aa740875cfb7e9f92ea7c17b43e89ceaff6263e 8ccebc13c98e45bf0ca6ea9fa6474fb6860d1649 c0639493bf62625ee84ea112992b81e1f2b63947 f6d21e1046d0a6467db3b82f139de99d144e6fef 1f9994cb8177f5fb84ad4e5505ef1825fdfcd872

Via W3Cschool
目录
相关文章
C4.
|
1月前
|
存储 算法 C语言
关于c语言用计算机语言表示算法
关于c语言用计算机语言表示算法
C4.
17 1
|
5天前
|
存储 分布式计算 负载均衡
分布式(计算机算法)
分布式(计算机算法)
|
1月前
|
自然语言处理 算法 搜索推荐
用计算机语言表示算法
在计算机科学中,算法是解决问题的核心步骤和方法的描述。然而,算法本身并不直接执行;它们需要被转换成计算机可以理解和执行的指令,这通常是通过编写代码来实现的。不同的计算机语言提供了不同的方式来表示和实现算法。本文将讨论如何使用计算机语言来表示算法,并通过一个具体示例来展示这个过程。
14 0
|
6月前
|
搜索推荐 算法 前端开发
电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
71 0
电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
|
8月前
|
算法
计算机操作系统学习笔记(9)——页面置换算法
计算机操作系统学习笔记(9)——页面置换算法
90 0
|
10月前
|
算法
头歌计算机算法设计与分析:随机化算法
> 任务描述 > 相关知识 > 随机数 > 编程要求 > 测试说明
|
10月前
|
算法
头歌计算机算法设计与分析线性规划问题和单纯形算法第1关:单纯性算法解一般线性方程组
任务描述 相关知识 单纯形算法的第1步:选出使目标函数增加的非基本变量作为入基变量。 单纯形算法的第2步:选取离基变量。 单纯形算法的第3步:转轴变换。 单纯形算法的第4步:转回并重复第1步,进一步改进目标函数值。 编程要求 测试说明
|
11月前
|
存储 机器学习/深度学习 自然语言处理
把Transformer当通用计算机用,还能执行in-context learning算法,这项研究脑洞大开
把Transformer当通用计算机用,还能执行in-context learning算法,这项研究脑洞大开
|
自然语言处理 算法 Java
计算机算法——进入计算机世界
计算机算法——进入计算机世界
105 0
计算机算法——进入计算机世界

热门文章

最新文章