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:
            # 小文字化した単語は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を平均してモデルに突っ込むだけではうまくいかないようです。

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