论文地址:arXiv:1908.00300v1 [cs.CL] 1 Aug 2019
代码地址:https://github.com/alibaba-edu/simple-effective-text-matching-pytorch
(有两个版本:TensorFlow版和Pytorch版)
摘要
在本文中,我们提出了一种用于通用文本匹配应用的快速而强大的神经方法。我们探索了什么足以构建一个快速且性能良好的文本匹配模型,并建议保持三个关键特征可用于序列间对齐:原始的按点对齐特征、先前对齐的特征和上下文特征,同时简化所有其余组件。我们在四个经过充分研究的基准数据集上进行实验,涵盖自然语言推理、释义识别和答案选择任务。我们的模型的性能与所有数据集的最先进水平相当,参数更少,推理速度至少比类似执行的快6倍。
实现细节
我们使用TensorFlow (Abadi et al, 2016)实现了我们的模型,并在Nvidia P100 gpu上进行训练。我们使用NLTK工具包(Bird et al, 2009)对句子进行标记,将它们转换为小写并删除所有标点符号。我们不限制最大序列长度,批处理中的所有序列都被填充到批处理的最大值。
词嵌入用840B-300d GloV e词向量初始化(Pennington et al, 2014),并在训练期间固定。词汇表外单词的嵌入被初始化为零并被固定。所有其他参数通过He初始化(He et al, 2015)进行初始化,并通过权重归一化(Salimans and Kingma, 2016)进行归一化。在每个全连接层或卷积层之前应用保持概率为0.8的Dropout。卷积编码器的内核大小设置为3。预测层是一个两层前馈网络。在所有实验中,隐藏大小设置为150。所有前馈网络中的激活都是GeLU激活(Hendrycks and Gimpel, 2016),我们使用√2作为He初始化中GeLU激活的方差平衡参数的近似值。当n≥3时,我们将增强残差连接中的总和按1/√2缩放,以在假设两个加数具有相同方差的情况下保持方差。
块的数量在1到3之间进行调优。卷积编码器的层数从1调到3。尽管在稳健性检查(表7)中,我们使用最多5个块和层进行验证,但在所有其他实验中,我们故意将最大块数和层数限制为3,以控制模型的大小。我们使用Adam优化器(Kingma and Ba, 2015)和线性预热的指数衰减学习率。初始学习率从0.0001调到0.003。批处理大小从64调到512。梯度裁剪的阈值设置为5。对于除集合模型比较外的所有实验,我们报告了10次运行的平均分和标准差。
结论
我们提出了一种高效的方法RE2,用于一般目的的文本匹配。它在三个不同的文本匹配任务中的四个经过充分研究的数据集上实现了与最先进的性能相当的性能,只有少量的参数和非常高的推理速度。它突出了三个关键特征,即先前的对齐特征、原始的逐点特征和用于序列间对齐的上下文特征,并简化了大多数其他组件。由于其速度快、性能强,该模型非常适合广泛的相关应用。
代码报错处理
1.编码方式
报错内容:
解决方案:
或者是在报错处读取文件时,强制指定编码方式
2.注意环境要求