我正在使用tf.data.Dataset API,并且从标签的df['et'].apply(lambda et: pd.datetime.combine(datetime.datetime.strptime('2018-01-01', '%Y-%m-%d').date(),et))
numpy数组和x
numpy数组开始。我的y
仅由字符串组成:
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"]
谢谢!
答案 0 :(得分:1)
您可以在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))