不能理解imdb这个数据集的呈现

来源:7-2 数据集载入与构建词表索引

闪闪一年

2020-04-23

老师,我遇到以下问题不明白:

imdb = keras.datasets.imdb
vocab_size = 10000
index_from = 3
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(
    num_words = vocab_size, index_from = index_from)
print(train_data[0])

得到结果是

[1, 14, 22, 16, 43, 530, 973, 1622, 1385, 65, 458, 4468, 66, 3941, 4, 173, 36, 256, 5, 25, 100, 43, 838, 112, 50, 670, 2, 9, 35, 480, 284, 5, 150, 4, 172, 112, 167, 2, 336, 385, 39, 4, 172, 4536, 1111, 17, 546, 38, 13, 447, 4, 192, 50, 16, 6, 147, 2025, 19, 14, 22, 4, 1920, 4613, 469, 4, 22, 71, 87, 12, 16, 43, 530, 38, 76, 15, 13, 1247, 4, 22, 17, 515, 17, 12, 16, 626, 18, 2, 5, 62, 386, 12, 8, 316, 8, 106, 5, 4, 2223, 5244, 16, 480, 66, 3785, 33, 4, 130, 12, 16, 38, 619, 5, 25, 124, 51, 36, 135, 48, 25, 1415, 33, 6, 22, 12, 215, 28, 77, 52, 5, 14, 407, 16, 82, 2, 8, 4, 107, 117, 5952, 15, 256, 4, 2, 7, 3766, 5, 723, 36, 71, 43, 530, 476, 26, 400, 317, 46, 7, 4, 2, 1029, 13, 104, 88, 4, 381, 15, 297, 98, 32, 2071, 56, 26, 141, 6, 194, 7486, 18, 4, 226, 22, 21, 134, 476, 26, 480, 5, 144, 30, 5535, 18, 51, 36, 28, 224, 92, 25, 104, 4, 226, 65, 16, 38, 1334, 88, 12, 16, 283, 5, 16, 4472, 113, 103, 32, 15, 16, 5345, 19, 178, 32]

这里的每个数字都对应一个单词。我们想知道每个数字对应什么单词,就需要通过下面的代码获得每个词对应的ID.

word_index = imdb.get_word_index()
print(word_index)

图片描述
输出的结果里key指的是单词,value是这个单词的一个‘ID’.

print(len(word_index))

输出结果为88584个词。

  • Q1:88584个词是如何产生的?我们假设这个数据集是关于所有电影评论(一个评论是一条数据),那难道是取了所有评论中用过的单词,去重后得到的?
  • Q2:每个单词对应的ID是如何产生的?是88584个单词按照一定规则排列好后然后赋值给它们吗?还是英语体系就有这么个类似大字典的东西,固定的单词都有个固定的ID.
  • num_words 这里说是取前10000个词形成词表,这里的词表是干什么用的?为什么是前10000个?
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(
    num_words = vocab_size, index_from = index_from)

代码似乎没有一个变量来储存这个前10000个词…

写回答

1回答

正十七

2020-05-13

  1. 88584是所有词的集合,你理解的没错。

  2. 每个词的id,我理解应该是按照词频排序,然后依次获得的。

  3. 虽然你获得的词表是88584的大小,但是你可以看看train_data和test_data中,它们里面只有10000个词。之所以用前1万个是要缩减模型大小,同时提高模型能力,毕竟在出现次数少的词是学不到规律的,只能当做噪音。

0
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程