我正在使用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_file
和trg_vocab_file
的词典文件,其中包含我们语料库中的所有词汇。
首先,它使用vocab_utils.py将这两个文件转换为src_vocab_table
和trg_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/