fastNLP.io.loader

Loader用于读取数据,并将内容读取到 DataSet 或者 DataBundle 中。所有的Loader都支持以下的 三个方法: __init___load , loads . 其中 __init__(...) 用于申明读取参数,以及说明该Loader支持的数据格式, 读取后 DataSet 中的 field ; _load(path) 方法传入文件路径读取单个文件,并返回 DataSet ; load(paths) 用于读取文件夹下的文件,并返回 DataBundle 类型的对象 , load()方法支持以下几种类型的参数:

0.传入None
将尝试自动下载数据集并缓存。但不是所有的数据都可以直接下载。
1.传入一个文件的 path
返回的 data_bundle 包含一个名为 train 的 dataset ,可以通过 data_bundle.get_dataset('train') 获取
2.传入一个文件夹目录

将读取的是这个文件夹下文件名中包含 train , test , dev 的文件,其它文件会被忽略。假设某个目录下的文件为:

|
+-train.txt
+-dev.txt
+-test.txt
+-other.txt

在 Loader().load('/path/to/dir') 返回的 data_bundle 中可以用 data_bundle.get_dataset('train') , data_bundle.get_dataset('dev') , data_bundle.get_dataset('test') 获取对应的 dataset ,其中 other.txt 的内容会被忽略。假设某个目录下的文件为:

|
+-train.txt
+-dev.txt

在 Loader().load('/path/to/dir') 返回的 data_bundle 中可以用 data_bundle.get_dataset('train') , data_bundle.get_dataset('dev') 获取对应的 dataset。

3.传入一个字典

字典的的 key 为 dataset 的名称,value 是该 dataset 的文件路径:

paths = {'train':'/path/to/train', 'dev': '/path/to/dev', 'test':'/path/to/test'}

在 Loader().load(paths) 返回的 data_bundle 中可以用 data_bundle.get_dataset('train') , data_bundle.get_dataset('dev') , data_bundle.get_dataset('test') 来获取对应的 dataset

fastNLP 目前提供了如下的 Loader

class fastNLP.io.loader.Loader[源代码]

别名 fastNLP.io.Loader fastNLP.io.loader.Loader

各种数据 Loader 的基类,提供了 API 的参考. Loader支持以下的三个函数

  • download() 函数:自动将该数据集下载到缓存地址,默认缓存地址为~/.fastNLP/datasets/。由于版权等原因,不是所有的Loader都实现了该方法。该方法会返回下载后文件所处的缓存地址。
  • _load() 函数:从一个数据文件中读取数据,返回一个 DataSet 。返回的DataSet的内容可以通过每个Loader的文档判断出。
  • load() 函数:将文件分别读取为DataSet,然后将多个DataSet放入到一个DataBundle中并返回
download() → str[源代码]

自动下载该数据集

