基本信息
文件名称:《自然语言处理技术及应用》教案 项目9 智能问答机器人的设计与实现.docx
文件大小:8.09 MB
总页数:6 页
更新时间:2025-05-26
总字数:约7.6千字
文档摘要

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,