我试图通过连接来自2个不同来源的数据来创建TensorFlow数据集。我正在尝试从以下论文中复制数据集的创建:
可通过以下链接在BigQuery上获取数据集:
基本上我有一个CSV文件,其中包含3列“上下文”,“响应”,“作者”,如下所示:
dataset = tf.data.experimental.CsvDataset(
"data/2007.csv",
record_defaults=[tf.string, tf.string,tf.string],
select_cols=[0, 1, 2],
field_delim=",",
header=True)
dataset = dataset.shuffle(buffer_size=10000)
dataset = dataset.batch(20)
iter = dataset.make_one_shot_iterator()
然后我想根据“作者”字段是什么,从MongoDB向我的数据集中添加另一个字段“ Persona”。我知道有一个map函数可以像这样使用:
dataset = dataset.map(map_func=data_map)
并实现data_map函数来查询mongo以获取结果。 我的想法是这样的:
def data_map(context, response, author):
# iterate author tensor and do pyMongo queries to fetch 'persona's
return {'Context': context,
'Response': response,
'Author': author,
'Persona': persona}
我的问题是什么是有效的方法。
我的数据集大于1TB,我需要在Mongo上使用字段“ Persona”来快速查询。我无法在csv文件中使用它,因为它会变得很大(同一作者有很多行,每个作者都有一个Persona,每个角色都有100多个句子)。我应该遍历Author张量并查询mongo,然后为'Persona'构建一个张量吗?还有其他更有效的方法吗?