mybatis代码自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)
学了python,但是又不知道可以用来干嘛。开发一个计算器?太low了。开发一个网站?感觉网站涉及太多知识点,一个人搞不定。不用慌,本文介绍一个最近很火的一个文章自动生成器,它是用python写的,能够在一秒内生成一篇6000字的文章,而且看起来有模有样的。
人工智能写文章
故事要从一个论坛说起,起初,该论坛上有这样一个问题“学生会退会申请六千字怎么写?”。然后,就被我们讨厌形式主义的热心网友看见了。再然后,就有了这个“狗屁不通文章生成器”
某论坛的问题
鉴于头条上有很多python初学者,我把代码整理一下,写成类的形式,方便大家学习。好了,废话不多说,那就让我们开始吧。
首先是环境配置:
python版本: 3.6.0
编辑器: pycharm
ps: 每一步都有代码和排版截图,方便学习
第一步: 导入相关python包
# encoding:utf-8import randomimport json
random包是用来生成随机数,主要是为了生成文章时,随机从指定数据源获取句子进行组装。json包是一种文本序列化,是人类可读的,方便你对其进行修改(记事本打开,可以看到里面所有内容,而且都认识。)
第二步:参数设置
class CONF: path = "data.json" # 数据路径 article_length = 6000 # 文章字数 repeat_rate = 2 # 句子重复度
这里是个人编程的习惯,我习惯把一些配置,例如:文件路径、配置参数统一放在一个类中。当然,实际项目开发的时候,是用config 文件存放,不会直接写在代码里,这里为了演示方便,就写在一起,也方便运行。
第三步:一个简单的文件读取工具函数
def read_json(file_name): """ 读取json文件 :param file_name: :return: """ with open(file_name,mode='r',encoding="utf-8") as file: return json.loads(file.read())
文件读取在实际工作中经常会用到,所以建议写一个工具类,累积起来,每次使用的时候直接调用,就不用重复写了。
第四步:模型类的初始化
class Model: def __init__(self, famous, before, after, bosh, config): self.famous = famous # a 代表前面垫话,b代表后面垫话 self.before = before # 在名人名言前面弄点bosh self.after = after # 在名人名言后面弄点bosh self.bosh = bosh # 代表文章主要bosh来源 self.article_length = config.article_length self.repeat_rate = config.repeat_rate self.next_bosh = self.__shuffle_for_each(self.bosh) self.next_famous = self.__shuffle_for_each(self.famous) """模型初始化""" @classmethod def initialize(cls, config): # 获取数据源 data = read_json(config.path) famous = data["famous"] # a 代表前面垫话,b代表后面垫话 before = data["before"] # 在名人名言前面弄点bosh after = data['after'] # 在名人名言后面弄点bosh bosh = data['bosh'] # 代表文章主要废话来源 return cls(famous, before, after, bosh, config) 。。。
initialize() 函数和 __init__() 函数 是对象初始化和实例化,其中包括基本参数的赋值、模型的导入、模型的训练、模型的保存、最后返回用户一个对象。这里作为一个类的基本操作,是属于一个通用模板,在大多数项目中,都可以这么去写。
第五步:继续完善模型类,增加一些常用模块
class Model: 。。。 def __shuffle_for_each(self, data_list): """ 洗牌遍历(迭代器) """ pool = list(data_list) * self.repeat_rate while True: random.shuffle(pool) for line in pool: yield line def __get_famous(self, ): """ 来点名人名言 """ t_famous = next(self.next_famous) t_famous = t_famous.replace("a", random.choice(self.before)) t_famous = t_famous.replace("b", random.choice(self.after)) return t_famous @staticmethod def __another_section(): return "。 "
比较难理解的就是洗牌遍历函数__shuffle_for_each() ,用到了一个关键字 yield。 如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值。而yield每次返回一个值都是基于原来的状态下进行的,可以简单理解为一个迭代器。
第六步:给模型类添加一个最重要的函数 -- 生成文章的主流程
def get_article(self, title): """ 生成一篇文章 :param title: :return: """ section_flag = False content = str() while len(content) < self.article_length: flag = random.randint(0, 100) if flag < 5 and section_flag: content += self.__another_section() # 5% 的概率 另起一个段落 section_flag = False elif flag < 20: content += self.__get_famous() # 15%的概率 生成一个名人名言 section_flag = True else: content += next(self.next_bosh) # 80%的概率 生成废话 section_flag = True content = " " + content.replace("x", title) article = "《%s》%s" % (title, content) return article
get_article() 是一个文章生成的函数,根据不同概率,在每次循环时,随机生成段落、或者名人名言、或者一大段话。
第七步:主函数调用
if __name__ == '__main__': model = Model.initialize(config=CONF) while True: title = input("请输入文字主题:") if '退出' == title: break article = model.get_article(title) print(article)
主函数main(), 就是你整个程序运行的起点,它控制着所有步骤。虽然main函数不用写也行,但是为了规范化编程,每次程序都要写main函数。
好了,让我们把代码跑起来。输入一个主题:“好好学习”,不到一秒就生成一篇文章啦。
前端页面输出:
后端输出:
如果有疑问想获取源码(其实代码都在上面),可以后台私信我,回复:python文章生成。 我把源码发你。最后,感谢大家的阅读,祝大家工作生活愉快!
mybatis代码自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)相关推荐
- python小说自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)...
学了python,但是又不知道可以用来干嘛.开发一个计算器?太low了.开发一个网站?感觉网站涉及太多知识点,一个人搞不定.不用慌,本文介绍一个最近很火的一个文章自动生成器,它是用python写的,能 ...
- 表白代码抖音很火的卡通H5动态表白源码HTML+CSS,七夕情人节代码,520代码
作品介绍 查看更多关于 抖音 的文章 很火的卡通H5动态表白源码,搭起来发给你心爱的人向她表白吧 纯html的源码,上传就可以打开使用啦! 用代码编辑器或记事本打开可修改你要表白的内容.名字等 效果图 ...
- 抖音很火的设备性能在线测试HTML源码
正文: 抖音很火的设备性能在线测试HTML源码,电脑和手机CPU性能测试,滑动放大3D模型看看你的手机能不能跑满帧~ 程序: wwhgr.lanzoue.com/irITj0aq6t9g 图片:
- 基于DEAP的脑电情绪识别论文源码改进版本(附论文代码,lstm和rnn)
论文及改进版源码链接: (论文加源码)基于DEAP的脑电情绪识别论文源码改进版本(附论文代码,lstm和rnn) https://download.csdn.net/download/qq_45874 ...
- python微信好友分析源代码_搞事情了 | 教你用Python分析微信好友信息(内附完整代码)...
本文经授权转载至公众号 Python 知识圈 未经授权 严禁二次转载 阅读文本大概需要 5 分钟 技术群里一位读者微信私聊我,问我能不能统计下微信好友信息并以文件形式保存.其实,以前也写过类似的文章, ...
- 18、最近很火的线上脱单盲盒项目(内附功能搭建源ma)
本次分享为线上脱单盲盒搭建源码,免费领取已放文章结尾处 其实和线下那种一元放微信,一元拿微信一样,线上只是流量大一点. 然后9.9元成为红娘为亮点,吸引别人来进行宣传推广. 很多人就是看到了这么火,那 ...
- 搞事情了 | 教你用Python分析微信好友信息(内附完整代码)
戳上方蓝字 "程序猿杂货铺" 关注我 并 置顶星标! 你的关注意义重大! 本文经授权转载至公众号 Python 知识圈 未经授权 严禁二次转载 阅读文本大概需要 5 分钟 技术群里 ...
- 最近很火的夏日便捷小空调源码(小程序版)
介绍: 最近是不是被小空调洗脑了? 优势: 随时随地打开空调 低功耗(使用HTML CSS 而非 Canvas 绘制) 静音 操作简单 安装便捷 劣势: 没有风 刚开机时比较吵 不懂请留言 此版本为小 ...
- 很火的华为太空表网站源码
1.上传网站文件到网站目录即可 2.背景歌曲需放本地,没有音乐的话在body添加 <audio autoplay="" loop="ture"> & ...
最新文章
- “勒索病毒”为什么盯上了比特币?
- 计算机英语翻译的典故,中国成语典故英语翻译大全
- Runtime底层原理--动态方法解析总结
- 快速列出所有字段_快速掌握目标课题的研究现状 | 应用实例
- php 国密 签名,关于php国密SM3签名算法
- Rsync未授权访问漏洞记录(影响范围:全版本,端口:873)
- android 文件删除命令大全,Android中删除sdcard里文件的命令
- HTTP 传输内容的压缩
- 学习日志——2019/08/18
- JDK环境变量设置以及检验是否配置成功
- keil 安装 for NRF52832
- 计算机二级c语言考试内容有哪些,计算机二级C语言考试内容大纲
- autoCAD 2008 Win7 64位, win8 64位 安装 燕秀工具箱 yanxiu.cui 文件下载
- 贝塞尔曲线及实践案例
- Python网络爬虫与信息提取——网络爬虫Scrapy框架
- 他曾被视为马斯克第二,现在是等着坐牢的骗子
- Python 给视频添加水印
- UOS 在桌面创建网页快捷方式
- 【贪心】AcWing 803. 区间选点
- Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a
热门文章
- LeetCode 1233. 删除子文件夹
- LeetCode 892. 三维形体的表面积(数学)
- 服务器系统网卡驱动装不上,网卡驱动装不上去怎么办?
- python冒泡算法_python_冒泡算法
- hystrix 页面_微服务 | 使用Hystrix实现Spring Cloud的熔断机制
- 史上最强Dubbo面试28题答案详解:核心功能+服务治理+架构设计等
- 刚参加完阿里Java P6面试归来,6点面试经验总结!(含必考题答案)
- 论文浅尝 | AutoETER: 用于知识图谱嵌入的自动实体类型表示
- 百度开源 FAQ 问答系统(AnyQ)安装---Linux(无docker)+小白编译AnyQ-dockerlinux[CentOs]
- (设计模式)简单工厂模式之通过配置文件动态创建实现类