集算器不仅有大数据计算,还有诗和远方。最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个。这个实现真的很简单,简单到只有10几行代码,请看实现步骤:

1下载字典和诗词

从网上找一个用于分词的字典文件,里面记录着每个中文词汇的词性。我从GitHub上找了一个,稍微处理之后保存到集文件dict.btx。

下载宋词三百首的txt文件,去掉空格和换行,以及其它文字以外的字符,得到一个长字符串。

2训练

对上一步得到的长字符串进行分词,结果保存到集文件作为模板,实现代码如下:

A

B

C

1

=file(“dict.btx”).import@bi().keys(WORD).index()

2

=create(WORD,LEN,T)

3

宋词三百首宴山亭赵佶北行见杏花裁剪冰绡,轻叠数……

4

=len(A3)

>i=1

5

for (i<=A4)

>word3=A2.find( mid(A3,i,3) ), word2=A2.find(   mid(A3,i,2) ), word1=A2.find( mid(A3,i,1) )

6

if (word3!=null)

>A2.insert(0, word3.(WORD),3,word3.(T)), i=i+3

7

else if (word2!=null)

>A2.insert(0, word2.(WORD),2,word2.(T)), i=i+2

8

else if (word1!=null)

>A2.insert(0, word1.(WORD),1,word1.(T)), i=i+1

9

else

>i=i+1

10

=file(“宋词模型.txt”).export@t(A2)

A1读取字典文件,并且建立索引;

A2定义模板记录的数据结构,三个字段表示:词、长度、词性;

A5到A9是循环处理,对A3进行分词,这里最长只处理三个字组成的词;

A10把结果保存;

这一步得到一个模板,内容是《宋词三百首》里所有文字的分词,以及这些分词的词性。

3创作

创作的原理是找一首宋词作为目标,得到它的每个分词,根据分词的长度和词性,从上一步的模板里随机找一个词进行替换。这里选择的是《水调歌头·明月几时有》,来看代码:

A

B

C

1

=file(“宋词模型.txt”).import@t()

2

=file(“dict.btx”).import@bi().keys(WORD).index()

3

明月几时有,把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去。惟恐琼楼玉宇,高处不胜寒,起舞弄清影,何似在人间。

4

=len(A3)

>str=”“, i=1, words=null

5

for (i<=A4)

>word3=A2.find( mid(A3,i,3)   ),word2=A2.find( mid(A3,i,2) ), word1=A2.find( mid(A3,i,1) )

6

if (word3!=null)

>words=A1.select(LEN==3&&   T==word3.(T) ), i=i+3, str=str+words(1+rand(words.len())).(WORD)

7

else if (word2!=null)

>words=A1.select(LEN==2&&   T==word2.(T) ), i=i+2, str=str+words(1+rand(words.len())).(WORD)

8

else if (word1!=null)

>words=A1.select(LEN==1&&   T==word1.(T) ), i=i+1, str=str+words(1+rand(words.len())).(WORD)

9

else

>str=str+mid(A3,i,1), i=i+1

10

>output(str)

运行结果如下,这些“作品”虽然存在语法错误,但还是有模有样的,总比我自己写的要好很多。

晚秋无奈送,伫立鹧鸪天。已成西下黄叶,春寒疏何处。我又花下离别。酒醒阳关萧萧,如许悲欢霜,初见年少影,谁曾在斜阳。

春寒何在喧,不解烟雨任。梳洗江上西风,明月怜此地。谁先水声惹起。相思洛阳晓色,几许不成魂,不应相迎竞,他未为梢头。

而今几度寄,相认问青天。催发江上蓬壶,黄昏发何处。别未御街可惜。轻吹江南那堪,先断闲来闲,相逢拘束影,任又在旧事。

昨夜无处应,不知阑珊处。映带楼上王孙,如今来有时。任更点点飘香。垂涎池塘秋千,到处望断天,酒醒衰草影,我尤把天涯。

选择一首发到朋友圈,居然得到不少点赞。

实现原理是同词性替换,根据这个还可以实现写唐诗的功能。如果对模板文件进一步调整,根据韵律和平仄优化词性,效果会更好。这就是属于人工智能的人工劳动了,需要专业知识和辛苦付出,不是一下可以达成的。 感兴趣的同学可以下载附件。

15367297510004761.rar

