返回列表

25th place solution

574. CommonLit - Evaluate Student Summaries | commonlit-evaluate-student-summaries

开始: 2023-07-12 结束: 2023-10-11 智能评测 数据算法赛
第25名解决方案 - CommonLit评估学生摘要竞赛
比赛:CommonLit评估学生摘要竞赛
排名:第25名
作者:nogawanogawa
发布时间:2023年10月12日

第25名解决方案

祝贺所有获奖者!
感谢组织者和所有参与者!我真的很享受这场激动人心的比赛!

这是我的最终解决方案!

概述

正如我之前发布的,我使用了Deberta + LGBM的组合方法。

CV-LB分数摘要

wording CV content CV CV Public Private
DebertaV3-base 0.425 0.542 0.483 0.490 0.478
DebertaV3-large 0.412 0.534 0.477 未提交 未提交
DebertaV3-base + DebertaV3-large with LGBM tric 0.419 0.551 0.485 0.433 0.463

第一阶段:Deberta

  • 基础模型:DebertaV3-base, DebertaV3-large
  • 输入格式:prompt_text + [SEP] + prompt_question + [SEP] + text
    • 最大长度 = 2000
  • 损失函数:MCRMSE损失
  • 自定义头部:平均池化(仅使用text部分)
  • 推理:取CV分数最高的3个模型的平均值(避免推理超时)

顺便展示一下使用全部数据训练(不划分CV)的模型分数:

wording CV content CV CV Public Private
DebertaV3-base (全数据, epoch=2) - - - 0.470 0.481
DebertaV3-large (全数据, epoch=2) - - - 0.480 0.465

似乎使用单个模型(DebertaV3-large,全数据训练,epoch=2)可以达到银牌分数。

为什么使用prompt_text

我认为很多参赛者都在wording的RMSE上遇到了困难。

在我看来,这个大误差可能来自主办方进行的分数旋转

如果比赛提供的内容和wording分数已经旋转了30度,那么我们得到的分数会是这样:

  • 内容分数(表面) = 原始内容分数 × cos30° + 原始wording分数 × -sin30°
  • wording分数(表面) = 原始内容分数 × sin30° + 原始wording分数 × cos30°

因此,如果我的想法正确,比赛数据集的内容和wording分数将同时包含原始内容和wording成分。

内容和wording分数的含义由主办方共享,原始内容分数基于以下组成部分:

  • 主要思想
    • 摘要对原文主要思想的捕捉程度如何?
  • 细节
    • 摘要对原文细节的准确捕捉程度如何?
  • 连贯性
    • 摘要从一个想法过渡到下一个想法的流畅程度如何?

我认为表面wording分数不仅包含wording内容分数,还包含原始内容分数。因此,为了提高表面wording的准确性,我认为有必要准确预测原始内容分数,并使用prompt_text来预测原始内容分数。

(没人知道真相是什么,这只是我的观点...)

为什么使用自定义头部?

到目前为止,我已经证明了使用prompt_text更好。

但是,我认为简单地使用prompt_text会导致输入token更多,从而带来更多噪声。结果,我认为我们无法获得好的CV分数。

所以我使用了自定义头部,仅将text部分输入到最终层。我认为我们可以使用prompt_textprompt_question,但让Deberta专注于text

第二阶段:LightGBM

我使用之前发布的LGBM tric方法。

使用的特征

  • deberta输出
    • content_debertav3_large_prompt_text_text_ver2_pred
    • content_debertav3_base_prompt_text_text_ver2_pred
    • wording_debertav3_large_prompt_text_text_ver2_pred
    • wording_debertav3_base_prompt_text_text_ver2_pred
  • 手工特征
    • num_chars(字符数)
    • num_unique_words(唯一词数)
    • embedding_sim(句子转换器相似度)
    • tfidf_sim(TF-IDF相似度)
    • subjectivity(主观性)
    • trigram_overlap_ratio(三元组重叠率)
    • difficult_words(困难词数)
    • coleman_liau_score(Coleman-Liau指数)
    • polarity(极性)
    • nn_count(名词数)
    • summary_length(摘要长度)
    • dale_chall_readability_score(Dale-Chall可读性分数)
    • num_stopwords(停用词数)
    • mean_tokens_in_sentence(句子平均词数)
    • bigram_overlap_ratio(二元组重叠率)
    • flesch_reading_ease(Flesch阅读难易度)
    • jj_count(形容词数)
    • max_count_per_sentence(单句最大词数)
    • vb_count(动词数)
    • mean_count_per_sentence(平均句长)
    • osman(Osman可读性指数)
    • linsear_write_formula(Linsear Write公式)
    • gunning_fog(Gunning迷雾指数)
    • word_overlap_count(词重叠数)
    • splling_err_num(拼写错误数)
    • szigriszt_pazos(Szigriszt-Pazos指数)
    • smog_index(SMOG指数)
    • median_count_per_sentence(句长中位数)
    • pr_count(代词数)
    • num_words_title(标题词数)
    • min_count_per_sentence(单句最小词数)
    • num_punctuations(标点符号数)
    • fernandez_huerta(Fernandez-Huerta指数)
    • gulpease_index(Gulpease指数)
    • gutierrez_polini(Gutierrez-Polini指数)
    • crawford(Crawford指数)
    • automated_readability_index(自动可读性指数)
    • bigram_overlap_count(二元组重叠数)
    • trigram_overlap_count(三元组重叠数)
    • flesch_kincaid_grade(Flesch-Kincaid年级水平)
    • num_sentences(句子数)
    • cd_count(限定词数)
    • quotes_count(引号数)
    • num_words_upper(大写词数)
    • num_paragraphs(段落数)
    • uh_count(填充词数)
同比赛其他方案