Keras one_hot 编码 - 不能保证唯一性有什么意义?

数据挖掘 喀拉斯
2022-02-13 08:38:39

在以下示例中,文本:

“敏捷的棕色狐狸跳过了懒惰的狗。”

获取编码[5, 9, 8, 7, 9, 1, 5, 3, 8]

我的代码:

在此处输入图像描述

这样,单词' brown'和' dog'得到8和' quick'和' jumped'9的编码。

如果不能保证唯一性,编码的意义何在?

https://machinelearningmastery.com/prepare-text-data-deep-learning-keras/ https://keras.io/preprocessing/text/

2个回答

这似乎是函数名称的错误选择,因为该one_hot函数实际上正在使用散列并且等效于hashing_trick(使用标准设置)。

看到这个问题:https ://github.com/keras-team/keras/pull/6887

当我做:

from keras.preprocessing.text import one_hot
from keras.preprocessing.text import hashing_trick

text = 'The quick brown fox jumped over the lazy dog.'
print(one_hot(text, n=9))
print(hashing_trick(text, n=9))

我得到相同的结果:

[5, 6, 2, 6, 5, 8, 5, 4, 1]
[5, 6, 2, 6, 5, 8, 5, 4, 1]

因此,如果您想获得“真实的”(唯一的)单热编码结果,则需要求助于其他解决方案(我相信目前还没有 Keras 内置的解决方案)。

您可以将其视为降维,尽管重要的是要知道它如何以及为什么将某些东西放入桶中。我记得读过关于 Vowpal Wabbit 做这个的复杂版本(“特征哈希”)以处理“terafeature”。

https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Feature-Hashing-and-Extraction