手把手教你写一个中文聊天机器人

作者/分享人:赵英俊(Enjoy)
向 Ta 提问
目前任城云科技爱养牛事业部总经理,爱养牛科技有限公司技术总监。从事互联网技术相关行业4年,从基础的IT系统集成到云计算大数据咨询,都有丰富的项目经验。目前专注于产业智能互联网的研究和实践,负责产业智能互联网在畜牧行业的实践和应用。

借助 TensorFlow 1.0.1,利用 Seq2Seq,使用 Python 3 完成一个中文聊天机器人的设计、训练、在线聊天,支持微信接入。在这次的分享中,没有高深的算法和枯燥难懂的数学公式,更多是从应用的角度,利用当前现有的机器学习平台完成一个中文聊天机器人的设计和实现,让更多人能够体会到人工智能带来的乐趣。该机器人非常适合作为在线客服,在线问答的场景。

过程中,我会深入浅出地讲解相关原理和设计思路、也会详细讲解相关源码设计,最后带领大家一起做一个属于自己的聊天机器人。

已有424人预订
预订达标
文章出炉
交流日期
     
17.12.25
01月08日
01月15日 20:30
查看文章评论/提问
Mystery
请问,源码在哪呢?🤓
赵英俊(Enjoy): 源码地址:https://github.com/zhaoyingjun/chatbot
差不多先生
手把手我可真学不会啊,可能我的手不听我的使唤。
whyseu
同问,源码在哪呢?
赵英俊(Enjoy): 地址:https://github.com/zhaoyingjun/chatbot
Mr.C
遇到的一些错误和解决方法,供参考 预处理:读seq2seq.ini有编码错误,用notepad++改了编码格式,好了; 读对话数据时Deeplearning编码错误,在open函数里加了encoding='UTF-8' 训练:出现can't pickle _thread.lock objects,在seq2seq.py里加了四行 setattr(tf.contrib.rnn.GRUCell, '__deepcopy__', lambda self, _: self) setattr(tf.contrib.rnn.BasicLSTMCell, '__deepcopy__', lambda self, _: self) setattr(tf.contrib.rnn.MultiRNNCell, '__deepcopy__', lambda self, _: self)
拾薪: 你好,您遇到的这些问题我也都遇到了,但是就是这个can't pickle object无法解决,请问具体是在哪个地方加入这四句,具体原理是什么呢?能否麻烦您解答下
xianjin
/usr/local/bin/python3 /Users/xianjin/Desktop/app/chatbot/app.py /usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6 return f(*args, **kwds) 2018-01-16 19:05:30.474447: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA Traceback (most recent call last): File "/Users/xianjin/Desktop/app/chatbot/app.py", line 67, in <module> sess, model, enc_vocab, rev_dec_vocab = execute.init_session(sess, conf='seq2seq_serve.ini') File "/Users/xianjin/Desktop/app/chatbot/execute.py", line 214, in init_session model = create_model(sess, True) File "/Users/xianjin/Desktop/app/chatbot/execute.py", line 94, in create_model model = seq2seq_model.Seq2SeqModel( gConfig['enc_vocab_size'], gConfig['dec_vocab_size'], _buckets, gConfig['layer_size'], gConfig['num_layers'], gConfig['max_gradient_norm'], gConfig['batch_size'], gConfig['learning_rate'], gConfig['learning_rate_decay_factor'], forward_only=forward_only) File "/Users/xianjin/Desktop/app/chatbot/seq2seq_model.py", line 136, in __init__ softmax_loss_function=softmax_loss_function) File "/usr/local/lib/python3.6/site-packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py", line 1224, in model_with_buckets softmax_loss_function=softmax_loss_function)) File "/usr/local/lib/python3.6/site-packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py", line 1137, in sequence_loss softmax_loss_function=softmax_loss_function)) File "/usr/local/lib/python3.6/site-packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py", line 1092, in sequence_loss_by_example crossent = softmax_loss_function(labels=target, logits=logit) TypeError: sampled_loss() got an unexpected keyword argument 'logits'
Mr.C
错误sampled_loss() got an unexpected keyword argument 'logits' 把'sampled_loss(inputs, labels)函数里' 改成 'sampled_loss(labels, logits) : labels = tf.reshape(labels, [-1, 1]) return tf.nn.sampled_softmax_loss(w_t, b, labels, logits, num_samples, self.target_vocab_size) ' , 好了
哒哒哒: Traceback (most recent call last): File "data_utls.py", line 12, in <module> gConfig=getConfig.get_config() File "C:\Users\jxiong\Desktop\chatbot-master\getConfig.py", line 26, in get_config parser.read(config_file) File "C:\Users\jxiong\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 696, in read self._read(fp, filename) File "C:\Users\jxiong\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 1012, in _read for lineno, line in enumerate(fp, start=1): UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 69: illegal multibyte sequence 那这个你知道怎么回事吗
陈小隆
源码呢
赵英俊(Enjoy)
源码地址:https://github.com/zhaoyingjun/chatbot
Why
怎么收藏呢 ?
Mr.C
用的示例中的样本集,训练了一晚上8个小时了,到9900step了,什么时候是个头呀,电脑卡的动不了(┬_┬)
刘佳恒
非常感谢您的博客,有一个小问题,词汇是按照降序排列的,博客里面可能误写了
哒哒哒
Traceback (most recent call last): File "data_utls.py", line 12, in <module> gConfig=getConfig.get_config() File "C:\Users\jxiong\Desktop\chatbot-master\getConfig.py", line 26, in get_config parser.read(config_file) File "C:\Users\jxiong\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 696, in read self._read(fp, filename) File "C:\Users\jxiong\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 1012, in _read for lineno, line in enumerate(fp, start=1): UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 69: illegal multibyte sequence 作者大大,请问运行第一个数据处理的时候出现这种错误是怎么回事呢?
兀自嚣: 求问楼主现在这个问题解决了吗。我把这个文件转成UTF-8的格式但还是报这个错误,应该是编码方面的问题吧
赵黄油的fly
为什么我的问句之后返回的都是unk,没有一个汉字或其他字符。求教,这里是哪里问题
你可能还喜欢
初探 Metasploit 漏洞框架
肖志华
使用 Mpvue 开发微信小程序的最佳实践
美团点评技术团队
Java 优化方案:设计模式
Array老师
普通程序员如何快速提升自己
王俊生
使用 Python 全栈打造淘宝客微信机器人
州的先生
大厂面试官亲述:0~3年移动研发工程师必备技能
richardcao
微信扫描登录