在Keras中处理输入字符串的最佳方法是什么?

时间:2020-07-28 10:06:12

标签: python python-3.x tensorflow machine-learning keras

我有一个数据集,其中name是一个重要特征。我想用它在python的keras神经网络中有一个输入节点。但这是不可能的,最好的方法是什么?

我尝试了一种热编码,但是由于名称的长度不固定,所以没有用吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Embeddings,它将大的稀疏向量(单热编码)转换为保留语义关系的低维空间。因此,对于分类功能,您将具有密集的矢量表示。

unique_amount = np.unique(col1)
input_1 = tf.keras.layers.Input(shape=(1,), name='input_1')
embedding_1 = tf.keras.layers.Embedding(unique_amount_1, 50, trainable=True)(input_1)
col1_embedding = tf.keras.layers.Flatten()(embedding_1)

50处-您可以自行选择的嵌入向量的大小。

答案 1 :(得分:1)

您可以尝试使用character中的keras一级热编码。确保在char_level=True中设置Tokenizer标志。这可能导致我们的维数稀疏矩阵很低。

from keras.preprocessing.text import Tokenizer
tokenizer = Tokenizer(char_level=True)
tokenizer.fit_on_texts(<names>)
sequence_of_int = tokenizer.texts_to_sequences(<dataset_names>)

甚至,您也尝试用自己来表示基于频率的字符编码。