docstr: 通过标点符号拆分文本
  Args :
      text (String) : 所需拆分文本
      never_split (List) : 不拆分的词，默认为空
  Return :
      ["".join(x) for x in output] (List) : 拆分完的结果
docstr_tok: ["\u901a\u8fc7\u6807\u70b9\u7b26\u53f7\u62c6\u5206\u6587\u672c","Args",":","text","(","String",")",":","\u6240\u9700\u62c6\u5206\u6587\u672c","never_split","(","List",")",":","\u4e0d\u62c6\u5206\u7684\u8bcd\uff0c\u9ed8\u8ba4\u4e3a\u7a7a","Return",":","[","``","''",".join","(","x",")","for","x","in","output","]","(","List",")",":","\u62c6\u5206\u5b8c\u7684\u7ed3\u679c"]
code: def _run_split_on_punc(self, text, never_split=None):
      """
      通过标点符号拆分文本
      Args :
          text (String) : 所需拆分文本
          never_split (List) : 不拆分的词，默认为空
      Return :
          ["".join(x) for x in output] (List) : 拆分完的结果
      """
  
      if never_split is not None and text in never_split:
          return [text]
      chars = list(text)
      i = 0
      start_new_word = True
      output = []
      while i < len(chars):
          char = chars[i]
          if self.is_punctuation(char):
              output.append([char])
              start_new_word = True
          else:
              if start_new_word:
                  output.append([])
              start_new_word = False
              output[-1].append(char)
          i += 1
  
      return ["".join(x) for x in output]
  
file_path: DeepKE/src/deepke/relation_extraction/standard/tools/serializer.py
imports: import re
  import unicodedata
  import jieba
  import logging
  from typing import List
label_desc: Use image node_id 9 for calling the Serializer obj's underlying member method code with example usage: obj._run_split_on_punc(text, never_split) and returns: unknown, list