class_docstr: Implements conditional random fields (CRF) to do named entity recognition.
class_docstr_tok: ["Implements","conditional","random","fields","(","CRF",")","to","do","named","entity","recognition","."]
docstr: Convert dense features to python-crfsuite feature format.
docstr_tok: ["Convert","dense","features","to","python-crfsuite","feature","format","."]
code: def _get_dense_features(
      self, message: Message
  ) -> Optional[np.ndarray]:
      """Convert dense features to python-crfsuite feature format."""
      features, _ = message.get_dense_features(
          TEXT, self.component_config["featurizers"]
      )
  
      if features is None:
          return None
  
      tokens = message.get(TOKENS_NAMES[TEXT])
      if len(tokens) != len(features.features):
          rasa.shared.utils.io.raise_warning(
              f"Number of dense features ({len(features.features)}) for attribute "
              f"'{TEXT}' does not match number of tokens ({len(tokens)}).",
              docs=DOCS_URL_COMPONENTS + "#crfentityextractor",
          )
          return None
  
      return features.features
  
imports: from __future__ import annotations
  from collections import OrderedDict
  from enum import Enum
  import logging
  import typing
  import numpy
  from typing import Any, Dict, List, Optional, Text, Tuple, Callable, Type
  import rasa.nlu.utils.bilou_utils
  import rasa.shared.utils.io
  import rasa.utils.train_utils
  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.test import determine_token_labels
  from rasa.nlu.tokenizers.spacy_tokenizer import POS_TAG_KEY
  from rasa.nlu.extractors.extractor import EntityExtractorMixin
  from rasa.nlu.tokenizers.tokenizer import Token, Tokenizer
  from rasa.shared.nlu.training_data.training_data import TrainingData
  from rasa.shared.nlu.training_data.message import Message
  from rasa.nlu.constants import TOKENS_NAMES
  from rasa.shared.nlu.constants import TEXT, ENTITIES, ENTITY_ATTRIBUTE_TYPE, ENTITY_ATTRIBUTE_GROUP, ENTITY_ATTRIBUTE_ROLE, NO_ENTITY_TAG, SPLIT_ENTITIES_BY_COMMA, SPLIT_ENTITIES_BY_COMMA_DEFAULT_VALUE
  from rasa.shared.constants import DOCS_URL_COMPONENTS
  from rasa.utils.tensorflow.constants import BILOU_FLAG, FEATURIZERS
label_desc: Use image node_id 20 for calling the CRFEntityExtractor obj's underlying member method code with example usage: obj._get_dense_features(message) and returns: features, None, None