千家信息网

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

发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,集算器不仅有大数据计算,还有诗和远方。最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个。这个实现真的很简单,简单到只有10几行代码,请看实现步骤:1下载字典和诗词从网上找一个用于分词的字典
千家信息网最后更新 2024年09月30日10 行代码,实现写诗机器人

集算器不仅有大数据计算,还有诗和远方。最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个。这个实现真的很简单,简单到只有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)



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

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

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

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

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

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

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

感兴趣的同学可以下载附件。

15368090470002ffa.rar


宋词 文件 词性 模板 代码 字典 字符 明月 结果 百首 处理 三个 人工 原理 字符串 数据 文字 春寒 模型 长度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 dell服务器860加哪种显卡 服务器和域名 网络技术汇流排是什么意思 网站的pdf是存在数据库嘛 lol默认进去哪个服务器 c 将数据插入到数据库中 网络安全教育2000 互联网科技手抄报简单又漂亮 魔兽世界均衡服务器 获取数据库数据传值到文本框 就是不想干软件开发 软件开发师职业规划的长期目标 手机如何连接电脑上的数据库 漯河市网络安全倡议书 高层建筑设计软件开发 部落冲突没有服务器选择界面吗 ios管理远程服务器 服务器要设置自动关机吗 公安网络安全保密八条纪律 教育软件开发公司简介 验证迭代回声服务器客户端 防止网络安全的5个绝招 网络安全专家系统和知识图谱 服务器rt是什么意思 数据库文本日期搜索 开展网络安全数据工作总结 国家很多的数据库都在贵阳吗 公有云与软件开发云的区别 使用ecs服务器的自我感觉 每个公司都应该重视网络安全
0