Python自然语言处理 课件10-4-Seq2Seq模型与实战_第1页
Python自然语言处理 课件10-4-Seq2Seq模型与实战_第2页
Python自然语言处理 课件10-4-Seq2Seq模型与实战_第3页
Python自然语言处理 课件10-4-Seq2Seq模型与实战_第4页
Python自然语言处理 课件10-4-Seq2Seq模型与实战_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深度学习与自然语言处理Python自然语言处理第十章课前回顾简单RNNLSTM网络Attention机制Seq2Seq模型与实战04Seq2Seq模型实战Seq2Seq问答机器人本章小结Seq2Seq模型

自然语言生成(NatureLanguageGeneration,简称NLG)自然语言理解(NatureLanguageUnderstanding,简称NLU)Encoder-Decoder基本结构:Seq2Seq模型

ABC:输入序列WXYZ:输出序列<EOS>:句子结束符第一个RNN接受输入序列,输出输入向量的语义表示向量第二个RNN接受第一个RNN生成的输入序列的语义向量Seq2Seq模型

Seq2Seq模型

Seq2Seq模型与实战04Seq2Seq模型实战Seq2Seq问答机器人本章小结实战Seq2Seq问答机器人

问答系统:本质上是一个信息检索(IR)系统,从文本中获取更多的信息,返回更加精准的答案,模仿人的语言习惯,通过模式匹配的方式来寻找答案问答系统流程:(1)问题解析(2)信息检索(3)答案抽取实战Seq2Seq问答机器人

聊天机器人:存放大量句型、模版知道的问题,给出人性化答案不知道的问题,回答不知道或转移话题实战Seq2Seq问答机器人

聊天机器人解决的问题:1、怎么让机器人能听你的话并想出应该回复什么2、怎么样进行开放式的话题,让聊天一直持续下去3、怎么样贴合用户爱好,聊相关话题4、面对多样的用户是怎么让各种用户都满意的实战Seq2Seq问答机器人

聊天机器人实现过程:1用户输入数据2分析用户意图3抓取关键参数4匹配最佳回答5输出回答实战Seq2Seq问答机器人

1、安装Python3.6:安装gensim3.8.3、jieba0.42.1、TensorFlow1.5.0库2、载入主函数相关库importosimportsysimportmathimporttimeimportnumpyasnpimporttensorflowastfimportdata_utilsimports2s_model实战Seq2Seq问答机器人3、设置参数tf.app.flags.DEFINE_float('learning_rate',0.0003,'学习率')tf.app.flags.DEFINE_float('max_gradient_norm',5.0,'梯度最大阈值')tf.app.flags.DEFINE_float('dropout',1.0,'每层输出DROPOUT的大小')tf.app.flags.DEFINE_integer('batch_size',64,'批量梯度下降的批量大小')tf.app.flags.DEFINE_integer('size',512,'LSTM每层神经元数量')tf.app.flags.DEFINE_integer('num_layers',2,'LSTM的层数')tf.app.flags.DEFINE_integer('num_epoch',5,'训练几轮')tf.app.flags.DEFINE_integer('num_samples',512,'分批softmax的样本量')tf.app.flags.DEFINE_integer('num_per_epoch',1000,'每轮训练多少随机样本')tf.app.flags.DEFINE_string('buckets_dir','./bucket_dbs','sqlite3数据库所在文件夹')tf.app.flags.DEFINE_string('model_dir','./model','模型保存的目录')tf.app.flags.DEFINE_string('model_name','model4','模型保存的名称')tf.app.flags.DEFINE_boolean('use_fp16',False,'是否使用16位浮点数(默认32位)')tf.app.flags.DEFINE_integer('bleu',-1,'是否测试bleu')tf.app.flags.DEFINE_boolean('test',False,'是否在测试')FLAGS=tf.app.flags.FLAGSbuckets=data_utils.buckets实战Seq2Seq问答机器人4、定义建立模型函数defcreate_model(session,forward_only):#建立模型

dtype=tf.float16ifFLAGS.use_fp16elsetf.float32model=s2s_model.S2SModel(data_utils.dim,data_utils.dim,buckets,FLAGS.size,FLAGS.dropout,FLAGS.num_layers,FLAGS.max_gradient_norm,FLAGS.batch_size,FLAGS.learning_rate,FLAGS.num_samples,forward_only,dtype)returnmodel实战Seq2Seq问答机器人定义seq2seq_modeclassS2SModel(object):def__init__(self,source_vocab_size,target_vocab_size,buckets,size,dropout,num_layers,max_gradient_norm,batch_size,learning_rate,num_samples,forward_only=False,dtype=tf.float32):…实战Seq2Seq问答机器人数据转换函数classBucketData(object):defread_bucket_dbs(buckets_dir):defsentence_indice(sentence):defindice_sentence(indice):defvector_sentence(vector):defgenerate_bucket_dbs(input_dir,output_dir,buckets,tolerate_unk=1):…实战Seq2Seq问答机器人5、定义训练模型函数deftrain():#训练模型

#准备数据

print('准备数据')bucket_dbs=data_utils.read_bucket_dbs(FLAGS.buckets_dir)bucket_sizes=[]foriinrange(len(buckets)):bucket_size=bucket_dbs[i].sizebucket_sizes.append(bucket_size)print('bucket{}中有数据{}条'.format(i,bucket_size))total_size=sum(bucket_sizes)print('共有数据{}条'.format(total_size))#开始建模与训练…实战Seq2Seq问答机器人6、定义模型测试函数deftest():classTestBucket(object):def__init__(self,sentence):self.sentence=sentencedefrandom(self):returnsentence,''

withtf.Session()assess:#构建模型

model=create_model(sess,True)model.batch_size=1

#初始化变量

sess.run(tf.global_variables_initializer())…实战Seq2Seq问答机器人7、定义main函数defmain(_):ifFLAGS.test:#测试模型

test()else:#训练模型

train()

if__name__=='__main__':np.random.seed(0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论