'Implements Step 4 from "An algorithm for suffix stripping"
Step 4
(m>1) AL    ->                  revival        ->  reviv
(m>1) ANCE  ->                  allowance      ->  allow
(m>1) ENCE  ->                  inference      ->  infer
(m>1) ER    ->                  airliner       ->  airlin
(m>1) IC    ->                  gyroscopic     ->  gyroscop
(m>1) ABLE  ->                  adjustable     ->  adjust
(m>1) IBLE  ->                  defensible     ->  defens
(m>1) ANT   ->                  irritant       ->  irrit
(m>1) EMENT ->                  replacement    ->  replac
(m>1) MENT  ->                  adjustment     ->  adjust
(m>1) ENT   ->                  dependent      ->  depend
(m>1 and (*S or *T)) ION ->     adoption       ->  adopt
(m>1) OU    ->                  homologou      ->  homolog
(m>1) ISM   ->                  communism      ->  commun
(m>1) ATE   ->                  activate       ->  activ
(m>1) ITI   ->                  angulariti     ->  angular
(m>1) OUS   ->                  homologous     ->  homolog
(m>1) IVE   ->                  effective      ->  effect
(m>1) IZE   ->                  bowdlerize     ->  bowdler
The suffixes are now removed. All that remains is a little
tidying up.'

def _step4(self, word):

    measure_gt_1 = (lambda stem: (self._measure(stem) > 1))
    return self._apply_rule_list(word, [(u'al', u'', measure_gt_1), (u'ance', u'', measure_gt_1), (u'ence', u'', measure_gt_1), (u'er', u'', measure_gt_1), (u'ic', u'', measure_gt_1), (u'able', u'', measure_gt_1), (u'ible', u'', measure_gt_1), (u'ant', u'', measure_gt_1), (u'ement', u'', measure_gt_1), (u'ment', u'', measure_gt_1), (u'ent', u'', measure_gt_1), (u'ion', u'', (lambda stem: ((self._measure(stem) > 1) and (stem[(-1)] in (u's', u't'))))), (u'ou', u'', measure_gt_1), (u'ism', u'', measure_gt_1), (u'ate', u'', measure_gt_1), (u'iti', u'', measure_gt_1), (u'ous', u'', measure_gt_1), (u'ive', u'', measure_gt_1), (u'ize', u'', measure_gt_1)])
