第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
- 损失函数: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_text和prompt_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(填充词数)