利用seq2seq 聊天机器人做出鲁迅体
背景
利用 luojiangtao 这位大神https://github.com/luojiangtao/ChatBot_web 的代码,灵感来源http://www.shareditor.com/blogshow?blogId=118 一个lstm单元让聊天机器人学会甄嬛体。
以鲁迅先生的狂人日志为语料,将每连续的两句话作为encoder输入和decoder输入来训练,生成文章时用机器人的输出作为输入循环得到100个句子。
结果如下:
很好的月光,我不见他.便旧走也吃走.一个要以一也.后个来人一门.今个书上.自己几了勒死.可个村的佃户来告的.对我笑身明.他不他不便吃.自己妥已吃.整个的自一也吃得.也个一和一伙.大哥吃人.书约写方先人.还还记不首.母亲哭天知亲不行.大约因里自己户吃人.赵贵世自然得的人的.互在么冤对去道簿.我从寝得.可可赵也是人的人仇.何立是以以知道这立.怕晓得他.也已已了一样.大哥也为布.也约吃人的蛮.同在的冤对.一一伙事.今个人人.我未必不会.便旧走大笑走.便天你请大哥.我我过不的.便放他也是我.我便毫了教.这真他我笑.教我纳白.这想起便大老.我从顶也是他.想们吃也吃人.何未必个然许.老头子点睡死地.他是吃不便.何以何以两己.老子镜横睡便暗看我.我直是样.可想想也是我的大哥.我从毫也同道的大子.也在吃得.也在要转一样.大哥也点头.大约一人野狗.今天翁何对门来.他都可以.其跑我岂不知道这老头子是刽子手扮的.也也医生.但探头转一步.而且心心满太平.老头的人的人除灭了.对是牙说.他们着里.就跑了.不要乱的.静静的养几天.和是吃好.前天狼子.还天里里的生病.老头子服.对大.他们那里然了.就跑了改愿.他们似里别有心思.何以今天也睁着怪眼睛.他住那何青.何以眼我.这见便不见了.我己走猜一之他.便然不大哥也都看我.我日是了约蛮.便然想吃人.我从必记得他.想劝赵也吃人的人理.何等是记然去道字.赵晓晓.大哥给为县己几下.几约翁人人蛮来.他们还里妙了.就就眼改愿的排怪.他而也不我那不去.便然走吃的.我从天请对.他们可以吃我.就跑我不厉.自究想自己个.但只赵转一步什大哥.也是吃人的人.他们的祖师李时珍做的.直而杀明.自己想不人。.
还有有点逻辑的哈哈,里面有几句话是原文的原话比如“他们的祖师李时珍做的” 等。至于里面出现的 赵晓晓 在原文从没出现过,机器人却做出了一个人名,怪哉怪哉。
代码
接下来讲讲 luojiangtao 这位大神https://github.com/luojiangtao/ChatBot_web 的代码
在我找过很多聊天机器人的代码后,就他的代码效果最好~
代码大致流程如下
1. 配置参数
2. load_data
读取数据时需要正则清洗数据,判断数据是否为好的语料,之后按照一问一答的形式存二元组
其中读取的句子长度需要在一个区间内
3. 训练 train.py 主函数
1. 初始化各种参数,数据
```
du = data_unit.DataUnit(**data_config)#** 表示取字典 save_path = os.path.join(BASE_MODEL_DIR, MODEL_NAME) steps = int(len(du) / batch_size) + 1#len(du) 函数重载,返回问答对个数 tf.reset_default_graph()
```
2. 定义一个模型
```
with tf.Graph().as_default(): with tf.Session() as sess: # 定义模型 model = Seq2Seq(batch_size = batch_size, encoder_vocab_size = du.vocab_size, decoder_vocab_size = du.vocab_size, mode = 'train', **model_config) init = tf.global_variables_initializer() sess.run(init)
```
3. 取batch数据
```
x, xl, y, yl = du.next_batch(batch_size) #只取batch前四个元素encoded_question, q_len, encoded_answer, a_len 其中question 是句子的集合,每个句子的字由一个索引表示,所以是一个二维矩阵 max_len = np.max(yl) y = y[ : , 0:max_len]#每个句子都取一样的长度
```
4. 对每一个batch训练
```
cost, lr = model.train(sess, x, xl, y, yl, keep_prob)
```
```
def train(self, sess, encoder_inputs, encoder_inputs_length, decoder_inputs, decoder_inputs_length, keep_prob): """ 训练模型 :param sess: :return: """ input_feed = self.check_feeds(encoder_inputs, encoder_inputs_length, decoder_inputs, decoder_inputs_length,keep_prob, False) output_feed = [ self.update, self.loss, self.current_learning_rate ] _, cost, lr = sess.run(output_feed, input_feed) return cost, lr
```
转载于:https://www.cnblogs.com/LandingGuy/p/11209257.html
利用seq2seq 聊天机器人做出鲁迅体相关推荐
- tensorflow seq2seq 聊天机器人
下面使用了双向LSTM和注意力机制 一.数据集准备 我用的是 小黄鸡问答语料库,分为分词前,分词后,我用的是分词后 二.数据预处理 1.生成词汇表(这里选取的前2500个常用词) import col ...
- 高德机器人的名字是怎么呼叫的_高德代理主管自定义聊天机器人如何帮助您简化...
高德平台(www.nxtelecom.com.cn)主管Q554258报导.在今天这个饱和的市场,你的目标客户有很多选择,唯一能确保你的业务成功的是最好的客户服务.无论何种业务类型,客户服务和销售仍然 ...
- 自动聊天机器人项目班
打造传统NLP聊天机器人 第1课 聊天机器人的基础模型与综述 知识点1:行业与业界综述 实战项目:最简单的Rule-Base聊天机器人 第2课 NLP基础及扫盲 知识点1:NLP基本算法 实战项目:经 ...
- itchat+在线聊天机器人接口实现微信聊天机器人
闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了python的itchat库,想着可以再利用网页聊天机器人,做一个自动聊天的微信机器人. 总体思路很简单,用itchat登录微信 ...
- 目前最新《自动聊天机器人项目班 [一门课搞定聊天机器人]》
.打造传统NLP聊天机器人 第1课 聊天机器人的基础模型与综述 知识点1:行业与业界综述 实战项目:最简单的Rule-Base聊天机器人 第2课 NLP基础及扫盲 知识点1:NLP基本算法 实战项目: ...
- 【PyTorch】11 聊天机器人实战——Cornell Movie-Dialogs Corpus电影剧本数据集处理、利用Global attention实现Seq2Seq模型
聊天机器人教程 1. 下载数据文件 2. 加载和预处理数据 2.1 创建格式化数据文件 2.2 加载和清洗数据 3.为模型准备数据 4.定义模型 4.1 Seq2Seq模型 4.2 编码器 4.3 解 ...
- 构建聊天机器人:检索、seq2seq、RL、SeqGAN
本文将简要介绍聊天机器人的四种构建方法:检索.seq2seq.Reinforcement Learning.seqGAN. 聊天机器人的现状 检索 seq2seq RL 为什么要用强化学习 强化学习的 ...
- RNN聊天机器人与Beam Search [Tensorflow Seq2Seq]
本博客分析了一个Tensorflow实现的开源聊天机器人项目deepQA,首先从数据集上和一些重要代码上进行了说明和阐述,最后针对于测试的情况,在deepQA项目上实现了Beam Search的方法, ...
- 利用itchat写一个聊天机器人
利用itchat写一个聊天机器人 聊天机器人 图灵机器人 需要的库 **自动回复私聊消息** **自动回复群聊消息** 结语: 聊天机器人 偶然在CSDN上看到大佬用20行教你写一个聊天机器人,觉得甚 ...
最新文章
- oracle-pl/sql之三
- HBase性能优化方法总结(3):写表操作
- 算法设计与分析课程的时间空间复杂度
- 排序算法_桶排序(箱排序)
- android最新知识点总结,学习android之 知识点总结
- C++primer第八章 IO库 8.1 IO类
- Java Formatter toString()方法与示例
- 网络爬虫相关程序学习(包含jar包等)---各大网站网络爬虫
- 动态规划——买卖股票的最优时机含手续费(Leetcode 714)
- 转载 : JSP取得绝对路径
- 如何让远程数据库中的1张表导入到本地数据库中
- Flask-WTF CSRF 保护P3
- 数据结构算法基础定义
- Android中添加CallStack
- 怎么查期刊是核心、是EI,还是SCI,或者说有哪些不是吧?
- 四 H264解码输出yuv文件
- 未来十年最容易消失和最不易被取代的22个职业,越看越心惊!附相关专业
- composer php 扩展,正确的Composer扩展包安装方法
- ISP算法:gamma矫正
- 运放输入偏置电流方向_运放中输入偏置电流和输入失调电流的区别