code: def analyze(self, words, **kwargs):
          
          # if input is a string, then tokenize it
          if isinstance(words, six.string_types):
              words = words.split()
  
          # convert words to native strings
          words = [convert(w) for w in words]
  
          morfresults = self._morf.analyze(
              vm.StringVector(words),
              kwargs.get('disambiguate', True),
              kwargs.get('guess', True),
              True, # phonetic and compound information
              kwargs.get('propername', True))
          trim_phonetic = kwargs.get('phonetic', False)
          trim_compound = kwargs.get('compound', True)
  
          return [postprocess_result(mr, trim_phonetic, trim_compound) for mr in morfresults]
docs: Perform morphological analysis and disambiguation of given text.
  
          Parameters
          ----------
          words: list of str or str
              Either a list of pretokenized words or a string. In case of a string, it will be splitted using
              default behaviour of string.split() function.
          disambiguate: boolean (default: True)
              Disambiguate the output and remove incosistent analysis.
          guess: boolean (default: True)
              Use guessing in case of unknown words
          propername: boolean (default: True)
              Perform additional analysis of proper names.
          compound: boolean (default: True)
              Add compound word markers to root forms.
          phonetic: boolean (default: False)
              Add phonetic information to root forms.
  
          Returns
          -------
          list of (list of dict)
              List of analysis for each word in input.