我正在查看对大量文本数据的数据预处理任务,并希望将预处理后的数据加载到 TensorFlow 2.x 中。预处理数据包含整数值数组,因为预处理步骤生成:
- 一个热编码数组作为标签列
- 每个数据行的标记化标记列表
- 用于变压器的激活掩码
所以,我一直在想我会使用 pyspark 来预处理数据并将结果转储到JSON
文件中(因为 CSV 无法存储结构化数据)。到目前为止,一切正常。但是我在处理JSON
文件时遇到了麻烦tf.data.Dataset
(或任何其他可以有效扩展并可以与 TensorFlow 2.x 接口的文件)。
我不想使用/安装除 Tensorflow 和 PySpark 之外的其他库(例如 TensorFlowOnSpark),所以我想知道是否可以使用 JSON 文件以有效的方式链接两者,因为似乎没有其他方法可以保存/加载记录包含数据列表(?)。JSON 测试文件如下所示:
readDF = spark.read.format('json').option('header',True).option('sep','|').load('/output.csv')
readDF.select('label4').show(15, False)
+---------------------------------------------------------+
|label4 |
+---------------------------------------------------------+
|[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]|
|[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]|
|[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]|
|[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
|[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]|
|[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]|
+---------------------------------------------------------+
因此,label4列已经进行了一次热编码,并且一旦将标记器应用于它,标记化的文本列将看起来相似。所以,我的问题是:JSON
文件可以有效地加载(可能通过生成器函数)tf.data.Dataset
还是我应该为此走一条不同的道路(使用额外的库)?