class_docstr: Feature extractor for text classification relying on ngrams tfidf and
  optionally word cooccurrences features
class_docstr_tok: ["Feature","extractor","for","text","classification","relying","on","ngrams","tfidf","and","optionally","word","cooccurrences","features"]
code: def persist(self, path):
      path.mkdir()
  
      # Persist the vectorizers
      tfidf_vectorizer = None
      if self.tfidf_vectorizer:
          tfidf_vectorizer = self.tfidf_vectorizer.unit_name
          tfidf_vectorizer_path = path / tfidf_vectorizer
          self.tfidf_vectorizer.persist(tfidf_vectorizer_path)
  
      cooccurrence_vectorizer = None
      if self.cooccurrence_vectorizer:
          cooccurrence_vectorizer = (
              self.cooccurrence_vectorizer.unit_name
          )
          cooccurrence_vectorizer_path = path / cooccurrence_vectorizer
          self.cooccurrence_vectorizer.persist(
              cooccurrence_vectorizer_path
          )
  
      # Persist main object
      self_as_dict = {
          "language_code": self.language,
          "tfidf_vectorizer": tfidf_vectorizer,
          "cooccurrence_vectorizer": cooccurrence_vectorizer,
          "config": self.config.to_dict(),
      }
  
      featurizer_path = path / "featurizer.json"
      with featurizer_path.open("w", encoding="utf-8") as f:
          f.write(json_string(self_as_dict))
  
      # Persist metadata
      self.persist_metadata(path)
  
imports: from __future__ import division, unicode_literals
  import json
  from builtins import str, zip
  from copy import deepcopy
  from pathlib import Path
  from future.utils import iteritems
  from snips_nlu.common.utils import json_string, fitted_required, replace_entities_with_placeholders, check_persisted_path
  from snips_nlu.constants import DATA, ENTITY, ENTITY_KIND, LANGUAGE, NGRAM, TEXT, ENTITIES
  from snips_nlu.dataset import get_text_from_chunks, validate_and_format_dataset
  from snips_nlu.entity_parser.builtin_entity_parser import is_builtin_entity
  from snips_nlu.exceptions import _EmptyDatasetUtterancesError, LoadingError
  from snips_nlu.languages import get_default_sep
  from snips_nlu.pipeline.configs import FeaturizerConfig
  from snips_nlu.pipeline.configs.intent_classifier import CooccurrenceVectorizerConfig, TfidfVectorizerConfig
  from snips_nlu.pipeline.processing_unit import ProcessingUnit
  from snips_nlu.preprocessing import stem, tokenize_light
  from snips_nlu.resources import get_stop_words, get_word_cluster
  from snips_nlu.slot_filler.features_utils import get_all_ngrams
label_desc: Use image node_id 9 for calling the Featurizer obj's underlying member method code with example usage: obj.persist(path) without return types