class_docstr: Creates a sequence of token counts features based on sklearn's `CountVectorizer`.
  
  All tokens which consist only of digits (e.g. 123 and 99
  but not ab12d) will be represented by a single feature.
  
  Set `analyzer` to 'char_wb'
  to use the idea of Subword Semantic Hashing
  from https://arxiv.org/abs/1810.07150.
class_docstr_tok: ["Creates","a","sequence","of","token","counts","features","based","on","sklearn","'s","`","CountVectorizer","`",".","All","tokens","which","consist","only","of","digits","(","e.g",".","123","and","99","but","not","ab12d",")","will","be","represented","by","a","single","feature",".","Set","`","analyzer","`","to","'char_wb'","to","use","the","idea","of","Subword","Semantic","Hashing","from","https",":","\/\/arxiv.org\/abs\/1810.07150","."]
docstr: Merges new vocabulary tokens with the existing vocabulary.
  
  New vocabulary items should always be added to the end of the existing
  vocabulary and the order of the existing vocabulary should not be disturbed.
  
  Args:
      existing_vocabulary: existing vocabulary
      vocabulary: set of new tokens
  
  Raises:
      RasaException: if `use_shared_vocab` is set to True and there are new
                     vocabulary items added during incremental training.
code: def _merge_new_vocabulary_tokens(
      self, existing_vocabulary: Dict[Text, int], vocabulary: Set[Text]
  ) -> None:
      """Merges new vocabulary tokens with the existing vocabulary.
  
      New vocabulary items should always be added to the end of the existing
      vocabulary and the order of the existing vocabulary should not be disturbed.
  
      Args:
          existing_vocabulary: existing vocabulary
          vocabulary: set of new tokens
  
      Raises:
          RasaException: if `use_shared_vocab` is set to True and there are new
                         vocabulary items added during incremental training.
      """
      for token in vocabulary:
          if token not in existing_vocabulary:
              if self.use_shared_vocab:
                  raise RasaException(
                      "Using a shared vocabulary in `CountVectorsFeaturizer` is not "
                      "supported during incremental training since it requires "
                      "dynamically adjusting layers that correspond to label "
                      f"attributes such as {INTENT_RESPONSE_KEY}, {INTENT}, etc. "
                      "This is currently not possible. In order to avoid this "
                      "exception we suggest to set `use_shared_vocab=False` or train"
                      " from scratch."
                  )
              existing_vocabulary[token] = len(existing_vocabulary)
  
imports: from __future__ import annotations
  import logging
  import re
  import scipy.sparse
  from typing import Any, Dict, List, Optional, Text, Tuple, Set, Type
  from rasa.nlu.tokenizers.tokenizer import Tokenizer
  import rasa.shared.utils.io
  from rasa.engine.graph import GraphComponent, ExecutionContext
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
  from rasa.engine.storage.resource import Resource
  from rasa.engine.storage.storage import ModelStorage
  from rasa.nlu.featurizers.sparse_featurizer.sparse_featurizer import SparseFeaturizer
  from rasa.nlu.utils.spacy_utils import SpacyModel
  from rasa.shared.constants import DOCS_URL_COMPONENTS
  import rasa.utils.io
  from sklearn.feature_extraction.text import CountVectorizer
  from rasa.shared.nlu.training_data.training_data import TrainingData
  from rasa.shared.nlu.training_data.message import Message
  from rasa.shared.exceptions import RasaException, FileIOException
  from rasa.nlu.constants import TOKENS_NAMES, MESSAGE_ATTRIBUTES, DENSE_FEATURIZABLE_ATTRIBUTES
  from rasa.shared.nlu.constants import TEXT, INTENT, INTENT_RESPONSE_KEY, ACTION_NAME
label_desc: Use image node_id 19 for calling the CountVectorsFeaturizer obj's underlying member method code with example usage: obj._merge_new_vocabulary_tokens(existing_vocabulary, vocabulary) without return types