返回:下载后解压目录
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle[源代码]

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.CLSBaseLoader(sep=', ', has_header=False)[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.CLSBaseLoader fastNLP.io.loader.CLSBaseLoader

文本分类Loader的一个基类

原始数据中内容应该为, 每一行为一个sample,第一个逗号之前为target,第一个逗号之后为文本内容。

Example:

"1","I got 'new' tires from the..."
"1","Don't waste your time..."

读取的DataSet将具备以下的数据结构

raw_words target
I got 'new' tires from them and... 1
Don't waste your time. We had two... 1
... ...
download() → str

自动下载该数据集

返回:下载后解压目录
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.IMDBLoader[源代码]

基类 fastNLP.io.CLSBaseLoader

别名 fastNLP.io.IMDBLoader fastNLP.io.loader.IMDBLoader

原始数据中内容应该为, 每一行为一个sample,制表符之前为target,制表符之后为文本内容。

Example:

neg     Alan Rickman & Emma...
neg     I have seen this...

IMDBLoader读取后的数据将具有以下两列内容: raw_words: str, 需要分类的文本; target: str, 文本的标签 读取的DataSet具备以下的结构:

raw_words target
Alan Rickman & Emma... neg
I have seen this... neg
... ...
download(dev_ratio: float = 0.0, re_download=False)[源代码]

自动下载数据集,如果你使用了这个数据集,请引用以下的文章

http://www.aclweb.org/anthology/P11-1015

根据dev_ratio的值随机将train中的数据取出一部分作为dev数据。下载完成后不从train中切分dev

参数:
  • dev_ratio (float) -- 如果路径中没有dev.txt。从train划分多少作为dev的数据. 如果为0,则不划分dev
  • re_download (bool) -- 是否重新下载数据,以重新切分数据。
返回:

str, 数据集的目录地址

load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.SSTLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.SSTLoader fastNLP.io.loader.SSTLoader

原始数据中内容应该为:

Example:

(2 (3 (3 Effective) (2 but)) (1 (1 too-tepid)...
(3 (3 (2 If) (3 (2 you) (3 (2 sometimes)...

读取之后的DataSet具有以下的结构

下面是使用SSTLoader读取的DataSet所具备的field
raw_words
(2 (3 (3 Effective) (2 but)) (1 (1 too-tepid)...
(3 (3 (2 If) (3 (2 you) (3 (2 sometimes) ...
...

raw_words列是str。

download()[源代码]

自动下载数据集,如果你使用了这个数据集,请引用以下的文章

返回:str, 数据集的目录地址
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.SST2Loader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.SST2Loader fastNLP.io.loader.SST2Loader

原始数据中内容为:第一行为标题(具体内容会被忽略),之后一行为一个sample,第一个制表符之前被认为是句子,第一个制表符之后认为是label

Example:

sentence        label
it 's a charming and often affecting journey .  1
unflinchingly bleak and desperate       0

读取之后DataSet将如下所示

raw_words target
it 's a charming and often affecting journey . 1
unflinchingly bleak and desperate 0
...  

test的DataSet没有target列。

download()[源代码]

自动下载数据集,如果你使用了该数据集,请引用以下的文章 https://nlp.stanford.edu/pubs/SocherBauerManningNg_ACL2013.pdf :return:

load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.ChnSentiCorpLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.ChnSentiCorpLoader fastNLP.io.loader.ChnSentiCorpLoader

支持读取的数据的格式为,第一行为标题(具体内容会被忽略),之后一行为一个sample,第一个制表符之前被认为是label,第 一个制表符之后认为是句子

Example:

label   text_a
1       基金痛所有投资项目一样,必须先要有所了解...
1       系统很好装,LED屏是不错,就是16比9的比例...

读取后的DataSet具有以下的field

raw_chars target
基金痛所有投资项目一样,必须先要有所了解... 1
系统很好装,LED屏是不错,就是16比9的比例... 1
...  
download() → str[源代码]

自动下载数据,该数据取自https://github.com/pengming617/bert_classification/tree/master/data,在 https://arxiv.org/pdf/1904.09223.pdf与https://arxiv.org/pdf/1906.08101.pdf有使用

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.THUCNewsLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.THUCNewsLoader fastNLP.io.loader.THUCNewsLoader

数据集简介:document-level分类任务,新闻10分类 原始数据内容为:每行一个sample,第一个 "\t" 之前为target,第一个 "\t" 之后为raw_words

Example:

体育      调查-您如何评价热火客场胜绿军总分3-1夺赛点?...

读取后的Dataset将具有以下数据结构:

raw_words target
调查-您如何评价热火客场胜绿军总分3-1夺赛点?... 体育
... ...
download() → str[源代码]

自动下载数据,该数据取自

http://thuctc.thunlp.org/#%E4%B8%AD%E6%96%87%E6%96%87%E6%9C%AC%E5%88%86%E7%B1%BB%E6%95%B0%E6%8D%AE%E9%9B%86THUCNews

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.WeiboSenti100kLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.WeiboSenti100kLoader fastNLP.io.loader.WeiboSenti100kLoader

别名: 数据集简介:微博sentiment classification,二分类

Example:

label   text
1       多谢小莲,好运满满[爱你]
1       能在他乡遇老友真不赖,哈哈,珠儿,我也要用...

读取后的Dataset将具有以下数据结构:

raw_chars target
多谢小莲,好运满满[爱你] 1
能在他乡遇老友真不赖,哈哈,珠儿,我也要用... 1
... ...
download() → str[源代码]

自动下载数据,该数据取自 https://github.com/SophonPlus/ChineseNlpCorpus/https://arxiv.org/abs/1906.08101 有使用 :return:

load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.ConllLoader(headers, indexes=None, dropna=True)[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.ConllLoader fastNLP.io.loader.ConllLoader

ConllLoader支持读取的数据格式: 以空行隔开两个sample,除了分割行,每一行用空格或者制表符隔开不同的元素。如下例所示:

Example:

# 文件中的内容
Nadim NNP B-NP B-PER
Ladki NNP I-NP I-PER

AL-AIN NNP B-NP B-LOC
United NNP B-NP B-LOC
Arab NNP I-NP I-LOC
Emirates NNPS I-NP I-LOC
1996-12-06 CD I-NP O
...

# 如果用以下的参数读取,返回的DataSet将包含raw_words和pos两个field, 这两个field的值分别取自于第0列与第1列
dataset = ConllLoader(headers=['raw_words', 'pos'], indexes=[0, 1])._load('/path/to/train.conll')
# 如果用以下的参数读取,返回的DataSet将包含raw_words和ner两个field, 这两个field的值分别取自于第0列与第2列
dataset = ConllLoader(headers=['raw_words', 'ner'], indexes=[0, 3])._load('/path/to/train.conll')
# 如果用以下的参数读取,返回的DataSet将包含raw_words, pos和ner三个field
dataset = ConllLoader(headers=['raw_words', 'pos', 'ner'], indexes=[0, 1, 3])._load('/path/to/train.conll')

ConllLoader返回的DataSet的field由传入的headers确定。

数据中以"-DOCSTART-"开头的行将被忽略,因为该符号在conll 2003中被用为文档分割符。

__init__(headers, indexes=None, dropna=True)[源代码]
参数:
  • headers (list) -- 每一列数据的名称,需为List or Tuple of str。headerindexes 一一对应
  • indexes (list) -- 需要保留的数据列下标,从0开始。若为 None ,则所有列都保留。Default: None
  • dropna (bool) -- 是否忽略非法数据,若 False ,遇到非法数据时抛出 ValueError 。Default: True
download() → str

自动下载该数据集

返回:下载后解压目录
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.Conll2003Loader[源代码]

基类 fastNLP.io.ConllLoader

别名 fastNLP.io.Conll2003Loader fastNLP.io.loader.Conll2003Loader

用于读取conll2003任务的数据。数据的内容应该类似与以下的内容, 第一列为raw_words, 第二列为pos, 第三列为chunking,第四列为ner。

Example:

Nadim NNP B-NP B-PER
Ladki NNP I-NP I-PER

AL-AIN NNP B-NP B-LOC
United NNP B-NP B-LOC
Arab NNP I-NP I-LOC
Emirates NNPS I-NP I-LOC
1996-12-06 CD I-NP O
...

返回的DataSet的内容为

下面是Conll2003Loader加载后数据具备的结构。
raw_words pos chunk ner
[Nadim, Ladki] [NNP, NNP] [B-NP, I-NP] [B-PER, I-PER]
[AL-AIN, United, Arab, ...] [NNP, NNP, NNP, ...] [B-NP, B-NP, I-NP, ...] [B-LOC, B-LOC, I-LOC, ...]
[...] [...] [...] [...]
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.Conll2003NERLoader[源代码]

基类 fastNLP.io.ConllLoader

别名 fastNLP.io.Conll2003NERLoader fastNLP.io.loader.Conll2003NERLoader

用于读取conll2003任务的NER数据。每一行有4列内容,空行意味着隔开两个句子

支持读取的内容如下 Example:

Nadim NNP B-NP B-PER
Ladki NNP I-NP I-PER

AL-AIN NNP B-NP B-LOC
United NNP B-NP B-LOC
Arab NNP I-NP I-LOC
Emirates NNPS I-NP I-LOC
1996-12-06 CD I-NP O
...

返回的DataSet的内容为

下面是Conll2003Loader加载后数据具备的结构, target是BIO2编码
raw_words target
[Nadim, Ladki] [B-PER, I-PER]
[AL-AIN, United, Arab, ...] [B-LOC, B-LOC, I-LOC, ...]
[...] [...]
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.OntoNotesNERLoader[源代码]

基类 fastNLP.io.ConllLoader

别名 fastNLP.io.OntoNotesNERLoader fastNLP.io.loader.OntoNotesNERLoader

用以读取OntoNotes的NER数据,同时也是Conll2012的NER任务数据。将OntoNote数据处理为conll格式的过程可以参考 https://github.com/yhcc/OntoNotes-5.0-NER。OntoNoteNERLoader将取第4列和第11列的内容。

读取的数据格式为:

Example:

bc/msnbc/00/msnbc_0000   0   0          Hi   UH   (TOP(FRAG(INTJ*)  -   -   -    Dan_Abrams  *   -
bc/msnbc/00/msnbc_0000   0   1    everyone   NN              (NP*)  -   -   -    Dan_Abrams  *   -
...

返回的DataSet的内容为

raw_words target
['Hi', 'everyone', '.'] ['O', 'O', 'O']
['first', 'up', 'on', 'the', 'docket'] ['O', 'O', 'O', 'O', 'O']
[...] [...]
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.CTBLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.CTBLoader fastNLP.io.loader.CTBLoader

支持加载的数据应该具备以下格式, 其中第二列为词语,第四列为pos tag,第七列为依赖树的head,第八列为依赖树的label

Example:

1       印度    _       NR      NR      _       3       nn      _       _
2       海军    _       NN      NN      _       3       nn      _       _
3       参谋长  _       NN      NN      _       5       nsubjpass       _       _
4             _       SB      SB      _       5       pass    _       _
5       解职    _       VV      VV      _       0       root    _       _

1       新华社  _       NR      NR      _       7       dep     _       _
2       新德里  _       NR      NR      _       7       dep     _       _
3       12  _       NT      NT      _       7       dep     _       _
...

读取之后DataSet具备的格式为

raw_words pos dep_head dep_label
[印度, 海军, ...] [NR, NN, SB, ...] [3, 3, ...] [nn, nn, ...]
[新华社, 新德里, ...] [NR, NR, NT, ...] [7, 7, 7, ...] [dep, dep, dep, ...]
[...] [...] [...] [...]
download()[源代码]

由于版权限制,不能提供自动下载功能。可参考

https://catalog.ldc.upenn.edu/LDC2013T21

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.MsraNERLoader[源代码]

基类 fastNLP.io.CNNERLoader

别名 fastNLP.io.MsraNERLoader fastNLP.io.loader.MsraNERLoader

读取MSRA-NER数据,数据中的格式应该类似与下列的内容

Example:

把       O
欧       B-LOC

美       B-LOC
、       O

港       B-LOC
台       B-LOC

流       O
行       O

的       O

食       O

...

读取后的DataSet包含以下的field

raw_chars target
['把', '欧'] ['O', 'B-LOC']
['美', '、'] ['B-LOC', 'O']
[...] [...]
download(dev_ratio: float = 0.1, re_download: bool = False) → str[源代码]

自动下载MSAR-NER的数据,如果你使用该数据,请引用 Gina-Anne Levow, 2006, The Third International Chinese Language Processing Bakeoff: Word Segmentation and Named Entity Recognition.

根据dev_ratio的值随机将train中的数据取出一部分作为dev数据。下载完成后在output_dir中有train.conll, test.conll, dev.conll三个文件。

参数:
  • dev_ratio (float) -- 如果路径中没有dev集,从train划分多少作为dev的数据. 如果为0,则不划分dev。
  • re_download (bool) -- 是否重新下载数据,以重新切分数据。
返回:

str, 数据集的目录地址

返回:

load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.PeopleDailyNERLoader[源代码]

基类 fastNLP.io.CNNERLoader

别名 fastNLP.io.PeopleDailyNERLoader fastNLP.io.loader.PeopleDailyNERLoader

支持加载的数据格式如下

Example:

 B-ORG
 I-ORG
 I-ORG
 I-ORG

 O
 B-ORG
...

读取后的DataSet包含以下的field

target列是基于BIO的编码方式
raw_chars target
['中', '共', '中', '央'] ['B-ORG', 'I-ORG', 'I-ORG', 'I-ORG']
[...] [...]
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.WeiboNERLoader[源代码]

基类 fastNLP.io.CNNERLoader

别名 fastNLP.io.WeiboNERLoader fastNLP.io.loader.WeiboNERLoader

读取WeiboNER数据,数据中的格式应该类似与下列的内容

Example:

       B-PER.NOM
       I-PER.NOM
       I-PER.NOM

       O

...

读取后的DataSet包含以下的field

.. csv-table::

    :header: "raw_chars", "target"

    "['老', '百', '姓']", "['B-PER.NOM', 'I-PER.NOM', 'I-PER.NOM']"
    "['心']", "['O']"
    "[...]", "[...]"
download() → str[源代码]

自动下载Weibo-NER的数据,如果你使用了该数据,请引用 Nanyun Peng and Mark Dredze, 2015, Named Entity Recognition for Chinese Social Media with Jointly Trained Embeddings.

返回:str
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.CSVLoader(headers=None, sep=', ', dropna=False)[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.CSVLoader fastNLP.io.loader.CSVLoader

读取CSV格式的数据集, 返回 DataSet
__init__(headers=None, sep=', ', dropna=False)[源代码]
参数:
  • headers (List[str]) -- CSV文件的文件头.定义每一列的属性名称,即返回的DataSet中`field`的名称 若为 None ,则将读入文件的第一行视作 headers . Default: None
  • sep (str) -- CSV文件中列与列之间的分隔符. Default: ","
  • dropna (bool) -- 是否忽略非法数据,若 True 则忽略,若 False ,在遇到非法数据时,抛出 ValueError . Default: False
download() → str

自动下载该数据集

返回:下载后解压目录
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.JsonLoader(fields=None, dropna=False)[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.JsonLoader fastNLP.io.loader.JsonLoader

别名:fastNLP.io.JsonLoader fastNLP.io.loader.JsonLoader

读取json格式数据.数据必须按行存储,每行是一个包含各类属性的json对象

param dict fields:
 需要读入的json属性名称, 和读入后在DataSet中存储的field_name fieldskey 必须是json对象的属性名. fieldsvalue 为读入后在DataSet存储的 field_name , value 也可为 None , 这时读入后的 field_name 与json对象对应属性同名 fields 可为 None , 这时,json对象所有属性都保存在DataSet中. Default: None
param bool dropna:
 是否忽略非法数据,若 True 则忽略,若 False ,在遇到非法数据时,抛出 ValueError . Default: False
download() → str

自动下载该数据集

返回:下载后解压目录
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.CWSLoader(dataset_name: str = None)[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.CWSLoader fastNLP.io.loader.CWSLoader

CWSLoader支持的数据格式为,一行一句话,不同词之间用空格隔开, 例如:

Example:

上海 浦东 开发 与 法制 建设 同步
新华社 上海 二月 十日 电 ( 记者 谢金虎 、 张持坚 )
...

该Loader读取后的DataSet具有如下的结构

raw_words
上海 浦东 开发 与 法制 建设 同步
新华社 上海 二月 十日 电 ( 记者 谢金虎 、 张持坚 )
...
__init__(dataset_name: str = None)[源代码]
参数:dataset_name (str) -- data的名称,支持pku, msra, cityu(繁体), as(繁体), None
download(dev_ratio=0.1, re_download=False) → str[源代码]

如果你使用了该数据集,请引用以下的文章:Thomas Emerson, The Second International Chinese Word Segmentation Bakeoff, 2005. 更多信息可以在http://sighan.cs.uchicago.edu/bakeoff2005/查看

参数:
  • dev_ratio (float) -- 如果路径中没有dev集,从train划分多少作为dev的数据. 如果为0,则不划分dev。
  • re_download (bool) -- 是否重新下载数据,以重新切分数据。
返回:

str

load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.MNLILoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.MNLILoader fastNLP.io.loader.MNLILoader

读取的数据格式为:

Example:

index   promptID        pairID  genre   sentence1_binary_parse  sentence2_binary_parse  sentence1_parse sentence2_parse sentence1       sentence2       label1  gold_label
0       31193   31193n  government      ( ( Conceptually ( cream skimming ) ) ...
1       101457  101457e telephone       ( you ( ( know ( during ( ( ( the season ) and ) ( i guess ) ) )...
...

读取MNLI任务的数据,读取之后的DataSet中包含以下的内容,words0是sentence1, words1是sentence2, target是gold_label, 测试集中没 有target列。

raw_words1 raw_words2 target
Conceptually cream ... Product and geography... neutral
you know during the ... You lose the things to the... entailment
... ... ...
download()[源代码]

如果你使用了这个数据,请引用

https://www.nyu.edu/projects/bowman/multinli/paper.pdf :return:

load(paths: str = None)[源代码]
参数:paths (str) -- 传入数据所在目录,会在该目录下寻找dev_matched.tsv, dev_mismatched.tsv, test_matched.tsv, test_mismatched.tsv, train.tsv文件夹
返回:DataBundle
class fastNLP.io.loader.QuoraLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.QuoraLoader fastNLP.io.loader.QuoraLoader

Quora matching任务的数据集Loader

支持读取的文件中的内容,应该有以下的形式, 以制表符分隔,且前三列的内容必须是:第一列是label,第二列和第三列是句子

Example:

1       How do I get funding for my web based startup idea ?    How do I get seed funding pre product ? 327970
0       Is honey a viable alternative to sugar for diabetics ?  How would you compare the United States ' euthanasia laws to Denmark ?  90348
...

加载的DataSet将具备以下的field

raw_words1 raw_words2 target
How do I get funding for my web based... How do I get seed funding... 1
Is honey a viable alternative ... How would you compare the United... 0
... ... ...
download()[源代码]

由于版权限制,不能提供自动下载功能。可参考

https://www.kaggle.com/c/quora-question-pairs/data

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.SNLILoader[源代码]

基类 fastNLP.io.JsonLoader

别名 fastNLP.io.SNLILoader fastNLP.io.loader.SNLILoader

文件每一行是一个sample,每一行都为一个json对象,其数据格式为:

Example:

{"annotator_labels": ["neutral", "entailment", "neutral", "neutral", "neutral"], "captionID": "4705552913.jpg#2",
 "gold_label": "neutral", "pairID": "4705552913.jpg#2r1n",
 "sentence1": "Two women are embracing while holding to go packages.",
 "sentence1_binary_parse": "( ( Two women ) ( ( are ( embracing ( while ( holding ( to ( go packages ) ) ) ) ) ) . ) )",
 "sentence1_parse": "(ROOT (S (NP (CD Two) (NNS women)) (VP (VBP are) (VP (VBG embracing) (SBAR (IN while) (S (NP (VBG holding)) (VP (TO to) (VP (VB go) (NP (NNS packages)))))))) (. .)))",
 "sentence2": "The sisters are hugging goodbye while holding to go packages after just eating lunch.",
 "sentence2_binary_parse": "( ( The sisters ) ( ( are ( ( hugging goodbye ) ( while ( holding ( to ( ( go packages ) ( after ( just ( eating lunch ) ) ) ) ) ) ) ) ) . ) )",
 "sentence2_parse": "(ROOT (S (NP (DT The) (NNS sisters)) (VP (VBP are) (VP (VBG hugging) (NP (UH goodbye)) (PP (IN while) (S (VP (VBG holding) (S (VP (TO to) (VP (VB go) (NP (NNS packages)) (PP (IN after) (S (ADVP (RB just)) (VP (VBG eating) (NP (NN lunch))))))))))))) (. .)))"
 }

读取之后的DataSet中的field情况为

下面是使用SNLILoader加载的DataSet所具备的field
target raw_words1 raw_words2  
neutral Two women are embracing while holding.. The sisters are hugging goodbye...  
entailment Two women are embracing while holding... Two woman are holding packages.  
... ... ...  
download()[源代码]

如果您的文章使用了这份数据,请引用

http://nlp.stanford.edu/pubs/snli_paper.pdf

返回:str
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle[源代码]

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

读取的field根据Loader初始化时传入的field决定。

参数:paths (str) -- 传入一个目录, 将在该目录下寻找snli_1.0_train.jsonl, snli_1.0_dev.jsonl 和snli_1.0_test.jsonl三个文件。
返回:返回的 DataBundle
class fastNLP.io.loader.QNLILoader[源代码]

基类 fastNLP.io.JsonLoader

别名 fastNLP.io.QNLILoader fastNLP.io.loader.QNLILoader

第一行为标题(具体内容会被忽略),之后每一行是一个sample,由index、问题、句子和标签构成(以制表符分割),数据结构如下:

Example:

index   question        sentence        label
0       What came into force after the new constitution was herald?     As of that day, the new constitution heralding the Second Republic came into force.     entailment

QNLI数据集的Loader, 加载的DataSet将具备以下的field, raw_words1是question, raw_words2是sentence, target是label

raw_words1 raw_words2 target
What came into force after the new... As of that day... entailment
... .  

test数据集没有target列

download()[源代码]

如果您的实验使用到了该数据,请引用

https://arxiv.org/pdf/1809.05053.pdf

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.RTELoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.RTELoader fastNLP.io.loader.RTELoader

第一行为标题(具体内容会被忽略),之后每一行是一个sample,由index、句子1、句子2和标签构成(以制表符分割),数据结构如下:

Example:

index   sentence1       sentence2       label
0       Dana Reeve, the widow of the actor Christopher Reeve, has died of lung cancer at age 44, according to the Christopher Reeve Foundation. Christopher Reeve had an accident.      not_entailment

RTE数据的loader 加载的DataSet将具备以下的field, raw_words1是sentence0,raw_words2是sentence1, target是label

raw_words1 raw_words2 target
Dana Reeve, the widow of the actor... Christopher Reeve had an... not_entailment
... ...  

test数据集没有target列

download()[源代码]

如果您的实验使用到了该数据,请引用GLUE Benchmark

https://openreview.net/pdf?id=rJ4km2R5t7

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.CNXNLILoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.CNXNLILoader fastNLP.io.loader.CNXNLILoader

数据集简介:中文句对NLI(本为multi-lingual的数据集,但是这里只取了中文的数据集)。原句子已被MOSES tokenizer处理,这里我们将其还原并重新按字tokenize 原始数据数据为:

Example:

premise hypo    label
我们 家里  一个    找到  可以   时间 我们 家里  一个   从来 没有 时间 使用  .  entailment

dev和test中的数据为csv或json格式,包括十多个field,这里只取与以上三个field中的数据 读取后的Dataset将具有以下数据结构:

raw_chars1 raw_chars2 target
我们 家里 有 一个 但 我 没 找到 我 可以 用 的 时间 我们 家里 有 一个 但 我 从来 没有 时间 使用 它 . 0
... ... ...
download() → str[源代码]

自动下载数据,该数据取自 https://arxiv.org/abs/1809.05053https://arxiv.org/pdf/1905.05526.pdf https://arxiv.org/pdf/1901.10125.pdf https://arxiv.org/pdf/1809.05053.pdf 有使用 :return:

class fastNLP.io.loader.BQCorpusLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.BQCorpusLoader fastNLP.io.loader.BQCorpusLoader

别名: 数据集简介:句子对二分类任务(判断是否具有相同的语义) 原始数据结构为:

Example:

sentence1,sentence2,label
综合评分不足什么原因,综合评估的依据,0
什么时候我能使用微粒贷,你就赶快给我开通就行了,0

读取后的Dataset将具有以下数据结构:

raw_chars1 raw_chars2 target
综合评分不足什么原因 综合评估的依据 0
什么时候我能使用微粒贷 你就赶快给我开通就行了 0
... ... ...
download()[源代码]

由于版权限制,不能提供自动下载功能。可参考

https://github.com/ymcui/Chinese-BERT-wwm

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.LCQMCLoader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.LCQMCLoader fastNLP.io.loader.LCQMCLoader

数据集简介:句对匹配(question matching)

原始数据为:

Example:

喜欢打篮球的男生喜欢什么样的女生        爱打篮球的男生喜欢什么样的女生 1
你帮我设计小说的封面吧     谁能帮我给小说设计个封面?   0

读取后的Dataset将具有以下的数据结构

raw_chars1 raw_chars2 target
喜欢打篮球的男生喜欢什么样的女生 爱打篮球的男生喜欢什么样的女生 1
你帮我设计小说的封面吧 妇可以戴耳机听音乐吗? 0
... ... ...
download()[源代码]

由于版权限制,不能提供自动下载功能。可参考

https://github.com/ymcui/Chinese-BERT-wwm

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.CoReferenceLoader(fields=None, dropna=False)[源代码]

基类 fastNLP.io.loader.JsonLoader

别名 fastNLP.io.CoReferenceLoader fastNLP.io.loader.CoReferenceLoader

原始数据中内容应该为, 每一行为一个json对象,其中doc_key包含文章的种类信息,speakers包含每句话的说话者信息,cluster是指向现实中同一个事物的聚集,sentences是文本信息内容。

Example:

{"doc_key": "bc/cctv/00/cctv_0000_0",
 "speakers": [["Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1"], ["Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1"], ["Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1", "Speaker#1"]],
 "clusters": [[[70, 70], [485, 486], [500, 500], [73, 73], [55, 55], [153, 154], [366, 366]]],
 "sentences": [["In", "the", "summer", "of", "2005", ",", "a", "picture", "that", "people", "have", "long", "been", "looking", "forward", "to", "started", "emerging", "with", "frequency", "in", "various", "major", "Hong", "Kong", "media", "."], ["With", "their", "unique", "charm", ",", "these", "well", "-", "known", "cartoon", "images", "once", "again", "caused", "Hong", "Kong", "to", "be", "a", "focus", "of", "worldwide", "attention", "."]]
 }

读取预处理好的Conll2012数据,数据结构如下:

raw_words1 raw_words2 raw_words3 raw_words4
bc/cctv/00/cctv_0000_0 [['Speaker#1', 'Speaker#1', 'Speaker#1... [[[70, 70], [485, 486], [500, 500], [7... [['In', 'the', 'summer', 'of', '2005',...
... ... ... ...
download()[源代码]

由于版权限制,不能提供自动下载功能。可参考

https://www.aclweb.org/anthology/W12-4501

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle
class fastNLP.io.loader.CMRC2018Loader[源代码]

基类 fastNLP.io.Loader

别名 fastNLP.io.CMRC2018Loader fastNLP.io.loader.qa.CMRC2018Loader

请直接使用从fastNLP下载的数据进行处理。该数据集未提供测试集,测试需要通过上传到对应的系统进行评测

读取之后训练集DataSet将具备以下的内容,每个问题的答案只有一个

:header:"title", "context", "question", "answers", "answer_starts", "id"
范廷颂 范廷颂枢机(,),圣名保禄·若瑟()... 范廷颂是什么时候被任为主教的? ["1963年"] ["30"] TRAIN_186_QUERY_0
范廷颂 范廷颂枢机(,),圣名保禄·若瑟()... 1990年,范廷颂担任什么职务? ["1990年被擢升为天..."] ["41"] TRAIN_186_QUERY_1
... ... ... ... . ...

其中title是文本的标题,多条记录可能是相同的title;id是该问题的id,具备唯一性

验证集DataSet将具备以下的内容,每个问题的答案可能有三个(有时候只是3个重复的答案)

title context question answers answer_starts id
战国无双3 《战国无双3》()是由光荣和ω-force开发... 《战国无双3》是由哪两个公司合作开发的? ['光荣和ω-force', '光荣和ω-force', '光荣和ω-force'] [30, 30, 30] DEV_0_QUERY_0
战国无双3 《战国无双3》()是由光荣和ω-force开发... 男女主角亦有专属声优这一模式是由谁改编的? ['村雨城', '村雨城', '任天堂游戏谜之村雨城'] [226, 226, 219] DEV_0_QUERY_1
... ... ... ... . ...

其中answer_starts是从0开始的index。例如"我来自a复旦大学?",其中"复"的开始index为4。另外"Russell评价说"中的说的index为9, 因为 英文和数字都直接按照character计量的。

download() → str[源代码]

如果您使用了本数据,请引用A Span-Extraction Dataset for Chinese Machine Reading Comprehension. Yiming Cui, Ting Liu, etc.

返回:
load(paths: Union[str, Dict[str, str]] = None) → fastNLP.io.data_bundle.DataBundle

从指定一个或多个路径中的文件中读取数据,返回 DataBundle

参数:Dict[str, str]] paths (Union[str,) --

支持以下的几种输入方式:

0.如果为None,则先查看本地是否有缓存,如果没有则自动下载并缓存。

1.传入一个目录, 该目录下名称包含train的被认为是train,包含test的被认为是test,包含dev的被认为是dev,如果检测到多个文件名包含'train'、 'dev'、 'test'则会报错:

data_bundle = xxxLoader().load('/path/to/dir')  # 返回的DataBundle中datasets根据目录下是否检测到train
#  dev、 test等有所变化,可以通过以下的方式取出DataSet
tr_data = data_bundle.get_dataset('train')
te_data = data_bundle.get_dataset('test')  # 如果目录下有文件包含test这个字段

2.传入一个dict,比如train,dev,test不在同一个目录下,或者名称中不包含train, dev, test:

paths = {'train':"/path/to/tr.conll", 'dev':"/to/validate.conll", "test":"/to/te.conll"}
data_bundle = xxxLoader().load(paths)  # 返回的DataBundle中的dataset中包含"train", "dev", "test"
dev_data = data_bundle.get_dataset('dev')

3.传入文件路径:

data_bundle = xxxLoader().load("/path/to/a/train.conll") # 返回DataBundle对象, datasets中仅包含'train'
tr_data = data_bundle.get_dataset('train')  # 取出DataSet
返回:返回的 DataBundle