| @@ -14,27 +14,56 @@ | |||||
| __all__ = [ | __all__ = [ | ||||
| 'EmbedLoader', | 'EmbedLoader', | ||||
| 'CSVLoader', | |||||
| 'JsonLoader', | |||||
| 'DataBundle', | 'DataBundle', | ||||
| 'DataSetLoader', | 'DataSetLoader', | ||||
| 'ConllLoader', | |||||
| 'Conll2003Loader', | |||||
| 'YelpLoader', | |||||
| 'YelpFullLoader', | |||||
| 'YelpPolarityLoader', | |||||
| 'IMDBLoader', | 'IMDBLoader', | ||||
| 'MatchingLoader', | |||||
| 'SNLILoader', | |||||
| 'MNLILoader', | |||||
| 'MTL16Loader', | |||||
| 'PeopleDailyCorpusLoader', | |||||
| 'QNLILoader', | |||||
| 'QuoraLoader', | |||||
| 'RTELoader', | |||||
| 'SSTLoader', | 'SSTLoader', | ||||
| 'SST2Loader', | 'SST2Loader', | ||||
| 'YelpLoader', | |||||
| 'ConllLoader', | |||||
| 'Conll2003Loader', | |||||
| 'Conll2003NERLoader', | |||||
| 'OntoNotesNERLoader', | |||||
| 'CTBLoader', | |||||
| 'Loader', | |||||
| 'CSVLoader', | |||||
| 'JsonLoader', | |||||
| 'CWSLoader', | |||||
| 'MNLILoader', | |||||
| "QuoraLoader", | |||||
| "SNLILoader", | |||||
| "QNLILoader", | |||||
| "RTELoader", | |||||
| "YelpFullPipe", | |||||
| "YelpPolarityPipe", | |||||
| "SSTPipe", | |||||
| "SST2Pipe", | |||||
| "IMDBPipe", | |||||
| "Conll2003NERPipe", | |||||
| "OntoNotesNERPipe", | |||||
| "MatchingBertPipe", | |||||
| "RTEBertPipe", | |||||
| "SNLIBertPipe", | |||||
| "QuoraBertPipe", | |||||
| "QNLIBertPipe", | |||||
| "MNLIBertPipe", | |||||
| "MatchingPipe", | |||||
| "RTEPipe", | |||||
| "SNLIPipe", | |||||
| "QuoraPipe", | |||||
| "QNLIPipe", | |||||
| "MNLIPipe", | |||||
| 'ModelLoader', | 'ModelLoader', | ||||
| 'ModelSaver', | 'ModelSaver', | ||||
| ] | ] | ||||
| @@ -44,4 +73,5 @@ from .base_loader import DataBundle, DataSetLoader | |||||
| from .dataset_loader import CSVLoader, JsonLoader | from .dataset_loader import CSVLoader, JsonLoader | ||||
| from .model_io import ModelLoader, ModelSaver | from .model_io import ModelLoader, ModelSaver | ||||
| from .data_loader import * | |||||
| from .loader import * | |||||
| from .pipe import * | |||||
| @@ -1,30 +1,61 @@ | |||||
| """ | """ | ||||
| Loader用于读取数据,并将内容读取到 :class:`~fastNLP.DataSet` 或者 :class:`~fastNLP.io.DataBundle`中。所有的Loader都支持以下的 | Loader用于读取数据,并将内容读取到 :class:`~fastNLP.DataSet` 或者 :class:`~fastNLP.io.DataBundle`中。所有的Loader都支持以下的 | ||||
| 三个方法: __init__(),_load(), loads(). 其中__init__()用于申明读取参数,以及说明该Loader支持的数据格式,读取后Dataset中field | |||||
| ; _load(path)方法传入一个文件路径读取单个文件,并返回DataSet; load(paths)用于读取文件夹下的文件,并返回DataBundle, load()方法 | |||||
| 支持以下三种类型的参数 | |||||
| 三个方法: __init__(),_load(), loads(). 其中__init__()用于申明读取参数,以及说明该Loader支持的数据格式,读取后Dataset中field | |||||
| ; _load(path)方法传入一个文件路径读取单个文件,并返回DataSet; load(paths)用于读取文件夹下的文件,并返回DataBundle, load()方法 | |||||
| 支持以下三种类型的参数:: | |||||
| Example:: | |||||
| (0) 如果传入None,将尝试自动下载数据集并缓存。但不是所有的数据都可以直接下载。 | |||||
| (1) 如果传入的是一个文件path,则返回的DataBundle包含一个名为train的DataSet可以通过data_bundle.datasets['train']获取 | |||||
| (2) 传入的是一个文件夹目录,将读取的是这个文件夹下文件名中包含'train', 'test', 'dev'的文件,其它文件会被忽略。 | |||||
| 假设某个目录下的文件为 | |||||
| -train.txt | |||||
| -dev.txt | |||||
| -test.txt | |||||
| -other.txt | |||||
| Loader().load('/path/to/dir')读取,返回的data_bundle中可以用data_bundle.datasets['train'], data_bundle.datasets['dev'], | |||||
| data_bundle.datasets['test']获取对应的DataSet,其中other.txt的内容会被忽略。 | |||||
| 假设某个目录下的文件为 | |||||
| -train.txt | |||||
| -dev.txt | |||||
| Loader().load('/path/to/dir')读取,返回的data_bundle中可以用data_bundle.datasets['train'], data_bundle.datasets['dev']获取 | |||||
| 对应的DataSet。 | |||||
| (3) 传入一个dict,key为dataset的名称,value是该dataset的文件路径。 | |||||
| paths = {'train':'/path/to/train', 'dev': '/path/to/dev', 'test':'/path/to/test'} | |||||
| Loader().load(paths) # 返回的data_bundle可以通过以下的方式获取相应的DataSet, data_bundle.datasets['train'], data_bundle.datasets['dev'], | |||||
| data_bundle.datasets['test'] | |||||
| (0) 如果传入None,将尝试自动下载数据集并缓存。但不是所有的数据都可以直接下载。 | |||||
| (1) 如果传入的是一个文件path,则返回的DataBundle包含一个名为train的DataSet可以通过data_bundle.datasets['train']获取 | |||||
| (2) 传入的是一个文件夹目录,将读取的是这个文件夹下文件名中包含'train', 'test', 'dev'的文件,其它文件会被忽略。 | |||||
| 假设某个目录下的文件为 | |||||
| -train.txt | |||||
| -dev.txt | |||||
| -test.txt | |||||
| -other.txt | |||||
| Loader().load('/path/to/dir')读取,返回的data_bundle中可以用data_bundle.datasets['train'], data_bundle.datasets['dev'], | |||||
| data_bundle.datasets['test']获取对应的DataSet,其中other.txt的内容会被忽略。 | |||||
| 假设某个目录下的文件为 | |||||
| -train.txt | |||||
| -dev.txt | |||||
| Loader().load('/path/to/dir')读取,返回的data_bundle中可以用data_bundle.datasets['train'], data_bundle.datasets['dev']获取 | |||||
| 对应的DataSet。 | |||||
| (3) 传入一个dict,key为dataset的名称,value是该dataset的文件路径。 | |||||
| paths = {'train':'/path/to/train', 'dev': '/path/to/dev', 'test':'/path/to/test'} | |||||
| Loader().load(paths) # 返回的data_bundle可以通过以下的方式获取相应的DataSet, data_bundle.datasets['train'], data_bundle.datasets['dev'], | |||||
| data_bundle.datasets['test'] | |||||
| """ | """ | ||||
| __all__ = [ | |||||
| 'YelpLoader', | |||||
| 'YelpFullLoader', | |||||
| 'YelpPolarityLoader', | |||||
| 'IMDBLoader', | |||||
| 'SSTLoader', | |||||
| 'SST2Loader', | |||||
| 'ConllLoader', | |||||
| 'Conll2003Loader', | |||||
| 'Conll2003NERLoader', | |||||
| 'OntoNotesNERLoader', | |||||
| 'CTBLoader', | |||||
| 'Loader', | |||||
| 'CSVLoader', | |||||
| 'JsonLoader', | |||||
| 'CWSLoader', | |||||
| 'MNLILoader', | |||||
| "QuoraLoader", | |||||
| "SNLILoader", | |||||
| "QNLILoader", | |||||
| "RTELoader" | |||||
| ] | |||||
| from .classification import YelpLoader, YelpFullLoader, YelpPolarityLoader, IMDBLoader, SSTLoader, SST2Loader | |||||
| from .conll import ConllLoader, Conll2003Loader, Conll2003NERLoader, OntoNotesNERLoader, CTBLoader | |||||
| from .csv import CSVLoader | |||||
| from .cws import CWSLoader | |||||
| from .json import JsonLoader | |||||
| from .loader import Loader | |||||
| from .matching import MNLILoader, QuoraLoader, SNLILoader, QNLILoader, RTELoader | |||||
| @@ -1,4 +1,3 @@ | |||||
| import warnings | import warnings | ||||
| from .loader import Loader | from .loader import Loader | ||||
| from .json import JsonLoader | from .json import JsonLoader | ||||
| @@ -9,12 +8,6 @@ from typing import Union, Dict | |||||
| from ...core import DataSet | from ...core import DataSet | ||||
| from ...core import Instance | from ...core import Instance | ||||
| __all__ = ['MNLILoader', | |||||
| "QuoraLoader", | |||||
| "SNLILoader", | |||||
| "QNLILoader", | |||||
| "RTELoader"] | |||||
| class MNLILoader(Loader): | class MNLILoader(Loader): | ||||
| """ | """ | ||||
| @@ -1,8 +1,34 @@ | |||||
| """ | """ | ||||
| Pipe用于处理数据,所有的Pipe都包含一个process(DataBundle)方法,传入一个DataBundle对象, 在传入DataBundle上进行原位修改,并将其返回; | Pipe用于处理数据,所有的Pipe都包含一个process(DataBundle)方法,传入一个DataBundle对象, 在传入DataBundle上进行原位修改,并将其返回; | ||||
| process_from_file(paths)传入的文件路径,返回一个DataBundle。process(DataBundle)或者process_from_file(paths)的返回DataBundle | |||||
| 中的DataSet一般都包含原文与转换为index的输入,以及转换为index的target;除了DataSet之外,还会包含将field转为index时所建立的词表。 | |||||
| process_from_file(paths)传入的文件路径,返回一个DataBundle。process(DataBundle)或者process_from_file(paths)的返回DataBundle | |||||
| 中的DataSet一般都包含原文与转换为index的输入,以及转换为index的target;除了DataSet之外,还会包含将field转为index时所建立的词表。 | |||||
| """ | |||||
| __all__ = [ | |||||
| "YelpFullPipe", | |||||
| "YelpPolarityPipe", | |||||
| "SSTPipe", | |||||
| "SST2Pipe", | |||||
| "IMDBPipe", | |||||
| "Conll2003NERPipe", | |||||
| "OntoNotesNERPipe", | |||||
| "MatchingBertPipe", | |||||
| "RTEBertPipe", | |||||
| "SNLIBertPipe", | |||||
| "QuoraBertPipe", | |||||
| "QNLIBertPipe", | |||||
| "MNLIBertPipe", | |||||
| "MatchingPipe", | |||||
| "RTEPipe", | |||||
| "SNLIPipe", | |||||
| "QuoraPipe", | |||||
| "QNLIPipe", | |||||
| "MNLIPipe", | |||||
| ] | |||||
| """ | |||||
| from .classification import YelpFullPipe, YelpPolarityPipe, SSTPipe, SST2Pipe, IMDBPipe | |||||
| from .conll import Conll2003NERPipe, OntoNotesNERPipe | |||||
| from .matching import MatchingBertPipe, RTEBertPipe, SNLIBertPipe, QuoraBertPipe, QNLIBertPipe, MNLIBertPipe, \ | |||||
| MatchingPipe, RTEPipe, SNLIPipe, QuoraPipe, QNLIPipe, MNLIPipe | |||||
| @@ -1,4 +1,3 @@ | |||||
| from nltk import Tree | from nltk import Tree | ||||
| from ..base_loader import DataBundle | from ..base_loader import DataBundle | ||||
| @@ -19,15 +19,16 @@ class _NERPipe(Pipe): | |||||
| :param bool lower: 是否将words小写化后再建立词表,绝大多数情况都不需要设置为True。 | :param bool lower: 是否将words小写化后再建立词表,绝大多数情况都不需要设置为True。 | ||||
| :param int target_pad_val: target的padding值,target这一列pad的位置值为target_pad_val。默认为-100。 | :param int target_pad_val: target的padding值,target这一列pad的位置值为target_pad_val。默认为-100。 | ||||
| """ | """ | ||||
| def __init__(self, encoding_type:str='bio', lower:bool=False, target_pad_val=0): | |||||
| if encoding_type == 'bio': | |||||
| def __init__(self, encoding_type: str = 'bio', lower: bool = False, target_pad_val=0): | |||||
| if encoding_type == 'bio': | |||||
| self.convert_tag = iob2 | self.convert_tag = iob2 | ||||
| else: | else: | ||||
| self.convert_tag = iob2bioes | self.convert_tag = iob2bioes | ||||
| self.lower = lower | self.lower = lower | ||||
| self.target_pad_val = int(target_pad_val) | self.target_pad_val = int(target_pad_val) | ||||
| def process(self, data_bundle:DataBundle)->DataBundle: | |||||
| def process(self, data_bundle: DataBundle) -> DataBundle: | |||||
| """ | """ | ||||
| 支持的DataSet的field为 | 支持的DataSet的field为 | ||||
| @@ -146,4 +147,3 @@ class OntoNotesNERPipe(_NERPipe): | |||||
| def process_from_file(self, paths): | def process_from_file(self, paths): | ||||
| data_bundle = OntoNotesNERLoader().load(paths) | data_bundle = OntoNotesNERLoader().load(paths) | ||||
| return self.process(data_bundle) | return self.process(data_bundle) | ||||
| @@ -6,6 +6,7 @@ from ...core import Const | |||||
| from ...core import Vocabulary | from ...core import Vocabulary | ||||
| from ..loader.matching import SNLILoader, MNLILoader, QNLILoader, RTELoader, QuoraLoader | from ..loader.matching import SNLILoader, MNLILoader, QNLILoader, RTELoader, QuoraLoader | ||||
| class MatchingBertPipe(Pipe): | class MatchingBertPipe(Pipe): | ||||
| """ | """ | ||||
| Matching任务的Bert pipe,输出的DataSet将包含以下的field | Matching任务的Bert pipe,输出的DataSet将包含以下的field | ||||
| @@ -1,9 +1,9 @@ | |||||
| from .. import DataBundle | from .. import DataBundle | ||||
| class Pipe: | class Pipe: | ||||
| def process(self, data_bundle:DataBundle)->DataBundle: | |||||
| def process(self, data_bundle: DataBundle) -> DataBundle: | |||||
| raise NotImplementedError | raise NotImplementedError | ||||
| def process_from_file(self, paths)->DataBundle: | |||||
| def process_from_file(self, paths) -> DataBundle: | |||||
| raise NotImplementedError | raise NotImplementedError | ||||