code: def split_predicate(ex: Extraction) -> Extraction:
      
      rel_toks = ex.toks[char_to_word_index(ex.rel.span[0], ex.sent) \
                         : char_to_word_index(ex.rel.span[1], ex.sent) + 1]
      if not rel_toks:
          return ex
  
      verb_inds = [tok_ind for (tok_ind, tok)
                   in enumerate(rel_toks)
                   if tok.tag_.startswith('VB')]
  
      last_verb_ind = verb_inds[-1] if verb_inds \
                      else (len(rel_toks) - 1)
  
      rel_parts = [element_from_span([rel_toks[last_verb_ind]],
                                     'V')]
  
      before_verb = rel_toks[ : last_verb_ind]
      after_verb = rel_toks[last_verb_ind + 1 : ]
  
      if before_verb:
          rel_parts.append(element_from_span(before_verb, "BV"))
  
      if after_verb:
          rel_parts.append(element_from_span(after_verb, "AV"))
  
      return Extraction(ex.sent, ex.toks, ex.arg1, rel_parts, ex.args2, ex.confidence)
docs: Ensure single word predicate
      by adding "before-predicate" and "after-predicate"
      arguments.