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)



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

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

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

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

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

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

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

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

10 行代码,实现写诗机器人15368090470002ffa.rar

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:10行代码,实现写诗机器人-创新互联
分享网址:http://scyanting.com/article/diepig.html