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)

机器翻译数据集初始化