class_docstr: MRC Sample class to hold the mrc data info and provide atomic operations.
docstr: Get the start and end character idx of tokens in the context
  
  :param str text: context text
  :param list tokens: context words
  :return: list of spans
docstr_tok: ["Get","the","start","and","end","character","idx","of","tokens","in","the","context",":","param","str","text",":","context","text",":","param","list","tokens",":","context","words",":","return",":","list","of","spans"]
code: def convert_idx(text, tokens):
      r"""
      Get the start and end character idx of tokens in the context
  
      :param str text: context text
      :param list tokens: context words
      :return: list of spans
  
      """
      current = 0
      spans = []
      for token in tokens:
          current = text.find(token, current)
          if current < 0:
              print("Token {} cannot be found".format(token))
          spans.append((current, current + len(token)))
          current += len(token)
      return spans
  
imports: from .cnsample import CnSample
  from ..field import Field, CnTextField
  from ....common.utils.list_op import normalize_scope
  from ....common.preprocess.nltk_res_load import ModelManager
  from ....common.settings import *
  from nltk.stem.lancaster import LancasterStemmer
  from copy import deepcopy
label_desc: Use image node_id 5 for calling the MRCCnSample obj's underlying member method code with example usage: obj.convert_idx(text, tokens) and returns: spans