機械学習(特に強化学習)が好きな人のノート

機械学習関連のことをまとめていきます。強化学習関連が多いかもしれません

【keras, データセット】ロイターのニュースワイヤーデータセット

今回はkerasが提供しているロイターのニュースワイヤーデータセット
ついて調べた内容をお話します。

データセットの概要

ロイターのニュースワイヤーデータセットとは、
ロイター通信社のニュースに感情のラベル付けをしたデータセットです。
各ニュースに肯定/否定の情報が付与されています。

kerasでは、各レビューは頻出単語のベクトルで変換してあるので、
モデルの学習をしやすくなってます。

データの内容

まず、以下のコードでデータを読み込みます。
今回は頻出頻度上位1000個の単語(num_words)を対象とし、
各文章の出現頻度上位20単語(maxlen)のベクトルをレビュー(文章)を表現します。
対象外(頻出頻度上位100個に入らない単語)の場合は2(oov_char)で表現します。

import keras
from keras.datasets import reuters

(x_train, y_train), (x_test, y_test) = reuters.load_data(path="reuters.npz",
                                                         num_words=1000,
                                                         skip_top=0,
                                                         maxlen=20,
                                                         test_split=0.2,
                                                         seed=113,
                                                         start_char=1,
                                                         oov_char=2,
                                                         index_from=3)

説明変数(X)

説明変数は、各レビューに含まれる頻出単語ベクトルになります。

x_trainの最初の要素を見てみます。

print(x_train[0])
# =>
[1, 2, 2, 8, 43, 10, 447, 5, 25, 207, 270, 5, 2, 111, 16, 369, 186, 90, 67, 7, 89, 5, 19, 102, 6, 19, 124, 15, 90, 67, 84, 22, 482, 26, 7, 48, 4, 49, 8, 864, 39, 209, 154, 6, 151, 6, 83, 11, 15, 22, 155, 11, 15, 7, 48, 9, 2, 2, 504, 6, 258, 6, 272, 11, 15, 22, 134, 44, 11, 15, 16, 8, 197, 2, 90, 67, 52, 29, 209, 30, 32, 132, 6, 109, 15, 17, 12]

自然数は単語(単語インデックス)を表しています。
もし、全体頻出頻度100単語に含まれない単語の場合2という値を割り当てています。
これが、文章の特徴となっています。

単語インデックスに割り振られてる単語の調べ方

imdbのデータセットとは異なり、
各単語に割り振られているインデックス(単語インデックス)を確認できます。
以下のコードで単語インデックスの辞書を取得できます。

word_index = reuters.get_word_index(path="reuters_word_index.npz")

「station」に割り振られてるインデックスを確認してみます。

print(word_index["station"])
# => 2898

つまり、2898という数字は「station」を表しています。

目的変数(Y)

次に目的変数を見てみます。
目的変数は感情(肯定/否定)の2値をとります。
つまり、0か1となります。
先程の文章(x_train[0])の目的変数(y_train[0])は

print(y_train[0])
# => 0

参考文献

https://keras.io/ja/datasets/