class_docstr: To be inherited for each language's tokenization declarations.
  
  Example: ``SentenceTokenizationProcess`` -> ``OldNorseTokenizationProcess``
  
  >>> from cltk.tokenizers.processes import TokenizationProcess
  >>> from cltk.core.data_types import Process
  >>> issubclass(SentenceTokenizationProcess, Process)
  True
  >>> tok = SentenceTokenizationProcess()
code: def run(self, input_doc: Doc) -> Doc:
      output_doc = deepcopy(input_doc)
      sentence_tokenizer = self.algorithm
      if not isinstance(sentence_tokenizer, SentenceTokenizer):
          raise CLTKException(
              "Algorithm must be an instance of SentenceTokenizer subclass"
          )
  
      sentences = sentence_tokenizer.tokenize(
          output_doc.raw, self.model
      )
      sentence_indices = []
      for i, sentence in enumerate(sentences):
          if i >= 1:
              sentence_indices.append(
                  sentence_indices[-1] + len(sentences[i])
              )
          else:
              sentence_indices.append(len(sentence))
      sentence_index = 0
      for j, word in enumerate(output_doc.words):
          if sentence_indices[
              sentence_index
          ] < word.index_char_stop and sentence_index + 1 < len(
              sentence_indices
          ):
              sentence_index += 1
          word.index_sentence = sentence_index
      return output_doc
  
file_path: cltk/src/cltk/sentence/processes.py
imports: from copy import deepcopy
  from dataclasses import dataclass
  from boltons.cacheutils import cachedproperty
  from cltk.core import CLTKException
  from cltk.core.data_types import Doc, Process
  from cltk.sentence.non import OldNorseRegexSentenceTokenizer
  from cltk.sentence.sentence import SentenceTokenizer
label_desc: Use image node_id 2 for calling the SentenceTokenizationProcess obj's underlying member method code with example usage: obj.run(input_doc) and returns: output_doc