'Pluralizes English nouns.'

def pluralize(self, word):

    rules = [['(?i)(quiz)$', '\\1zes'], ['^(?i)(ox)$', '\\1en'], ['(?i)([m|l])ouse$', '\\1ice'], ['(?i)(matr|vert|ind)ix|ex$', '\\1ices'], ['(?i)(x|ch|ss|sh)$', '\\1es'], ['(?i)([^aeiouy]|qu)ies$', '\\1y'], ['(?i)([^aeiouy]|qu)y$', '\\1ies'], ['(?i)(hive)$', '\\1s'], ['(?i)(?:([^f])fe|([lr])f)$', '\\1\\2ves'], ['(?i)sis$', 'ses'], ['(?i)([ti])um$', '\\1a'], ['(?i)(buffal|tomat)o$', '\\1oes'], ['(?i)(bu)s$', '\\1ses'], ['(?i)(alias|status)', '\\1es'], ['(?i)(octop|vir)us$', '\\1i'], ['(?i)(ax|test)is$', '\\1es'], ['(?i)s$', 's'], ['(?i)$', 's']]
    uncountable_words = ['equipment', 'information', 'rice', 'money', 'species', 'series', 'fish', 'sheep']
    irregular_words = {'person': 'people', 'man': 'men', 'child': 'children', 'sex': 'sexes', 'move': 'moves'}
    lower_cased_word = word.lower()
    for uncountable_word in uncountable_words:
        if (lower_cased_word[((-1) * len(uncountable_word)):] == uncountable_word):
            return word
    for irregular in irregular_words.keys():
        match = re.search((('(' + irregular) + ')$'), word, re.IGNORECASE)
        if match:
            return re.sub((('(?i)' + irregular) + '$'), (match.expand('\\1')[0] + irregular_words[irregular][1:]), word)
    for rule in range(len(rules)):
        match = re.search(rules[rule][0], word, re.IGNORECASE)
        if match:
            groups = match.groups()
            for k in range(0, len(groups)):
                if (groups[k] is None):
                    rules[rule][1] = rules[rule][1].replace(('\\' + str((k + 1))), '')
            return re.sub(rules[rule][0], rules[rule][1], word)
    return word
