返回列表

16th place solution: Data augmentation and fixes + Evaluation across different models.

463. chaii - Hindi and Tamil Question Answering | chaii-hindi-and-tamil-question-answering

开始: 2021-08-11 结束: 2021-11-15 自然语言处理 数据算法赛
第16名方案:数据增强与修正 + 跨模型评估

第16名方案:数据增强与修正 + 跨模型评估

作者: Sindhu V
比赛排名: 第16名

感谢 Kaggle 和 Google India 举办这次比赛,并祝贺所有获胜者。许多获奖者并不懂这两种语言(印地语或泰米尔语)中的任何一种或两种都不懂,这对于低资源语言来说是一个非常好的消息。

数据增强与数据修正

正如许多其他参赛者所观察到的,将 TydiQA 的泰卢固语和孟加拉语数据集加入到训练混合中,无疑提升了模型在交叉验证(CV)和排行榜(LB)上的表现。这并不令人惊讶,因为我们大多数人都在使用多语言模型,添加任何印度语问答数据集都会有更多的现实世界语境重叠。

对于所有单答案数据集,我通常会做的另一件事是先在 Squad2 或其他多答案数据集上进行微调,而不是直接在 MLM 检查点上进行微调。这使模型对“不忽略”缺失标签有了更好的直觉。XLMR 已经提供了一个我们进一步微调过的模型。我对 Muril 和 Rembert 也进行了同样的操作,两者在 LB 上都给出了一致的 0.8 - 0.81 的分数。在 Squad2 之上微调的 Muril 和 Rembert 的 Private LB 分数也处于较高范围(0.76 - 0.77)。

Chaii 数据集本身有点嘈杂。我没有修正任何错误的标签。但我通过从 @thedrcat 的微调版本(他在比赛第一周发布的)中选取第一个匹配的答案候选,修正了答案起始值

模型

我基于它们的 Squad2 检查点训练了 XLMR、Muril-Large 和 Rembert,使用了 Chaii 数据集、MLQA 印地语、XQuaD 印地语、TydiQA 泰卢固语和孟加拉语数据集。就模型本身而言,我没有做任何特别的事情,只是调整了超参数等。但因为这次比赛提供了整段文章作为上下文,这既是一个问答任务,也是一个段落选择任务。因此,我保持了 1:2 的相关与无关上下文比例,通过对 Chaii 的训练集进行采样并按原样使用其余外部数据(它们是较小的段落)来进行所有模型的训练。

Rembert 真的是一个非常有实力的模型。在这三种模型类型中,它拥有最强的自然语言理解(NLU)能力(至少在我训练它们的方式下)。举个例子:

Chaii 数据集中有一个关于“最大的山”的问题,人类标注者标记“珠穆朗玛峰”为答案。但是 Rembert(Squad2 检查点,而非 Chaii 检查点)预测为“莫纳罗亚山”,因为上下文写道“最高的山不一定意味着最大。例如,莫纳罗亚山的底面积为……”。我挑选了一个最有趣的例子。但在选择正确的上下文方面,它始终优于 Muril-Large 和 XLMR。它在从维基百科的 trivia 框中提取输出方面也表现良好。它没有标记预测答案的确切词边界,但它几乎总是有正确的答案。

集成

这是我在选择提交时搞砸的地方。我最好的内部提交来自一个 3 折的 Rembert(0.778)。但因为我认为 Rembert 在生成答案边界方面不正确,我将其段落输出输入给 Muril-Large 以生成词边界。这将分数降低到了 0.757 :P 这在相关上下文选择与答案选择之间是一场赌博,我选择了一种将两者结合的方法。回想起来,效果并不理想 :)

我会清理笔记本并稍后今天发布。目前,这里是我基于 Rembert 和 Muril-Large 微调的 Squad2 检查点。

其他有趣的方法

低资源的性质,加上印地语和泰米尔语在 NLP 领域的形态丰富性,限制了更好的预训练方法(如 MPNet 和 Electra)的使用,甚至限制了像 LUKE 这样的 SOTA QA 模型的使用。印地语是一种融合语。因此,一个词可以有多个语素,取决于性别、时态等(就像英语中的“go”与“went”)。目前看来有效的修正方法是在大量数据上进行训练。

像泰米尔语这样的粘着语完全是另一种现实。我在这次比赛中学到的一个经验法则是评估粘着语模型时,要看模型在土耳其语数据集上的指标(土耳其语是一种粘着语巨兽)。如果没有,日语数据集上的指标也同样有效。基于字符的 transformers,如 Canine

同比赛其他方案