菜鸟笔记-DuReader阅读理解基线模型代码阅读笔记(⼆)——介绍及分词数据部分请见上⼀篇⽂章:
官⽅基于了DuReader给了两个基线模型:( 和 ):
Match-LSTM是⼴泛应⽤的MRC模型,Match-LSTM为了在⽂章中到答案,依次遍历⽂章,动态地将注意⼒权重与⽂章的每个标记进⾏匹配。最后,使⽤⼀个应答指针层来查⽂章中的答案跨度。
BiDAF既使⽤了语境对问题的注意,⼜使⽤了问题对上下⽂的注意,从⽽突出了问题和上下⽂中的重要部分。然后,利⽤注意流层融合所有有⽤的信息,从⽽得到每个位置的向量表⽰。
每个模型分别给出了在百度的深度学习架构 和⾕歌的深度学习架构 中的实现,我主要阅读了其在TensorFlow中上的实现。
运⾏环境
我的运⾏环境如下表所⽰:
系统平台CPU内存GPU CUDA cuDNN Python tensorflow Ubuntu18.04411032G RTX 2080Ti10.07.4 37.4  2.0
代码及数据集下载
代码的下载地址:
数据集下载地址:
代码下载后解压可以看到⽬录如下图所⽰:
数据集下载可以运⾏data/⽬录下的download.sh⽂件下载,可以直接下载原始数据和已经处理过的数据分别保存在data/raw/、
data/preprocessed/⽂件夹下,也可以⼿动从下载后解压到对应⽬录。
下载第三⽅依赖
bash download_thirdparty.sh
这个指令会⾃动下载评估代码并保存在utils/⽬录下。
分词
数据集下载后,运⾏基线系统前需要处理⼀下。中⽂⾃然语⾔处理的必不可少的处理过程是分词。最新的基线程序中,没到关于分词的部分,为了保证完整性,我增加了分词的部分代码,使⽤的是jieba分词模型。分词需要对’question’,‘title’,‘paragraphs’,进⾏,将分词结果保存到’segmented_question’, ‘segmented_title’, ‘segmented_paragraphs’。
分词代码
为了便于理解,我们只对⼀⾏数据的分词进⾏展⽰。代码还是运⾏于jupyter notebook:
import json
import jieba
#读取数据
n =5
f =open('./data/raw/ain.json','r',encoding='utf8')
for i in range(n):
line = f.readline()
f.close()
sample = json.loads(line)
#分词函数
def seg_word(text):
text_temp =list(jieba.cut(text))
菜鸟编辑器python
return text_temp
#分割⼀个样本函数
def seg_data(sample):
# 对answers和question进⾏分词
sample["segmented_answers"]=[seg_word(answer)for answer in sample["answers"]]
sample["segmented_question"]= seg_word(sample["question"])
for doc in sample["documents"]:
# 对每个篇章的title和paragraphs进⾏分词
doc["segmented_title"]= seg_word(doc["title"])
doc["segmented_paragraphs"]=[seg_word(para)for para in doc["paragraphs"]]
然后可以通过seg_word、seg_data函数分别对⽂本段、样例进⾏分词,如图:
使⽤seg_word对⽂本段进⾏分词:
使⽤seg_data对⼀个样本进⾏分词:
参考⽂献:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。