docstr: Clean the tokens and  gradients
  Remove "[CLS]","[CLR]", "[SEP]" tokens
  Reduce (mean) gradients values for tokens that are split ##
docstr_tok: ["Clean","the","tokens","and","gradients","Remove","``","[","CLS","]","''",",","''","[","CLR","]","''",",","``","[","SEP","]","''","tokens","Reduce","(","mean",")","gradients","values","for","tokens","that","are","split","#","#"]
code: def clean_tokens(self, gradients, tokens, token_types):
      """
      Clean the tokens and  gradients
      Remove "[CLS]","[CLR]", "[SEP]" tokens
      Reduce (mean) gradients values for tokens that are split ##
      """
      token_holder = []
      token_type_holder = []
      gradient_holder = []
      i = 0
      while i < len(tokens):
          if tokens[i] not in ["[CLS]", "[CLR]", "[SEP]"]:
              token = tokens[i]
              conn = gradients[i]
              token_type = token_types[i]
              if i < len(tokens) - 1:
                  if tokens[i + 1][0:2] == "##":
                      token = tokens[i]
                      conn = gradients[i]
                      j = 1
                      while (
                          i < len(tokens) - 1
                          and tokens[i + 1][0:2] == "##"
                      ):
                          i += 1
                          token += tokens[i][2:]
                          conn += gradients[i]
                          j += 1
                      conn = conn / j
              token_holder.append(token)
              token_type_holder.append(token_type)
              # gradient_holder.append(conn)
              gradient_holder.append(
                  {
                      "gradient": conn,
                      "token": token,
                      "token_type": token_type,
                  }
              )
          i += 1
      return gradient_holder
  
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 8 for calling the BERTReader obj's underlying member method code with example usage: obj.clean_tokens(gradients, tokens, token_types) and returns: gradient_holder