赞
踩
(1)学习用BERT模型解决抽取式问答任务的方法及步骤,步骤主要分为加载数据、数据预处理、微调预训练模型和模型评估。
tokenizer
分词器的建模,处理长文本,并完成数据集中所有样本的预处理;squad
评测方法,基于预测和标注对评测指标进行计算。(2)抽取式问答:
输入层:问题Q和篇章P(均经过WordPiece分词后得到)拼接得到BERT的原始输入序列X
X
=
[
C
L
S
]
q
1
q
2
⋯
q
n
[
S
E
P
]
p
1
p
2
⋯
p
m
[
S
E
P
]
X=[\mathrm{CLS}] q_{1} q_{2} \cdots q_{n}[\mathrm{SEP}] p_{1} p_{2} \cdots p_{m}[\mathrm{SEP}]
X=[CLS]q1q2⋯qn[SEP]p1p2⋯pm[SEP]
v
=
InputRepresentation
(
X
)
\boldsymbol{v}=\operatorname{InputRepresentation}(X)
v=InputRepresentation(X)BERT编码层:输入表示v经过多层Transformer的编码,借助自注意力机制充分学习篇章和问题之间的语义关联,并最终得到上下文语义表示
h
∈
R
N
×
d
\boldsymbol{h} \in \mathbb{R}^{N \times d}
h∈RN×d 其中d为BERT的隐含层维度,N为文本序列长度。
h
=
BERT
(
v
)
\boldsymbol{h}=\operatorname{BERT}(\boldsymbol{v})
h=BERT(v) 答案输出层:得到输入序列的上下文语义表示h后,通过全连接层,将每个分量(对应输入序列的每个位置)压缩为一个标量,并通过Softmax函数预测每个时刻成为答案起始位置的概率以及终止位置的概率。
通过交叉熵损失函数学习模型参数,将起始位置和终止位置的交叉熵损失平均,得到模型最终的总损失。
解码方法:使用基于Top-k的答案抽取方法获得答案。
(3)抽取式问答如何解决超长的文本context?(参考天国大佬)
truncation
和padding
对超长文本进行切片,允许相邻切片之间有交集overflow_to_sample_mapping
和offset_mapping
,映射切片前的原始位置,用于找到答案的起始和结束位置CLS
所在的位置标注答案位置CLS
位置标注,没有超出,找到答案token的start和end位置tokenizer
预处理之后的数据,满足预训练模型输入格式(4)如何选择tokenizer
和pre-trained模型?
可以参考huggingface的官网关于tokenizer的介绍:https://huggingface.co/transformers/tokenizer_summary.html
建议直接使用google colab notebook打开本教程,可以快速下载相关数据集和模型。
如果您正在google的colab中打开这个notebook,您可能需要安装Transformers和
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。