首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用光速为你写诗,送你一个神奇的写诗机器人

宋无涯出同

唐暗水才阳

楼粒甫关尽

头心雨上人

这五言绝句写的还可以吧,哈哈,献丑了

今天咱们的主题是教写诗,不过不是我们写,而是教计算机写,想写几首写几首,先来看一下效果

本次利用python来实现自动写诗,需要安装“jieba”库,直接‘pip install jieba’就可以啦

第一步. 下载训练文本

这一步大家都会,从网上下载古诗素材即可,我下载了一个文本文件,将其命名为“poem.txt”,其内容如图所示

第二步. 读取文本数据

poem=open("/home/fantasy/Downloads/poems.txt",'r+')

fr0=poem.read()

在Python终端键入“fr0”,效果如图则表示已经读入

第三步. 文本处理

由于文本中包含书名号和问号和换行符等不需要的字符,所以需要将它们删掉(替换为空)

首先去掉书名号和问号:

fr1=re.sub('《.*?》','',fr0)

fr2=re.sub('.*?(/?).*?','',fr1)

然后进行分词:

words=jieba.cut(fr2)

c=','.join(words)

cc=c.split(',')

接下来去掉其它我们不需要的特殊字符串:

word=[]

for i in cc:

if i=='?':

del i

elif i=='。':

del i

elif i==' ':

del i

elif i==',':

del i

elif i=='\n':

del i

elif i=='\u3000':

del i

else:

word.append(i)

到现在为止,文本文件变成了如下图所示的样子

第四步. 拆词成字

将所有的词拆开,提取出所有的汉字存入w列表中:

w=[]

for i in range(len(word)):

for j in word[i]:

w.append(j)

第五步. 开始写诗啦

定义一个写诗的函数,命名为“writepoem”:

def writepoem():

poe=[]

for lensen in range(4):

x=random.sample(w,5)

one=''.join(x)

poe.append(one)

poe=','.join(poe)

return poe

第六步. 调用写诗函数进行创作

def itemsnum():

N=input('想写几首呢,告诉我吧:')

for i in range(1,int(N)+1):

print('~~~~~~~第',i,'首~~~~~~~~')

print(writepoem())

print('~~~~~最后一首了呢~~~~~~')

以上便完成了机器写诗的全部步骤,现在我们来运行一下

运行程序,在IDLE调用itemsnum函数写3首诗:

是不是很有意思呢,嘿嘿。

不过目前的程序还比较笨,不会押韵,下次可以考虑把相同韵脚的字放在一起,把意象相同的词放在一起,从而使诗句更有韵味。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180610G13KX400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券