class_docstr: Create a doc instance of text, obtain cleaned, readable text and
  metadata from this doc.
  
  Properties:
  raw: incoming, unedited text
  language: 2-letter code for the language of the text
  is_detected_language: is the language detected or specified beforehand
  is_reliable_language: is the language specified or was it reliably detected
  hint_language: language you expect your text to be
  _spacy_nlps: nested dictionary {lang: {model_id: model}} with loaded spacy language modules
docstr: Loads a spacy doc or creates one if necessary
docstr_tok: ["Loads","a","spacy","doc","or","creates","one","if","necessary"]
code: def _load_spacy_doc(self, lang, model_name=None):
      """
      Loads a spacy doc or creates one if necessary
      """
      # Load default spacy model if necessary, if not loaded already
      if lang not in self._spacy_nlps or (
          model_name is None
          and model_name not in self._spacy_nlps[lang]
      ):
          if lang not in self._spacy_nlps:
              self._spacy_nlps[lang] = {}
          self._spacy_nlps[lang][None] = self._get_default_nlp(lang)
      if (
          model_name not in self._spacy_nlps[lang]
          and model_name is not None
      ):
          raise TextpipeMissingModelException(
              f"Custom model {model_name} " f"is missing."
          )
      nlp = self._spacy_nlps[lang][model_name]
      doc = nlp(self.clean_text())
      return doc
  
imports: import functools
  import re
  import unicodedata
  from collections import Counter
  from urllib.parse import urlparse
  import cld2
  import numpy
  import spacy
  import spacy.matcher
  import textacy
  import textacy.ke
  import textacy.text_utils
  from bs4 import BeautifulSoup
  from datasketch import MinHash
  from gensim.models.keyedvectors import KeyedVectors
  from gensim.summarization.summarizer import summarize
  from textpipe.data.emoji import EMOJI_TO_UNICODE_NAME, EMOJI_TO_SENTIMENT
  from textpipe.wrappers import RedisKeyedVectors
  from textpipe.util import getattr_
label_desc: Use image node_id 6 for calling the Doc obj's underlying member method code with example usage: obj._load_spacy_doc(lang, model_name) and returns: doc