基于Python的诗和远方

作者:阿广

概述

  • 前言

  • 准备工作

  • 具体步骤

  • 唐诗生成

  • 藏头诗规则

  • 结果

  • 阿广说

  • 群聊交流

  • 福利一刻

  • 推荐阅读

前言

很从小到大,我们读过太多的古诗,爱国诗、缅怀诗、相思诗等等。古往今来,我的认知中,李白是个好人!往往一个女的说一个男的是一个好人,那就证明她不爱他。不,阿广是爱李白的,不为别的,只为他给天下爱酒之人找到了古往今来最佳的喝酒理由。

有一年重阳节,陶渊明家里没酒了,只好坐在家门口发呆,无聊的采了一把菊花,闻闻花香过瘾。正在无比烦恼的时候,忽见门外来了穿白衣的人,说奉王弘之命前来送酒。陶渊明大喜,菊花也不要了。拿过酒来,一饮而尽。于是又创作了一首流传千古的古诗。

我想大家都学过“类比”的思想,阿广也不例外。于是我也在重阳节那天,假装自己家中没酒了,坐在家门口同样发呆,甚至还想抽两口香烟,无聊的时候采了一把贴着“我正在午睡,请勿践踏”的小草,偶尔闻闻草的青涩。正准备抽两口香烟排解心头之感的时候,并未迎来奉命之人送来作诗之酒。小悲之后,拿过82年的优酸乳一饮而尽。于是,又创作了一个永垂不朽的基于Python的唐诗生成器。

准备工作

环境:Python3.6

包:anaconda管理Python包

编译器:Pycharm

具体步骤

爬取7w余首唐诗

#使用urllib3的内置函数构建爬虫的安全验证,来应对网站的反爬虫机制
http = urllib3.PoolManager(
    cert_reqs='CERT_REQUIRED',
    ca_certs=certifi.where())
#爬虫的目标网站
r = http.request('GET', url)
#爬虫获取的html数据
soup = BeautifulSoup(r.data, 'html.parser')
content = soup.find('div', class_="contson")

RE对数据进行处理

p1 = r"[\u4e00-\u9fa5]{5,7}[\u3002|\uff0c]"  #[汉字]{重复5-7次}[中文句号|中文逗号]
pattern1 = re.compile(p1)        #编译正则表达式
result = pattern1.findall(poemfile)   #搜索匹配的字符串,得到匹配列表

分词操作

#使用jieba中文分词库的textRank算法来找出各个词性的高频词
for x in jieba.analyse.textrank(content, topK=600, allowPOS=('n', 'nr', 'ns', 'nt', 'nz', 'm')):

唐诗生成

使用pinyin库对韵脚进行处理

pip install pinyin
verse = pinyin.get("天", format="strip")
#输出:tian

韵脚数量为20+,且都是以元音字母开始,所以可以根据规则判断

rhythm = ""
rhythmList = ["a", "e", "i", "o", "u"]
verse = pinyin.get(nounlist[i1][1], format="strip")
#韵脚在每个pinyin倒叙最后一个元音字母处截止
         for p in range(len(verse)-1, -1, -1):
             if verse[p] in rhythmList:
                 ind = p

rhythm = verse[ind:len(verse)]

五言律诗,名动名句式

rhythm = ""
rhythmList = ["a", "e", "i", "o", "u"]
while num < 4:
#生成随机数
       i = random.randint(1, len(nounlist)-1)
     i1 = random.randint(1, len(nounlist)-1)
     j = random.randint(1, len(verblist)-1)

#记录韵脚
     ind = 0
     ind1 = 0
     if (num == 1):
         rhythm = ""
         verse = pinyin.get(nounlist[i1][1], format="strip")
#韵脚在每个pinyin倒叙最后一个元音字母处截止
         for p in range(len(verse)-1, -1, -1):
             if verse[p] in rhythmList:
                 ind = p

