class_docstr: ISRI Arabic stemmer based on algorithm: Arabic Stemming without a root dictionary.
  Information Science Research Institute. University of Nevada, Las Vegas, USA.
  
  A few minor modifications have been made to ISRI basic algorithm.
  See the source code of this module for more information.
  
  isri.stem(token) returns Arabic root for the given token.
  
  The ISRI Stemmer requires that all tokens have Unicode string types.
  If you use Python IDLE on Arabic Windows you have to decode text first
  using Arabic '1256' coding.
class_docstr_tok: ["ISRI","Arabic","stemmer","based","on","algorithm",":","Arabic","Stemming","without","a","root","dictionary",".","Information","Science","Research","Institute",".","University","of","Nevada",",","Las","Vegas",",","USA",".","A","few","minor","modifications","have","been","made","to","ISRI","basic","algorithm",".","See","the","source","code","of","this","module","for","more","information",".","isri.stem","(","token",")","returns","Arabic","root","for","the","given","token",".","The","ISRI","Stemmer","requires","that","all","tokens","have","Unicode","string","types",".","If","you","use","Python","IDLE","on","Arabic","Windows","you","have","to","decode","text","first","using","Arabic","'1256","'","coding","."]
docstr: Stemming a word token using the ISRI stemmer.
docstr_tok: ["Stemming","a","word","token","using","the","ISRI","stemmer","."]
code: def stem(self, token):
      """
      Stemming a word token using the ISRI stemmer.
      """
  
      self.stm = token
      self.norm(
          1
      )  #  remove diacritics which representing Arabic short vowels
      if self.stm in self.stop_words:
          return self.stm  # exclude stop words from being processed
      self.pre32()  # remove length three and length two prefixes in this order
      self.suf32()  # remove length three and length two suffixes in this order
      self.waw()  # remove connective ‘و’ if it precedes a word beginning with ‘و’
      self.norm(2)  # normalize initial hamza to bare alif
      if len(self.stm) <= 3:
          return self.stm  # return stem if less than or equal to three
  
      if len(self.stm) == 4:  # length 4 word
          self.pro_w4()
          return self.stm
      elif len(self.stm) == 5:  # length 5 word
          self.pro_w53()
          self.end_w5()
          return self.stm
      elif len(self.stm) == 6:  # length 6 word
          self.pro_w6()
          self.end_w6()
          return self.stm
      elif len(self.stm) == 7:  # length 7 word
          self.suf1()
          if len(self.stm) == 7:
              self.pre1()
          if len(self.stm) == 6:
              self.pro_w6()
              self.end_w6()
              return self.stm
      return self.stm
  
file_path: whoosh/src/whoosh/lang/isri.py
imports: from __future__ import unicode_literals
  import re
label_desc: Use image node_id 2 for calling the ISRIStemmer obj's underlying member method code with example usage: obj.stem(token) and returns: self, self, self, self, self, self, self