class_docstr: class that supplies part of speech tags using NLTK
  note: avoids the NLTK downloader (see __init__ method)
code: def __init__(self):
      import nltk
      from nltk.tag import PerceptronTagger
      from nltk.tokenize import TreebankWordTokenizer
  
      # return pkgutil.get_data('scattertext',
      #                        'data/viz/semiotic_new.html').decode('utf-8')
      path = (
          os.path.dirname(sys.modules["scattertext"].__file__)
          + "/data/"
      )
      tokenizer_fn = path + "punkt.english.pickle"
      tagger_fn = path + "averaged_perceptron_tagger.pickle"
      # tokenizer_fn = os.path.abspath(resource_filename('scattertext.data', 'punkt.english.pickle'))
      # tagger_fn = os.path.abspath(resource_filename('scattertext.data', 'averaged_perceptron_tagger.pickle'))
      # Load the tagger
      self.tagger = PerceptronTagger(load=False)
      self.tagger.load(tagger_fn)
  
      # note: nltk.word_tokenize calls the TreebankWordTokenizer, but uses the downloader.
      #       Calling the TreebankWordTokenizer like this allows skipping the downloader.
      #       It seems the TreebankWordTokenizer uses PTB tokenization = regexes. i.e. no downloads
      #       https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L25
      self.tokenize = TreebankWordTokenizer().tokenize
      self.sent_detector = nltk.data.load(tokenizer_fn)
  
imports: from __future__ import print_function
  import os
  import re
  import sys
  from collections import Counter
label_desc: Use image node_id 1 to create a new NLTKTagger object  with example: obj = NLTKTagger()