code: def get_chunk_answer_span(self, inputs):
      start_time = time.time()
      answer_start_scores, answer_end_scores = self.model(inputs)
  
      answer_start, answer_end = self.get_best_start_end_position(
          answer_start_scores, answer_end_scores
      )
  
      answer_end = (
          answer_end - 1
          if answer_end == answer_end_scores.shape[1]
          else answer_end
      )
  
      answer_start_softmax_probability = tf.nn.softmax(
          answer_start_scores, axis=1
      ).numpy()[0][answer_start]
      answer_end_softmax_probability = tf.nn.softmax(
          answer_end_scores, axis=1
      ).numpy()[0][answer_end]
  
      answer = self.tokenizer.decode(
          inputs["input_ids"][0][answer_start:answer_end],
          skip_special_tokens=True,
      )
  
      # if model predict first token 0 which is in the question as part of the answer, return nothing
      if answer_start == 0:
          answer = ""
  
      elapsed_time = time.time() - start_time
      return {
          "answer": answer,
          "took": elapsed_time,
          "start_probability": str(answer_start_softmax_probability),
          "end_probability": str(answer_end_softmax_probability),
          "probability": str(
              answer_end_softmax_probability
              + answer_start_softmax_probability / 2
          ),
      }
  
file_path: neuralqa/neuralqa/reader/bertreader.py
imports: from neuralqa.reader import Reader
  import tensorflow
  import numpy
  import time
  import logging
label_desc: Use image node_id 3 for calling the BERTReader obj's underlying member method code with example usage: obj.get_chunk_answer_span(inputs) and returns: dict