title, abstractのembedding + Linear Regression/LightGBMでモデリング
データセットにはテキストデータとして論文のtitle
およびabstract
が与えられています。
これらのテキストデータに対し、以下3つのpretrainedモデルから300次元のベクトルを生成し、Linear RegressionおよびLightGBMでcites
を予測してみます。
pretrainedモデル
- GoogleNews-vectors-negative300.bin (word2vec)
- crawl-300d-2M.vec (fasttext)
- wiki-news-300d-1M.vec (fasttext)
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:
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を平均してモデルに突っ込むだけではうまくいかないようです。