szdr
データセットにはテキストデータとして論文のtitle
およびabstract
が与えられています。
これらのテキストデータに対し、以下3つのpretrainedモデルから300次元のベクトルを生成し、Linear RegressionおよびLightGBMでcites
を予測してみます。
pretrainedモデル
title
およびabstract
は複数単語からなるため、word embeddingを何かしらの方法で集約する必要があります。
今回は単純に平均を取ってみました。
def get_text_emb(emb_model, text):
tokens = text.split(" ")
embs = []
for token in tokens:
emb = None
try:
emb = emb_model.get_vector(token)
except KeyError:
# 小文字化した単語はvocabularyに含まれているかもしれない
try:
emb = emb_model.get_vector(token.lower())
except KeyError:
emb = np.zeros(300)
if emb is None:
raise RuntimeError("emb is none")
embs.append(emb)
mean_embs = np.mean(embs, axis=0)
return mean_embs
5-foldによるcross-validationでOOF-RMSLEを比較しました。
title
モデル\pretrainedモデル | GoogleNews | crawl | wiki-news |
---|---|---|---|
LinearRegression | 1.191 | 1.187 | 1.187 |
LightGBM | 1.178 | 1.174 | 1.176 |
abstract
モデル\pretrainedモデル | GoogleNews | crawl | wiki-news |
---|---|---|---|
LinearRegression | 1.180 | 1.175 | 1.177 |
LightGBM | 1.172 | 1.164 | 1.166 |
参考:$\hat{\rm{cites}}=12.144$ (log1p取ると2.576)で予測した際のOOF-RMSLE=1.191
単純にword embeddingを平均してモデルに突っ込むだけではうまくいかないようです。