对于文本列表,
sent = ["I am whatever you say I am and if I wasn't, why would you say I am" ,
'but but but, anyways, it is still me because I am me']
tokenizer_obj = Tokenizer(num_words=15)
tokenizer_obj.fit_on_texts(sent)
您从tokenizer_obj.texts_to_sequences(sent)
那里得到了答案
为
>>> [[1, 2, 7, 4, 5, 1, 2, 8, 9, 1, 10, 11, 12, 4, 5, 1, 2],
[3, 3, 3, 13, 14, 6, 1, 2, 6]]
并且来自tokenizer_obj.word_index
,它是基于频率as的单词字典
{'i': 1,
'am': 2,
'but': 3,
'you': 4,
'say': 5,
'me': 6,
'whatever': 7,
'and': 8,
'if': 9,
"wasn't": 10,
'why': 11,
'would': 12,
'anyways': 13,
'it': 14,
'is': 15,
'still': 16,
'because': 17}
我了解到,倾斜是基于最频繁的单词进行的,但是如果出现平局并且我的情况是字典中的单词出现,那么所有单词的频率都是1。这样做的标准是什么,因为我看不到任何模式。
加上代码,tokenizer_obj.texts_to_matrix(sent)
返回一个二进制二进制格式
>>> array([[0., 1., 1., 0., 1., 1., 0., 1., 1., 1., 1., 1., 1., 0., 0.],
[0., 1., 1., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 1., 1.]])
那代表什么?
答案 0 :(得分:1)
让我们举一个简单的例子。
sent = ["I am whatever you say say"]
如果频率上有平局,则下一行将是出现的单词的“顺序”。首先出现的单词获得较低的ID。您可以使用以下示例对此进行验证。
tokenizer_obj = Tokenizer(num_words=6)
tokenizer_obj.fit_on_texts(sent)
print(tokenizer_obj.word_index)
哪个给
>>> {'say': 1, 'i': 2, 'am': 3, 'whatever': 4, 'you': 5}
在这里您可以看到,“ say”(最常用)一词获得的ID最低,其余的后面是它们在语料库中出现的顺序。
texts_to_matrix
做什么?它只是一个长为二进制向量(num_words
)个元素。每个索引处的值指示数据中是否存在该单词(具有索引指示的ID)。例如。如果我们使用单词“ I”(其ID为2),则索引2处的元素将设置为1。
print(tokenizer_obj.texts_to_matrix(sent))
>>> [[0. 1. 1. 1. 1. 1.]]
您可能会注意到前导0。0是keras令牌生成器中的反向ID,用于指示填充。因此,只有在您的句子中有填充时,该值才会变为1。