diff --git a/docs/source/fastNLP.io.data_loader.rst b/docs/source/fastNLP.io.data_loader.rst new file mode 100644 index 00000000..9261fa5c --- /dev/null +++ b/docs/source/fastNLP.io.data_loader.rst @@ -0,0 +1,7 @@ +fastNLP.io.data\_loader +========================== + +.. automodule:: fastNLP.io.data_loader + :members: + :undoc-members: + :show-inheritance: \ No newline at end of file diff --git a/docs/source/fastNLP.io.rst b/docs/source/fastNLP.io.rst index fad05a21..33afbbee 100644 --- a/docs/source/fastNLP.io.rst +++ b/docs/source/fastNLP.io.rst @@ -12,6 +12,7 @@ fastNLP.io .. toctree:: :titlesonly: + fastNLP.io.data_loader fastNLP.io.base_loader fastNLP.io.dataset_loader fastNLP.io.embed_loader diff --git a/docs/source/tutorials/tutorial_2_load_dataset.rst b/docs/source/tutorials/tutorial_2_load_dataset.rst index efccc14b..d964d8c7 100644 --- a/docs/source/tutorials/tutorial_2_load_dataset.rst +++ b/docs/source/tutorials/tutorial_2_load_dataset.rst @@ -6,7 +6,7 @@ 教程目录: - - `Part I: 数据集信息`_ + - `Part I: 数据集容器`_ - `Part II: 数据集的使用方式`_ - `Part III: 不同数据类型的DataSetLoader`_ - `Part IV: DataSetLoader举例`_ @@ -14,11 +14,11 @@ ---------------------------- -Part I: 数据集信息 +Part I: 数据集容器 ---------------------------- -在fastNLP中,我们使用 :class:`~fastNLP.io.base_loader.DataInfo` 来存储数据集信息。 :class:`~fastNLP.io.base_loader.DataInfo` -类包含了两个重要内容: `datasets` 和 `vocabs` 。 +在fastNLP中,我们使用 :class:`~fastNLP.io.base_loader.DataBundle` 来存储数据集信息。 +:class:`~fastNLP.io.base_loader.DataBundle` 类包含了两个重要内容: `datasets` 和 `vocabs` 。 `datasets` 是一个 `key` 为数据集名称(如 `train` , `dev` ,和 `test` 等), `value` 为 :class:`~fastNLP.DataSet` 的字典。 @@ -113,21 +113,13 @@ Part IV: DataSetLoader举例 .. code-block:: python - def _load(self, path): - ds = JsonLoader._load(self, path) # SNLI数据集原始文件为Json格式,可以采用JsonLoader来读取数据集文件 + data = SNLILoader().process( + paths='path/to/snli/data', to_lower=False, seq_len_type=arg.seq_len_type, + get_index=True, concat=False, + ) - parentheses_table = str.maketrans({'(': None, ')': None}) - # 字符串匹配格式:SNLI数据集的文本中由括号分割开的,组成树结构,因此 - # 我们将这些括号去除。 + 这里的data即可直接传入 :class:`~fastNLP.Trainer` 进行 - ds.apply(lambda ins: ins[Const.INPUTS(0)].translate(parentheses_table).strip().split(), - new_field_name=Const.INPUTS(0)) - # 把第一句话的内容用上面的字符串匹配格式进行替换,并将句子分割为一个由单词组成的list - ds.apply(lambda ins: ins[Const.INPUTS(1)].translate(parentheses_table).strip().split(), - new_field_name=Const.INPUTS(1)) - # 对第二句话的内容进行同样的预处理 - ds.drop(lambda x: x[Const.TARGET] == '-') # 将标签为'-'的样本丢掉 - return ds ------------------------------------------ Part V: fastNLP封装好的数据集加载器 @@ -138,56 +130,58 @@ fastNLP封装好的数据集加载器可以适用于多种类型的任务: - `文本分类任务`_ - `序列标注任务`_ - `Matching任务`_ - - `指代消解任务`_ - - `摘要任务`_ 文本分类任务 ------------------- -文本分类任务 +========================== ================================================================== +数据集名称 数据集加载器 +-------------------------- ------------------------------------------------------------------ +IMDb :class:`~fastNLP.io.data_loader.IMDBLoader` +-------------------------- ------------------------------------------------------------------ +SST :class:`~fastNLP.io.data_loader.SSTLoader` +-------------------------- ------------------------------------------------------------------ +SST-2 :class:`~fastNLP.io.data_loader.SST2Loader` +-------------------------- ------------------------------------------------------------------ +Yelp Polarity :class:`~fastNLP.io.data_loader.YelpLoader` +-------------------------- ------------------------------------------------------------------ +Yelp Full :class:`~fastNLP.io.data_loader.YelpLoader` +-------------------------- ------------------------------------------------------------------ +MTL16 :class:`~fastNLP.io.data_loader.MTL16Loader` +========================== ================================================================== 序列标注任务 ------------------- -序列标注任务 - - -Matching任务 -------------------- - -:class:`~fastNLP.io.data_loader.matching.SNLILoader` - 一个关于SNLI数据集的DataSetLoader。SNLI数据集来自 - `SNLI Data Set `_ . - -:class:`~fastNLP.io.data_loader.matching.MNLILoader` - 一个关于MultiNLI数据集的DataSetLoader。MultiNLI数据集来自 `GLUE benchmark `_ - -:class:`~fastNLP.io.data_loader.matching.QNLILoader` - 一个关于QNLI数据集的DataSetLoader。QNLI数据集来自 `GLUE benchmark `_ - -:class:`~fastNLP.io.data_loader.matching.RTELoader` - 一个关于Recognizing Textual Entailment数据集(RTE)的DataSetLoader。RTE数据集来自 - `GLUE benchmark `_ +========================== ================================================================== +数据集名称 数据集加载器 +-------------------------- ------------------------------------------------------------------ +Conll :class:`~fastNLP.io.data_loader.ConllLoader` +-------------------------- ------------------------------------------------------------------ +Conll2003 :class:`~fastNLP.io.data_loader.Conll2003Loader` +-------------------------- ------------------------------------------------------------------ +人民日报数据集 :class:`~fastNLP.io.data_loader.PeopleDailyCorpusLoader` +========================== ================================================================== -:class:`~fastNLP.io.data_loader.matching.QuoraLoader` - 一个关于Quora数据集的DataSetLoader。 - - -指代消解任务 -------------------- - -指代消解任务 - - - -摘要任务 +Matching任务 ------------------- -摘要任务 - +========================== ================================================================== +数据集名称 数据集加载器 +-------------------------- ------------------------------------------------------------------ +SNLI :class:`~fastNLP.io.data_loader.SNLILoader` +-------------------------- ------------------------------------------------------------------ +MultiNLI :class:`~fastNLP.io.data_loader.MNLILoader` +-------------------------- ------------------------------------------------------------------ +QNLI :class:`~fastNLP.io.data_loader.QNLILoader` +-------------------------- ------------------------------------------------------------------ +RTE :class:`~fastNLP.io.data_loader.RTELoader` +-------------------------- ------------------------------------------------------------------ +Quora Pair Dataset :class:`~fastNLP.io.data_loader.QuoraLoader` +========================== ================================================================== diff --git a/fastNLP/io/__init__.py b/fastNLP/io/__init__.py index d1d1dc5d..19d20923 100644 --- a/fastNLP/io/__init__.py +++ b/fastNLP/io/__init__.py @@ -23,6 +23,7 @@ __all__ = [ 'ConllLoader', 'Conll2003Loader', + 'IMDBLoader', 'MatchingLoader', 'PeopleDailyCorpusLoader', 'SNLILoader', diff --git a/fastNLP/io/data_loader/__init__.py b/fastNLP/io/data_loader/__init__.py index d4777ff8..07ed428b 100644 --- a/fastNLP/io/data_loader/__init__.py +++ b/fastNLP/io/data_loader/__init__.py @@ -1,5 +1,5 @@ """ -用于读数据集的模块, 具体包括: +用于读数据集的模块, 可以读取文本分类、序列标注、Matching任务的数据集 这些模块的使用方法如下: """ diff --git a/fastNLP/io/data_loader/conll.py b/fastNLP/io/data_loader/conll.py index 61f4f61b..9e21eda6 100644 --- a/fastNLP/io/data_loader/conll.py +++ b/fastNLP/io/data_loader/conll.py @@ -10,7 +10,7 @@ class ConllLoader(DataSetLoader): 别名::class:`fastNLP.io.ConllLoader` :class:`fastNLP.io.data_loader.ConllLoader` 读取Conll格式的数据. 数据格式详见 http://conll.cemantix.org/2012/data.html. 数据中以"-DOCSTART-"开头的行将被忽略,因为 - 该符号在conll 2003中被用为文档分割符。 + 该符号在conll 2003中被用为文档分割符。 列号从0开始, 每列对应内容为:: diff --git a/fastNLP/io/data_loader/imdb.py b/fastNLP/io/data_loader/imdb.py index bf53c5be..d3636cde 100644 --- a/fastNLP/io/data_loader/imdb.py +++ b/fastNLP/io/data_loader/imdb.py @@ -13,9 +13,12 @@ from ..utils import get_tokenizer class IMDBLoader(DataSetLoader): """ + 别名::class:`fastNLP.io.IMDBLoader` :class:`fastNLP.io.data_loader.IMDBLoader` + 读取IMDB数据集,DataSet包含以下fields: words: list(str), 需要分类的文本 + target: str, 文本的标签 """ diff --git a/fastNLP/io/data_loader/mnli.py b/fastNLP/io/data_loader/mnli.py index 5d857533..65863f3d 100644 --- a/fastNLP/io/data_loader/mnli.py +++ b/fastNLP/io/data_loader/mnli.py @@ -12,7 +12,9 @@ class MNLILoader(MatchingLoader, CSVLoader): 读取MNLI数据集,读取的DataSet包含fields:: words1: list(str),第一句文本, premise + words2: list(str), 第二句文本, hypothesis + target: str, 真实标签 数据来源: diff --git a/fastNLP/io/data_loader/mtl.py b/fastNLP/io/data_loader/mtl.py index 940ece51..cbca413d 100644 --- a/fastNLP/io/data_loader/mtl.py +++ b/fastNLP/io/data_loader/mtl.py @@ -10,9 +10,12 @@ from ..utils import check_dataloader_paths class MTL16Loader(CSVLoader): """ + 别名::class:`fastNLP.io.MTL16Loader` :class:`fastNLP.io.data_loader.MTL16Loader` + 读取MTL16数据集,DataSet包含以下fields: words: list(str), 需要分类的文本 + target: str, 文本的标签 数据来源:https://pan.baidu.com/s/1c2L6vdA diff --git a/fastNLP/io/data_loader/qnli.py b/fastNLP/io/data_loader/qnli.py index ff6302b2..84b0f3d6 100644 --- a/fastNLP/io/data_loader/qnli.py +++ b/fastNLP/io/data_loader/qnli.py @@ -12,7 +12,9 @@ class QNLILoader(MatchingLoader, CSVLoader): 读取QNLI数据集,读取的DataSet包含fields:: words1: list(str),第一句文本, premise + words2: list(str), 第二句文本, hypothesis + target: str, 真实标签 数据来源: diff --git a/fastNLP/io/data_loader/quora.py b/fastNLP/io/data_loader/quora.py index 12cc42ce..d0ee41ec 100644 --- a/fastNLP/io/data_loader/quora.py +++ b/fastNLP/io/data_loader/quora.py @@ -12,7 +12,9 @@ class QuoraLoader(MatchingLoader, CSVLoader): 读取MNLI数据集,读取的DataSet包含fields:: words1: list(str),第一句文本, premise + words2: list(str), 第二句文本, hypothesis + target: str, 真实标签 数据来源: diff --git a/fastNLP/io/data_loader/rte.py b/fastNLP/io/data_loader/rte.py index c6c64ef8..f8c5e2fc 100644 --- a/fastNLP/io/data_loader/rte.py +++ b/fastNLP/io/data_loader/rte.py @@ -12,7 +12,9 @@ class RTELoader(MatchingLoader, CSVLoader): 读取RTE数据集,读取的DataSet包含fields:: words1: list(str),第一句文本, premise + words2: list(str), 第二句文本, hypothesis + target: str, 真实标签 数据来源: diff --git a/fastNLP/io/data_loader/snli.py b/fastNLP/io/data_loader/snli.py index 8334fcfd..1db0ac5b 100644 --- a/fastNLP/io/data_loader/snli.py +++ b/fastNLP/io/data_loader/snli.py @@ -12,7 +12,9 @@ class SNLILoader(MatchingLoader, JsonLoader): 读取SNLI数据集,读取的DataSet包含fields:: words1: list(str),第一句文本, premise + words2: list(str), 第二句文本, hypothesis + target: str, 真实标签 数据来源: https://nlp.stanford.edu/projects/snli/snli_1.0.zip diff --git a/fastNLP/io/data_loader/sst.py b/fastNLP/io/data_loader/sst.py index df46b47f..0d881e65 100644 --- a/fastNLP/io/data_loader/sst.py +++ b/fastNLP/io/data_loader/sst.py @@ -104,7 +104,9 @@ class SSTLoader(DataSetLoader): class SST2Loader(CSVLoader): """ - 数据来源"SST":'https://firebasestorage.googleapis.com/v0/b/mtl-sentence-representations.appspot.com/o/data%2FSST-2.zip?alt=media&token=aabc5f6b-e466-44a2-b9b4-cf6337f84ac8', + 别名::class:`fastNLP.io.SST2Loader` :class:`fastNLP.io.data_loader.SST2Loader` + + 数据来源 SST: https://firebasestorage.googleapis.com/v0/b/mtl-sentence-representations.appspot.com/o/data%2FSST-2.zip?alt=media&token=aabc5f6b-e466-44a2-b9b4-cf6337f84ac8 """ def __init__(self): diff --git a/fastNLP/io/data_loader/yelp.py b/fastNLP/io/data_loader/yelp.py index c287a90c..333fcab0 100644 --- a/fastNLP/io/data_loader/yelp.py +++ b/fastNLP/io/data_loader/yelp.py @@ -13,12 +13,17 @@ from ..utils import check_dataloader_paths, get_tokenizer class YelpLoader(DataSetLoader): """ + 别名::class:`fastNLP.io.YelpLoader` :class:`fastNLP.io.data_loader.YelpLoader` 读取Yelp_full/Yelp_polarity数据集, DataSet包含fields: + words: list(str), 需要分类的文本 + target: str, 文本的标签 + chars:list(str),未index的字符列表 数据集:yelp_full/yelp_polarity + :param fine_grained: 是否使用SST-5标准,若 ``False`` , 使用SST-2。Default: ``False`` :param lower: 是否需要自动转小写,默认为False。 """