“开玩笑地说了许多真实的话。”
―威廉·莎士比亚, 李尔王

“噢,主啊,当心嫉妒;
是嘲笑的绿眼怪物
它以肉为食。”
― 奥赛罗的威廉·莎士比亚

“有个星星在跳舞,在那之下我出生了。”
威廉·莎士比亚(William Shakespeare),《 无事生非》

谁能像莎士比亚一样写作? 甚至只是像莎士比亚一样的咒语? 我们可以教AI像莎士比亚一样写作吗? 还是这是一个绝望的任务? 人工智能神经网络可以描述像李尔金(King Lear)这样的绝望吗,像奥赛罗(Othello)这样的嫉妒心,还是像本尼迪克(Benedick)这样的幽默吗? 从理论上讲,没有理由为什么我们只能教它。

[避免机器学习失败: 使机器学习失败的6种方法 。 • 机器学习课程:5家公司分享了他们的错误 。 ]

我从麻省理工学院的《莎士比亚全集》网站下载了莎士比亚三大名著的文本:“李尔王”,“奥赛罗”和“无所事事”。 然后,我用该语料库上的一个隐藏的长短期记忆(LSTM)单元的隐层训练了深度学习 递归神经网络(RNN) ,以生成自由文本。

神经网络是否能够像莎士比亚一样学习写作? 如果是这样,在模仿巴德风格方面走了多远? 它能为剧中的每个角色产生出有意义的文字吗? 在AI情节中,戴斯蒙达娜会遇到李尔王吗,这会引发奥赛罗的嫉妒吗? 悲剧会胜过喜剧吗? 每个角色会保持与原始戏剧相同的说话风格吗?

我相信您还有更多问题。 因此,事不宜迟,让我们看看我们的深度学习网络是可以产生诗歌还是仅仅扮演傻瓜。

使用LSTM神经网络生成自由文本

递归神经网络(RNN)已成功进行实验以生成自由文本 。 用于自由文本生成的最常见的神经网络体系结构至少依赖于一个LSTM层。

为了训练我们的第一个莎士比亚模拟器,我使用了仅三层的神经网络:输入层,LSTM层和输出层(图1)。

该网络在角色级别进行了培训。 即,从输入文本生成了m个字符的序列,并将其馈送到网络中。

使用热零编码对每个字符进行编码。 这意味着每个字符都由大小为n的向量表示,其中n是输入文本语料库中字符集的大小。

将大小为[m,n]的完整输入张量馈入网络。 网络经过训练,可以将位置m + 1处的下一个字符与前m个字符相关联。

所有这些导致以下网络:

  • 具有n个单位的输入层将接受[m,n]张量,其中n是字符集的大小, m是用于预测的过去样本(在这种情况下为字符)的数量。 我们任意选择m = 100 ,估计100个过去的字符可能足以预测字符数101。字符集大小n当然取决于输入语料库。
  • 对于隐藏层,我们使用了512个LSTM单位。 为了能够处理所有这些(过去的m个字符-下一个字符)关联,需要相对大量的LSTM单元。
  • 最后,最后一层包括n个 softmax激活单元,其中n再次是字符集大小。 确实,这一层应该为字典中每个字符产生概率数组。 因此, n个输出单元,每个字符概率一个。
尼米

图1.我们用于生成自由文本的基于LSTM的深度学习神经网络。 n个输入神经元,512个隐藏的LSTM单位, n个 softmax单位的输出层,其中n是字符集大小,在这种情况下为训练集中使用的字符数。

注意,为了避免过度拟合,在训练过程中在LSTM层和输出密集层之间临时引入了中间辍学层。 退出层选择在训练阶段的每次迭代期间删除一些随机单元。 然后删除该辍学层以进行部署。

建立,训练和部署神经网络

该网络接受了《 威廉·莎士比亚全集 》网站上“李尔王”,“奥赛罗”和“无所事事”的全文培训,共有13298句话。

上述神经网络是使用KNIME Analytics Platform提供的基于GUI的Keras 和TensorFlow集成来构建,训练和部署的。

