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: Get processed text of attribute of a message.
code: def _get_processed_message_tokens_by_attribute(
      self, message: Message, attribute: Text = TEXT
  ) -> List[Text]:
      """Get processed text of attribute of a message."""
      if message.get(attribute) is None:
          # return empty list since sklearn countvectorizer does not like None
          # object while training and predicting
          return []
  
      tokens = self._get_message_tokens_by_attribute(message, attribute)
      tokens = self._process_tokens(tokens, attribute)
      tokens = self._replace_with_oov_token(tokens, attribute)
  
      return tokens
  
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 14 for calling the CountVectorsFeaturizer obj's underlying member method code with example usage: obj._get_processed_message_tokens_by_attribute(message, attribute) and returns: tokens, list