code: def _improve_answer_span(
      doc_tokens, input_start, input_end, tokenizer, orig_answer_text
  ):
      """Returns tokenized answer spans that better match the annotated answer."""
      tok_answer_text = " ".join(tokenizer.tokenize(orig_answer_text))
  
      for new_start in range(input_start, input_end + 1):
          for new_end in range(input_end, new_start - 1, -1):
              text_span = " ".join(
                  doc_tokens[new_start : (new_end + 1)]
              )
              if text_span == tok_answer_text:
                  return (new_start, new_end)
  
      return (input_start, input_end)
  
imports: import json
  import os
  from functools import partial
  from multiprocessing import Pool, cpu_count
  import numpy
  from tqdm import tqdm
  from ...models.bert.tokenization_bert import whitespace_tokenize
  from ...tokenization_utils_base import BatchEncoding, PreTrainedTokenizerBase, TruncationStrategy
  from ...utils import is_tf_available, is_torch_available, logging
  from .utils import DataProcessor
label_desc: Use image node_id 1 for calling a global function with example usage: _improve_answer_span(doc_tokens, input_start, input_end, tokenizer, orig_answer_text) and returns: input_start,  input_end, new_start,  new_end