您的示例是胡言乱语的,它比仅缺少一些停用词要糟糕得多。
如果您重新阅读[ keras.datasets.imdb.load_data
]( https://keras.io/datasets/#imdb-movie-reviews-sentiment-classification )方法的start_char
, oov_char
和index_from
参数的文档他们解释发生了什么:
start_char
:整数。序列的开始将用此字符标记。设置为1是因为0通常是填充字符。
oov_char
:整数。由于num_words或skip_top限制而被切掉的单词将被替换为该字符。
index_from
:int。使用此索引和更高的索引来索引实际单词。
您倒置的字典假定单词索引从1
开始。
但是我返回的喀拉拉邦的索引具有<START>
和<UNKNOWN>
作为索引1
和2
。 (并且假定您将对<PADDING>
使用0
)。
这对我有用:
import keras
NUM_WORDS=1000 # only use top 1000 words
INDEX_FROM=3 # word index offset
train,test = keras.datasets.imdb.load_data(num_words=NUM_WORDS, index_from=INDEX_FROM)
train_x,train_y = train
test_x,test_y = test
word_to_id = keras.datasets.imdb.get_word_index()
word_to_id = {k:(v+INDEX_FROM) for k,v in word_to_id.items()}
word_to_id["<PAD>"] = 0
word_to_id["<START>"] = 1
word_to_id["<UNK>"] = 2
word_to_id["<UNUSED>"] = 3
id_to_word = {value:key for key,value in word_to_id.items()}
print(' '.join(id_to_word[id] for id in train_x[0] ))
标点符号丢失了,仅此而已:
"<START> this film was just brilliant casting <UNK> <UNK> story
direction <UNK> really <UNK> the part they played and you could just
imagine being there robert <UNK> is an amazing actor ..."
0
从Keras的imdb数据集中恢复原始文本
我想从Keras的imdb数据集中恢复imdb的原始文本。
首先,当我加载Keras的imdb数据集时,它返回单词索引序列。
我找到了imdb.get_word_index method(),它返回单词索引字典,例如{'create':984,'make':94,…}。为了进行转换,我创建了索引词字典。
然后,我尝试还原原始文本,如下所示。
我的英语不好,但是我知道这句话有些奇怪。
为什么会这样呢?如何还原原始文字?