class_docstr: Abstraction of a NLU pipeline unit
  
  Pipeline processing units such as intent parsers, intent classifiers and
  slot fillers must implement this class.
  
   A :class:`ProcessingUnit` is associated with a *config_type*, which
  represents the :class:`.ProcessingUnitConfig` used to initialize it.
code: def fit_custom_entity_parser_if_needed(self, dataset):
      # We only fit a custom entity parser when the unit has already been
      # fitted or if the parser is none.
      # In the other cases the parser is provided fitted by another unit.
      required_resources = self.config.get_required_resources()
      if not required_resources or not required_resources.get(
          CUSTOM_ENTITY_PARSER_USAGE
      ):
          # In these cases we need a custom entity parser only to do the
          # final slot resolution step, which must be done without stemming.
          parser_usage = CustomEntityParserUsage.WITHOUT_STEMS
      else:
          parser_usage = required_resources[CUSTOM_ENTITY_PARSER_USAGE]
  
      if self.custom_entity_parser is None or self.fitted:
          self.load_resources_if_needed(dataset[LANGUAGE])
          self.custom_entity_parser = CustomEntityParser.build(
              dataset, parser_usage, self.resources
          )
      return self
  
imports: from __future__ import unicode_literals
  import io
  import json
  import shutil
  from abc import ABCMeta, abstractmethod, abstractproperty
  from builtins import str, bytes
  from pathlib import Path
  from future.utils import with_metaclass
  from snips_nlu.common.abc_utils import abstractclassmethod, classproperty
  from snips_nlu.common.io_utils import temp_dir, unzip_archive
  from snips_nlu.common.registrable import Registrable
  from snips_nlu.common.utils import json_string, check_random_state
  from snips_nlu.constants import BUILTIN_ENTITY_PARSER, CUSTOM_ENTITY_PARSER, CUSTOM_ENTITY_PARSER_USAGE, RESOURCES, LANGUAGE, RANDOM_STATE
  from snips_nlu.entity_parser import BuiltinEntityParser, CustomEntityParser, CustomEntityParserUsage
  from snips_nlu.exceptions import LoadingError
  from snips_nlu.pipeline.configs import ProcessingUnitConfig
  from snips_nlu.pipeline.configs.config import DefaultProcessingUnitConfig
  from snips_nlu.resources import load_resources
label_desc: Use image node_id 11 for calling the ProcessingUnit obj's underlying member method code with example usage: obj.fit_custom_entity_parser_if_needed(dataset) and returns: self