class_docstr: **XNLI Chinese** 数据集的 **Loader** ，该数据取自 https://arxiv.org/abs/1809.05053 ，在 https://arxiv.org/pdf/1905.05526.pdf
  、 https://arxiv.org/pdf/1901.10125.pdf 和 https://arxiv.org/pdf/1809.05053.pdf 有使用。
  
  该数据集为中文句对 NLI（本为 ``multi-lingual`` 的数据集，但是这里只取了中文的数据集）。原句子已被
  ``MOSES tokenizer`` 处理，这里我们将其还原并重新按字 tokenize 。原始数据为::
  
      premise hypo    label
      我们 家里 有 一个 但 我 没 找到 我 可以 用 的 时间 我们 家里 有 一个 但 我 从来 没有 时间 使用 它 .  entailment
  
  验证集和测试集中的数据为 csv 或 json 格式，这里只取以上三个 field 中的数据。
  读取的 :class:`~fastNLP.core.DataSet` 将具备以下的数据结构：
  
  .. csv-table::
     :header: "raw_chars1", "raw_chars2", "target"
     
     "我们 家里 有 一个 但 我 没 找到 我 可以 用 的 时间", "我们 家里 有 一个 但 我 从来 没有 时间 使用 它 .", "0"
     "...", "...", "..."
code: def _load_train(self, path: str = None):
      ds = DataSet()
  
      with open(path, "r", encoding="utf-8") as f:
          next(f)
          for line in f:
              raw_instance = line.strip().split("\t")
              premise = "".join(
                  raw_instance[0].split()
              )  # 把已经分好词的premise和hypo强制还原为character segmentation
              hypo = "".join(raw_instance[1].split())
              label = "".join(raw_instance[-1].split())
              if premise:
                  ds.append(
                      Instance(premise=premise, hypo=hypo, label=label)
                  )
  
      ds.rename_field("label", "target")
      ds.rename_field("premise", "raw_chars1")
      ds.rename_field("hypo", "raw_chars2")
      ds.apply(
          lambda i: "".join(i["raw_chars1"].split()),
          new_field_name="raw_chars1",
      )
      ds.apply(
          lambda i: "".join(i["raw_chars2"].split()),
          new_field_name="raw_chars2",
      )
      return ds
  
imports: import os
  from typing import Union, Dict
  from .csv import CSVLoader
  from .json import JsonLoader
  from .loader import Loader
  from fastNLP.io.data_bundle import DataBundle
  from ..utils import check_loader_paths
  from fastNLP.core.dataset import DataSet, Instance
  from fastNLP.core.log import logger
label_desc: Use image node_id 3 for calling the CNXNLILoader obj's underlying member method code with example usage: obj._load_train(path) and returns: ds