10行代码,实现写诗机器人相关推荐

  1. 10 行代码,集算器实现写诗机器人

    集算器不仅有大数据计算,还有诗和远方.最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个.这个实现真的很简单,简单到只有10几行代码,请看实现步骤: 1.下载字典和诗词 从网上找一个用于分词 ...

  2. 10 行代码集算器实现写诗机器人

    可阅读原文:http://c.raqsoft.com.cn/article/1536756719594?r=alice 集算器不仅有大数据计算,还有诗和远方.最近看到不少写诗机器人的新闻,于是尝试用集 ...

  3. 10 行代码,实现写诗机器人

    集算器不仅有大数据计算,还有诗和远方.最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个.这个实现真的很简单,简单到只有10几行代码,请看实现步骤: 1下载字典和诗词 从网上找一个用于分词的 ...

  4. Python3,10行代码,我把情书写在她的照片里,她被我的才华征服了。

    10行代码把情书写在她的照片里 1.引言 2.Pillow 2.1 Pillow 安装 2.2 Pillow 介绍 2.2.1 新建及保存图片 2.2.2 重新绘制图片 2.2.3 图片合并 2.3 ...

  5. TensorFlow实现写诗机器人

    #TensorFlow实现写诗机器人 ##概述   在这篇博客中,我们要使用RNN生成藏头诗,你给它输入一些古诗词,它会学着生成和前面相关联的字词.同样的如果你把训练数据换成一堆姓名,它也会学着生成姓 ...

  6. 10行代码制作群聊提醒小助手,再也不怕漏掉消息了

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 胸中有誓深于海,肯使神州竟陆沉? ...

  7. 如何用10行代码设置微信回复功能?

    大家还记得教会父母玩微信是什么时候吗?父母学会后,我们的生活就发生了「质」的变化,父母也许会 吐槽你的微信头像 不好,要你换一个头像.微信对于年轻的我来说就是一个支付工具罢了,要说好玩,花样的我觉得还 ...

  8. (已加马赛克)10 行代码判定色*情*图片——Python 也可以系列之二

    10 行代码判定色*情*图片--Python 也可以系列之二 作者:赖勇浩(http://blog.csdn.net/lanphaday) 致编辑:我已经给图片打上马赛克了,别再删除了啊,我这是纯技术 ...

  9. 八皇后问题初始思路python_Python 学习笔记(一)10行代码解决八皇后问题

    不引入标准库和第三方库,不用分号将多行代码写在一行,再10行代码之类求出八皇后问题的所有解. ----------------------------------------------------- ...

最新文章

  1. date对象加十分钟_一张图讲解对象锁和关键字synchronized修饰方法(代码块)
  2. boost库 tbb_c++ 最简单的TBB示例
  3. 牛客华为机试第1题python
  4. VB.NET完成一个功能增强的记事本
  5. 数学建模感悟:新的算法的学习
  6. linux查看目录访问权限,Linux文件访问权限
  7. 01_sklearn,安装sklearn,软件环境要求,第三方发行版
  8. [渝粤教育] 广东-国家-开放大学 21秋期末考试中国近现代史纲要(A)10881k1
  9. Google 's Gmail
  10. Docker Swarm 初步认识 及 集群搭建
  11. 新基建浪潮下,看边缘计算+5G如何乘风破浪
  12. python 之发送邮件服务[原著] 海瑞博客
  13. python基础1:数据类型和标识符命名规范
  14. 用C语言短除法求最大公因数用,用短除法求最大公因数
  15. python数据笔记分析_python数据分析入门学习笔记
  16. 矿山井口安检综合管理系统
  17. GIS应用技巧之制图立体感
  18. 编辑器vi使用方法详细介绍
  19. c语言法定节日日历程序,C 语言写的日历
  20. 工业无线传感器网络的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 使用java命令出现Error: A JNI error has occurred, please check your installation and try again的错误
  2. 开发一个二方包,优雅地为系统接入ELK(elasticsearch+logstash+kibana)
  3. Java Swing中文乱码解决方法
  4. 工创赛基于stm32f103的HAL库的全向麦轮的四个7路寻迹传感器智能款采集程序
  5. 8路灰度传感器与stm32f1
  6. Android-开发之从掉洞到填坑之路面试必备
  7. 04.视频播放器通用架构实践
  8. 微信红包问题matlab,微信红包先抢后抢差距居然这么大?有人做了个实验
  9. html css JavaScript web网页设计期末作业 共5页【视频演示】
  10. 【笔记】ValseWebinar-去雨去雾专题报告