code: def __init__(
      self,
      corpus: TermDocMatrix,
      non_text: bool = False,
      window_size: int = 1,
      to_text: str = " to<br/>",
      rank_embedder: Optional[CategoryEmbedderABC] = None,
      distance_measure: Callable[[np.array, np.array], float] = None,
  ):
      self.corpus = corpus
      self.window_size = window_size
      self.rank_embedder = (
          RankEmbedder() if rank_embedder is None else rank_embedder
      )
      self.distance_measure = (
          spearman_distance
          if distance_measure is None
          else distance_measure
      )
      self.non_text = non_text
      self.to_text = to_text
  
file_path: scattertext/scattertext/categorygrouping/characteristic_grouper.py
imports: from typing import List, Optional, Callable, Dict, Tuple
  import pandas
  import numpy
  from scipy.stats import spearmanr
  from tqdm.auto import tqdm
  from scattertext.TermDocMatrix import TermDocMatrix
  from scattertext.categorygrouping.characteristic_embedder_base import CategoryEmbedderABC
  from scattertext.categorygrouping.rank_embedder import RankEmbedder
label_desc: Use image node_id 1 to create a new CharacteristicGrouper object  with example: obj = CharacteristicGrouper(corpus, non_text, window_size, to_text, rank_embedder, distance_measure)