图2显示了构建和训练网络的工作流程。图3显示了部署网络以逐字符地预测最终文本的工作流程。这两个工作流程均已复制并改编自博客中实现的工作流程。帖子“ Lost Network曾经…… ”在这里训练并部署了一个类似的网络,以生成自由文本,并接受了格林童话中的文本训练。 这两种工作流程都可以从KNIME Exampless服务器的 04_Analytics / 14_Deep_Learning / 02_Keras / 11_Generate_Fairy_Tales中免费下载。

在图2中,“定义网络结构”部分(左上方)中的棕色块(节点)构建了神经网络的不同层。 数据通过“预处理和编码”部分(左下方)中的节点进行清理,标准化,整形和转换。 最后,培训由Keras Network Learner节点进行,并且将网络存储起来以进行部署。

请注意,如果训练集很大,则该网络可能需要花费很长时间进行训练。 通过将KNIME Analytics Platform指向Keras安装的GPU,可以加快速度。

图3中的部署工作流读取并使用先前训练有素的网络来预测自由文本,一个字符接一个字符。

尼米

图2.训练工作流训练了一个神经网络(62个输入-> 512 LSTM-> 62个输出),以根据前100个字符来预测文本中的下一个字符。 训练集由威廉·莎士比亚(William Shakespeare)的“李尔王”,“奥赛罗”和“无所事事”组成。 因此,网络应该学习以莎士比亚风格构建单词和句子。

尼米

图3.部署工作流以100个字符为起始,然后在一个字符中循环生成一个字符,直到生成1,000个字符为止,从而形成完整的,最终的类似于莎士比亚的文本。

AI生成的莎士比亚文字

在对网络训练了整个数据集上的50个时期(以下是三个选定的剧院剧本)之后,下面是一些结果:使用100个过去的字符作为输入张量,并递归生成1,000个新的字符。

让我们从Othello和Desdemona之间的对话框中的100个字符开始(用斜体显示 ),然后看看我们的网络将如何继续(以纯文本显示)。

-奥赛罗
我的勇士啊!  

-Desdemona
我亲爱的奥赛罗!  

-奥赛罗
我的内容使我感到惊奇
在我面前见你。 我的灵魂的喜悦!
我是个虫子。

-格洛斯特
我不知道,亲爱的:
我发自内心地发现你像个小偷
那皮尔斯会很好。
一般说是这样
我想,转个男人吧。

-卡西欧
先生,我祈祷你撒谎。
我不会威胁派遣。
我们的好朋友
躺下安慰国家,寻找他。
我会痛心你更快!
嫁妆的祝福过程:
足够聪明地做你;
而且,摩尔人的信中有瑕疵!
可恶,天堂,我会感到悲伤的;
还有一个。

-奥赛罗
我觉得他的演说如此试验,
他要在谎言中生活
那与道希尔
认为这是一个最穷的人,
谁的国家,
一个被许多人称为生命的人
那一定要失去男孩的眼神。

-里根
先生,对我姐姐?

-奥斯瓦尔德
我祈祷你,握住你的手:你可以把所有的钱都拿给他,让他悲伤,使天国
卡西欧的内心深处
我可能会说:我不会……

当Desdemona从对话框中消失时,“李尔王”(Gloucester,Regan和Oswald)中的一些次要角色trick入了场景。 我们从这三个剧本的不同行开始创建了其他免费文本,有趣的是,悲剧“奥赛罗”和“李尔王”中的角色经常混合使用,而喜剧电影“无所事事”中的角色似乎经常出现。更加独立。

文本是使用莎士比亚英语中的单词及其特有的复杂句子结构生成的。 并非所有的句子都具有完美的意义,但大多数似乎都是如此。 还要注意,次要字符被分配了较短的对话框,而在本示例中,奥赛罗和卡西欧却获得了最长的发言权,应该是这样。

使用AI编写原始场景

让我们使用前100个字符(再次用斜体表示 )触发一个新场景。 在这里,我介绍了关键字“ SCENE”,位置,涉及的字符以及第一个要说的字符的名称。 神经网络负责其余的工作。

场景一
威尼斯。 一条街。
输入Roderigo和Iago  

