专栏首页数据派THU带你用4行代码训练RNN生成文本(附资源)

带你用4行代码训练RNN生成文本(附资源)

作者:马修·梅奥,科德那金

翻译:陈之炎

校对:丁楠雅

本文共1400字,建议阅读6分钟。 本文介绍仅需几行代码就能训练出任意大小和复杂度的文本的神经网络文本发生器。

如何在无需构建和调整神经网络的情况下,轻松地生成文本?让我们来看看下面这个项目,它允许您用几行代码就能在任意文本数据集上轻松地训练出任意大小和复杂度的文本,这便是神奇的神经网络文本发生器。

文本生成对机器学习和NLP初学者来说是很有趣的项目之一,但同时也是一个相当令人生畏的项目。至少对于我来说是这样的。

值得庆幸的是,网上有各种各样的很棒的材料可以用来学习如何利用RNN生成文本,从理论到技术深入,再到那些明确地专注于实践的材料。也有一些非常好的帖子,涵盖了所有内容。所有这些材料都有一个特别的共同点:在这个过程中的某个时刻,你必须构建和调整一个RNN来完成这项工作。

这显然是一项有价值的工作,尤其是为了学习,但如果你对更高层次的抽象(无论你的原因是什么)感兴趣,又该怎么办呢?如果你是一个数据科学家,需要以RNN文本生成器的形式构建块来插入你的项目,该怎么办?或者,如果,作为一个新来的人,你只是想把你的手“不是太脏”作为测试水的一种手段,或者作为进一步深入挖掘的动力,那又该怎么办呢?

在这种情况下,让我们看一下 textgenrnn,它是一个允许你“用几行代码在任何文本数据集上轻松地训练出任意大小和复杂度文本的神经网络”的项目。textgenrnn由BuzzFeed的助理数据科学家Max Woolf和前Apple Software QA工程师撰写。

textgenrnn是建立在Keras和TensorFlow之上的,可以用于生成字符和单词级别的文本(字符级别是默认的)。网络体系架构使用注意力加权和跳过嵌入来加速训练和提高质量,并允许调整多个超参数,例如RNN大小、RNN层和包含双向RNN。你可以在Github repo这篇介绍性博客文章中阅读到更多关于textgenrnn及其特性和体系架构的信息:

https://github.com/minimaxir/textgenrnn

生成‘Hello,World!’这类文本和生成特朗普的推文相类似 (至少在我看来是这样),那么让我们一起来看看吧。利用Textgenrnn默认的预训练模型可以轻易地训练新的文本,同时你也可以利用textgenrnn来训练一种新的模型(只需在它的训练函数中添加new_model=True语句)。既然我们想看看我们能有多快地生成推文,那就开始吧。

获取数据

我从特朗普推特档案馆(Trump Twitter Archive)抓取了唐纳德·特朗普从2014年1月1日至2018年6月11日(在昨日撰写的)的一些推文,其中显然包括了特朗普就任美国总统前后的推文。特朗普推特档案馆这个网站可以查询和下载到总统的推文。我选择那个日期范围内的文本,因为我不关心任何元数据,并将其保存到一个名为trump-tweets.txt的文本文件中。

训练模型

让我们看看用textgenrnn生成文本是多么简单。以下4行代码是我们导入库、创建文本生成对象、在trump-tweets.txtfile上对模型进行10次训练所需的全部内容,然后生成一些样例推文。

大约30分钟后,这是生成的文本:

撇开政治不谈,考虑到我们仅仅用12K的推文在仅仅10个epoch进行训练,这些生成的推文并不是太糟糕。想要利用temperature (Textgenrnn默认值为0.5)来获得一些更有创意的推文?让我们试试:

那就不那么令人信服了。更保守的、更有信心的模型是:

现在,上述文本的内容似乎更合理些。

当然,这并不完美。我们还可以尝试其他各种各样的东西。好消息是,如果你不想自己来解决方案,那么可以利用textgenrnn来实现 (同样,请参阅Gizub repo):

  • 从零开始训练我们自己的模型。
  • 用更多的样本数据来训练更多的迭代
  • 调优其他超参数。
  • 对数据进行预处理(至少是为了消除假URL)

更为有趣的是,也是我最为感兴趣的是,如何利用一个默认的textgenrnn模型来实现自定义、调优的模型?我们将在下一次的内容中做深入探讨。

译者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:datapi),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

本文分享自微信公众号 - 数据派THU(DatapiTHU)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 6种数据分析实用方法,终于有人讲明白了

    与前面许多已经讨论过的概念一样,人们如何定义统计以及统计与一般数学(mathematics)有何不同,存在着很大的差异。

    数据派THU
  • 在数据科学人才教育中不断前行: 《大数据系统基础A、B》课程实践项目中期答辩顺利举行

    为服务国家大数据发展战略,打造多层次、多类型的大数据人才队伍,清华大学大数据能力提升项目之《大数据系统基础A、B》课程实践项目中期答辩于2018年11月14日顺...

    数据派THU
  • 独家 | kaggle季军新手笔记:利用fast.ai对油棕人工林图像进行快速分类(附代码)

    WiDS数据马拉松由女性数据科学工作者与她们的伙伴联合发起,她们面临的挑战是需要建立一个模型,来预测一批卫星图像中存在油棕人工林种植园的情况。

    数据派THU
  • 资源 | textgenrnn:只需几行代码即可训练文本生成网络

    选自GitHub 作者:minimaxir 机器之心编译 参与:Geek AI、路 本文是一个 GitHub 项目,介绍了 textgenrnn,一个基于 K...

    机器之心
  • 资源 | textgenrnn:只需几行代码即可训练文本生成网络

    通过简简单单的几行代码,使用预训练神经网络生成文本,或者在任意文本数据集上训练你自己的任意规模和复杂度的文本生成神经网络。

    IT派
  • 网站页面优化:IMG标签

    IMG标签在HTML网页插入图片,可以帮助读者更好地理解你的文章。 与其用1000个字描述清楚的事情,不如用一张流程图说明一切。“一张图片胜过千言万语”可能并不...

    林雍岷
  • Android listView异步下载和convertView复用产生的错位问题

    1:Item图片显示重复 这个显示重复是指当前行Item显示了之前某行Item的图片。 比如ListView滑动到第2行会异步加载某个图片,但是加载很慢,...

    xiangzhihong
  • VirtualBox相关问题总结

    VirtualBox Images: http://www.osboxes.org/virtualbox-images VirtualBoxes – Free ...

    用户1221057
  • javascript面向对象之继承(上)

    我们之前介绍了javascript面向对象的封装的相关内容,还介绍了js的call方法,今天开始讨论js的继承 这篇文章参考了《javascript高级程序设计...

    陌上寒
  • VirtualBox相关问题总结

    邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: ht...

    用户1221057

扫码关注云+社区

领取腾讯云代金券