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
类型的dictdatasets -- 从名称(字符串)到
DataSet
类型的dict。建议不要将相同的DataSet对象重复传入,可能会在 使用Pipe处理数据的时候遇到问题,若多个数据集确需一致,请手动deepcopy后传入。
-
set_vocab
(vocab, field_name)[源代码]¶ 向DataBunlde中增加vocab
- 参数
vocab (Vocabulary) -- 词表
field_name (str) -- 这个vocab对应的field名称
- 返回
self
-
set_dataset
(dataset, name: str)[源代码]¶ - 参数
dataset (DataSet) -- 传递给DataBundle的DataSet
name (str) -- dataset的名称
- 返回
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
-
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_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_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_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
-
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
-
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
-
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
-
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
- 返回
-
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, 忽略其类型
use_tqdm: bool, 是否显示tqdm进度条
tqdm_desc: str, 当use_tqdm为True时,可以显示当前tqdm正在处理的名称
-
apply_field_more
(func, field_name, modify_fields=True, ignore_miss_dataset=True, **kwargs)[源代码]¶ 对
DataBundle
中所有的 dataset 使用apply_field_more()
方法注解
apply_field_more
与apply_field
的区别参考fastNLP.DataSet.apply_more()
中关于apply_more
与apply
区别的介绍。- 参数
func (callable) -- 参数是
DataSet
中的Instance
,返回值是一个字典,key 是field 的名字,value 是对应的结果field_name (str) -- 传入func的是哪个field。
modify_fields (bool) -- 是否用结果修改 DataSet 中的 Field, 默认为 True
ignore_miss_dataset (bool) -- 当某个field名称在某个dataset不存在时,如果为True,则直接忽略该DataSet; 如果为False,则报错
kwargs (optional) --
支持输入is_input, is_target, ignore_type
is_input: bool, 如果为True则将被修改的field设置为input
is_target: bool, 如果为True则将被修改的field设置为target
ignore_type: bool, 如果为True则将被修改的field的ignore_type设置为true, 忽略其类型
use_tqdm: bool, 是否显示tqdm进度条
tqdm_desc: str, 当use_tqdm为True时,可以显示当前tqdm正在处理的名称
- Return Dict[str:Dict[str:Field]]
返回一个字典套字典,第一层的 key 是 dataset 的名字,第二层的 key 是 field 的名字
-
apply
(func, new_field_name: str, **kwargs)[源代码]¶ 对
DataBundle
中所有的 dataset 使用apply()
方法对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, 忽略其类型
use_tqdm: bool, 是否显示tqdm进度条
tqdm_desc: str, 当use_tqdm为True时,可以显示当前tqdm正在处理的名称
-
apply_more
(func, modify_fields=True, **kwargs)[源代码]¶ 对
DataBundle
中所有的 dataset 使用apply_more()
方法注解
apply_more
与apply
的区别参考fastNLP.DataSet.apply_more()
中关于apply_more
与apply
区别的介绍。- 参数
func (callable) -- 参数是
DataSet
中的Instance
,返回值是一个字典,key 是field 的名字,value 是对应的结果modify_fields (bool) -- 是否用结果修改
DataSet
中的Field
, 默认为 Truekwargs (optional) --
支持输入is_input,is_target,ignore_type
is_input: bool, 如果为True则将被修改的的field设置为input
is_target: bool, 如果为True则将被修改的的field设置为target
ignore_type: bool, 如果为True则将被修改的的field的ignore_type设置为true, 忽略其类型
use_tqdm: bool, 是否显示tqdm进度条
tqdm_desc: str, 当use_tqdm为True时,可以显示当前tqdm正在处理的名称
- Return Dict[str:Dict[str:Field]]
返回一个字典套字典,第一层的 key 是 dataset 的名字,第二层的 key 是 field 的名字
-