专栏首页华章科技so easy!10行代码写个"狗屁不通"文章生成器

so easy!10行代码写个"狗屁不通"文章生成器

导读:本文给你一个能看懂的狗屁不通文章生成器代码。

作者:志军100

来源:Python之禅(ID:VTtalk)

前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。

背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法。

不过,当我看了源代码之后……

这程序不到50行……

尽管我有多年的Python经验,但我竟然一时也没有看懂。这代码放到编辑器里还特么真能执行!

当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的,中文变量名只是最开始瞎写的时候边写语料边写代码时懒得切英文输入法了。

中文变量名也就忍了,但代码逻辑不好懂,最后我还是忍着剧烈的头痛把它的原理读懂了。

这究竟咋实现的呢?

我肯定是不服的,这代码要是被Python之父看见了,他一定后悔发明这门语言。

其实,生成的文章内容都来自于素材文件 data.json, 这个文件的结构是个字典结构。

{
    "famous":[
    "爱迪生a,天才是百分之一的勤奋加百分之九十九的汗水。b",
    "查尔斯·史a,一个人几乎可以在任何他怀有无限热忱的事情上成功。b",
    ....
    ],
    "bosh":[
    "现在, 解决x的问题, 是非常非常重要的. 所以, ",
    "我们不得不面对一个非常尴尬的事实, 那就是, ",
    ....
    ],
    "after":[
    "这不禁令我深思. ",
    "带着这句话, 我们还要更加慎重的审视这个问题: ",
   ....

    ],
    "before":[
    "曾经说过",
    "在不经意间这样说过",
    ....
    ]
}

famous 里面收集了很多名人语录, 里面的关键字“a”和“b” 将分别被 before 和 after列表中的内容替换,这样处理后句子看起来具有逻辑性。

bosh里面是各种各样的的废话,里面关键字“x”最后会用标题替换,这样会让人感觉,这篇文章还是和标题有那么一丢丢联系的。

一篇完整的文章就是靠不断随机从famous、bosh列表获取元素,之后拼接成一篇文章。

搞懂了原理,如果我们自己来写的话,除去代码注释,就10来行代码。

import random
import json

data = json.load(open("data.json", encoding="utf-8"))

def generator(title, length=800):
    """
    :param title: 文章标题
    :param length: 生成正文的长度
    :return: 返回正文内容
    """
    body = ""
    while len(body) < length:
        num = random.randint(0, 100)
        if num < 10:
            body += "\r\n"
        elif num < 20:
            body += random.choice(data["famous"]) \
                .replace('a', random.choice(data["before"])) \
                .replace('b', random.choice(data['after']))
        else:
            body += random.choice(data["bosh"])
        body = body.replace("x", title)

    return body

来测试一下:

from bullshit import generator
content = generator("我爱Python")
print(content)

输出:

一般来说, 问题的关键究竟为何? 既然如何,
对我个人而言,我爱Python不仅仅是一个重大的事件,还可能会改变我的人生.
我爱Python, 到底应该如何实现. 生活中, 若我爱Python出现了, 我们就不得不考虑它出现了的事实. 从这个角度来看, 易卜生说过一句富有哲理的话, 伟大的事业,需要决心,能力,组织和责任感。我希望诸位也能好好地体会这句话. 我们不妨可以这样来想: 我们不妨可以这样来想: 奥斯特洛夫斯基曾经提到过, 共同的事业,共同的斗争,可以使人们产生忍受一切的力量。 这不禁令我深思. 在这种困难的抉择下, 本人思来想去, 寝食难安.问题的关键究竟为何? 带着这些问题, 我们来审视一下我爱Python. 我爱Python似乎是一种巧合,但如果我们从一个更大的角度看待问题,这似乎是一种不可避免的事实.
现在, 解决我爱Python的问题, 是非常非常重要的. 所以, 对我个人而言,我爱Python不仅仅是一个重大的事件,还可能会改变我的人生. 现在, 解决我爱Python的问题, 是非常非常重要的. 所以,

这样看来, 在这种不可避免的冲突下,我们必须解决这个问题. 既然如何, 要想清楚, 我爱Python, 到底是一种怎么样的存在. 既然如此, 总结的来说, 经过上述讨论, 我爱Python因何而发生?总结的来说, 就我个人来说, 我爱Python对我的意义, 不能不说非常重大. 而这些并不是完全重要, 更加重要的问题是, 问题的关键究竟为何? 笛卡儿曾经提到过, 我的努力求学没有得到别的好处,只不过是愈来愈发觉自己的无知。这句话语虽然很短, 但令我浮想联翩. 我认为, 我爱Python, 发生了会如何, 不发生又会如何. 经过上述讨论,
在这种困难的抉择下, 本人思来想去, 寝食难安.我爱Python, 到底应该如何实现. 我爱Python, 到底应该如何实现.

你还自定义内容长度:

content = generator("我爱Python", length=1000)
print(content)

输出:

