code: def test_should_be_deserializable_before_fit(self):
      # Given
      features_factories = [
          {
              "factory_name": ShapeNgramFactory.name,
              "args": {"n": 1},
              "offsets": [0],
          },
          {
              "factory_name": IsDigitFactory.name,
              "args": {},
              "offsets": [-1, 0],
          },
      ]
      slot_filler_config = CRFSlotFillerConfig(
          feature_factory_configs=features_factories
      )
      slot_filler_dict = {
          "unit_name": "crf_slot_filler",
          "crf_model_file": None,
          "language_code": None,
          "intent": None,
          "slot_name_mapping": None,
          "config": slot_filler_config.to_dict(),
      }
      metadata = {"unit_name": "crf_slot_filler"}
      self.tmp_file_path.mkdir()
      self.writeJsonContent(
          self.tmp_file_path / "metadata.json", metadata
      )
      self.writeJsonContent(
          self.tmp_file_path / "slot_filler.json", slot_filler_dict
      )
  
      # When
      slot_filler = CRFSlotFiller.from_path(self.tmp_file_path)
  
      # Then
      expected_features_factories = [
          {
              "factory_name": ShapeNgramFactory.name,
              "args": {"n": 1},
              "offsets": [0],
          },
          {
              "factory_name": IsDigitFactory.name,
              "args": {},
              "offsets": [-1, 0],
          },
      ]
      expected_language = None
      expected_config = CRFSlotFillerConfig(
          feature_factory_configs=expected_features_factories
      )
      expected_intent = None
      expected_slot_name_mapping = None
      expected_crf_model = None
  
      self.assertEqual(slot_filler.crf_model, expected_crf_model)
      self.assertEqual(slot_filler.language, expected_language)
      self.assertEqual(slot_filler.intent, expected_intent)
      self.assertEqual(
          slot_filler.slot_name_mapping, expected_slot_name_mapping
      )
      self.assertDictEqual(
          expected_config.to_dict(), slot_filler.config.to_dict()
      )
  
imports: from __future__ import unicode_literals
  import io
  import os
  from builtins import range
  from pathlib import Path
  from unittest import skipIf
  from mock import MagicMock, PropertyMock
  from sklearn_crfsuite import CRF
  from snips_nlu.constants import DATA, END, ENTITY, LANGUAGE_EN, SLOT_NAME, START, TEXT, RANDOM_STATE
  from snips_nlu.dataset import Dataset
  from snips_nlu.entity_parser import CustomEntityParserUsage
  from snips_nlu.exceptions import NotTrained
  from snips_nlu.pipeline.configs import CRFSlotFillerConfig
  from snips_nlu.preprocessing import tokenize, Token
  from snips_nlu.result import unresolved_slot
  from snips_nlu.slot_filler.crf_slot_filler import CRFSlotFiller, _ensure_safe, _encode_tag, CRF_MODEL_FILENAME
  from snips_nlu.slot_filler.crf_utils import TaggingScheme
  from snips_nlu.slot_filler.feature_factory import IsDigitFactory, NgramFactory, ShapeNgramFactory
  from snips_nlu.tests.utils import FixtureTest, TEST_PATH
label_desc: Use image node_id 15 for calling the TestCRFSlotFiller obj's underlying member method code with example usage: obj.test_should_be_deserializable_before_fit() without return types