class_docstr: Text Processor class implement NER, POS tag, lexical tree parsing.
  EnProcessor is designed by single instance mode.
docstr: NER function.
  This method uses implemented based on spacy model.
  
  Example::
  
      EnProcessor().get_ner(
          'Lionel Messi is a football player from Argentina.'
      )
  
      if return_word_index is False
      >>[('Lionel Messi', 0, 12, 'PERSON'),
         ('Argentina', 39, 48, 'LOCATION')]
  
      if return_word_index is True
      >>[('Lionel Messi', 0, 2, 'PERSON'),
         ('Argentina', 7, 8, 'LOCATION')]
  
  :param str|list sentence: text string or token list
  :param bool return_char_idx: if set True, return character start to
   end index, else return char start to end index.
  :return: A list of tuples, *(entity, start, end, label)*
docstr_tok: ["NER","function",".","This","method","uses","implemented","based","on","spacy","model",".","Example",":",":","EnProcessor","(",")",".get_ner","(","'Lionel","Messi","is","a","football","player","from","Argentina",".","'",")","if","return_word_index","is","False",">",">","[","(","'Lionel","Messi","'",",","0",",","12",",","'PERSON","'",")",",","(","'Argentina","'",",","39",",","48",",","'LOCATION","'",")","]","if","return_word_index","is","True",">",">","[","(","'Lionel","Messi","'",",","0",",","2",",","'PERSON","'",")",",","(","'Argentina","'",",","7",",","8",",","'LOCATION","'",")","]",":","param","str|list","sentence",":","text","string","or","token","list",":","param","bool","return_char_idx",":","if","set","True",",","return","character","start","to","end","index",",","else","return","char","start","to","end","index",".",":","return",":","A","list","of","tuples",",","*","(","entity",",","start",",","end",",","label",")","*"]
code: def get_ner(self, sentence, return_char_idx=True):
      r"""
      NER function.
      This method uses implemented based on spacy model.
  
      Example::
  
          EnProcessor().get_ner(
              'Lionel Messi is a football player from Argentina.'
          )
  
          if return_word_index is False
          >>[('Lionel Messi', 0, 12, 'PERSON'),
             ('Argentina', 39, 48, 'LOCATION')]
  
          if return_word_index is True
          >>[('Lionel Messi', 0, 2, 'PERSON'),
             ('Argentina', 7, 8, 'LOCATION')]
  
      :param str|list sentence: text string or token list
      :param bool return_char_idx: if set True, return character start to
       end index, else return char start to end index.
      :return: A list of tuples, *(entity, start, end, label)*
  
      """
      self.check_initialized()
  
      if self.__ner is None:
          self.__ner = self.nlp.pipeline[3][1]
  
      if self.__word2vec is None:
          self.__word2vec = self.nlp.pipeline[0][1]
  
      if isinstance(sentence, list):
          tokens = sentence
      elif isinstance(sentence, str):
          tokens = self.tokenize(sentence)  # list of tokens
      else:
          raise ValueError(
              "Support string or token list input, "
              "while your input type is {0}".format(type(sentence))
          )
  
      tokens = self.__word2vec(Doc(self.nlp.vocab, words=tokens))
      ner = self.__ner(tokens)
  
      if return_char_idx is True:
          return [
              (
                  ent.text,
                  ent.start_char,
                  ent.end_char,
                  self._change_label(ent.label_),
              )
              for ent in ner.ents
          ]
  
      return [
          (ent.text, ent.start, ent.end, self._change_label(ent.label_))
          for ent in ner.ents
      ]
  
imports: import re
  import nltk
  import spacy
  import threading
  from functools import reduce
  from spacy.tokens import Doc
  from .nltk_res_load import *
  from ..settings import *
label_desc: Use image node_id 11 for calling the EnProcessor obj's underlying member method code with example usage: obj.get_ner(sentence, return_char_idx) and returns: unknown, unknown