Machine Translation
iwslt2016
IWSLT2016加载函数
- mindnlp.dataset.machine_translation.iwslt2016.IWSLT2016(root: str = '/home/docs/.mindnlp', split: Union[Tuple[str], str] = ('train', 'valid', 'test'), language_pair=('de', 'en'), valid_set='tst2013', test_set='tst2014', proxies=None)[源代码]
加载IWSLT2016数据集
可以使用的数据集包括如下:
语言对表格
“en”
“fr”
“de”
“cs”
“ar”
“en”
x
x
x
x
“fr”
x
“de”
x
“cs”
x
“ar”
x
valid/test sets: [“dev2010”, “tst2010”, “tst2011”, “tst2012”, “tst2013”, “tst2014”]
- 参数
root (str) – 存放数据集的目录。默认:”~/.mindnlp”
split (str|Tuple[str]) – 要返回的数据集分块。默认:(‘train’, ‘valid’, ‘test’)
language_pair (Tuple[str]) – 包含源语言和目标语言的元组。默认:(‘de’, ‘en’)
valid_set (str) – 定义验证集的字符串。默认:”tst2013”
test_set (str) – 定义测试集的字符串。默认:”tst2014”
proxies (dict) – 定义代理的字典,例如:{“https”: “https://127.0.0.1:7890”}
- 返回
datasets_list (list) -加载完成的数据集分块列表。如果只加载了一个数据集分块, 如:’trian’,那么就只返回这个数据集分块,而不是一个列表。
- 抛出
TypeError – 如果 root 不是string。
TypeError – 如果 split 不是string或者Tuple[str]。
TypeError – 如果 language_pair 不是Tuple[str]。
RuntimeError – 如果 language_pair 的长度不是2。
RuntimeError – 如果 language_pair 不在支持的数据集范围内。
RuntimeError – 如果 valid_set 不在支持的数据集范围内。
RuntimeError – 如果 test_set 不在支持的数据集范围内。
示例
>>> root = "~/.mindnlp" >>> split = ('train', 'valid', 'test') >>> language_pair = ('de', 'en') >>> valid_set="tst2013" >>> test_set="tst2014" >>> dataset_train, dataset_valid, dataset_test = IWSLT2016(root, split, \ language_pair, valid_set, test_set) >>> train_iter = dataset_train.create_dict_iterator() >>> print(next(train_iter)) {'text': Tensor(shape=[], dtype=String, value= \ 'David Gallo: Das ist Bill Lange. Ich bin Dave Gallo.'), 'translation': Tensor(shape=[], dtype=String, value= \ "David Gallo: This is Bill Lange. I'm Dave Gallo.")}
iwslt2017
IWSLT2017加载函数
- mindnlp.dataset.machine_translation.iwslt2017.IWSLT2017(root: str = '/home/docs/.mindnlp', split: Union[Tuple[str], str] = ('train', 'valid', 'test'), language_pair=('de', 'en'), proxies=None)[源代码]
加载IWSLT2017数据集
可以使用的数据集包括如下:
语言对表格
“en”
“nl”
“de”
“it”
“ro”
“en”
x
x
x
x
“nl”
x
x
x
x
“de”
x
x
x
x
“it”
x
x
x
x
“ro”
x
x
x
x
- 参数
root (str) – 存放数据集的目录。默认:”~/.mindnlp”
split (str|Tuple[str]) – 要返回的数据集分块。默认:(‘train’, ‘valid’, ‘test’)
language_pair (Tuple[str]) – 包含源语言和目标语言的元组。默认:(‘de’, ‘en’)
proxies (dict) – 定义代理的字典,例如:{“https”: “https://127.0.0.1:7890”}
- 返回
datasets_list (list) -加载完成的数据集分块列表。如果只加载了一个数据集分块, 如:’trian’,那么就只返回这个数据集分块,而不是一个列表。
- 抛出
TypeError – 如果 root 不是string。
TypeError – 如果 split 不是string或者Tuple[str]。
TypeError – 如果 language_pair 不是Tuple[str]。
RuntimeError – 如果 language_pair 的长度不是2。
RuntimeError – 如果 language_pair 不在支持的数据集范围内。
示例
>>> root = "~/.mindnlp" >>> split = ('train', 'valid', 'test') >>> language_pair = ('de', 'en') >>> dataset_train, dataset_valid, dataset_test = IWSLT2017(root, split, language_pair) >>> train_iter = dataset_train.create_dict_iterator() >>> print(next(train_iter)) {'text': Tensor(shape=[], dtype=String, value= 'Vielen Dank, Chris.'), 'translation': Tensor(shape=[], dtype=String, value= 'Thank you so much, Chris.')}
- mindnlp.dataset.machine_translation.iwslt2017.IWSLT2017_Process(dataset, column='translation', tokenizer=<mindnlp.dataset.transforms.tokenizers.BasicTokenizer object>, vocab=None)[源代码]
将IWSLT2017数据集中的指定列转换为张量
- 参数
dataset (GeneratorDataset, ZipDataset) – IWSLT2017 数据集。
column (str) – IWSLT2017数据集中需要预处理的列名。
tokenizer (TextTensorOperation) – 选用的分词器。
vocab (Vocab) – 你想使用的词表对象,默认为空。如果为空,一个新的词表对象将会被创建。
- 返回
MapDataset,预处理后返回的数据集。
Vocab,当 vocab 为空时创建的新的词表对象。
- 抛出
TypeError – 如果 language 不是string。
示例
>>> from mindspore.dataset import text >>> from mindnlp.dataset import IWSLT2017, IWSLT2017_Process >>> test_dataset = IWSLT2017( >>> root='./dataset', >>> split="test", >>> language_pair=("de", "en") >>> ) >>> test_dataset, vocab = process('IWSLT2017', test_dataset, "translation", >>> text.BasicTokenizer()) >>> for i in test_dataset.create_tuple_iterator(): >>> print(i) >>> break
multi30k
Multi30k加载函数
- mindnlp.dataset.machine_translation.multi30k.Multi30k(root: str = '/home/docs/.mindnlp', split: Union[Tuple[str], str] = ('train', 'valid', 'test'), language_pair: Tuple[str] = ('de', 'en'), proxies=None)[源代码]
加载Multi30k数据集
- 参数
root (str) – 存放数据集的目录。默认:”~/.mindnlp”
split (str|Tuple[str]) – 要返回的数据集分块。默认:(‘train’, ‘valid’, ‘test’)
language_pair (Tuple[str]) – 包含源语言和目标语言的元组。默认:(‘de’, ‘en’)
proxies (dict) – 定义代理的字典,例如:{“https”: “https://127.0.0.1:7890”}
- 返回
datasets_list (list) -加载完成的数据集分块列表。如果只加载了一个数据集分块, 如:’trian’,那么就只返回这个数据集分块,而不是一个列表。
- 抛出
TypeError – 如果 root 不是string。
TypeError – 如果 split 不是string或者Tuple[str]。
TypeError – 如果 language_pair 不是Tuple[str]。
RuntimeError – 如果 language_pair 的长度不是2。
RuntimeError – 如果 language_pair 不是(‘de’, ‘en’)或(‘en’, ‘de’)。
示例
>>> root = os.path.join(os.path.expanduser('~'), ".mindnlp") >>> split = ('train', 'valid', 'test') >>> language_pair = ('de', 'en') >>> dataset_train, dataset_valid, dataset_test = Multi30k(root, split, language_pair) >>> train_iter = dataset_train.create_tuple_iterator() >>> print(next(train_iter)) [Tensor(shape=[], dtype=String, value=\ 'Ein Mann mit einem orangefarbenen Hut, der etwas anstarrt.'), Tensor(shape=[], dtype=String, value= 'A man in an orange hat starring at something.')]
- mindnlp.dataset.machine_translation.multi30k.Multi30k_Process(dataset, vocab, batch_size=64, max_len=500, drop_remainder=False)[源代码]
Multi30k数据集的数据预处理函数。
- 参数
dataset (GeneratorDataset) – Multi30k数据集。
vocab (Vocab) – 词表对象,用于存储分词和索引的映射。默认为空。如果为空,一个新的词表对象将会被创建。
batch_size (int) – 指定每个批处理数据包含的数据条目。默认值:64。
max_len (int) – 句子的最大长度。默认值:500。
drop_remainder (bool) – 当最后一批数据包含的数据条目小于batch_size时,是否丢弃该批次,而不将其传递到下一个操作。默认值:False,不丢弃。
- 返回
dataset (MapDataset) - 预处理操作后返回的数据集。
- 抛出
TypeError – 如果 input_column 不是string。
示例
>>> train_dataset = Multi30k( >>> root=self.root, >>> split="train", >>> language_pair=("de", "en") >>> ) >>> tokenizer = BasicTokenizer(True) >>> train_dataset = train_dataset.map([tokenizer], 'en') >>> train_dataset = train_dataset.map([tokenizer], 'de') >>> en_vocab = text.Vocab.from_dataset(train_dataset, 'en', special_tokens= >>> ['<pad>', '<unk>'], special_first= True) >>> de_vocab = text.Vocab.from_dataset(train_dataset, 'de', special_tokens= >>> ['<pad>', '<unk>'], special_first= True) >>> vocab = {'en':en_vocab, 'de':de_vocab} >>> train_dataset = process('Multi30k', train_dataset, vocab = vocab)
机器翻译数据集初始化