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
code: def __init__(
      self,
      raw,
      language=None,
      hint_language="en",
      spacy_nlps=None,
      gensim_vectors=None,
  ):
      self.raw = raw
      self._language = language
      self.hint_language = hint_language
      self._spacy_nlps = (
          spacy_nlps if spacy_nlps is not None else dict()
      )
      self._gensim_vectors = (
          gensim_vectors if gensim_vectors is not None else dict()
      )
      self.is_detected_language = language is None
      self._is_reliable_language = True if language else None
      self._text_stats = {}
      self.nr_train_tokens = 0
  
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 1 to create a new Doc object  with example: obj = Doc(raw, language, hint_language, spacy_nlps, gensim_vectors)