Python的诗,用python写诗
上次聊天机器人关注度很高,阅读量也很大。(用不到20行代码用Python制作一个智能聊天机器人)。简单的聊天机器人可以用简单的代码实现。今天编辑带领大家将自然语言处理技术与聊天机器人相结合,自动打造诗词聊天机器人。
1.原理介绍
首先,要用自然语言处理的手段,让机器理解“诗句”,做出必要的诗句。如何让机器“理解”诗句?我们在深度学习中使用了长期和短期记忆网络(LSTM)。我觉得有点头晕。请不要担心。后面用白话解释一下。
LTM是递归神经网络(RNN)的变体。RNN可以很好地解决自然语言处理的任务,但它不能很好地表达长依存句。例如:
在上面的例子中,后面用“was”还是“were”取决于前面的单复数形式,但RNN不能很好地解决这个问题,因为“was”和“dog”之间的距离太长了。
为了解决上述问题,LSTM被引进了。为了更直观的解释,这里有一个不恰当的例子:
比如我们在看电影。我们可以通过换镜头来了解故事的进展。而且,随着故事的进行,我们可以知道人物的性格,年龄,喜好等。某个主角的。这些一旦场景切换就忘不了了。这些都是长期记忆。但是,当故事发生在特定的场合,比如下一张joy的照片:
通过我们对这部动画的长期记忆,我们知道它是令人愉快的。在这个场景中,我们使用的是长时记忆中的“愉悦思维动作”的记忆。这个场景中需要用到的长时记忆叫做“工作记忆”。
2.用白话解释LSTM
LSTM是如何工作的?
1)首先让LSTM学会遗忘。
例如,在一个镜头结束后,LSTM必须忘记该镜头的位置、时间或所有信息。然而,如果一个演员收到了一个午餐盒,LSTM应该记得那个人收到了午餐盒。和看电影是一样的。我们会选择忘记一些记忆,留下必要的。因此,当有新的镜头输入时,LSTM应该有能力知道该记住什么,该忘记什么。
2)接下来,添加预约机制。
当LSTM输入新的快照信息时,LSTM应该了解哪些信息值得存储。然后根据前面两个,当输入一个新镜头时,LSTM会忘记那些不必要的长时记忆,学习它在输入镜头中有什么价值,并保存在长时记忆中。
3 ).**需要知道长期记忆的哪些方面会被立即使用
比如我们看到电影里有人写的东西,我们可以称之为年龄的长时记忆。小学生可能在做作业,大人可能在抄作业。然而,年龄信息可能与当前场景无关。
4).因此,LSTM只是学习中需要注意的部分,而不是一次性使用所有的记忆。因此,LSTM可以很好地解决上述问题。下图显示了LSTM的形象。
3.实战机器人
作为实战的一部分,LSTM是非常有效的,但它仍然需要数据预处理。LSTM必须处理每个诗句的相同长度,并将汉字转换成数字格式。所以,如何预处理主要分为三个步骤:
通过阅读资料,我们收集了大量的诗歌资料。
统计每个单词出现的次数,取次数作为每个汉字的id。
在生成大量数据时,需要将每个诗句的长度统一为相同的长度。所以长度不够的句子要用“*”来填充
所以在表现* * * *的效果时,诗句中可能会出现“*”这个词。部分数据预处理代码如下图所示。
在上面的代码中,主要完成了以下步骤:
1)先读取数据,将语句限制在100个字符以上,删除100个字符后的部分。
2).然后在每句话的开头和结尾加上“”和“$”作为句子的签名。直接删除语句的长度小于MIN_LENGTH。
3)对经过* * * *处理的诗句统计字数,根据字数统计出现次数,将出现次数作为每个汉字的id。
为了您的理解,我对数据预处理的代码进行了评论。对数据处理和理解python语句有帮助。
在模型训练中,必须确保在计算机上设置了tensorflow和numpy库。模型训练完成后,我们可以直接调用模型,集成到我们的chatbot程序中,实现我们的chatbot(关于chatbot的介绍,可以参考文末的历史文章)。
部分代码如下所示。
4.效果显示
说到这里,我们再来看看训练完的机器人创作诗歌的效果。
图A显示了诗歌机器人的效果。机器人说:“请输入藏头诗的提示。”然后我们输入藏文诗词提示,机器人会创作出符合我们要求的藏文诗词。
在照片B中,显示了单词“*”的存在。当然,从中国文化的深处来说,也受到了培训教材的制约。如果我们的诗集提示中有一个词没有出现在训练资料中,机器人会提示这个词不在词典中。
如图C,红色部分表示处理异常情况,字典里没有!
[责任编辑:包容摩托电话:(010) 68476606]
叶昊0
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。