※このページにはColeridgeコンペで良スコアを出す方法は書かれていません。初めて自然言語タスクに挑戦したのでその記録です。
<aside> 💡 科学論文(英文)の中から、使用しているデータセットについて言及している箇所を抽出してくるというのが本コンペのタスク
</aside>
論文内でTypoがあればTypoをそのまま抽出する
評価値はJaccard係数ベースのFBetaスコアで評価
clean_textを通して文字列の規格をそろえて評価させる
def clean_text(txt):
return re.sub('[^A-Za-z0-9]+', ' ', str(txt).lower())
train labelからマッチングで抽出してもいいprivateスコアにはならない
DiscussionやCodeから推察するにNLPの中でもNamed entity recognition (NER)タスクに当たる課題のようだが、お作法が全くわからないので周辺知識から1つづつ学んで最終的になにかサブミットをすることを目標に取り組む。
F0.5
分母のprecisionに0.25が乗算されるのが特徴(recallは等倍)
FPのペナルティがが大きい
Jaccard距離0.5以上の予測ラベルをTPにする
Jaccard距離0.5以上だが、すでに他の予測ラベルと対になっているGroundTruthの場合その予測値はFP
GroundTruthになかったらFP
予測できなかったらFN
つまり、予測し過ぎは大きいペナルティを受けやすい?
本コンペのポイントの一つとしてラベルが挙げられます。trainラベルはpublicに使われるデータには含まれるが、privateには含まれないということがホストより明示されていました。
ホストが求めるソリューションは文字列照合ではなく統計的、機械学習的なソリューションで汎用的に利用できるものですが上記ことによりtrainラベルを使ったliteral matchingをするとpublicLBではスコアが高く見えるという事象が発生してたように思います。