我正在使用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]
谢谢!
发布于 2018-11-11 09:12:29
您可以在Tensorflow存储库这里中找到关于这里的一个很好的示例。
在存储库中,除了它的并行数据集外,它还包含两个字典文件,名为src_vocab_file
和trg_vocab_file
,它们包含了我们语料库中的所有词汇表。
First,它通过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))
https://stackoverflow.com/questions/52955535
复制