class_docstr: This annotator retrieves tokens and makes corrections automatically if
  not found in an English dictionary.
  
  The Symmetric Delete spelling correction algorithm reduces the complexity of
  edit candidate generation and dictionary lookup for a given
  Damerau-Levenshtein distance. It is six orders of magnitude faster (than the
  standard approach with deletes + transposes + replaces + inserts) and
  language independent.
  
  This is the instantiated model of the :class:`.NorvigSweetingApproach`. For
  training your own model, please see the documentation of that class.
  
  Pretrained models can be loaded with :meth:`.pretrained` of the companion
  object:
  
  >>>    spellChecker = NorvigSweetingModel.pretrained() \
  ...        .setInputCols(["token"]) \
  ...        .setOutputCol("spell") \
  
  
  The default model is ``"spellcheck_norvig"``, if no name is provided. For
  available pretrained models please see the `Models Hub
  <https://sparknlp.org/models?task=Spell+Check>`__.
  
  
  For extended examples of usage, see the `Examples
  <https://github.com/JohnSnowLabs/spark-nlp/blob/master/examples/python/training/english/vivekn-sentiment/VivekNarayanSentimentApproach.ipynb>`__.
  
  ====================== ======================
  Input Annotation types Output Annotation type
  ====================== ======================
  ``TOKEN``              ``TOKEN``
  ====================== ======================
  
  Parameters
  ----------
  None
  
  References
  ----------
  Inspired by Norvig model and `SymSpell
  <https://github.com/wolfgarbe/SymSpell>`__.
  
  Examples
  --------
  >>> import sparknlp
  >>> from sparknlp.base import *
  >>> from sparknlp.annotator import *
  >>> from pyspark.ml import Pipeline
  >>> documentAssembler = DocumentAssembler() \
  ...     .setInputCol("text") \
  ...     .setOutputCol("document")
  >>> tokenizer = Tokenizer() \
  ...     .setInputCols(["document"]) \
  ...     .setOutputCol("token")
  >>> spellChecker = NorvigSweetingModel.pretrained() \
  ...     .setInputCols(["token"]) \
  ...     .setOutputCol("spell")
  >>> pipeline = Pipeline().setStages([
  ...     documentAssembler,
  ...     tokenizer,
  ...     spellChecker
  ... ])
  >>> data = spark.createDataFrame([["somtimes i wrrite wordz erong."]]).toDF("text")
  >>> result = pipeline.fit(data).transform(data)
  >>> result.select("spell.result").show(truncate=False)
  +--------------------------------------+
  |result                                |
  +--------------------------------------+
  |[sometimes, i, write, words, wrong, .]|
  +--------------------------------------+
  
  See Also
  --------
  SymmetricDeleteModel : for an alternative approach to spell checking
  ContextSpellCheckerModel : for a DL based approach
code: def __init__(
      self,
      classname="com.johnsnowlabs.nlp.annotators.spell.norvig.NorvigSweetingModel",
      java_model=None,
  ):
      super(NorvigSweetingModel, self).__init__(
          classname=classname, java_model=java_model
      )
  
file_path: spark-nlp/python/sparknlp/annotator/spell_check/norvig_sweeting.py
imports: from sparknlp.common import *
label_desc: Use image node_id 1 to create a new NorvigSweetingModel object from inherited base classes: AnnotatorModel with example: obj = NorvigSweetingModel(classname, java_model)