Question Answer
squad1
SQuAD1加载函数
- mindnlp.dataset.question_answer.squad1.SQuAD1(root: str = '/home/docs/.mindnlp', split: Union[Tuple[str], str] = ('train', 'dev'), proxies=None)[源代码]
加载SQuAD1数据集
- 参数
root (str) – 存放数据集的目录。
split (str|Tuple[str]) – 要返回的数据集分块。默认:(‘train’,’dev’)。
proxies (dict) – 定义代理的字典,例如:{“https”: “https://127.0.0.1:7890”}
- 返回
datasets_list (list) -加载完成的数据集分块列表。如果只加载了一个数据集分块, 如:’trian’,那么就只返回这个数据集分块,而不是一个列表。
- 抛出
TypeError – 如果 root 不是string。
TypeError – 如果 split 不是string或者Tuple[str]。
示例
>>> root = "~/.mindnlp" >>> split = ('train', 'dev') >>> dataset_train, dataset_dev = SQuAD1(root, split) >>> train_iter = dataset_train.create_tuple_iterator() >>> print(next(train_iter)) {'context': Tensor(shape=[], dtype=String, value= 'Architecturally, \ the school has a Catholic character. Atop the Main Building\'s gold dome ...'), 'question': Tensor(shape=[], dtype=String, value= 'To whom did the Virgin Mary allegedly \ appear in 1858 in Lourdes France?'), 'answers': Tensor(shape=[1], dtype=String, value= ['Saint Bernadette Soubirous']), 'answers_start': Tensor(shape=[1], dtype=Int32, value= [515])}
- mindnlp.dataset.question_answer.squad1.SQuAD1_Process(dataset, char_vocab, word_vocab=None, tokenizer=<mindnlp.dataset.transforms.tokenizers.BasicTokenizer object>, max_context_len=768, max_question_len=64, max_char_len=48, batch_size=64, drop_remainder=False)[源代码]
squad1数据集的数据预处理函数。
- 参数
dataset (GeneratorDataset) – Squad1数据集。
tokenizer (TextTensorOperation) – 对数据集进行分词操作的分词器。
word_vocab (Vocab) – 词表对象,用于存储分词和索引的映射。默认为空。如果为空,一个新的词表对象将会被创建。
char_vocab (Vocab) – 字符词表对象,用于存储字符和索引的映射。
max_context_len (int) – context的最大长度。默认:768。
max_question_len (int) – question的最大长度。默认:64。
max_char_len (int) – 字符的最大长度。默认:48。
batch_size (int) – 指定每个批处理数据包含的数据条目。默认值:64。
drop_remainder (bool) – 当最后一批数据包含的数据条目小于batch_size时,是否丢弃该批次,而不将其传递到下一个操作。默认值:False,不丢弃。
- 返回
MapDataset,预处理操作后返回的Squad1数据集。
- 抛出
TypeError – 如果 word_vocab 不是text.Vocab类型。
TypeError – 如果 char_vocab 不是text.Vocab类型。
TypeError – 如果 max_context_len 不是int类型。
TypeError – 如果 max_question_len 不是int类型。
TypeError – 如果 max_char_len 不是int类型。
TypeError – 如果 batch_size 不是int类型。
TypeError – 如果 drop_remainder 不是bool类型。
示例
>>> from mindspore.dataset import text >>> from mindnlp.dataset import SQuAD1, SQuAD1_Process >>> char_dic = {"<unk>": 0, "<pad>": 1, "e": 2, "t": 3, "a": 4, "i": 5, "n": 6, "o": 7, "s": 8, "r": 9, "h": 10, "l": 11, "d": 12, "c": 13, "u": 14, "m": 15, "f": 16, "p": 17, "g": 18, "w": 19, "y": 20, "b": 21, ",": 22, "v": 23, ".": 24, "k": 25, "1": 26, "0": 27, "x": 28, "2": 29, """: 30, "-": 31, "j": 32, "9": 33, "'": 34, ")": 35, "(": 36, "?": 37, "z": 38, "5": 39, "8": 40, "q": 41, "3": 42, "4": 43, "7": 44, "6": 45, ";": 46, ":": 47, "–": 48, "%": 49, "/": 50, "]": 51, "[": 52} >>> char_vocab = text.Vocab.from_dict(char_dic) >>> dev_dataset = SQuAD1(split='dev') >>> squad_dev = SQuAD1_Process(dataset=dev_dataset, char_vocab=char_vocab) >>> squad_dev = squad_dev.create_tuple_iterator() >>> print(next(squad_dev))
squad2
SQuAD2加载函数
- mindnlp.dataset.question_answer.squad2.SQuAD2(root: str = '/home/docs/.mindnlp', split: Union[Tuple[str], str] = ('train', 'dev'), proxies=None)[源代码]
加载SQuAD2数据集
- 参数
root (str) – 存放数据集的目录。
split (str|Tuple[str]) – 要返回的数据集分块。默认:(‘train’,’dev’)。
proxies (dict) – 定义代理的字典,例如:{“https”: “https://127.0.0.1:7890”}
- 返回
datasets_list (list) -加载完成的数据集分块列表。如果只加载了一个数据集分块, 如:’trian’,那么就只返回这个数据集分块,而不是一个列表。
- 抛出
TypeError – 如果 root 不是string。
TypeError – 如果 split 不是string或者Tuple[str]。
示例
>>> root = "~/.mindnlp" >>> split = ('train', 'dev') >>> dataset_train, dataset_dev = SQuAD2(root, split) >>> train_iter = dataset_train.create_tuple_iterator() >>> print(next(train_iter)) [Tensor(shape=[], dtype=String, value= 'Beyoncé Giselle Knowles-Carter...), Tensor(shape=[], dtype=String, value= 'When did Beyonce start becoming popular?'), Tensor(shape=[1], dtype=String, value= ['in the late 1990s']), Tensor(shape=[1], dtype=Int32, value= [269])]
问答数据集初始化