class_docstr: Container for data that can be used to describe a conversation turn.
  
  The turn is described by a set of attributes such as e.g. `TEXT`  and  `INTENT`
  when describing a user utterance or e.g. `ACTION_NAME` for describing a bot action.
  The container includes raw information (`self.data`) as well as features
  (`self.features`) for each such attribute.
  Moreover, the message has a timestamp and can keep track about information
  on a specific subset of attributes (`self.output_properties`).
docstr: Checks if there are any features present for the attribute and featurizers.
  
  If no featurizers are provided, all available features will be considered.
  
  Args:
      attribute: Message attribute.
      featurizers: Names of featurizers to consider.
  
  Returns:
      ``True``, if features are present, ``False`` otherwise.
docstr_tok: ["Checks","if","there","are","any","features","present","for","the","attribute","and","featurizers",".","If","no","featurizers","are","provided",",","all","available","features","will","be","considered",".","Args",":","attribute",":","Message","attribute",".","featurizers",":","Names","of","featurizers","to","consider",".","Returns",":","``","True","``",",","if","features","are","present",",","``","False","``","otherwise","."]
code: def features_present(
      self, attribute: Text, featurizers: Optional[List[Text]] = None
  ) -> bool:
      """Checks if there are any features present for the attribute and featurizers.
  
      If no featurizers are provided, all available features will be considered.
  
      Args:
          attribute: Message attribute.
          featurizers: Names of featurizers to consider.
  
      Returns:
          ``True``, if features are present, ``False`` otherwise.
      """
      if featurizers is None:
          featurizers = []
  
      (
          sequence_sparse_features,
          sentence_sparse_features,
      ) = self._filter_sparse_features(attribute, featurizers)
      (
          sequence_dense_features,
          sentence_dense_features,
      ) = self._filter_dense_features(attribute, featurizers)
  
      return (
          len(sequence_sparse_features) > 0
          or len(sentence_sparse_features) > 0
          or len(sequence_dense_features) > 0
          or len(sentence_dense_features) > 0
      )
  
imports: from typing import Any, Optional, Tuple, Text, Dict, Set, List
  import typing
  import copy
  import rasa.shared.utils.io
  from rasa.shared.exceptions import RasaException
  from rasa.shared.nlu.constants import TEXT, INTENT, RESPONSE, INTENT_RESPONSE_KEY, METADATA, METADATA_INTENT, METADATA_EXAMPLE, ENTITIES, ENTITY_ATTRIBUTE_START, ENTITY_ATTRIBUTE_END, RESPONSE_IDENTIFIER_DELIMITER, FEATURE_TYPE_SENTENCE, FEATURE_TYPE_SEQUENCE, ACTION_TEXT, ACTION_NAME, TEXT_TOKENS
  from rasa.shared.constants import DIAGNOSTIC_DATA
label_desc: Use image node_id 18 for calling the Message obj's underlying member method code with example usage: obj.features_present(attribute, featurizers) and returns: unknown