-Desdemona
我祈祷,说说卡西欧。
是的,所以我听到写在prive那里的信,
她会看见他那现在的巫妖让旧水桶感到恐惧的家伙,
和对他的这种不屑一顾中最令人难以置信的:
有儿子反对父亲,
你父亲的儿子和我们最好的时光,没有高举你的顾问的手表
最糟糕的不是对好战的小岛的温柔,
那被击落的人必须丢脸
自我报仇的复​​仇比我们时代的最好时光还好;
保持我们的命运以发扬力量,
看到它们的本性,放心地在架子上走:我发誓,要如此
她会发回我的使者。

-格洛斯特
我看到股票生锈了。

-李尔王
我可以告诉我自己的方式
应当鄙视我的兄弟
我已经过了他,告诉我我每个人都在恐惧,
她可能是诚实的,但他已经承认了他的娱乐性
然后想办法将它弄脏
最主要的原因
会让她喘不过气来
她可能会...

与继续现有场景相比,创建新场景被证明是一项艰巨的任务。 Desdemona的演讲开始得很顺利,与原著一致。 但是,我不确定我能否坚持到底。

使用AI融合莎士比亚和现代英语

但是,认真地说,产生古英语文本的AI引擎有多有用?

我们能否以某种莎士比亚的方式改善当前的英语句子? 让我们为莎士比亚培训网络提供一些现代文本,看看会出现什么。

那么,什么样的日常现代文本可以对莎士比亚进行一些改进呢? 软件许可协议? 让我们看看网络可以使许可协议的开始变得更加有趣(用斜体表示 )。

本许可是指GNU通用公共许可的版本。 版权也指版权
用他的剑重生了我
要为他的盐分和最隐秘的松散而唱歌,但要毫不犹豫地唱歌,否则一定会如愿以偿
作为主编,不要生活在叛徒中。
祝福你的五个智慧!

肯特
真可惜!
主席先生,现在的耐心在哪里,
距离海边如此遥远,还有一些要拆除的标书
如此多的节省和诚实。

-布拉班蒂奥
我决不认为卡西欧的土耳其人在奇怪地迷住一个魔术师的真相时说的是放任自流。
我可以欺骗他以最大的优势,
在她的预言中,一点点地掌握你的能力; 先生,我要谢谢你。

-阿尔巴尼
格洛斯特(Gloucester),我将证明他的运动以及第一批得分手和后卫在白色上的表现。

-李尔王
小偷在哪里?
信中永远不要有队长
对于摩尔人和我们没有更好的地方,如果他发怒,那一定可以确定,

-里根
我祈祷你,我的心中有一个念头,比想念更重要

拯救,诚实,小偷,主人,叛徒和欺骗等词似乎适合上下文。 还要注意,从许可协议的起始文本开始的对话有趣地主要涉及戏剧中较小的,较少悲剧的角色。

对于其余的部分,我无法理解的部分与原始法律语言一样难以理解。 并引用我们的网络,“先生,现在耐心在哪里……”

使用人工智能制作莎士比亚说唱

最后,让我们向莎士比亚英语AI提供一些不那么扎实的现代语言-很有创意。 在某些说唱歌词上加上一点莎士比亚怎么办? 这会改变意思还是仅仅改变文字? 同样,让我们​​触发一首说唱歌曲中100个字符的自由文本的生成。

From: https://www.infoworld.com/article/3340377/how-to-use-deep-learning-to-write-shakespeare.html

