》问答系统
SQuAN数据集:
给定一段文字作为context,给定一个问题question,从context中寻找一段连续的文字(text span)作为问题的答案。
-数据集 https://rajpurkar.github.io/SQuAD-explorer/
几个sample问题
直接预测开始点和结束点,模型层次结构如下:
第一层 Character Embed Layer,直接引用分类模型
第二层 Word Embed Layer,把单词词向量直接留下,HIghway Networks
第三层 Contextual Embed Layer,每个单词的信息
第四层 Attention Flow Layer
第五层 Modeling Layer
第六层 Output Layer
run.py
import argparse
import copy, json, os
import torch
from torch import nn, optim
from tensorboardX import SummaryWriter
from time import gmtime, strftime
from model.model import BiDAF
from model.data import SQuAD
from model.ema import EMA
import evaluate
def train(args, data):
#设定是不是GPU
device = torch.device(f"cuda:{args.gpu}" if torch.cuda.is_available() else "cpu")
#创建模型
model = BiDAF(args, data.WORD.vocab.vectors).to(device)
ema = EMA(args.exp_decay_rate)
for name, param in model.named_parameters():
if param.requires_grad:
ema.register(name, param.data)
parameters = filter(lambda p: p.requires_grad, mode