雑記

お気付きの点がありましたらご指摘いただけますと幸いです。

💜

f:id:cookie-box:20211229165400p:plain:w70
  • TensorFlow Datasets の IMDB データセット(映画レビューのデータセット)[1] をロードすると、確かに 25000 件の訓練データと 25000 件のテストデータがあるのですね。最初の 5 件をみてみると、最初の 3 つがラベル 0 で、その次の 2 つがラベル 1 で、最初のデータが完膚なきまでにネガティブですから 0 がネガティブで 1 がポジティブのラベルであることがわかりますね。しかし、最初のデータこそあからさまですが、2 つ目は 1 文目ではまだ本題に入っていませんし(面白いレビューですね)、3 つ目などは 1 文目だけみると褒めているようにみえますね。さまざまなモデルがどれもセンチメント予測を誤るレビューが存在するのでしょうか? モデルによりどのレビューを誤るかはばらつくのでしょうか?
  • import tensorflow_datasets as tfds
    
    data = tfds.load('imdb_reviews')
    assert len(data['train']) == 25000
    assert len(data['test']) == 25000
    
    data_train = data['train'].take(5)
    for x in data_train:
        print(x)
    

  • 各レビューをトークナイズして単語インデックスの列とするにはこうですね。無論実際には最初の 5 レビューだけで語彙を構築しないでください。
  • vocabulary = set()
    tokenizer = tfds.deprecated.text.Tokenizer()
    for x in data_train:
        vocabulary.update(tokenizer.tokenize(x['text'].numpy()))
    
    encoder = tfds.deprecated.text.TokenTextEncoder(vocabulary)
    for x in data_train:
        print(encoder.encode(x['text'].numpy()))
    
    [310, 161, 282, 294, 237, 167, 243, ...
    [298, 33, 137, 117, 180, 276, 226, ...
    [174, 272, 99, 307, 262, 255, 84, ...
    [310, 123, 99, 49, 230, 257, 10, ...
    [72, 254, 33, 204, 85, 99, 132, ...