背景

利用 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 聊天机器人做出鲁迅体相关推荐

  1. tensorflow seq2seq 聊天机器人

    下面使用了双向LSTM和注意力机制 一.数据集准备 我用的是 小黄鸡问答语料库,分为分词前,分词后,我用的是分词后 二.数据预处理 1.生成词汇表(这里选取的前2500个常用词) import col ...

  2. 高德机器人的名字是怎么呼叫的_高德代理主管自定义聊天机器人如何帮助您简化...

    高德平台(www.nxtelecom.com.cn)主管Q554258报导.在今天这个饱和的市场,你的目标客户有很多选择,唯一能确保你的业务成功的是最好的客户服务.无论何种业务类型,客户服务和销售仍然 ...

  3. 自动聊天机器人项目班

    打造传统NLP聊天机器人 第1课 聊天机器人的基础模型与综述 知识点1:行业与业界综述 实战项目:最简单的Rule-Base聊天机器人 第2课 NLP基础及扫盲 知识点1:NLP基本算法 实战项目:经 ...

  4. itchat+在线聊天机器人接口实现微信聊天机器人

    闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了python的itchat库,想着可以再利用网页聊天机器人,做一个自动聊天的微信机器人. 总体思路很简单,用itchat登录微信 ...

  5. 目前最新《自动聊天机器人项目班 [一门课搞定聊天机器人]》

    .打造传统NLP聊天机器人 第1课 聊天机器人的基础模型与综述 知识点1:行业与业界综述 实战项目:最简单的Rule-Base聊天机器人 第2课 NLP基础及扫盲 知识点1:NLP基本算法 实战项目: ...

  6. 【PyTorch】11 聊天机器人实战——Cornell Movie-Dialogs Corpus电影剧本数据集处理、利用Global attention实现Seq2Seq模型

    聊天机器人教程 1. 下载数据文件 2. 加载和预处理数据 2.1 创建格式化数据文件 2.2 加载和清洗数据 3.为模型准备数据 4.定义模型 4.1 Seq2Seq模型 4.2 编码器 4.3 解 ...

  7. 构建聊天机器人:检索、seq2seq、RL、SeqGAN

    本文将简要介绍聊天机器人的四种构建方法:检索.seq2seq.Reinforcement Learning.seqGAN. 聊天机器人的现状 检索 seq2seq RL 为什么要用强化学习 强化学习的 ...

  8. RNN聊天机器人与Beam Search [Tensorflow Seq2Seq]

    本博客分析了一个Tensorflow实现的开源聊天机器人项目deepQA,首先从数据集上和一些重要代码上进行了说明和阐述,最后针对于测试的情况,在deepQA项目上实现了Beam Search的方法, ...

  9. 利用itchat写一个聊天机器人

    利用itchat写一个聊天机器人 聊天机器人 图灵机器人 需要的库 **自动回复私聊消息** **自动回复群聊消息** 结语: 聊天机器人 偶然在CSDN上看到大佬用20行教你写一个聊天机器人,觉得甚 ...

最新文章

  1. oracle-pl/sql之三
  2. HBase性能优化方法总结(3):写表操作
  3. 算法设计与分析课程的时间空间复杂度
  4. 排序算法_桶排序(箱排序)
  5. android最新知识点总结,学习android之 知识点总结
  6. C++primer第八章 IO库 8.1 IO类
  7. Java Formatter toString()方法与示例
  8. 网络爬虫相关程序学习(包含jar包等)---各大网站网络爬虫
  9. 动态规划——买卖股票的最优时机含手续费(Leetcode 714)
  10. 转载 : JSP取得绝对路径
  11. 如何让远程数据库中的1张表导入到本地数据库中
  12. Flask-WTF CSRF 保护P3
  13. 数据结构算法基础定义
  14. Android中添加CallStack
  15. 怎么查期刊是核心、是EI,还是SCI,或者说有哪些不是吧?
  16. 四 H264解码输出yuv文件
  17. 未来十年最容易消失和最不易被取代的22个职业,越看越心惊!附相关专业
  18. composer php 扩展,正确的Composer扩展包安装方法
  19. ISP算法:gamma矫正
  20. 运放输入偏置电流方向_运放中输入偏置电流和输入失调电流的区别

热门文章

  1. shell运用——冒泡排序
  2. 请老祖宗赴死 idea设置护眼背景色
  3. 安卓之LitePal
  4. BUUCTF 来首歌吧 writeup
  5. 五种最不寻常的投资方式
  6. css: px转rem换算方法
  7. 使用基于分形系统的离线签名方法
  8. 用termux运行python代码_没有电脑?不能运行代码?试试用手机搞定
  9. 前端-js基础-循环
  10. 前端必备的截屏取色小工具推荐——Faststone Capture