rhythm = verse[ind:len(verse)]
#确保2,4句的韵脚相同,保证押韵
     if (num == 3):
         ind1 = 0
         verse1 = pinyin.get(nounlist[i1][1], format="strip")
         for p in range(len(verse1)-1, -1, -1):
               if verse1[p] in rhythmList:
                  ind1 = p

while verse1[ind1: len(verse1)] != rhythm:
               i1 = random.randint(1, len(nounlist)-1)
               verse1 = pinyin.get(nounlist[i1][1], format="strip")
               for p in range(len(verse1)-1, -1, -1):
                   if verse1[p] in rhythmList:
                       ind1 = p
#随机排列组合
    print(nounlist[i]+verblist[j][1]+nounlist[i1])
    num += 1

详情请查看源码请自行去github,或者点击文末的阅读原文获取源码。

https://github.com/zandaoguang/poem


藏头诗规则

对语料库进行排列组合,但需保证每次在排列组合词的时候,生成的每句话,第一个名词的第一个字是按照序给定的四字成语即可。

for x in range(len(nounlist)):
     if nounlist[x][0] == str[num]:
         i = x

结果

五言律诗(以生成的三篇律诗为例):

萧索来千年
重阳头故国
万年忧童子
白发顾旧国

青楼到一行
高台手子孙
凤凰风冠盖
玉壶意浮云

婵娟向古人
五湖夜子孙
东风心月光
银河道浮云

四言诗:

所思浮云
关山车马
高楼流水
闲人肠断

藏头诗(落花流水):

落晖首南宫
花枝成公子
流水名朝廷
水声胜白石

阿广说

记阿广平淡而不平凡,简约而不简单的一天,感叹于酒是最好的诗,诗是最好的酒。

国无人莫我知兮
华亭鹤唳讵可闻
幄笼轻日护香霞
奈此朱梁跋扈何
霓为衣兮风为马

群聊交流

千年逢缘得相聚,梦亦人生筱雨飞。

九天散尽群星爠,路尽萧歌忆具灰。

梅寒一季风散雪,冰藏百丈芬幽劲。

残阳溺雪烟消幕,月光叠水虚此行?

我希望我们能够在一起研究学术、探讨生活、能够谈天说低,我希望我们能够分享各自的生活和趣事,所以我创建了两个群,为读者提供了分享知识、传递正能量的平台:

视学算法硕博学术交流群

视学算法就业交流群

如加入失败,则添加学姐微信,拉你进群

务必备注:硕博或者就业,否者不予通过

福利一刻

视学算法特此感谢电子工业出版社的独家赞助,本周电子工业出版社出版一本《你也能看得懂的Python算法书》

此前,本书正处于预售状态。本周视学算法将和电子工业出版社联合赠送若干本。

推荐阅读

【打油诗】如何使用Python实现的财务自由

