本コンペでは、論文のタイトル、アブストラクト、キーワードなどの自然言語情報から、その論文が国際学会で採択されるかどうかを予測していただきます。
国際学会での論文掲載は、研究者にとっての重要な節目であり、その実績はその後のキャリアに大きな影響を与えます。
論文が採択される可能性は、文章の質、テーマ、研究の新しさなどが影響します。特に、多くの論文が集まる国際学会においては、始めに査読の目に留まる、アブストラクトの品質が特に重要です。
そこで、本コンペでは、論文本文を含まないタイトル・アブストラクト等の情報が、国際学会の採択率にどの程度影響するかを考察したいと思います。
コンペティションを通して、審査者がどのような判断基準で採択を決定しているのかなどの洞察につながれば幸いです。
1位:100,000円
提出締切 2023年5月7日 22:00 JST
LB公開 2023年5月7日 24:00 JST
データをダウンロードするにはログインまたはユーザー登録して下さい
コンペに使用するデータは大きく2つです。
訓練データ、テストデータに、それぞれ4,974件、6,393件のデータが含まれます。
データはICLRに投稿された論文のメタデータを収集して作成したものです。訓練データは2018 - 20年に投稿された論文のデータ、テストデータには2021,22年に投稿された論文のデータが含まれています。
column name | description |
---|---|
id | ユニークなid |
title | 投稿論文のタイトル |
abstract | 概要 |
tldr | "要約" Too Long, Didn't Read |
keywords | キーワード、カンマ区切り |
y | 論文のカテゴリ、(0: Reject, 1: Accept) |
出典:下記をもとに改変し利用
https://openreview.net/
目標はテストデータセットの論文データにもとづき、採択種別の予測をすることです。yを0,1のいずれかで予測してくだい。
回答用のsubmission.csvを用意します(エントリーとヘッダー行を含む) 。
提出されたファイルに余分な行や列(idとy以外)が含まれていた場合はエラーとなります。
提出ファイルは以下の列のみを必ず含んでください:
id,y
1, 1
2, 1
3, 0
4, 0
本コンペでは、開催期間終了後 賞金対象者のコードを公開し、ユーザーの皆様にチーティング有無をレビューしていただき順位確定させる、オープンレビュー方式のコンペティションを行います。
コード公開後1週間:
レビュアー(ユーザー)より、チーティングの疑いに関するコメントがある場合は、ご回答をお願いいたします。
※チーティングとは無関係のコメント(ノウハウに関する質疑 等)についてもご回答いただけると幸いですが、順位確定の判断材料とは致しません。
レビュアーからの質疑と、回答状況をふまえて、最終的に運営側で順位確定を判断します。
開始 2022/2/7 0:00 JST
提出締切 2023/5/7 22:00 JST
終了日 2023/5/7 24:00 JST
エントリー締め切り なし
ユーザー間での情報共有
コンペティションに関連するコード・データを、チーム外のユーザーと共有することはできません。全参加者が利用できる場合に限り、共有可能です。
外部データの使用
「基本情報/データ欄」より取得できるデータのみを用いてチャレンジして下さい。
ただし、次項にて定められる事前学習モデルについては使用可能です。
※コンペ期間中であっても、不正が疑われる場合は、運営より確認のためメール連絡させていただくことがございます。一週間以内にご回答いただけない場合も、不正と判断させていただきます。
データがリークしてしまう可能性のあるモデル(例: ICLR, OpenReview 等で採択結果・引用数を用いて学習しているモデル)を除き、事前学習モデルの利用は可能です。
判断に迷う場合は、トピック、メール等にて運営にお問い合わせください。利用可否について判断いたします。
公平性の担保、チーティング等の不正防止のため、予告なくルールの追加・変更を行う場合がございます。
ご不便をおかけすることもあるかと思いますが、サービス向上のためご了承ください。
はい。
最も精度の高い学習モデルを作成した優勝者には、賞金を贈呈します。
順位確定までのプロセスについては、ルール「Open Review Competition」を参照ください。
可能です。チームページから作成いただけます。
こちらから作成いただけます。
コンペティション参加にはアカウント登録が必要となりますのでご注意ください。
本コンペティションの基本情報/データから取得できるデータのみを用いてチャレンジして下さい。
Seed を固定することが推奨です。
ただし、Seed を固定しなくても提出用コードとしては認めています。
このチュートリアルでは、論文のメタデータに対して
を行います。
#環境確認
import pandas as pd
import numpy as np
import sklearn
import gensim
!python3 --version
print(pd.__version__)
print(np.__version__)
print(sklearn.__version__)
import matplotlib
print(matplotlib.__version__)
print(gensim.__version__)
Python 3.10.6
1.5.2
1.23.5
1.2.1
3.6.3
4.3.0
まずはデータを読み込んで見ましょう。csvデータの読み込みにはpd.read_csv
関数を用います。
#データの読み込みと前処理
train_file = 'train_data.csv'
df = pd.read_csv(train_file, index_col='id')
データにはid
, タイトル、概要、キーワードが含まれているようです。
論文のタイトルと概要は重要な情報と考えられるのでgensim
を用いてベクトルに変換を行います。
emb_model = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
X = []
y = []
for index, data in df.iterrows():
title = data['title']
title = title.replace('-', ' ')
abstract = data['abstract']
emb_title = np.mean([emb_model[w.lower()] for w in title.split(' ') if w.lower() in emb_model], axis=0)
emb_abstract = np.mean([emb_model[w] for w in abstract.split(' ') if w in emb_model], axis=0)
if emb_title.ndim == 0:
emb_title = np.zeros(300)
X.append(np.concatenate([emb_title, emb_abstract], axis=0))
y.append(data['y'])
/opt/homebrew/lib/python3.10/site-packages/numpy/core/fromnumeric.py:3432: RuntimeWarning: Mean of empty slice.
return _methods._mean(a, axis=axis, dtype=dtype,
/opt/homebrew/lib/python3.10/site-packages/numpy/core/_methods.py:190: RuntimeWarning: invalid value encountered in double_scalars
ret = ret.dtype.type(ret / rcount)
X = np.array(X)
y = np.array(y)
X.shape, y.shape
import matplotlib.pyplot as plt
%matplotlib inline
plt.hist(y)
モデルに投入する目的変数(y),説明変数(X)を作成します
いよいよ予測モデルの作成に入ります。model.fit('説明変数','目的変数')
と記述することでモデルの学習が可能となります。目的変数を説明変数の組み合わせで説明可能な回帰モデルを作成できます。
#scikit-learnライブラリをimport
import sklearn
from sklearn.neural_network import MLPClassifier
#線形回帰モデルのインスタンス化
model = MLPClassifier()
#予測モデルの作成
model.fit(X, y)
テストデータに対する回帰モデルの当てはまりの良さの指標としてはaccuracy
などの指標が用いられます。accuracy
の値は、.score
で確認が可能です。
1に近いほど予測された値がデータに当てはまることを表します。
model.score(X, y)
1.0
今回作成したモデルの学習データに対するaccuracy
は1.0
程度でした。
最後に、作成したモデルを使用してテストデータでの採択不採択を予測します。
test_df = pd.read_csv('test_data.csv', index_col='id')
test_X = []
for index, data in test_df.iterrows():
title = data['title']
title = title.replace('-', ' ')
abstract = data['abstract']
emb_title = np.mean([emb_model[w.lower()] for w in title.split(' ') if w.lower() in emb_model], axis=0)
emb_abstract = np.mean([emb_model[w] for w in abstract.split(' ') if w in emb_model], axis=0)
if emb_title.ndim == 0:
emb_title = np.zeros(300)
test_X.append(np.concatenate([emb_title, emb_abstract], axis=0))
先ほど使用したmodel.predict('説明変数')
の'説明変数'にテストデータの値を代入することで、テストデータの予測値を算出することができます。
下記のようにして、提出用のsubmission.csv
を出力することが可能です。
#テスト結果の出力
test_predicted = model.predict(test_X)
submit_df = pd.DataFrame({'y': test_predicted})
submit_df.reset_index(drop=True)
submit_df.index += 1
submit_df.index.name = 'id'
submit_df.to_csv('submission.csv')
コンペティションへの参加に際しては、ProbSpace利用規約(以下、「利用規約」といいます。)に加え、本ProbSpace参加規約(以下「本規約」といいます。)に同意いただく必要があります。利用規約にて定義された用語は、本規約においても同様の意味で用いられるものとします。
第1条(適用)
第2条(定義)
本規約において次の各用語の定義は、それぞれ以下に定めるとおりとします。
第3条(権利の帰属)
第4条(入賞者の義務)
第5条(禁止事項)
第6条(本コンペの変更、中断、終了等)
第7条(損害賠償)
第8条(本規約の変更)
当社は、必要と判断した場合には、参加者に対して事前に通知する(本コンペにかかる当社ウェブサイト上での告知その他当社が適当と認める方法を含みます。)ことにより、いつでも本規約を変更することができるものとします。なお、変更内容の通知後、参加者が当社の定める期間内に本コンペへの参加を取り消す手続をとらなかった場合には、当該参加者は変更後の規約に同意したものとみなされます。当社は、本規約の変更により参加者に生じたすべての損害について一切の責任を負いません。
第9条(その他)
本契約の準拠法は日本法とし、本契約に起因し又は関連する一切の紛争については、当社の本店所在地を管轄する裁判所を第一審の専属的合意管轄裁判所とします。
(制定)2020年6月22日