查看原文
其他

这款“狗屁不通”文章生成器火了,效果确实比GPT 2差太远

CSDN App AI科技大本营 2019-11-27

整理 | 夕颜

出品 | AI科技大本营(ID:rgznai100) 

【导读】最近,一个名字相当接地气的“狗屁不通”文章生成器(BullshitGenerator)火了,截至目前 GitHub 上 Star 数已超过 3200,还上了微博热搜。这个神器可以生成各种各样奇葩文章,比如领导专用“彩虹屁”万字长文。只有你想不到,没有这个神器写不成的文章。但是,生成的文章确实也是“狗屁不通”。这次我们就来解读一下,这个生成器是怎么运行的,以此为例,延展探讨一下文本生成未来还有哪些改进的方向。


话说,BullshitGenerator 这个项目最初起源于知乎上一位网友的提问:“学生会退会申请六千字怎么写?”,本来很简单的一个问题,但是回答中很多跑偏题的,于是本项目的贡献者之一表示看不下去了,并“随便写了个项目”:狗屁不通文章生成器,帮助这位同学写了一篇退会申请。
用 Python 生成的这篇文章长这样:
       

由于下拉十多下没滑到底,让人失去了截全图的耐心,文章也实在看不下去,因为它真的是一篇逻辑不通的 bullshit。

AI科技大本营(ID:rgznai100)也用这个生成器尝试了几个大家都会思考的主题,比如:

                                                        

试完之后笔者发现,文章本身是没什么探讨的必要性了,不信你可以自己试试:

生成器地址:https://suulnnka.github.io/BullshitGenerator/index.html

但是关于生成器的工作原理,相信很多人是比较感兴趣的。

运行原理是什么?


据贡献者介绍,本项目最初的目的是用于中文文字 GUI 开发时测试文本渲染,用 Python 3 版本写成,目前共有 7 位贡献者。
 

鉴于目前 AI 用于文字生成非常流行,这个项目是否也用到了 AI 相关算法呢?答案是否定的,作者表示,BullshitGenerator 没有用到任何自然语言处理相关算法,只是简单地撸代码就可以达到效果。

那 BullshitGenerator 运行的原理是怎样的?AI科技大本营采访了CSDN博客专家@小宋是呢进行解读:

“狗屁不通生成器”是一个文本生成器,用来生成一些中文文字用于 GUI 开发时测试文本渲染。由于此项目的目的只是用于 GUI 开发时测试文本渲染,所以对文本的连贯性和含义要求不高,这也就是“狗屁不通”的含义了


if __name__ == "__main__": xx = input("请输入文章主题:") for x in xx: tmp = str() while ( len(tmp) < 6000 ) : 分支 = random.randint(0,100) if 分支 < 5: tmp += 另起一段() elif 分支 < 20 : tmp += 来点名人名言() else: tmp += next(下一句废话) tmp = tmp.replace("x",xx)       print(tmp)
 

从源码中可以看出,生成文本的方式就是从本地读取到的文本中按照一定规律随机读取,并且替换掉文本中“x”为指定的主题文本,并未使用深度学习方法。不难发现,生成的文本会存在句子不连贯、重复性高的特点。


是否能与 GPT 2 结合?

issue 中有人发表了对这个项目的评价:

              

可以看到,大家对这个项目的评价还是以正面居多。其中,有人提到了希望与 GPT 2 进行整合:

      

很快有人对这个想法提出疑问,比如算力的问题。那么,BullshitGenerator 与 GPT 2 整合的想法可行吗?或者是否有必要?@小宋是呢给出的看法如下:

个人觉得“狗屁不通生成器”与“GPT”结合意义不大,这两个项目的目标和特点差异很大。“狗屁不通生成器”是为了快速用来生成一些中文文字用于 GUI 开发时测试文本渲染,而“GPT”文本生成器目标是生成高质量连贯文本,“GPT”的特点是模型大速度慢质量高,并不满足“狗屁不通生成器”的设计需求。 

