class_docstr: Spacy based NP annotator - uses models.SequenceChunker model for annotation
  
  Args:
      model (SequenceChunker): a chunker model
      word_vocab (Vocabulary): word-id vocabulary of the model
      char_vocab (Vocabulary): char id vocabulary of words of the model
      chunk_vocab (Vocabulary): chunk tag vocabulary of the model
      batch_size (int, optional): inference batch size
code: def _feature_extractor(self, doc):
      features = np.asarray(
          [
              self.word_vocab[w]
              if self.word_vocab[w] is not None
              else 1
              for w in doc
          ]
      )
      if self.char_vocab:
          sentence_chars = []
          for w in doc:
              word_chars = []
              for c in w:
                  _cid = self.char_vocab[c]
                  word_chars.append(_cid if _cid is not None else 1)
              sentence_chars.append(word_chars)
          sentence_chars = pad_sentences(
              sentence_chars, self.model.max_word_len
          )
          features = (features, sentence_chars)
      return features
  
imports: import pickle
  from os import path
  import numpy
  import spacy
  from spacy.tokens import Doc
  from spacy.tokens import Span
  from nlp_architect.models.chunker import SequenceChunker
  from nlp_architect.utils.generic import pad_sentences
  from nlp_architect.utils.io import validate_existing_filepath
  from nlp_architect.utils.text import extract_nps, Stopwords
label_desc: Use image node_id 4 for calling the NPAnnotator obj's underlying member method code with example usage: obj._feature_extractor(doc) and returns: features