code: def split_pred_string(predstr):
      
      predstr = predstr.strip('"\'')  # surrounding quotes don't matter
      rel_added = False
      if not predstr.lower().endswith('_rel'):
          logging.debug('Predicate does not end in "_rel": {}'
                        .format(predstr))
          rel_added = True
          predstr += '_rel'
      match = Pred.pred_re.search(predstr)
      if match is None:
          logging.debug('Unexpected predicate string: {}'.format(predstr))
          return (predstr, None, None, None)
      # _lemma_pos(_sense)?_end
      return (match.group('lemma'), match.group('pos'),
              match.group('sense'), None if rel_added else match.group('end'))
docs: Split *predstr* and return the (lemma, pos, sense, suffix) components.
  
      Examples:
          >>> Pred.split_pred_string('_dog_n_1_rel')
          ('dog', 'n', '1', 'rel')
          >>> Pred.split_pred_string('quant_rel')
          ('quant', None, None, 'rel')