ConstantinChiae 发表于 2019-5-25 22:14

自己训练的聊天机器人

本帖最后由 ConstantinChiae 于 2020-4-4 18:56 编辑

最新动态:一直没什么时间,版本稍有完善,连带一个模型都在github上,跑不通我直播吃键盘(前提你自己把环境都弄好)。

欢迎交流学习!

完全开源:
github: https://github.com/jiayiwang5/Chinese-ChatBot (直接在这里下载就好)

这是什么?
答 : 一个聊天机器人。 它好像自认为是女生,所以你大可调戏她,或是闲得无聊时候找它唠两句。

它”智能“么?
答:个人能力有限,我找不到百万级及以上高质量的对话数据,也没有足够的算力资源支撑,暂且不能做到 ”智能“。实际对话中,仍会存在大量的无意义回复,请见谅。

什么原理呢?
答: 严谨的说叫 ”基于深度学习的开放域生成对话模型“,框架为Keras(Tensorflow的高层包装),方案为主流的RNN(循环神经网络)的变种LSTM(长短期记忆网络)+seq2seq(序列到序列模型),外加算法Attention Mechanism(注意力机制),分词工具为jieba,UI为Tkinter,基于”青云“语料(10万+闲聊对话)训练。

”必要“是什么意思?
答:程序分为数据清洗,模型训练与模型预测三个部分,以及大量固化的二进制文件等。但你运行它只需要其中一小部分,包括预测程序、部分二进制文件和一个训练好的模型。

我该怎么运行它?
答: 没配置环境的先安装环境,我写了bat脚本,双击START.bat安装就好。因为没有打包exe,所以你直接运行main.py就好了。 python .\main.py

自己训练的话需要多久?
答:首先建议你有一张性能好的显卡。我在Google Colaboratory用GPU + 12GRAM(中途会爆内存1~2次)训练大概200个epoch,单次350s(不采用注意力机制的话为500s),中途大概两次降低学习率。

需要联网么?
答: 可以在联网状态下查某地天气,不过比较无脑(调用别人的api),所以我就去掉了。现在纯单机即可运行。

需要的运行环境是什么?
答:python3.6以上,Tensorflow(上面提到我用的keras了),pandas,numpy,jieba。

我会python,这个好写么?
答:模型预测程序main.py运行时控制台会显示模型参数表,接触过深度学习的人自然一眼看明白,完全可以自己写出模型的训练部分;不懂深度学习的人请知道这不仅仅是python那么简单,即使给出全部代码你也无法凭借以往的编程经验看懂,你需要不排斥繁杂的数学推倒,且系统的接触传统机器学习和深度学习,特别是RNN(循环神经网络)。

想入门深度学习,有没有推荐的学习资料?
答:入门条件:对高等数学(尤指微积分),线性代数,概率论有较深入了解;有python编程基础;有一定英文水平,能实时看懂英文字幕,能大致看懂英文论文、期刊。满足入门条件后,可以在Coursera上跟着吴恩达(Andrew Ng)老师入门,他的课有课后作业和编程作业,教学视频大部分只有英文字幕。

后续还更新么?
答:看大家反馈喽。另有几个算法我暂时还没有实现,我也听说通过强化学习令情感奖励最大化或许能让模型具有感情色彩,这都是未来可以改进的方向。

补充:
@陌路无人是的,这是单论对话模型。
@qrp127听上去很简单,但我没接触过qq机器人这块,有空我会尝试的。

热心的朋友们送萌新我进影视区看看啊,蛮好奇的,谢谢


vcbeaut 发表于 2019-8-22 22:30

作者这里数据处理,索引全部加一了,有人知道作用吗?
for i, j in word_to_index.items():
word_to_index = j + 1

index_to_word = {}
for key, value in word_to_index.items():
index_to_word = key
pad_question = question
pad_answer_a = answer_a
pad_answer_b = answer_b

for pos, i in enumerate(pad_question):
for pos_, j in enumerate(i):
i = j + 1
if(len(i) > answer_maxLen):
pad_question = i[:answer_maxLen]

ConstantinChiae 发表于 2019-6-11 22:40

c0ld 发表于 2019-6-11 22:16
pyinstaller没办法打包jieba这类模块的原因是因为jieba这类模块在加载停用词表等文件的时候使用了绝对路 ...

你好,谢谢你的建议。打包操作有些时日了,我记得好像jieba没有报什么错误,也打包成功了,执行exe的时候会找不到一些东西,具体是什么我忘记了。总之我会尝试你的提议。
此外,这个帖子我之前是发在软件区的,后来被移到这里了,要不要exe也无所谓了{:1_909:}
欢迎交流学习

空余梦 发表于 2019-5-25 22:25

高大上,看不懂

红牛 发表于 2019-5-25 22:32

不错不错,味道好极了,机器人不错

rmao189 发表于 2019-5-25 22:32

{:1_921:}虽然不懂,不过如此高大上的东西必须支持

很迷茫 发表于 2019-5-25 22:33

lihailewodege

非笑 发表于 2019-5-25 22:35

厉害,膜拜............

dddzzzhhh 发表于 2019-5-25 22:38

可以 人设 一下这个机器人么?

ConstantinChiae 发表于 2019-5-25 22:39

dddzzzhhh 发表于 2019-5-25 22:38
可以 人设 一下这个机器人么?

可以的,需要人工干预训练语料,然后再训练

466162659 发表于 2019-5-25 22:44

这不就是小爱吗?

dddzzzhhh 发表于 2019-5-25 22:48

ConstantinChiae 发表于 2019-5-25 22:39
可以的,需要人工干预训练语料,然后再训练

那是不是也就可以人设崩塌了?
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 自己训练的聊天机器人