如何使用深度学习写莎士比亚相关推荐

  1. 莎士比亚数据集_如何使用深度学习写莎士比亚

    莎士比亚数据集 "开玩笑地说了许多真实的话." ―威廉·莎士比亚, 李尔王 "噢,主啊,当心嫉妒: 是嘲笑的绿眼怪物 它以肉为食." ― 奥赛罗的威廉·莎士比亚 ...

  2. Tensorflow快餐教程(12) - 用机器写莎士比亚的戏剧

    高层框架:TFLearn和Keras 上一节我们学习了Tensorflow的高层API封装,可以通过简单的几步就生成一个DNN分类器来解决MNIST手写识别问题. 尽管Tensorflow也在不断推进 ...

  3. 当莎士比亚遇见Google Flax:教你用​字符级语言模型和归递神经网络写“莎士比亚”式句子...

    作者 | Fabian Deuser 译者 | 天道酬勤 责编 | Carol 出品 | AI科技大本营(ID:rgznai100) 有些人生来伟大,有些人成就伟大,而另一些人则拥有伟大. -- 威廉 ...

  4. 深度学习实战:tensorflow训练循环神经网络让AI创作出模仿莎士比亚风格的作品

    AI创作莎士比亚风格的作品 训练一个循环神经网络模仿莎士比亚 FLORIZEL: Should she kneel be? In shall not weep received; unleased m ...

  5. 深度学习,使用RNN的NLP,您可以成为下一个莎士比亚吗?

    是否想过智能键盘上的预测键盘之类的工具如何工作?在本文中,探讨了使用先验信息生成文本的想法.具体来说,将使用Google Colab上的递归神经网络(RNN)和自然语言处理(NLP),从16世纪文献中 ...

  6. [硬货]|如何利用深度学习写诗歌(使用Python进行文本生成)

    翻译:李雪冬 前  言 从短篇小说到写5万字的小说,机器不断涌现出前所未有的词汇.在web上有大量的例子可供开发人员使用机器学习来编写文本,呈现的效果有荒谬的也有令人叹为观止的.  由于自然语言处理( ...

  7. GPT-3开始探索付费使用:每月给个700块,写得比莎士比亚还多

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 10月1日起,如果想要使用GPT-3接口的话,恐怕得收费了. 当然,如果你的使用程度在每个月100次以下,大概率上还是可以蹭蹭免费的API. ...

  8. GPT-3开始探索付费使用:每月700块,写得比莎士比亚还多

    2020-09-03 13:16:11 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 10月1日起,如果想要使用GPT-3接口的话,恐怕得收费了. 当然,如果你的使用程度在每个月100次 ...

  9. 如何快速入门深度学习写论文?

    原文作者:月来客栈     https://www.zhihu.com/people/the_lastest 最快的方式: 第一,选择一篇有代码的论文,记住一定要有代码: 第二,大致弄清楚论文里所提出 ...

最新文章

  1. 5V蜂鸣器内部工作原理
  2. [Swift]LeetCode210. 课程表 II | Course Schedule II
  3. 崔希凡JavaWeb笔记day28(JavaWeb完毕)(期末,暂停更新)(2016年11月16日12:35:27)...
  4. 乒乓球十一分制比赛规则_乒乓球竞赛规则 赛制和比赛规则
  5. typecho 隐藏index.php,Typecho开启伪静态并隐藏index.php
  6. 记一次java-selenium自动抢红包最简单案例1
  7. 散列技术之链地址法(基于无序链表)
  8. UNIX环境高级编程之第6章:系统数据文件和信息
  9. Linux配置NTP服务器
  10. 自然语言处理NLP星空智能对话机器人系列:论文解读 How Good is Your Tokenizer? (你的词元分析器有多好?多语言模型的单语性能研究)
  11. 屏幕尺寸、分辨率、DPI、PPI
  12. RabitMQ简介和原理分析(一)
  13. JS阻止form表单提交
  14. 渝粤题库 陕西师范大学 《服务礼仪》作业
  15. 一篇走心的文章和一个不起眼的引流方法
  16. matlab求解三次多项式,【MATLAB编程】三次样条
  17. Delphi 高精度计时
  18. php常用正则表达式,验证用户名,密码,Email,Url等等
  19. Linux使用技巧1--挂载U盘和Windwos分区
  20. 首席信息官将被首席数据官取代?

热门文章

  1. PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering 论文解读和感想
  2. 达观数据王文广:如何玩转自然语言理解和深度学习实践?
  3. leetcode 18. 四数之和
  4. 系统安全-使你的电脑固若金汤,百毒不侵
  5. 如何理解接受拒绝采样(Acceptance-Rejection Sampling)【非原创】
  6. 2022-2028年全球与中国化学注入橇行业市场深度调研及投资预测分析
  7. 走秀网OpenXiu2.0的购物袋实现分享
  8. 获取easyui Tree节点的子节点
  9. docker的基础学习(二)之daocker的安装配置和基本使用
  10. 双冒号::在python索引中的含义