スパムメール判別

スパムメールフィルターの開発にチャレンジ!

賞金: 100,000 参加ユーザー数: 262 約4年前に終了

6th Place Solution

6th Place Solution

pre-process

  • メール内の一番最初の改行コードを[SEP]に置換
    • メールのタイトルと本文をBERTに区別して入力
    • 文頭の"Subject: "は除去しなかった

modeling

  • Stratified 5-Fold
  • models
    • BERT
    • RoBERTa
    • Electra
    • 上記3つの出力の平均をとってアンサンブル
  • 各層の[CLS]のhidden stateの重み付き平均を出力
  • 各層ごとにlearning rateを設定
  • multi-sample dropout
  • cosine_schedul_with_warmup

post-process

what did not work

  • 本文中に多く登場した'enron', 'ect', 'hou'をtokenizerの辞書に追加
  • XLNet
    • もっとしっかりチューニングをすれば効果的だったかもしれない

反省

  • 前処理を蔑ろにしすぎました.せめてBeautiful Soupくらいは試すべきでした.
    • preprocess用の関数は作っていましたが,どこからも呼び出されていないことに終盤で気づきました.
  • 他の方の解法を見て気づきましたが,今回のようなスコアが高くなりやすいコンペではpseudo labelingを試すべきでした.
  • テストデータのラベルの割合は使用して良いのか迷いましたが,ルール上大丈夫そうかなと判断しました.
    • 実運用を考えると絶対に使えない手法なのであまり褒められた手法ではないですが…

謝辞

ProbSpaceの運営の皆様,本コンペの運営お疲れ様でした.ありがとうございました.次のコンペも楽しみにしています.

code

Favicon
new user
コメントするには 新規登録 もしくは ログイン が必要です。