code: def runTest(self):
      df = self.data
  
      document_assembler = (
          DocumentAssembler()
          .setInputCol("text")
          .setOutputCol("document")
      )
  
      action = "clean"
      patterns = ["<[^>]*>"]
      replacement = " "
      policy = "pretty_all"
  
      document_normalizer = (
          DocumentNormalizer()
          .setInputCols("document")
          .setOutputCol("normalizedDocument")
          .setAction(action)
          .setPatterns(patterns)
          .setReplacement(replacement)
          .setPolicy(policy)
          .setLowercase(True)
      )
  
      sentence_detector = (
          SentenceDetector()
          .setInputCols(["normalizedDocument"])
          .setOutputCol("sentence")
      )
  
      regex_tokenizer = (
          Tokenizer()
          .setInputCols(["sentence"])
          .setOutputCol("token")
          .fit(df)
      )
  
      doc_normalizer_pipeline = Pipeline().setStages(
          [
              document_assembler,
              document_normalizer,
              sentence_detector,
              regex_tokenizer,
          ]
      )
  
      ds = doc_normalizer_pipeline.fit(df).transform(df)
  
      ds.select("normalizedDocument").show()
  
file_path: spark-nlp/python/test/annotator/document_normalizer_spec.py
imports: import unittest
  import pytest
  from sparknlp.annotator import *
  from sparknlp.base import *
  from test.util import SparkSessionForTest
label_desc: Use image node_id 2 for calling the DocumentNormalizerSpec obj's underlying member method code with example usage: obj.runTest() without return types