首页 > 解决方案 > Tensorflow:创建用于机器翻译的自定义文本数据集

问题描述

我想使用我自己的数据来训练使用 Transformers 的机器翻译系统的模型。TFDS(Tensorflow 数据集)中已经有一组数据集可用,并且还可以选择将新数据集添加到 TFDS。但是如果我不必等待那些添加请求和东西并直接训练我的数据怎么办?

在示例 colab 笔记本中,他们使用以下内容创建训练和验证数据:

examples, metadata = tfds.load('ted_hrlr_translate/pt_to_en', with_info=True,
                               as_supervised=True)
train_examples, val_examples = examples['train'], examples['validation']

我相信 TFDS 做了很多预处理来适应管道,它是 Dataset 类型的。

type(train_examples)

tensorflow.python.data.ops.dataset_ops._OptionsDataset

但是对于像下面这样的自定义 CSV 数据,如何创建与该模型兼容的“数据集”?

import pandas as pd 

# initialize list of lists 
data = [['tom', 10], ['nick', 15], ['juli', 14],['tom', 10], ['nick', 15]]
# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Age']) 

# print dataframe. 
df 

标签: python-3.xtensorflowtensorflow2.0machine-translation

解决方案


colab notebook 中的数据集只是字符串对(句子的翻译对)的集合。这似乎不是你所拥有的(你有名字和年龄??)。

但是,当然可以从语言对的 csv(或名称和年龄!)创建数据集。这里有一个数据集 API 的综合指南:https ://www.tensorflow.org/guide/datasets但本质上,给定一个名为“translations.csv”的 csv,如下所示:

hola,hello
adios,goodbye
pero,dog
huevos,eggs
...

那么我们可以这样做:

my_dataset = tf.data.experimental.CsvDataset("translations.csv", [tf.string, tf.string])

同样,对于您的姓名/年龄数据集,您可以执行以下操作:

my_dataset = tf.data.experimental.CsvDataset("ages.csv", [tf.string, tf.int32])

推荐阅读