show-us-the-data コンペ解法(76th)
解法
タスクは論文内で使用されているデータセット名を抽出するというものでした。行った内容としては
- 文字列マッチのDistant SupervisionでNERデータセットを作成
- 一部同義語や類義語 (data ⇔ dataset, study ⇔ survey 等)を用いたNERデータセットのData Augmentation
- データを直接見て、データセット名+略語のパターンが頻出していたので、その抽出
- NERモデル+略語抽出で得られた候補をフィルタリング
を行いました。
コード
反省点
初参加のコンペでした。主に以下の2つが重要だと実感したコンペだと感じました。
- データをよく見ること
- 与えられたデータから、テストデータの入力を想像すること
今回のコンペで事前に与えられた訓練用データは、アノテーションされたデータセット名のラベル偏りがありました。それゆえ、訓練データとPrivateデータが同じ分布のデータだとは限らない、もしそれを仮定した予測モデルを作成したならば、Privateデータ全体の評価で大幅な精度ダウンが起こりうることが予測されていました。
https://www.kaggle.com/c/coleridgeinitiative-show-us-the-data/discussion/238005
ふたを開けてみると、結果はその通りでした。実際、与えられたデータでNERモデルを訓練しても、結局そのNERモデルで取得できるデータ名は、訓練データ内に出現したデータ名のみに限られてしまいます。
今回は実際にデータを見て、略語によるデータ名抽出が有効だと考えたのでその抽出を織り込んだことで、なんとか銀圏に繋がったようでした。
自然言語処理屋だと、初手BERTをついつい選択しがちではありますが、
- データの傾向をつかむこと
- 訓練データ外の入力を想像すること
- Deep以外のアプローチの選択肢
これらの重要性を痛感したコンペでした。次のコンペは、これらの反省点を生かして取り組みたいと思います。