PAGE6
PAGE6
PAGE3
PAGE3
课题
智能问答机器人的设计与实现
课时
6课时(270min)
教学目标
知识目标:
(1)掌握语料库数据预处理的方法
(2)掌握自然语言处理项目的实施流程
(3)进一步掌握循环神经网络、Seq2Seq模型和Attention机制的基本原理
技能目标:
(1)能够构建Seq2SeqAttention机制的模型
(2)能够保存训练好的模型,并能将保存好的模型恢复
(3)能够配置训练模型过程中的各种参数
素养目标:
(1)深入掌握神经网络的复杂结构和运行机制,打开新思路,提升获取并利用信息的能力
(2)提升自我学习能力,努力成为融合创造性、复合型素养和社会责任感的全方位杰出人才
教学重难点
教学重点:语料库数据预处理的方法,自然语言处理项目的实施流程,循环神经网络、Seq2Seq模型和Attention机制的基本原理
教学难点:能够构建Seq2SeqAttention机制的模型,能够保存训练好的模型,并能将保存好的模型恢复,能够配置训练模型过程中的各种参数
教学方法
案例分析法、问答法、讨论法、讲授法
教学用具
电脑、投影仪、多媒体课件、教材
教学过程
主要教学内容及步骤
课前任务
【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,收集智能问答机器人的相关知识,并进行了解
【学生】提前上网观看相关资料,熟悉教材
考勤
【教师】使用APP进行签到
【学生】按照老师要求签到
问题导入
【教师】播放“智能问答机器人的应用”视频,并提出以下问题:
问题1:什么是智能问答机器人?
问题2:写出智能问答机器人的3个典型应用。
【学生】观看、思考、讨论、回答
课堂实践
【教师】通过学生的回答,引入案例,带领学生完成智能问答机器人的设计与实现
1.数据预处理
【教师】播放“数据预处理”视频(详见教材),讲解并演示数据预处理的具体操作,然后组织学生以小组为单位进行操作
步骤1导入本项目所需要的库与模块。
importos #导入所需要的库与模块
importtyping
importtensorflowastf
importjieba
fromjiebaimportlcut,add_word
fromtkinterimport_flatten
步骤?2定义pre_corpus()函数,对语料库数据进行预处理。首先按行读取目录中两个文件的所有数据;然后使用jieba对语料库数据进行分词,并生成词典。
#读取语料库数据,对数据进行分词并生成词典
defpre_corpus(corpus_path=data/corpus/):
#获取corpus_path路径下的所有文本
corpus_files=os.listdir(corpus_path)
corpus=[]
forcorpus_fileincorpus_files: #循环读取文本文件内容
withopen(os.path.join(corpus_path,corpus_file),r,encoding=utf-8)asf:
corpus.extend(f.readlines()) #读取文本文件中的所有行
……(详见教材)
【学生】观看、聆听、思考、根据要求进行操作,先完成的学生帮助本组其他学生完成操作,如遇问题,可询问教师或自行扫码播放“数据预处理”视频
【教师】巡堂指导,及时解决学生的问题
2.构建数据集
【教师】播放“构建数据集”视频(详见教材),讲解并演示构建数据集的具体操作,然后组织学生以小组为单位进行操作
步骤?1创建静态哈希表table。实例化StaticHashTable类的对象,并将词映射到对应的索引值。
data_path=data/pre_corpus #文件路径
CONST={_BOS:0,_EOS:1,_PAD:2,_UNK:3} #标记字典
batch_size=15 #每批次样本数
buffer_size=4 #缓冲区大小
MAX_LENGTH=50 #序列的最大长度
#创建静态哈希表table,将每行内容作为词,其行号作为该词对应的索引值
table=tf.lookup.StaticHashTable(initializer=tf.lookup.
TextFileInitializer(os.path.join(data_path,dict_list.txt),
tf.string,tf.lookup.TextFileIndex.WHOLE_LINE,tf.int64,