来自 Keras 的 one_hot 为不同的单词产生相同的值

问题描述 投票:0回答:1

我正在使用 keras 的 one_hot 函数将我的单词转换为数字。但由于某种原因,它为不同的单词产生相同的数字。在下面的代码中,您可以看到 48 用于“amazing”,但 48 也用于“too”。这是为什么?

from tensorflow.keras.preprocessing.text import one_hot

reviews = ['nice food',
        'amazing restaurant',
        'too good',
        'just loved it!',
        'will go again',
        'horrible food',
        'never go there',
        'poor service',
        'poor quality',
        'needs improvement']

# convert to ont hot vector 
encoded_reviews = [one_hot(d, vocab_size) for d in reviews]

当我打印encoded_reviews时,它显示:

[[13, 12],
 [48, 44],
 [48, 19],
 [38, 28, 46],
 [13, 29, 19],
 [46, 12],
 [19, 29, 4],
 [18, 38],
 [18, 35],
 [42, 7]]
machine-learning keras
1个回答
0
投票

由于one-hot编码使用散列,因此存在冲突的可能性 其中不同的单词被分配相同的索引。的概率 冲突随着词汇量的增加而增加。然而,更大的词汇量可以 还可以改善不同单词的表示。 杰森·布朗利建议 使用比独特单词数量大 25% 左右的词汇量 平衡碰撞风险和表示质量。通过增加 所提供代码中的词汇量、文本的数字表示 更改,导致不同的编码值。请参考此gist

© www.soinside.com 2019 - 2024. All rights reserved.