基于Python的诗和远方相关推荐

  1. python程序写诗_用Python作诗,生活仍有诗和远方

    原标题:用Python作诗,生活仍有诗和远方 报 名 来源:TheodoreXu链接: https://segmentfault.com/a/1190000013154329 常听说,现在的代码,就和 ...

  2. 诗和远方:蚂蚁金服 Service Mesh 深度实践 | QCon 实录

    敖小剑,蚂蚁金服高级技术专家,十七年软件开发经验,微服务专家,Service Mesh 布道师,ServiceMesher 社区联合创始人.专注于基础架构和中间件,Cloud Native 拥护者,敏 ...

  3. 【人工智能】人类该如何看待人工智能的“诗与远方”?

    来源:智能制造网 [导读]如今,在继传统行业的应用"钱"景爆发之后,人工智能又开启了对"诗与远方"的追逐.9月8日,华为推出了一款全新的AI诗人--" ...

  4. 中秋福利大放送!教你既可朝九晚五,又可诗和远方!

    2019独角兽企业重金招聘Python工程师标准>>> 中秋福利大放送!教你既可朝九晚五,又可诗和远方! 1.不废话,上福利! 中秋节佳节将至,提前祝所有关注「飞鱼说编程」的小伙伴们 ...

  5. 基于Python实现的微信好友数据分析——抓取好友性别、位置、头像签名

    最近微信迎来了一次重要的更新,允许用户对"发现"页面进行定制.不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择"仅展示最近三天的朋友圈",大概 ...

  6. 华为云EI的诗与远方

    看什么看,快点蓝字关注我! 这个世界不只有眼前的苟且,还有诗与远方. "苟且",无非是眼前的现实,可能有困惑和压力,也可能枯燥而乏味,而"诗与远方",则是人们理 ...

  7. 挥一挥衣袖,贝索斯宣布“退位”,去追寻“诗和远方”

    "每一天都是第一天" --贝索斯 带领着亚马逊在疫情期间连连创造股价奇迹的贝索斯,突然决定功成身退. 美国时间2月2日(周二)美股盘后,亚马逊在四季度财报会上宣布,杰夫·贝索斯(J ...

  8. 网心科技马婷:探寻边缘计算的“诗和远方”

    ​​LiveVideoStackCon 2022上海站活动结束,每一次大会的举办对音视频领域都是新的洗礼,同时也带来了新的收获和挑战.随着音视频技术在各种行业.场景中的逐渐成熟,更多的业务形态.产品变 ...

  9. 贝索斯宣布“退位”,去追寻“诗和远方”

    本文转载自 硅星人 "每一天都是第一天" --贝索斯 带领着亚马逊在疫情期间连连创造股价奇迹的贝索斯,突然决定功成身退. 美国时间2月2日(周二)美股盘后,亚马逊在四季度财报会上宣 ...

最新文章

  1. SpringBoot 那些天生自带 Buff 的工具类,你用过几个?
  2. python兼职 在家工作-在家兼职的人或者是自由职业的人都在做什么?
  3. sym--数值矩阵转为符号矩阵
  4. php 组装二维数组,php实现快速对二维数组某一列进行组装的方法小结
  5. 在Linux下查看环境变量
  6. mysql增量备份实例_MySQL增量备份与恢复实例
  7. python的线程组怎么写_Python高级——多任务编程之线程
  8. 7模型集成:细粒度用户评论情感分析冠军思路及源码
  9. 一淘商品类目预测[转载]
  10. PMP练习199题答案解析版
  11. Texlive安装宏包
  12. 计算机键盘中复制粘贴快捷键,电脑复制粘贴快捷键,教您电脑怎么用键盘复制粘贴...
  13. N卡怎么修改录屏文件保存位置
  14. python数据分析18-21
  15. 2016 PayPal商家账户界面 如何集成支付按钮
  16. 各种深度摄像头的使用经验粗谈
  17. 《用计算机写作文》说课稿,《我用电脑写作文》说课稿
  18. CTGU实验6_2-创建借书存储过程
  19. 魔性计时器html6,最近抖音很火的6首BGM,太有魔性了!
  20. 关于OSPF的五种报文类型介绍、OSPF八种状态机变化与报文交互介绍。

热门文章

  1. ubuntu16.04下使用YOLOV3训练自己做的VOC数据集(VOC数据集制作+模型训练步骤+训练参数解析和问题解决+训练日志可视化(loss、IOU)+模型测试(单张、摄像头、批量测试))
  2. 【Android】inflater的作用
  3. android图片晃动动画,剖析Android动画(图片闪烁、左右摇摆、上下晃动等效果)
  4. mysql中除数为0怎么解决_ora-01476除数为0的解决办法,oracle中decode()的使用
  5. oracle rac和ha对比,IBM POWERHA和ORACLE RAC之间比较?
  6. SaleSmartly聊天机器人如何帮助您的电商业务
  7. css3新增属性有哪些?css3中常用的新增属性
  8. Apr.6th.08 拜山
  9. 整理 读过感觉不错的深度学习博客(更新中)
  10. Java设计模式面试