GPT 2 是 OpenAI 推出的一个中文生成模型,由加拿大工程师 Adam King 制作的网站上,任何人都能调教简化版的 GPT-2,它能够识别从新闻、歌词、诗歌、食谱、代码的各种输入,甚至还为《复仇者联盟》写了一个细节丰富的续集,内容可读性相当高。

       

令人振奋的是,这个史上最强的 NLP 模型今天正式全部开源,OpenAI 正式放出了 GPT 2 的最后一部分代码。

开源地址:https://github.com/openai/gpt-2。 

作为 GPT 2 分段发布中的最后一轮,此次公开的完整 GPT-2 包含 15 亿条参数,其中包含用于检测 GPT-2 模型输出的全部代码及模型权重。

当然,关于 GPT 2 的讨论仍在继续,比如它的实用性,生成假新闻被滥用引发的安全问题等,都是后续还有待改善的关键点。

此外,GPT 2 还有一个中文版本,相比之下,GPT2 与 BullshitGenerator 不同之处在于前者使用了 BERT 或 BPE 编译器,但同样不需要算法基础,只要简单 clone 运行即可,技术上的实现难度更大一些。

“GPT”是比较标准的自回归语言模型了,Transformer 出现前都是通过 RNN 的方法,之前比较火的“CharRNN”深度学习作诗与作曲都属于这个范畴。“GPT”将 Transformer 替换了 RNN,使得提取特征的能力与运算速度都得到很大提升,当然使用大规模数据训练模型也是“GPT”效果好的一个重要因素。

相较于“GPT”,“狗屁不通生成器”实现就简单很多,主要代码就几十行,基本上只用到了Python 编程技术。体现在文本的连贯性和含义上,虽然生成文本的质量不高,但它也满足了生成一些中文文字用于 GUI 开发时测试文本渲染的要求。

GPT2 中文项目:https://github.com/Morizeyao/GPT2-Chinese 


文本生成的未来


GPT 2 的横空出世让大家看到了 AI 在文本生成方面的潜力。正如 Open AI 官博所说,虽然 GPT 2 还面临检测等方面的挑战,但它的潜力还很大, Open AI 表示,未来这个模型还将继续进行改进,他们期望语言模型能够在性能上有更大的提升,以此提供更高的输出质量和准确性。

BullshitGenerator 项目也公布了下一步计划:

  1. 防止文章过于内容重复

  2. 加入更多啰嗦话.

  3. 加入马三立<开会迷>里的内容

  4. 加入手写体直接渲染出图片的功能(仅仅用于测试本人的打印机是否工作正常, 请勿做它用).

大胆设想一下,日后类似于 BullshitGenerator 这样的文本生成器将进一步改进,那么是否在没有 AI 算法的参与下,仅凭简单的代码就能够生成高质量的文本(虽然可能性几乎为零,但如果可以实现将是颠覆性的成果)?从另一个思路来讲,以 GPT2 为代表的 NLP 模型现在已经可以生成以假乱真的文本,未来又该如何克服目前的挑战,生成更高质量的作品,同时能够保证安全?是否未来有一天,文本生成技术或许真的会取代一部分人类的工作?这些问题都值得深思。

本文特邀专家:小宋是呢 @CSDN博客专家&知乎深度学习专栏作家(微信公众号 ID:aideepmiss)。在校前两年半时间,获得省级一等奖(以上)奖项十次,毕业时,第一作者授权实用新型&发明专利共计二十余项。

目前研究方向:自然语言处理与自动语音识别、图像识别与自动检测、图神经网络与推荐系统。

(*本文为AI科技大本营原创文章,转载请微信联系 1092722531



精彩推荐




12月6-8日,深圳!2019嵌入式智能国际大会,集聚500+位主流AIoT中坚力量,100+位海内外特邀技术领袖!9场技术论坛布道,更有最新芯片和模组等新品展示!点击链接或扫码,输入本群专属购票优惠码CSDNQRSH,即可享受6.6折早鸟优惠,比原价节省1000元,学生票仅399元



推荐阅读

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存