使用seq2seq模型实现一个聊天机器人
来源:互联网 发布:java flex 编辑:程序博客网 时间:2024/05/17 03:07
使用了TensorFlow中的transalte程序实现对问题的分类,即输入一个问题,输出一个问题的编码。具体过程如下:
(1)使用的版本为tensorflow-0.12.0-rc1,但该版本中存在一个bug,需要进行修改,将data_utils.py中的函数initialize_vocabulary中:
rev_vocab =[line.strip() for line in rev_vocab]
修改为:
rev_vocab = [tf.compat.as_bytes(line.strip()) for line inrev_vocab]
或者参考链接
:
https://github.com/tensorflow/models/issues/771
(2)修改源代码:
可参考链接:http://cncc.bingj.com/cache.aspx?q=https%3a%2f%2fblog.kovalevskyi.com%2frnn-based-chatbot-for-6-hours-b847d2d92c43&d=4930851775776272&mkt=en-US&setlang=en-US&w=z4qc5UiwDGXCSqmLjo0qBk2Sf5ChQdQh
(3)文本处理:a.把“类别”的数字用ABCDE等字符取代,不要用原来的号码,因为 TRANSLATE 对号码做归一处理,所以必须把类别改成ABCDEF...(非数字)的字符。
b.把“客户询问”做先处理: 每个字符之间要用一个空格“ ”分开;把非国字的字符,用 ASCII 取代。中文使用的“,”,与英文用的",",是不同的字符。所以必须把原来的非国字的字符,用标准的ASCII字符取代。 将繁体字转化为简体字,同时去除一些没有意义的符号或者时间等。
c.用TRANSLATE训练时,你必须把“类别”做成一个文档,把“客户询问”做成另一文档,然后训练。
d.训练后的结果,应该是当你输入“客户询问”时,TRANSLATE会正确地回复其“类别”。
另外,这里使用的是字向量,也可以分词后使用词向量,感觉分词后的收敛速度会更快些,但测试效果差不多。同时,在预测测试时,需要将输出的结果做对应的逆处理。
(4)调整分桶大小,根据字向量长度分布调整桶大小,如果使用字向量训练需要将桶设置的大一些,尽量均匀分布。如:
buckets = [(30, 5), (40, 5), (50, 5), (120, 5)]
(5)设置GPU K40超高速运行状态:
sudo nvidia-smi -ac 3004,875
sudo nvidia-smi -pm 1
确认k40在超高速状态下开启ECC功能
(6)训练及测试
- 使用seq2seq模型实现一个聊天机器人
- tensorflow实战3-利用seq2seq实现一个聊天机器人
- ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人[中文文档]
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
- 构建聊天机器人:检索、seq2seq、RL、SeqGAN
- 基于Seq2seq的中文聊天机器人
- Seq2Seq Chatbot 聊天机器人:基于Torch的一个Demo搭建 手札
- 用tensorflow实现seq2seq模型
- RNN聊天机器人与Beam Search [Tensorflow Seq2Seq]
- 使用aiml/lsh实现在线聊天机器人
- React实现聊天机器人
- 动手实现聊天机器人
- seq2seq模型
- seq2seq模型
- seq2seq模型
- Seq2Seq模型
- 【开源】一个基于智能问答的聊天机器人实现
- 什么是CSS
- http和https的区别
- [bzoj1493]1493: [NOI2007]项链工厂 线段树
- opencv之line
- 关于float中0.3一类数据的运算解决办法
- 使用seq2seq模型实现一个聊天机器人
- javascript知识点总结(一)
- Mac下载iReport安装之后无法打开解决办法
- yii 多文件上传 及查询
- 正则表达式
- 各种距离算法汇总
- Android系统应用的开发与测试
- java---ThreadWindow(2)
- MySQL索引--语句&练习