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: Returns polarity score (-1 to 1) and a subjectivity score (0 to 1)
  
  Currently only English, Dutch, French and Italian supported
  
  >>> from textpipe.doc import Doc
  >>> doc = Doc('Dit is een leuke zin.')
  >>> doc.sentiment
  (0.6, 0.9666666666666667)
docstr_tok: ["Returns","polarity","score","(","-1","to","1",")","and","a","subjectivity","score","(","0","to","1",")","Currently","only","English",",","Dutch",",","French","and","Italian","supported",">",">",">","from","textpipe.doc","import","Doc",">",">",">","doc","=","Doc","(","'Dit","is","een","leuke","zin",".","'",")",">",">",">","doc.sentiment","(","0.6",",","0.9666666666666667",")"]
code: def sentiment(self):
      """
      Returns polarity score (-1 to 1) and a subjectivity score (0 to 1)
  
      Currently only English, Dutch, French and Italian supported
  
      >>> from textpipe.doc import Doc
      >>> doc = Doc('Dit is een leuke zin.')
      >>> doc.sentiment
      (0.6, 0.9666666666666667)
      """
  
      if self.language == "en":
          from pattern.text.en import (
              sentiment as sentiment_en,
          )  # pylint: disable=import-outside-toplevel
  
          return sentiment_en(self.clean)
  
      if self.language == "nl":
          from pattern.text.nl import (
              sentiment as sentiment_nl,
          )  # pylint: disable=import-outside-toplevel
  
          return sentiment_nl(self.clean)
  
      if self.language == "fr":
          from pattern.text.fr import (
              sentiment as sentiment_fr,
          )  # pylint: disable=import-outside-toplevel
  
          return sentiment_fr(self.clean)
  
      if self.language == "it":
          from pattern.text.it import (
              sentiment as sentiment_it,
          )  # pylint: disable=import-outside-toplevel
  
          return sentiment_it(self.clean)
  
      raise TextpipeMissingModelException(
          f"No sentiment model for {self.language}"
      )
  
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 20 for calling the Doc obj's underlying member method code with example usage: obj.sentiment() and returns: sentiment_en, sentiment_nl, sentiment_fr, sentiment_it