返回列表

5th place solution & magic

386. Tweet Sentiment Extraction | tweet-sentiment-extraction

开始: 2020-03-23 结束: 2020-06-16 自然语言处理 数据算法赛
第5名解决方案与“魔法”

第5名解决方案与“魔法”

作者: tkm2261 (Grandmaster) | 比赛排名: 第5名

大家好,
首先,恭喜获奖者!我们稍微落后于你们。我们非常享受这次比赛。由于“魔法”的存在,这次比赛与标准的机器学习比赛有些不同。这让我们感觉像是在解某种谜题,尽管这对我们来说也很有趣。

“魔法”

我猜这只是他们在创建此任务时引入的一个错误(Bug)。这里展示一个典型的例子。
示例图片

给出的原始标注是“onna”,但这太奇怪了。真正的标注应该是“miss”(这是一个否定句)。我们认为主办方在处理包含大量空格、表情符号或颜文字的原始文本时,错误地应用了在标准化文本(去除多余空格等)上获得的切片位置。因此,这次比赛的流程应该如下:

  • 从有错误的标注中恢复真实标注(预处理)。
  • 使用真实标注训练模型。
  • 预测正确的标注。
  • 将正确的标注投射回有错误的标注(后处理)。

我们将这种预处理和后处理称为“魔法”。在我们发现这一点后,我们的分数从 0.713 跃升至 0.721。也许,我们也可以通过端到端模型完成这4个步骤,正如有些人声称他们没有使用任何后处理一样。从 0.721 到 0.731,我们改进了单个模型,进行了模型融合,并改进了预处理和后处理。

模型

  • 我们使用了 RoBERTa 和 BERTweet。
  • 在字符级别融合了所有5名成员的模型。
  • 我们在模型训练中没有做特别的事情。
  • 我们只使用了 train.csv(没有使用 sentiment140 和 complete-tweet-sentiment-extraction-data 数据集)。

后处理改进

假设模型(Token级别)是完美的,我们通过预处理和后处理最大化 Jaccard 得分。这是一个示例:
https://www.kaggle.com/tkm2261/pre-postprosessing-guc

>>>> FOLD Jaccard all = 0.9798682269792468
>>>> FOLD Jaccard neutral = 0.9961648726550028
>>>> FOLD Jaccard positive = 0.969571077575057
>>>> FOLD Jaccard negative = 0.96793968688976

在完美模型的假设下,这个结果可以解释为:如果模型是完美的,我们可以达到 0.9798682269792468。然后,我们将此后处理应用于我们的模型预测。这个流程运行得非常好。任何成员都可以测试自己的后处理想法,如果提高了分数,就与团队分享。

总之,据我们所知,这次比赛是一场重现嵌入的人为错误的比赛。当我发现这个“魔法”时,我也有一点失望。但是,也许,注意到数据中的此类错误应该是数据科学家的一项技能。我们不应该只是应用模型,而应该仔细深入数据。

如果您有任何问题,请随时在此主题中提问。
谢谢。

同比赛其他方案