我正在使用tf.data.Dataset API,并以x numpy数组和y numpy数组作为标签。我的x只是由字符串组成:

array([["good movie"], ["terrible film"]]

因此,我分为训练和测试并创建一个tf.data.Dataset

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=42)

dataset = tf.data.Dataset.from_tensor_slices(({"reviews": x_train}, y_train))


但是现在,我想这样做:

dataset["reviews"] = tf.string_split(dataset["sequence"])


但是这种语法是不正确的。我已经看过map,但是我不想对tf.data.Dataset中的所有列进行操作。

另外,将字符串转换为整数数组的最佳方法是什么(每个单词都获得一个唯一的整数)。所以:

["good movie"]可能会变成[2, 4]

谢谢!

最佳答案

您可以在Tensorflow存储库here中找到有关tf.data的好示例。

在存储库中,除了其并行数据集之外,它还包含两个名为src_vocab_filetrg_vocab_file的词典文件,其中包含我们语料库中的所有词汇。

首先,它使用vocab_utils.py将这两个文件转换为src_vocab_tabletrg_vocab_table

from tensorflow.python.ops import lookup_ops

src_vocab_table = lookup_ops.index_table_from_file(
      src_vocab_file, default_value=UNK_ID)


其次,它将数据集中的字符串单词拆分,缩短并转换为带有iterator_utils.py的ID:

src_dataset = src_dataset.map(lambda src: tf.string_split([src]).values)
src_dataset = src_dataset.map(lambda src: src[:src_max_len])
src_dataset = src_dataset.map(lambda src: tf.cast(src_vocab_table.lookup(src), tf.int32))

关于python - tf.data.Dataset:将字符串拆分并将其转换为整数数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52955535/

10-09 21:37
查看更多