class_docstr: A word stemmer based on the Porter stemming algorithm.
  
  Porter, M. "An algorithm for suffix stripping."
  Program 14.3 (1980): 130-137.
  
  See http://www.tartarus.org/~martin/PorterStemmer/ for the homepage
  of the algorithm.
  
  Martin Porter has endorsed several modifications to the Porter
  algorithm since writing his original paper, and those extensions are
  included in the implementations on his website. Additionally, others
  have proposed further improvements to the algorithm, including NLTK
  contributors. Only below mode is supported currently
  PorterStemmer.NLTK_EXTENSIONS
  
  - Implementation that includes further improvements devised by
    NLTK contributors or taken from other modified implementations
    found on the web.
  
  Parameters
  ----------
      mode: Modes of stemming (Only supports (NLTK_EXTENSIONS) currently)
            default("NLTK_EXTENSIONS")
  
  Examples
  --------
  
  .. code-block:: python
  
      >>> import cudf
      >>> from cuml.preprocessing.text.stem import PorterStemmer
      >>> stemmer = PorterStemmer()
      >>> word_str_ser =  cudf.Series(['revival','singing','adjustable'])
      >>> print(stemmer.stem(word_str_ser))
      0     reviv
      1      sing
      2    adjust
      dtype: object
class_docstr_tok: ["A","word","stemmer","based","on","the","Porter","stemming","algorithm",".","Porter",",","M.","``","An","algorithm","for","suffix","stripping",".","''","Program","14.3","(","1980",")",":","130-137",".","See","http",":","\/\/www.tartarus.org\/~martin\/PorterStemmer\/","for","the","homepage","of","the","algorithm",".","Martin","Porter","has","endorsed","several","modifications","to","the","Porter","algorithm","since","writing","his","original","paper",",","and","those","extensions","are","included","in","the","implementations","on","his","website",".","Additionally",",","others","have","proposed","further","improvements","to","the","algorithm",",","including","NLTK","contributors",".","Only","below","mode","is","supported","currently","PorterStemmer.NLTK_EXTENSIONS","-","Implementation","that","includes","further","improvements","devised","by","NLTK","contributors","or","taken","from","other","modified","implementations","found","on","the","web",".","Parameters","--","--","--","--","--","mode",":","Modes","of","stemming","(","Only","supports","(","NLTK_EXTENSIONS",")","currently",")","default","(","``","NLTK_EXTENSIONS","''",")","Examples","--","--","--","--","..","code-block",":",":","python",">",">",">","import","cudf",">",">",">","from","cuml.preprocessing.text.stem","import","PorterStemmer",">",">",">","stemmer","=","PorterStemmer","(",")",">",">",">","word_str_ser","=","cudf.Series","(","[","'revival","'",",","'singing","'",",","'adjustable","'","]",")",">",">",">","print","(","stemmer.stem","(","word_str_ser",")",")","0","reviv","1","sing","2","adjust","dtype",":","object"]
code: def __init__(self, mode="NLTK_EXTENSIONS"):
      if mode != "NLTK_EXTENSIONS":
          raise ValueError(
              "Only PorterStemmer.NLTK_EXTENSIONS is supported currently"
          )
      self.mode = mode
  
imports: from .porter_stemmer_utils.measure_utils import has_positive_measure, measure_gt_n, measure_eq_n
  from .porter_stemmer_utils.len_flags_utils import len_eq_n, len_gt_n
  from .porter_stemmer_utils.consonant_vowel_utils import contains_vowel, is_consonant
  from .porter_stemmer_utils.porter_stemmer_rules import ends_with_suffix, ends_with_double_constant, last_char_not_in, last_char_in, ends_cvc
  from .porter_stemmer_utils.suffix_utils import get_stem_series, get_str_replacement_series, replace_suffix
  from cuml.internals.safe_imports import gpu_only_import
label_desc: Use image node_id 1 to create a new PorterStemmer object  with example: obj = PorterStemmer(mode)