要想清楚, 我爱Python, 到底是一种怎么样的存在. 我们都知道, 只要有意义, 那么就必须慎重考虑.了解清楚我爱Python到底是一种怎么样的存在, 是解决一切问题的关键.
从这个角度来看, 一般来说, 带着这些问题, 我们来审视一下我爱Python. 我们不得不面对一个非常尴尬的事实, 那就是, 吉姆·罗恩在不经意间这样说过, 要么你主宰生活,要么你被生活主宰。这句话把我们带到了一个新的维度去思考这个问题: 我爱Python, 到底应该如何实现. 每个人都不得不面对这些问题.  在面对这种问题时, 问题的关键究竟为何? 可是,即使是这样,我爱Python的出现仍然代表了一定的意义. 我们一般认为, 抓住了问题的关键, 其他一切则会迎刃而解.了解清楚我爱Python到底是一种怎么样的存在, 是解决一切问题的关键.我认为, 了解清楚我爱Python到底是一种怎么样的存在, 是解决一切问题的关键.我爱Python, 到底应该如何实现. 我爱Python的发生, 到底需要如何做到, 不我爱Python的发生, 又会如何产生. 现在, 解决我爱Python的问题, 是非常非常重要的. 所以, 我们不妨可以这样来想: 现在, 解决我爱Python的问题, 是非常非常重要的. 所以, 我爱Python, 到底应该如何实现. 马克思说过一句富有哲理的话, 一切节省,归根到底都归结为时间的节省。这启发了我. 我们不妨可以这样来想: 我爱Python似乎是一种巧合,但如果我们从一个更大的角度看待问题,这似乎是一种不可避免的事实. 问题的关键究竟为何? 歌德曾经说过一句富有哲理的话,流水在碰到底处时才会释放活力。带着这句话, 我们还要更加慎重的审视这个问题: 我们不得不面对一个非常尴尬的事实, 那就是, 我们不得不面对一个非常尴尬的事实, 那就是, 我爱Python, 到底应该如何实现. 一般来讲, 我们都必须务必慎重的考虑考虑. 我们都知道, 只要有意义, 那么就必须慎重考虑.总结的来说,
我们一般认为, 抓住了问题的关键, 其他一切则会迎刃而解.
这种事实对本人来说意义重大, 相信对这个世界也是有一定意义的.既然如何, 就我个人来说, 我爱Python对我的意义, 不能不说非常重大. 我爱Python, 发生了会如何, 不发生又会如何. 莎士比亚说过一句著名的话, 意志命运往往背道而驰,决心到最后会全部推倒。这句话语虽然很短, 但令我浮想联翩.
是不是很简单。

是不是很简单?

当然,你也可以引入更多NLP等技术进来,不过这对我来说……

原项目地址:

https://github.com/menzi11/BullshitGenerator

重构后的代码地址: https://github.com/lzjun567/BullshitGenerator

本文分享自微信公众号 - 大数据(hzdashuju),作者:志军100

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

原始发表时间:2019-12-01

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python程序员跳槽薪资报告:人生苦短,你们还好吗?

    导读:「人生苦短,我用Python」,这话曾是不少选择投入Python麾下的「码农」们的一句调侃和自我标榜。

    华章科技
  • 最全Python数据工具箱:标准库、第三方库和外部工具都在这里了

    导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库、函数和外部工具。其中既有Python内置函数和标准库,又有第三方库和工具。这些库...

    华章科技
  • 入门科普:什么时候要用Python?用哪个版本?什么时候不能用?

    Python使用面向对象编程(object-oriented programming,OOP)和构造,你可以像任何其它面向对象的语言一样使用它,譬如Java。

    华章科技
  • AI 学习之路——轻松初探 Python 篇(一)

    这是「AI 学习之路」的第 1 篇,「Python 学习」的第 1 篇 前言 1. Python 篇的组织结构 不管是学习人工智能还是大数据,Python 都是...

    小之丶
  • Python新手入门指引

    这篇文章是写给想入门Python但是编程基础为零或者很浅的新手同学。不管你是因为兴趣还是工作以及转行需求,都可以参考。我结合自身的学习Python的以及写Pyt...

    HuangWeiAI
  • 还记得当年你是如何接触Python的吗?

    要说目前什么语言最受欢迎,我想Python肯定是其中之一了吧。Python语言以其简单的操作、强大的功能被广大爱好者追逐着。有的朋友刚开始学Python,有的朋...

    小小詹同学
  • Python零基础到高手的速成之路,你也可以做到的!

    第一问“我在哪儿”,这个问题需要你自己来回答。你或许已经熟练掌握了一门或几门编程语言,现在想学 Python,Python 算是零基础入门;或者你已经自学了一点...

    python学习教程
  • 学习Python编程,我们应该如何学?学习内容包括哪些?

    学习Python编程语言,动手实践是一件非常愉快的事情,遇到了程序上的问题,经常自己思考研究,从而解决问题,自己的技术水平和解决问题的能力都得到了大大的提升。

    python学习教程
  • 上天乎 |为什么学Python?

    现今计算机已进入了各行各业,无论是飞机上的自动驾驶仪,还是自行车上的数字速度计,似乎都在说各种形式的计算机在围绕着我们,帮助储存和访问信息,而在编程语言中,Py...

    生信宝典
  • 2000字谏言,给那些想学Python的人,建议收藏后细看!

    这几天陆续收到很多读者、球友的留言、私信,说要怎么学Python?有没有基础的,偏小白的学习方法?我的回答是:等我统一答复。

    测试开发社区

扫码关注云+社区

领取腾讯云代金券