fastNLP.io.data_bundle¶
-
class
fastNLP.io.data_bundle.
DataBundle
(vocabs: dict = None, datasets: dict = None)[源代码]¶ 别名
fastNLP.io.DataBundle
fastNLP.io.data_bundle.DataBundle
经过处理的数据信息,包括一系列数据集(比如:分开的训练集、验证集和测试集)以及各个field对应的vocabulary。该对象一般由fastNLP中各种 Loader的load函数生成,可以通过以下的方法获取里面的内容
Example:
data_bundle = YelpLoader().load({'train':'/path/to/train', 'dev': '/path/to/dev'}) train_vocabs = data_bundle.vocabs['train'] train_data = data_bundle.datasets['train'] dev_data = data_bundle.datasets['train']
-
__init__
(vocabs: dict = None, datasets: dict = None)[源代码]¶ 参数: - vocabs -- 从名称(字符串)到
Vocabulary
类型的dict - datasets -- 从名称(字符串)到
DataSet
类型的dict
- vocabs -- 从名称(字符串)到
-
add_collate_fn
(fn, name=None)[源代码]¶ 向所有DataSet增加collate_fn, collate_fn详见
DataSet
中相关说明.参数: - fn (callable) --
- name --
返回:
-
apply
(func, new_field_name: str, **kwargs)[源代码]¶ 对DataBundle中所有的dataset使用apply方法
参数: - func (callable) -- input是instance中名为 field_name 的field的内容。
- new_field_name (str) -- 将func返回的内容放入到 new_field_name 这个field中,如果名称与已有的field相同,则覆 盖之前的field。如果为None则不创建新的field。
- kwargs (optional) --
支持输入is_input,is_target,ignore_type
- is_input: bool, 如果为True则将名为 new_field_name 的field设置为input
- is_target: bool, 如果为True则将名为 new_field_name 的field设置为target
- ignore_type: bool, 如果为True则将名为 new_field_name 的field的ignore_type设置为true, 忽略其类型
-
apply_field
(func, field_name: str, new_field_name: str, ignore_miss_dataset=True, **kwargs)[源代码]¶ 对DataBundle中所有的dataset使用apply_field方法
参数: - func (callable) -- input是instance中名为 field_name 的field的内容。
- field_name (str) -- 传入func的是哪个field。
- new_field_name (str) -- 将func返回的内容放入到 new_field_name 这个field中,如果名称与已有的field相同,则覆 盖之前的field。如果为None则不创建新的field。
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
- kwargs (optional) --
支持输入is_input,is_target,ignore_type
- is_input: bool, 如果为True则将名为 new_field_name 的field设置为input
- is_target: bool, 如果为True则将名为 new_field_name 的field设置为target
- ignore_type: bool, 如果为True则将名为 new_field_name 的field的ignore_type设置为true, 忽略其类型
-
copy_field
(field_name, new_field_name, ignore_miss_dataset=True)[源代码]¶ 将DataBundle中所有的DataSet中名为field_name的Field复制一份并命名为叫new_field_name.
参数: - field_name (str) --
- new_field_name (str) --
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
返回: self
-
delete_field
(field_name, ignore_miss_dataset=True, delete_vocab=True)[源代码]¶ 将DataBundle中所有DataSet中名为field_name的field删除掉.
参数: - field_name (str) --
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
- delete_vocab (bool) -- 如果该field也在vocabs中存在,将该值也一并删除
返回: self
-
get_dataset
(name: str) → fastNLP.core.dataset.DataSet[源代码]¶ 获取名为name的dataset
参数: name (str) -- dataset的名称,一般为'train', 'dev', 'test' 返回: DataSet
-
get_vocab
(field_name: str) → fastNLP.core.vocabulary.Vocabulary[源代码]¶ 获取field名为field_name对应的vocab
参数: field_name (str) -- 名称 返回: Vocabulary
-
iter_datasets
() → Union[str, fastNLP.core.dataset.DataSet][源代码]¶ 迭代data_bundle中的DataSet
Example:
for name, dataset in data_bundle.iter_datasets(): pass
返回:
-
iter_vocabs
() → Union[str, fastNLP.core.vocabulary.Vocabulary][源代码]¶ 迭代data_bundle中的DataSet
Example:
- for field_name, vocab in data_bundle.iter_vocabs():
- pass
返回:
-
rename_field
(field_name, new_field_name, ignore_miss_dataset=True, rename_vocab=True)[源代码]¶ 将DataBundle中所有DataSet中名为field_name的field重命名为new_field_name.
参数: - field_name (str) --
- new_field_name (str) --
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
- rename_vocab (bool) -- 如果该field同时也存在于vocabs中,会将该field的名称对应修改
返回: self
-
set_dataset
(dataset, name: str)[源代码]¶ 参数: - dataset (DataSet) -- 传递给DataBundle的DataSet
- name (str) -- dataset的名称
返回: self
-
set_ignore_type
(*field_names, flag=True, ignore_miss_dataset=True)[源代码]¶ 将DataBundle中所有的DataSet中名为*field_names的Field的ignore_type设置为flag状态
参数: - field_names (str) --
- flag (bool) --
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
返回: self
-
set_input
(*field_names, flag=True, use_1st_ins_infer_dim_type=True, ignore_miss_dataset=True)[源代码]¶ 将field_names中的field设置为input, 对data_bundle中所有的dataset执行该操作:
data_bundle.set_input('words', 'seq_len') # 将words和seq_len这两个field的input属性设置为True data_bundle.set_input('words', flag=False) # 将words这个field的input属性设置为False
参数: - field_names (str) -- field的名称
- flag (bool) -- 将field_name的input状态设置为flag
- use_1st_ins_infer_dim_type (bool) -- 如果为True,将不会check该列是否所有数据都是同样的维度,同样的类型。将直接使用第一 行的数据进行类型和维度推断本列的数据的类型和维度。
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
返回: self
-
set_pad_val
(field_name, pad_val, ignore_miss_dataset=True)[源代码]¶ 将DataBundle中所有的DataSet中名为field_name的Field的padding值设置为pad_val.
参数: - field_name (str) --
- pad_val (int) --
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
返回: self
-
set_target
(*field_names, flag=True, use_1st_ins_infer_dim_type=True, ignore_miss_dataset=True)[源代码]¶ 将field_names中的field设置为target, 对data_bundle中所有的dataset执行该操作:
data_bundle.set_target('target', 'seq_len') # 将words和target这两个field的input属性设置为True data_bundle.set_target('target', flag=False) # 将target这个field的input属性设置为False
参数: - field_names (str) -- field的名称
- flag (bool) -- 将field_name的target状态设置为flag
- use_1st_ins_infer_dim_type (bool) -- 如果为True,将不会check该列是否所有数据都是同样的维度,同样的类型。将直接使用第一 行的数据进行类型和维度推断本列的数据的类型和维度。
- ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
返回: self
-
set_vocab
(vocab, field_name)[源代码]¶ 向DataBunlde中增加vocab
参数: - vocab (Vocabulary) -- 词表
- field_name (str) -- 这个vocab对应的field名称
返回: self
-