ESIM实现
ESIM模型训练包含以下模块:
数据处理加载模块
模型实现模型
pytorch_lightning 封装训练模块
模型训练和使用模块
相关源码可以参见我Github上的源码。下面主要说明一些需要注意的部分。
数据处理模块
现在处理的一条数据中包含三个部分,即语句1、语句2以及语句对应的标签,其中需要注意的是:
ESIM模型中需要使用BiLSTM对数据进行编码,在进行批次数据处理中需要做与BiLSTM数据输入的格式处理,即批次语句需要是排序的,以及需要保留语句pad之前的实际长度。
由于任务做的是同一门语言的内容,这里使用所有的语句内容去构建字典。
代码选用基于字符的方式处理数据。
ESIM模型实现
ESIM模型实现可能相对复杂一些。例如使用BiLSTM进行的特征提取就有两个,以及软对齐等。由于数据批次训练,还需要对批次数据的softmax进行相关的处理,毕竟批次处理的数据中,每条数据实际长度不一定相同。