snowballstemmer-2.0.0/0000755000175000017500000000000013545325431015576 5ustar dmitrydmitry00000000000000snowballstemmer-2.0.0/CHANGES.rst0000644000175000017500000000143613545325317017407 0ustar dmitrydmitry00000000000000snowballstemmer 2.0.0, 2019-10-02 ================================= * Simplified generated code for ``repeat`` and ``atleast`` commands. * Implemented “go grouping” optimisation. * Removed caching layer (#114). * Enabled building wheels (#115). * Updated package README. snowballstemmer 1.9.1, 2019-09-05 ================================= * Added Hindi stemmer (#73). * Added Basque and Catalan stemmers, thanks Israel Olalla (#104). * Improved Greek stemmer. * Various Python code improvements, thanks Jon Dufresne (#95, #97, #98, #99). * Fixed AttributeError when clearing cache, thanks Jonathan Marchand (#105). * The tarball now includes a COPYING file (#102). snowballstemmer 1.9.0, 2019-06-26 ================================= * Initial release from the mainstream snowball project. snowballstemmer-2.0.0/COPYING0000644000175000017500000000302413320340226016616 0ustar dmitrydmitry00000000000000Copyright (c) 2001, Dr Martin Porter Copyright (c) 2004,2005, Richard Boulton All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the Snowball project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. snowballstemmer-2.0.0/MANIFEST.in0000644000175000017500000000016113521101740017317 0ustar dmitrydmitry00000000000000include *.rst include modules.txt include setup.* recursive-include src *.py include MANIFEST.in include COPYING snowballstemmer-2.0.0/PKG-INFO0000644000175000017500000000546513545325431016705 0ustar dmitrydmitry00000000000000Metadata-Version: 1.1 Name: snowballstemmer Version: 2.0.0 Summary: This package provides 26 stemmers for 25 languages generated from Snowball algorithms. Home-page: https://github.com/snowballstem/snowball Author: Snowball Developers Author-email: snowball-discuss@lists.tartarus.org License: BSD-3-Clause Description: It includes following language algorithms: * Arabic * Basque * Catalan * Danish * Dutch * English (Standard, Porter) * Finnish * French * German * Greek * Hindi * Hungarian * Indonesian * Irish * Italian * Lithuanian * Nepali * Norwegian * Portuguese * Romanian * Russian * Spanish * Swedish * Tamil * Turkish This is a pure Python stemming library. If `PyStemmer `_ is available, this module uses it to accelerate. Keywords: stemmer Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Natural Language :: Arabic Classifier: Natural Language :: Catalan Classifier: Natural Language :: Danish Classifier: Natural Language :: Dutch Classifier: Natural Language :: English Classifier: Natural Language :: Finnish Classifier: Natural Language :: French Classifier: Natural Language :: German Classifier: Natural Language :: Greek Classifier: Natural Language :: Hindi Classifier: Natural Language :: Hungarian Classifier: Natural Language :: Indonesian Classifier: Natural Language :: Italian Classifier: Natural Language :: Norwegian Classifier: Natural Language :: Portuguese Classifier: Natural Language :: Romanian Classifier: Natural Language :: Russian Classifier: Natural Language :: Spanish Classifier: Natural Language :: Swedish Classifier: Natural Language :: Tamil Classifier: Natural Language :: Turkish Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Database Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search Classifier: Topic :: Text Processing :: Indexing Classifier: Topic :: Text Processing :: Linguistic snowballstemmer-2.0.0/README.rst0000644000175000017500000001042613545325430017267 0ustar dmitrydmitry00000000000000Snowball stemming library collection for Python =============================================== Both Python 2 and Python 3 (>= 3.3) are supported. How to use library ------------------ The ``snowballstemmer`` module has two functions. The ``snowballstemmer.algorithms`` function returns a list of available algorithm names. The ``snowballstemmer.stemmer`` function takes an algorithm name and returns a ``Stemmer`` object. ``Stemmer`` objects have a ``Stemmer.stemWord(word)`` method and a ``Stemmer.stemWords(word[])`` method. .. code-block:: python import snowballstemmer stemmer = snowballstemmer.stemmer('english'); print(stemmer.stemWords("We are the world".split())); Automatic Acceleration ---------------------- If `PyStemmer `_ is installed, ``snowballstemmer.stemmer`` returns a ``PyStemmer`` ``Stemmer`` object which provides the same ``Stemmer.stemWord()`` and ``Stemmer.stemWords()`` methods. **PyStemmer** is a wrapper module for Snowball's ``libstemmer_c`` and should provide results 100% compatible to **snowballstemmer**. **PyStemmer** is faster because it wraps generated C versions of the stemmers; **snowballstemmer** uses generate Python code and is slower but offers a pure Python solution. Benchmark ~~~~~~~~~ This is a crude benchmark which measures the time for running each stemmer on every word in its sample vocabulary (10,787,583 words over 26 languages). It's not a realistic test of normal use as a real application would do much more than just stemming. It's also skewed towards the stemmers which do more work per word and towards those with larger sample vocabularies. * Python 2.7 + **snowballstemmer** : 13m00s (15.0 * PyStemmer) * Python 3.7 + **snowballstemmer** : 12m19s (14.2 * PyStemmer) * PyPy 7.1.1 (Python 2.7.13) + **snowballstemmer** : 2m14s (2.6 * PyStemmer) * PyPy 7.1.1 (Python 3.6.1) + **snowballstemmer** : 1m46s (2.0 * PyStemmer) * Python 2.7 + **PyStemmer** : 52s For reference the equivalent test for C runs in 9 seconds. These results are for Snowball 2.0.0. They're likely to evolve over time as the code Snowball generates for both Python and C continues to improve (for a much older test over a different set of stemmers using Python 2.7, **snowballstemmer** was 30 times slower than **PyStemmer**, or 9 times slower with **PyPy**). The message to take away is that if you're stemming a lot of words you should either install **PyStemmer** (which **snowballstemmer** will then automatically use for you as described above) or use PyPy. The TestApp example ------------------- The ``testapp.py`` example program allows you to run any of the stemmers on a sample vocabulary. Usage:: testapp.py "sentences ... " .. code-block:: bash $ python testapp.py English "sentences... " License ------- It is a BSD licensed library. Copyright (c) 2013, Yoshiki Shibukawa All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. snowballstemmer-2.0.0/modules.txt0000644000175000017500000000604513545325430020013 0ustar dmitrydmitry00000000000000# This file contains a list of stemmers to include in the distribution. # The format is a set of space separated lines - on each line: # First item is name of stemmer. # Second item is comma separated list of character sets. # Third item is comma separated list of names to refer to the stemmer by. # # Lines starting with a #, or blank lines, are ignored. # List all the main algorithms for each language, in UTF-8, and also with # the most commonly used encoding. arabic UTF_8 arabic,ar,ara basque UTF_8,ISO_8859_1 basque,eu,eus,baq catalan UTF_8,ISO_8859_1 catalan,ca,cat danish UTF_8,ISO_8859_1 danish,da,dan dutch UTF_8,ISO_8859_1 dutch,nl,dut,nld english UTF_8,ISO_8859_1 english,en,eng finnish UTF_8,ISO_8859_1 finnish,fi,fin french UTF_8,ISO_8859_1 french,fr,fre,fra german UTF_8,ISO_8859_1 german,de,ger,deu greek UTF_8 greek,el,gre,ell hindi UTF_8 hindi,hi,hin hungarian UTF_8,ISO_8859_2 hungarian,hu,hun indonesian UTF_8,ISO_8859_1 indonesian,id,ind irish UTF_8,ISO_8859_1 irish,ga,gle italian UTF_8,ISO_8859_1 italian,it,ita lithuanian UTF_8 lithuanian,lt,lit nepali UTF_8 nepali,ne,nep norwegian UTF_8,ISO_8859_1 norwegian,no,nor portuguese UTF_8,ISO_8859_1 portuguese,pt,por romanian UTF_8,ISO_8859_2 romanian,ro,rum,ron russian UTF_8,KOI8_R russian,ru,rus spanish UTF_8,ISO_8859_1 spanish,es,esl,spa swedish UTF_8,ISO_8859_1 swedish,sv,swe tamil UTF_8 tamil,ta,tam turkish UTF_8 turkish,tr,tur # Also include the traditional porter algorithm for english. # The porter algorithm is included in the libstemmer distribution to assist # with backwards compatibility, but for new systems the english algorithm # should be used in preference. porter UTF_8,ISO_8859_1 porter english # Some other stemmers in the snowball project are not included in the standard # distribution. To compile a libstemmer with them in, add them to this list, # and regenerate the distribution. (You will need a full source checkout for # this.) They are included in the snowball website as curiosities, but are not # intended for general use, and use of them is is not fully supported. These # algorithms are: # # german2 - This is a slight modification of the german stemmer. #german2 UTF_8,ISO_8859_1 german2 german # # kraaij_pohlmann - This is a different dutch stemmer. #kraaij_pohlmann UTF_8,ISO_8859_1 kraaij_pohlmann dutch # # lovins - This is an english stemmer, but fairly outdated, and # only really applicable to a restricted type of input text # (keywords in academic publications). #lovins UTF_8,ISO_8859_1 lovins english snowballstemmer-2.0.0/setup.cfg0000644000175000017500000000010313545325431017411 0ustar dmitrydmitry00000000000000[bdist_wheel] universal = 1 [egg_info] tag_build = tag_date = 0 snowballstemmer-2.0.0/setup.py0000644000175000017500000000573613545142362017323 0ustar dmitrydmitry00000000000000#!/usr/bin/env python from setuptools import setup import re SNOWBALL_VERSION = '2.0.0' n_stemmers = 0 langs = [] variants = {} with open('modules.txt') as fp: for line in fp.readlines(): if len(line) <= 1 or line[0] == '#': continue if line[-1:] == '\n': line = line[:-1] tokens = re.split(r'\s+', line) if len(tokens) < 3: print("Bad modules.txt line: " + line) continue (name, encs, codes) = tokens[:3] if len(tokens) > 3: variant_of = tokens[3] if variant_of in variants: variants[variant_of].append(name) else: variants[variant_of] = [name] else: langs.append(name) n_stemmers += 1 desc = 'This package provides ' + str(n_stemmers) + ' stemmers for ' + \ str(len(langs)) + ' languages generated from Snowball algorithms.' long_desc = ''' It includes following language algorithms: ''' classifiers = [ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License' ] for lang in langs: lang_titlecase = lang.title() long_desc += '* ' + lang_titlecase # Only classifiers listed in https://pypi.org/classifiers/ are allowed if lang_titlecase not in ('Basque', 'Irish', 'Lithuanian', 'Nepali'): classifiers.append('Natural Language :: ' + lang_titlecase) if lang in variants: long_desc += ' (Standard' for variant in variants[lang]: long_desc += ', ' + variant.title() long_desc += ')' long_desc += '\n' long_desc += ''' This is a pure Python stemming library. If `PyStemmer `_ is available, this module uses it to accelerate. ''' classifiers.extend([ 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Database', 'Topic :: Internet :: WWW/HTTP :: Indexing/Search', 'Topic :: Text Processing :: Indexing', 'Topic :: Text Processing :: Linguistic' ]) setup(name='snowballstemmer', version=SNOWBALL_VERSION, description=desc, long_description=long_desc, author='Snowball Developers', author_email='snowball-discuss@lists.tartarus.org', url='https://github.com/snowballstem/snowball', keywords="stemmer", license="BSD-3-Clause", packages=['snowballstemmer'], package_dir={"snowballstemmer": "src/snowballstemmer"}, classifiers = classifiers ) snowballstemmer-2.0.0/snowballstemmer.egg-info/0000755000175000017500000000000013545325431022506 5ustar dmitrydmitry00000000000000snowballstemmer-2.0.0/snowballstemmer.egg-info/PKG-INFO0000644000175000017500000000546513545325431023615 0ustar dmitrydmitry00000000000000Metadata-Version: 1.1 Name: snowballstemmer Version: 2.0.0 Summary: This package provides 26 stemmers for 25 languages generated from Snowball algorithms. Home-page: https://github.com/snowballstem/snowball Author: Snowball Developers Author-email: snowball-discuss@lists.tartarus.org License: BSD-3-Clause Description: It includes following language algorithms: * Arabic * Basque * Catalan * Danish * Dutch * English (Standard, Porter) * Finnish * French * German * Greek * Hindi * Hungarian * Indonesian * Irish * Italian * Lithuanian * Nepali * Norwegian * Portuguese * Romanian * Russian * Spanish * Swedish * Tamil * Turkish This is a pure Python stemming library. If `PyStemmer `_ is available, this module uses it to accelerate. Keywords: stemmer Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Natural Language :: Arabic Classifier: Natural Language :: Catalan Classifier: Natural Language :: Danish Classifier: Natural Language :: Dutch Classifier: Natural Language :: English Classifier: Natural Language :: Finnish Classifier: Natural Language :: French Classifier: Natural Language :: German Classifier: Natural Language :: Greek Classifier: Natural Language :: Hindi Classifier: Natural Language :: Hungarian Classifier: Natural Language :: Indonesian Classifier: Natural Language :: Italian Classifier: Natural Language :: Norwegian Classifier: Natural Language :: Portuguese Classifier: Natural Language :: Romanian Classifier: Natural Language :: Russian Classifier: Natural Language :: Spanish Classifier: Natural Language :: Swedish Classifier: Natural Language :: Tamil Classifier: Natural Language :: Turkish Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Database Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search Classifier: Topic :: Text Processing :: Indexing Classifier: Topic :: Text Processing :: Linguistic snowballstemmer-2.0.0/snowballstemmer.egg-info/SOURCES.txt0000644000175000017500000000254613545325431024401 0ustar dmitrydmitry00000000000000CHANGES.rst COPYING MANIFEST.in README.rst modules.txt setup.cfg setup.py snowballstemmer.egg-info/PKG-INFO snowballstemmer.egg-info/SOURCES.txt snowballstemmer.egg-info/dependency_links.txt snowballstemmer.egg-info/top_level.txt src/sample/stemwords.py src/sample/testapp.py src/snowballstemmer/__init__.py src/snowballstemmer/among.py src/snowballstemmer/arabic_stemmer.py src/snowballstemmer/basestemmer.py src/snowballstemmer/basque_stemmer.py src/snowballstemmer/catalan_stemmer.py src/snowballstemmer/danish_stemmer.py src/snowballstemmer/dutch_stemmer.py src/snowballstemmer/english_stemmer.py src/snowballstemmer/finnish_stemmer.py src/snowballstemmer/french_stemmer.py src/snowballstemmer/german_stemmer.py src/snowballstemmer/greek_stemmer.py src/snowballstemmer/hindi_stemmer.py src/snowballstemmer/hungarian_stemmer.py src/snowballstemmer/indonesian_stemmer.py src/snowballstemmer/irish_stemmer.py src/snowballstemmer/italian_stemmer.py src/snowballstemmer/lithuanian_stemmer.py src/snowballstemmer/nepali_stemmer.py src/snowballstemmer/norwegian_stemmer.py src/snowballstemmer/porter_stemmer.py src/snowballstemmer/portuguese_stemmer.py src/snowballstemmer/romanian_stemmer.py src/snowballstemmer/russian_stemmer.py src/snowballstemmer/spanish_stemmer.py src/snowballstemmer/swedish_stemmer.py src/snowballstemmer/tamil_stemmer.py src/snowballstemmer/turkish_stemmer.pysnowballstemmer-2.0.0/snowballstemmer.egg-info/dependency_links.txt0000644000175000017500000000000113545325431026554 0ustar dmitrydmitry00000000000000 snowballstemmer-2.0.0/snowballstemmer.egg-info/top_level.txt0000644000175000017500000000002013545325431025230 0ustar dmitrydmitry00000000000000snowballstemmer snowballstemmer-2.0.0/src/0000755000175000017500000000000013545325431016365 5ustar dmitrydmitry00000000000000snowballstemmer-2.0.0/src/sample/0000755000175000017500000000000013545325431017646 5ustar dmitrydmitry00000000000000snowballstemmer-2.0.0/src/sample/stemwords.py0000644000175000017500000000655513511307175022260 0ustar dmitrydmitry00000000000000import sys import codecs import snowballstemmer def usage(): print('''usage: %s [-l ] [-i ] [-o ] [-c ] [-p[2]] [-h] The input file consists of a list of words to be stemmed, one per line. Words should be in lower case, but (for English) A-Z letters are mapped to their a-z equivalents anyway. If omitted, stdin is used. If -c is given, the argument is the character encoding of the input and output files. If it is omitted, the UTF-8 encoding is used. If -p is given the output file consists of each word of the input file followed by \"->\" followed by its stemmed equivalent. If -p2 is given the output file is a two column layout containing the input words in the first column and the stemmed eqivalents in the second column. Otherwise, the output file consists of the stemmed words, one per line. -h displays this help''' % sys.argv[0]) def main(): argv = sys.argv[1:] if len(argv) < 5: usage() else: pretty = 0 input = '' output = '' encoding = 'utf_8' language = 'English' show_help = False while len(argv): arg = argv[0] argv = argv[1:] if arg == '-h': show_help = True break elif arg == "-p": pretty = 1 elif arg == "-p2": pretty = 2 elif arg == "-l": if len(argv) == 0: show_help = True break language = argv[0] argv = argv[1:] elif arg == "-i": if len(argv) == 0: show_help = True break input = argv[0] argv = argv[1:] elif arg == "-o": if len(argv) == 0: show_help = True break output = argv[0] argv = argv[1:] elif arg == "-c": if len(argv) == 0: show_help = True break encoding = argv[0] if show_help or input == '' or output == '': usage() else: stemming(language, input, output, encoding, pretty) def stemming(lang, input, output, encoding, pretty): stemmer = snowballstemmer.stemmer(lang) with codecs.open(output, "w", encoding) as outfile: with codecs.open(input, "r", encoding) as infile: for original in infile.readlines(): original = original.strip() # Convert only ASCII-letters to lowercase, to match C behavior original = ''.join((c.lower() if 'A' <= c <= 'Z' else c for c in original)) stemmed = stemmer.stemWord(original) if pretty == 0: if stemmed != "": outfile.write(stemmed) elif pretty == 1: outfile.write(original, " -> ", stemmed) elif pretty == 2: outfile.write(original) if len(original) < 30: outfile.write(" " * (30 - len(original))) else: outfile.write("\n") outfile.write(" " * 30) outfile.write(stemmed) outfile.write('\n') main() snowballstemmer-2.0.0/src/sample/testapp.py0000644000175000017500000000120113320340226021660 0ustar dmitrydmitry00000000000000import sys import re import snowballstemmer def usage(): print("testapp.py \"sentence\"...") def main(): argv = sys.argv if len(argv) < 1: usage() return algorithm = 'english' if len(argv) > 2: algorithm = argv[1] argv = argv[2:] else: argv = argv[1:] stemmer = snowballstemmer.stemmer(algorithm) splitter = re.compile(r"[\s\.-]") for arg in argv: for word in splitter.split(arg): if word == '': continue original = word.lower() print(original + " -> " + stemmer.stemWord(original)) main() snowballstemmer-2.0.0/src/snowballstemmer/0000755000175000017500000000000013545325431021603 5ustar dmitrydmitry00000000000000snowballstemmer-2.0.0/src/snowballstemmer/__init__.py0000644000175000017500000000461713545325430023723 0ustar dmitrydmitry00000000000000__all__ = ('language', 'stemmer') from .arabic_stemmer import ArabicStemmer from .basque_stemmer import BasqueStemmer from .catalan_stemmer import CatalanStemmer from .danish_stemmer import DanishStemmer from .dutch_stemmer import DutchStemmer from .english_stemmer import EnglishStemmer from .finnish_stemmer import FinnishStemmer from .french_stemmer import FrenchStemmer from .german_stemmer import GermanStemmer from .greek_stemmer import GreekStemmer from .hindi_stemmer import HindiStemmer from .hungarian_stemmer import HungarianStemmer from .indonesian_stemmer import IndonesianStemmer from .irish_stemmer import IrishStemmer from .italian_stemmer import ItalianStemmer from .lithuanian_stemmer import LithuanianStemmer from .nepali_stemmer import NepaliStemmer from .norwegian_stemmer import NorwegianStemmer from .porter_stemmer import PorterStemmer from .portuguese_stemmer import PortugueseStemmer from .romanian_stemmer import RomanianStemmer from .russian_stemmer import RussianStemmer from .spanish_stemmer import SpanishStemmer from .swedish_stemmer import SwedishStemmer from .tamil_stemmer import TamilStemmer from .turkish_stemmer import TurkishStemmer _languages = { 'arabic': ArabicStemmer, 'basque': BasqueStemmer, 'catalan': CatalanStemmer, 'danish': DanishStemmer, 'dutch': DutchStemmer, 'english': EnglishStemmer, 'finnish': FinnishStemmer, 'french': FrenchStemmer, 'german': GermanStemmer, 'greek': GreekStemmer, 'hindi': HindiStemmer, 'hungarian': HungarianStemmer, 'indonesian': IndonesianStemmer, 'irish': IrishStemmer, 'italian': ItalianStemmer, 'lithuanian': LithuanianStemmer, 'nepali': NepaliStemmer, 'norwegian': NorwegianStemmer, 'porter': PorterStemmer, 'portuguese': PortugueseStemmer, 'romanian': RomanianStemmer, 'russian': RussianStemmer, 'spanish': SpanishStemmer, 'swedish': SwedishStemmer, 'tamil': TamilStemmer, 'turkish': TurkishStemmer, } try: import Stemmer cext_available = True except ImportError: cext_available = False def algorithms(): if cext_available: return Stemmer.language() else: return list(_languages.key()) def stemmer(lang): if cext_available: return Stemmer.Stemmer(lang) if lang.lower() in _languages: return _languages[lang.lower()]() else: raise KeyError("Stemming algorithm '%s' not found" % lang) snowballstemmer-2.0.0/src/snowballstemmer/among.py0000644000175000017500000000062413320340226023246 0ustar dmitrydmitry00000000000000 class Among(object): def __init__(self, s, substring_i, result, method=None): """ @ivar s search string @ivar substring index to longest matching substring @ivar result of the lookup @ivar method method to use if substring matches """ self.s = s self.substring_i = substring_i self.result = result self.method = method snowballstemmer-2.0.0/src/snowballstemmer/arabic_stemmer.py0000644000175000017500000015360213545325430025140 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class ArabicStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"\u0640", -1, 1), Among(u"\u064B", -1, 1), Among(u"\u064C", -1, 1), Among(u"\u064D", -1, 1), Among(u"\u064E", -1, 1), Among(u"\u064F", -1, 1), Among(u"\u0650", -1, 1), Among(u"\u0651", -1, 1), Among(u"\u0652", -1, 1), Among(u"\u0660", -1, 2), Among(u"\u0661", -1, 3), Among(u"\u0662", -1, 4), Among(u"\u0663", -1, 5), Among(u"\u0664", -1, 6), Among(u"\u0665", -1, 7), Among(u"\u0666", -1, 8), Among(u"\u0667", -1, 9), Among(u"\u0668", -1, 10), Among(u"\u0669", -1, 11), Among(u"\uFE80", -1, 12), Among(u"\uFE81", -1, 16), Among(u"\uFE82", -1, 16), Among(u"\uFE83", -1, 13), Among(u"\uFE84", -1, 13), Among(u"\uFE85", -1, 17), Among(u"\uFE86", -1, 17), Among(u"\uFE87", -1, 14), Among(u"\uFE88", -1, 14), Among(u"\uFE89", -1, 15), Among(u"\uFE8A", -1, 15), Among(u"\uFE8B", -1, 15), Among(u"\uFE8C", -1, 15), Among(u"\uFE8D", -1, 18), Among(u"\uFE8E", -1, 18), Among(u"\uFE8F", -1, 19), Among(u"\uFE90", -1, 19), Among(u"\uFE91", -1, 19), Among(u"\uFE92", -1, 19), Among(u"\uFE93", -1, 20), Among(u"\uFE94", -1, 20), Among(u"\uFE95", -1, 21), Among(u"\uFE96", -1, 21), Among(u"\uFE97", -1, 21), Among(u"\uFE98", -1, 21), Among(u"\uFE99", -1, 22), Among(u"\uFE9A", -1, 22), Among(u"\uFE9B", -1, 22), Among(u"\uFE9C", -1, 22), Among(u"\uFE9D", -1, 23), Among(u"\uFE9E", -1, 23), Among(u"\uFE9F", -1, 23), Among(u"\uFEA0", -1, 23), Among(u"\uFEA1", -1, 24), Among(u"\uFEA2", -1, 24), Among(u"\uFEA3", -1, 24), Among(u"\uFEA4", -1, 24), Among(u"\uFEA5", -1, 25), Among(u"\uFEA6", -1, 25), Among(u"\uFEA7", -1, 25), Among(u"\uFEA8", -1, 25), Among(u"\uFEA9", -1, 26), Among(u"\uFEAA", -1, 26), Among(u"\uFEAB", -1, 27), Among(u"\uFEAC", -1, 27), Among(u"\uFEAD", -1, 28), Among(u"\uFEAE", -1, 28), Among(u"\uFEAF", -1, 29), Among(u"\uFEB0", -1, 29), Among(u"\uFEB1", -1, 30), Among(u"\uFEB2", -1, 30), Among(u"\uFEB3", -1, 30), Among(u"\uFEB4", -1, 30), Among(u"\uFEB5", -1, 31), Among(u"\uFEB6", -1, 31), Among(u"\uFEB7", -1, 31), Among(u"\uFEB8", -1, 31), Among(u"\uFEB9", -1, 32), Among(u"\uFEBA", -1, 32), Among(u"\uFEBB", -1, 32), Among(u"\uFEBC", -1, 32), Among(u"\uFEBD", -1, 33), Among(u"\uFEBE", -1, 33), Among(u"\uFEBF", -1, 33), Among(u"\uFEC0", -1, 33), Among(u"\uFEC1", -1, 34), Among(u"\uFEC2", -1, 34), Among(u"\uFEC3", -1, 34), Among(u"\uFEC4", -1, 34), Among(u"\uFEC5", -1, 35), Among(u"\uFEC6", -1, 35), Among(u"\uFEC7", -1, 35), Among(u"\uFEC8", -1, 35), Among(u"\uFEC9", -1, 36), Among(u"\uFECA", -1, 36), Among(u"\uFECB", -1, 36), Among(u"\uFECC", -1, 36), Among(u"\uFECD", -1, 37), Among(u"\uFECE", -1, 37), Among(u"\uFECF", -1, 37), Among(u"\uFED0", -1, 37), Among(u"\uFED1", -1, 38), Among(u"\uFED2", -1, 38), Among(u"\uFED3", -1, 38), Among(u"\uFED4", -1, 38), Among(u"\uFED5", -1, 39), Among(u"\uFED6", -1, 39), Among(u"\uFED7", -1, 39), Among(u"\uFED8", -1, 39), Among(u"\uFED9", -1, 40), Among(u"\uFEDA", -1, 40), Among(u"\uFEDB", -1, 40), Among(u"\uFEDC", -1, 40), Among(u"\uFEDD", -1, 41), Among(u"\uFEDE", -1, 41), Among(u"\uFEDF", -1, 41), Among(u"\uFEE0", -1, 41), Among(u"\uFEE1", -1, 42), Among(u"\uFEE2", -1, 42), Among(u"\uFEE3", -1, 42), Among(u"\uFEE4", -1, 42), Among(u"\uFEE5", -1, 43), Among(u"\uFEE6", -1, 43), Among(u"\uFEE7", -1, 43), Among(u"\uFEE8", -1, 43), Among(u"\uFEE9", -1, 44), Among(u"\uFEEA", -1, 44), Among(u"\uFEEB", -1, 44), Among(u"\uFEEC", -1, 44), Among(u"\uFEED", -1, 45), Among(u"\uFEEE", -1, 45), Among(u"\uFEEF", -1, 46), Among(u"\uFEF0", -1, 46), Among(u"\uFEF1", -1, 47), Among(u"\uFEF2", -1, 47), Among(u"\uFEF3", -1, 47), Among(u"\uFEF4", -1, 47), Among(u"\uFEF5", -1, 51), Among(u"\uFEF6", -1, 51), Among(u"\uFEF7", -1, 49), Among(u"\uFEF8", -1, 49), Among(u"\uFEF9", -1, 50), Among(u"\uFEFA", -1, 50), Among(u"\uFEFB", -1, 48), Among(u"\uFEFC", -1, 48) ] a_1 = [ Among(u"\u0622", -1, 1), Among(u"\u0623", -1, 1), Among(u"\u0624", -1, 1), Among(u"\u0625", -1, 1), Among(u"\u0626", -1, 1) ] a_2 = [ Among(u"\u0622", -1, 1), Among(u"\u0623", -1, 1), Among(u"\u0624", -1, 2), Among(u"\u0625", -1, 1), Among(u"\u0626", -1, 3) ] a_3 = [ Among(u"\u0627\u0644", -1, 2), Among(u"\u0628\u0627\u0644", -1, 1), Among(u"\u0643\u0627\u0644", -1, 1), Among(u"\u0644\u0644", -1, 2) ] a_4 = [ Among(u"\u0623\u0622", -1, 2), Among(u"\u0623\u0623", -1, 1), Among(u"\u0623\u0624", -1, 1), Among(u"\u0623\u0625", -1, 4), Among(u"\u0623\u0627", -1, 3) ] a_5 = [ Among(u"\u0641", -1, 1), Among(u"\u0648", -1, 1) ] a_6 = [ Among(u"\u0627\u0644", -1, 2), Among(u"\u0628\u0627\u0644", -1, 1), Among(u"\u0643\u0627\u0644", -1, 1), Among(u"\u0644\u0644", -1, 2) ] a_7 = [ Among(u"\u0628", -1, 1), Among(u"\u0628\u0628", 0, 2), Among(u"\u0643\u0643", -1, 3) ] a_8 = [ Among(u"\u0633\u0623", -1, 4), Among(u"\u0633\u062A", -1, 2), Among(u"\u0633\u0646", -1, 3), Among(u"\u0633\u064A", -1, 1) ] a_9 = [ Among(u"\u062A\u0633\u062A", -1, 1), Among(u"\u0646\u0633\u062A", -1, 1), Among(u"\u064A\u0633\u062A", -1, 1) ] a_10 = [ Among(u"\u0643\u0645\u0627", -1, 3), Among(u"\u0647\u0645\u0627", -1, 3), Among(u"\u0646\u0627", -1, 2), Among(u"\u0647\u0627", -1, 2), Among(u"\u0643", -1, 1), Among(u"\u0643\u0645", -1, 2), Among(u"\u0647\u0645", -1, 2), Among(u"\u0647\u0646", -1, 2), Among(u"\u0647", -1, 1), Among(u"\u064A", -1, 1) ] a_11 = [ Among(u"\u0646", -1, 1) ] a_12 = [ Among(u"\u0627", -1, 1), Among(u"\u0648", -1, 1), Among(u"\u064A", -1, 1) ] a_13 = [ Among(u"\u0627\u062A", -1, 1) ] a_14 = [ Among(u"\u062A", -1, 1) ] a_15 = [ Among(u"\u0629", -1, 1) ] a_16 = [ Among(u"\u064A", -1, 1) ] a_17 = [ Among(u"\u0643\u0645\u0627", -1, 3), Among(u"\u0647\u0645\u0627", -1, 3), Among(u"\u0646\u0627", -1, 2), Among(u"\u0647\u0627", -1, 2), Among(u"\u0643", -1, 1), Among(u"\u0643\u0645", -1, 2), Among(u"\u0647\u0645", -1, 2), Among(u"\u0643\u0646", -1, 2), Among(u"\u0647\u0646", -1, 2), Among(u"\u0647", -1, 1), Among(u"\u0643\u0645\u0648", -1, 3), Among(u"\u0646\u064A", -1, 2) ] a_18 = [ Among(u"\u0627", -1, 1), Among(u"\u062A\u0627", 0, 2), Among(u"\u062A\u0645\u0627", 0, 4), Among(u"\u0646\u0627", 0, 2), Among(u"\u062A", -1, 1), Among(u"\u0646", -1, 1), Among(u"\u0627\u0646", 5, 3), Among(u"\u062A\u0646", 5, 2), Among(u"\u0648\u0646", 5, 3), Among(u"\u064A\u0646", 5, 3), Among(u"\u064A", -1, 1) ] a_19 = [ Among(u"\u0648\u0627", -1, 1), Among(u"\u062A\u0645", -1, 1) ] a_20 = [ Among(u"\u0648", -1, 1), Among(u"\u062A\u0645\u0648", 0, 2) ] a_21 = [ Among(u"\u0649", -1, 1) ] B_is_defined = False B_is_verb = False B_is_noun = False def __r_Normalize_pre(self): # (, line 246 # do, line 247 v_1 = self.cursor try: # repeat, line 247 while True: v_2 = self.cursor try: # (, line 247 # or, line 311 try: v_3 = self.cursor try: # (, line 248 # [, line 249 self.bra = self.cursor # substring, line 249 among_var = self.find_among(ArabicStemmer.a_0) if among_var == 0: raise lab3() # ], line 249 self.ket = self.cursor if among_var == 1: # (, line 250 # delete, line 250 if not self.slice_del(): return False elif among_var == 2: # (, line 254 # <-, line 254 if not self.slice_from(u"0"): return False elif among_var == 3: # (, line 255 # <-, line 255 if not self.slice_from(u"1"): return False elif among_var == 4: # (, line 256 # <-, line 256 if not self.slice_from(u"2"): return False elif among_var == 5: # (, line 257 # <-, line 257 if not self.slice_from(u"3"): return False elif among_var == 6: # (, line 258 # <-, line 258 if not self.slice_from(u"4"): return False elif among_var == 7: # (, line 259 # <-, line 259 if not self.slice_from(u"5"): return False elif among_var == 8: # (, line 260 # <-, line 260 if not self.slice_from(u"6"): return False elif among_var == 9: # (, line 261 # <-, line 261 if not self.slice_from(u"7"): return False elif among_var == 10: # (, line 262 # <-, line 262 if not self.slice_from(u"8"): return False elif among_var == 11: # (, line 263 # <-, line 263 if not self.slice_from(u"9"): return False elif among_var == 12: # (, line 266 # <-, line 266 if not self.slice_from(u"\u0621"): return False elif among_var == 13: # (, line 267 # <-, line 267 if not self.slice_from(u"\u0623"): return False elif among_var == 14: # (, line 268 # <-, line 268 if not self.slice_from(u"\u0625"): return False elif among_var == 15: # (, line 269 # <-, line 269 if not self.slice_from(u"\u0626"): return False elif among_var == 16: # (, line 270 # <-, line 270 if not self.slice_from(u"\u0622"): return False elif among_var == 17: # (, line 271 # <-, line 271 if not self.slice_from(u"\u0624"): return False elif among_var == 18: # (, line 272 # <-, line 272 if not self.slice_from(u"\u0627"): return False elif among_var == 19: # (, line 273 # <-, line 273 if not self.slice_from(u"\u0628"): return False elif among_var == 20: # (, line 274 # <-, line 274 if not self.slice_from(u"\u0629"): return False elif among_var == 21: # (, line 275 # <-, line 275 if not self.slice_from(u"\u062A"): return False elif among_var == 22: # (, line 276 # <-, line 276 if not self.slice_from(u"\u062B"): return False elif among_var == 23: # (, line 277 # <-, line 277 if not self.slice_from(u"\u062C"): return False elif among_var == 24: # (, line 278 # <-, line 278 if not self.slice_from(u"\u062D"): return False elif among_var == 25: # (, line 279 # <-, line 279 if not self.slice_from(u"\u062E"): return False elif among_var == 26: # (, line 280 # <-, line 280 if not self.slice_from(u"\u062F"): return False elif among_var == 27: # (, line 281 # <-, line 281 if not self.slice_from(u"\u0630"): return False elif among_var == 28: # (, line 282 # <-, line 282 if not self.slice_from(u"\u0631"): return False elif among_var == 29: # (, line 283 # <-, line 283 if not self.slice_from(u"\u0632"): return False elif among_var == 30: # (, line 284 # <-, line 284 if not self.slice_from(u"\u0633"): return False elif among_var == 31: # (, line 285 # <-, line 285 if not self.slice_from(u"\u0634"): return False elif among_var == 32: # (, line 286 # <-, line 286 if not self.slice_from(u"\u0635"): return False elif among_var == 33: # (, line 287 # <-, line 287 if not self.slice_from(u"\u0636"): return False elif among_var == 34: # (, line 288 # <-, line 288 if not self.slice_from(u"\u0637"): return False elif among_var == 35: # (, line 289 # <-, line 289 if not self.slice_from(u"\u0638"): return False elif among_var == 36: # (, line 290 # <-, line 290 if not self.slice_from(u"\u0639"): return False elif among_var == 37: # (, line 291 # <-, line 291 if not self.slice_from(u"\u063A"): return False elif among_var == 38: # (, line 292 # <-, line 292 if not self.slice_from(u"\u0641"): return False elif among_var == 39: # (, line 293 # <-, line 293 if not self.slice_from(u"\u0642"): return False elif among_var == 40: # (, line 294 # <-, line 294 if not self.slice_from(u"\u0643"): return False elif among_var == 41: # (, line 295 # <-, line 295 if not self.slice_from(u"\u0644"): return False elif among_var == 42: # (, line 296 # <-, line 296 if not self.slice_from(u"\u0645"): return False elif among_var == 43: # (, line 297 # <-, line 297 if not self.slice_from(u"\u0646"): return False elif among_var == 44: # (, line 298 # <-, line 298 if not self.slice_from(u"\u0647"): return False elif among_var == 45: # (, line 299 # <-, line 299 if not self.slice_from(u"\u0648"): return False elif among_var == 46: # (, line 300 # <-, line 300 if not self.slice_from(u"\u0649"): return False elif among_var == 47: # (, line 301 # <-, line 301 if not self.slice_from(u"\u064A"): return False elif among_var == 48: # (, line 304 # <-, line 304 if not self.slice_from(u"\u0644\u0627"): return False elif among_var == 49: # (, line 305 # <-, line 305 if not self.slice_from(u"\u0644\u0623"): return False elif among_var == 50: # (, line 306 # <-, line 306 if not self.slice_from(u"\u0644\u0625"): return False elif among_var == 51: # (, line 307 # <-, line 307 if not self.slice_from(u"\u0644\u0622"): return False raise lab2() except lab3: pass self.cursor = v_3 # next, line 312 if self.cursor >= self.limit: raise lab1() self.cursor += 1 except lab2: pass continue except lab1: pass self.cursor = v_2 break except lab0: pass self.cursor = v_1 return True def __r_Normalize_post(self): # (, line 316 # do, line 318 v_1 = self.cursor try: # (, line 318 # backwards, line 320 self.limit_backward = self.cursor self.cursor = self.limit # (, line 320 # [, line 321 self.ket = self.cursor # substring, line 321 if self.find_among_b(ArabicStemmer.a_1) == 0: raise lab0() # ], line 321 self.bra = self.cursor # (, line 322 # <-, line 322 if not self.slice_from(u"\u0621"): return False self.cursor = self.limit_backward except lab0: pass self.cursor = v_1 # do, line 329 v_2 = self.cursor try: # repeat, line 329 while True: v_3 = self.cursor try: # (, line 329 # or, line 338 try: v_4 = self.cursor try: # (, line 330 # [, line 332 self.bra = self.cursor # substring, line 332 among_var = self.find_among(ArabicStemmer.a_2) if among_var == 0: raise lab4() # ], line 332 self.ket = self.cursor if among_var == 1: # (, line 333 # <-, line 333 if not self.slice_from(u"\u0627"): return False elif among_var == 2: # (, line 334 # <-, line 334 if not self.slice_from(u"\u0648"): return False elif among_var == 3: # (, line 335 # <-, line 335 if not self.slice_from(u"\u064A"): return False raise lab3() except lab4: pass self.cursor = v_4 # next, line 339 if self.cursor >= self.limit: raise lab2() self.cursor += 1 except lab3: pass continue except lab2: pass self.cursor = v_3 break except lab1: pass self.cursor = v_2 return True def __r_Checks1(self): # (, line 344 # [, line 345 self.bra = self.cursor # substring, line 345 among_var = self.find_among(ArabicStemmer.a_3) if among_var == 0: return False # ], line 345 self.ket = self.cursor if among_var == 1: # (, line 346 if not len(self.current) > 4: return False # set is_noun, line 346 self.B_is_noun = True # unset is_verb, line 346 self.B_is_verb = False # set is_defined, line 346 self.B_is_defined = True elif among_var == 2: # (, line 347 if not len(self.current) > 3: return False # set is_noun, line 347 self.B_is_noun = True # unset is_verb, line 347 self.B_is_verb = False # set is_defined, line 347 self.B_is_defined = True return True def __r_Prefix_Step1(self): # (, line 353 # [, line 354 self.bra = self.cursor # substring, line 354 among_var = self.find_among(ArabicStemmer.a_4) if among_var == 0: return False # ], line 354 self.ket = self.cursor if among_var == 1: # (, line 355 if not len(self.current) > 3: return False # <-, line 355 if not self.slice_from(u"\u0623"): return False elif among_var == 2: # (, line 356 if not len(self.current) > 3: return False # <-, line 356 if not self.slice_from(u"\u0622"): return False elif among_var == 3: # (, line 358 if not len(self.current) > 3: return False # <-, line 358 if not self.slice_from(u"\u0627"): return False elif among_var == 4: # (, line 359 if not len(self.current) > 3: return False # <-, line 359 if not self.slice_from(u"\u0625"): return False return True def __r_Prefix_Step2(self): # (, line 364 # not, line 365 v_1 = self.cursor try: # literal, line 365 if not self.eq_s(u"\u0641\u0627"): raise lab0() return False except lab0: pass self.cursor = v_1 # not, line 366 v_2 = self.cursor try: # literal, line 366 if not self.eq_s(u"\u0648\u0627"): raise lab1() return False except lab1: pass self.cursor = v_2 # [, line 367 self.bra = self.cursor # substring, line 367 if self.find_among(ArabicStemmer.a_5) == 0: return False # ], line 367 self.ket = self.cursor # (, line 368 if not len(self.current) > 3: return False # delete, line 368 if not self.slice_del(): return False return True def __r_Prefix_Step3a_Noun(self): # (, line 373 # [, line 374 self.bra = self.cursor # substring, line 374 among_var = self.find_among(ArabicStemmer.a_6) if among_var == 0: return False # ], line 374 self.ket = self.cursor if among_var == 1: # (, line 375 if not len(self.current) > 5: return False # delete, line 375 if not self.slice_del(): return False elif among_var == 2: # (, line 376 if not len(self.current) > 4: return False # delete, line 376 if not self.slice_del(): return False return True def __r_Prefix_Step3b_Noun(self): # (, line 380 # not, line 381 v_1 = self.cursor try: # literal, line 381 if not self.eq_s(u"\u0628\u0627"): raise lab0() return False except lab0: pass self.cursor = v_1 # [, line 382 self.bra = self.cursor # substring, line 382 among_var = self.find_among(ArabicStemmer.a_7) if among_var == 0: return False # ], line 382 self.ket = self.cursor if among_var == 1: # (, line 383 if not len(self.current) > 3: return False # delete, line 383 if not self.slice_del(): return False elif among_var == 2: # (, line 385 if not len(self.current) > 3: return False # <-, line 385 if not self.slice_from(u"\u0628"): return False elif among_var == 3: # (, line 386 if not len(self.current) > 3: return False # <-, line 386 if not self.slice_from(u"\u0643"): return False return True def __r_Prefix_Step3_Verb(self): # (, line 391 # [, line 392 self.bra = self.cursor # substring, line 392 among_var = self.find_among(ArabicStemmer.a_8) if among_var == 0: return False # ], line 392 self.ket = self.cursor if among_var == 1: # (, line 394 if not len(self.current) > 4: return False # <-, line 394 if not self.slice_from(u"\u064A"): return False elif among_var == 2: # (, line 395 if not len(self.current) > 4: return False # <-, line 395 if not self.slice_from(u"\u062A"): return False elif among_var == 3: # (, line 396 if not len(self.current) > 4: return False # <-, line 396 if not self.slice_from(u"\u0646"): return False elif among_var == 4: # (, line 397 if not len(self.current) > 4: return False # <-, line 397 if not self.slice_from(u"\u0623"): return False return True def __r_Prefix_Step4_Verb(self): # (, line 401 # [, line 402 self.bra = self.cursor # substring, line 402 if self.find_among(ArabicStemmer.a_9) == 0: return False # ], line 402 self.ket = self.cursor # (, line 403 if not len(self.current) > 4: return False # set is_verb, line 403 self.B_is_verb = True # unset is_noun, line 403 self.B_is_noun = False # <-, line 403 if not self.slice_from(u"\u0627\u0633\u062A"): return False return True def __r_Suffix_Noun_Step1a(self): # (, line 410 # [, line 411 self.ket = self.cursor # substring, line 411 among_var = self.find_among_b(ArabicStemmer.a_10) if among_var == 0: return False # ], line 411 self.bra = self.cursor if among_var == 1: # (, line 412 if not len(self.current) >= 4: return False # delete, line 412 if not self.slice_del(): return False elif among_var == 2: # (, line 413 if not len(self.current) >= 5: return False # delete, line 413 if not self.slice_del(): return False elif among_var == 3: # (, line 414 if not len(self.current) >= 6: return False # delete, line 414 if not self.slice_del(): return False return True def __r_Suffix_Noun_Step1b(self): # (, line 417 # [, line 418 self.ket = self.cursor # substring, line 418 if self.find_among_b(ArabicStemmer.a_11) == 0: return False # ], line 418 self.bra = self.cursor # (, line 419 if not len(self.current) > 5: return False # delete, line 419 if not self.slice_del(): return False return True def __r_Suffix_Noun_Step2a(self): # (, line 423 # [, line 424 self.ket = self.cursor # substring, line 424 if self.find_among_b(ArabicStemmer.a_12) == 0: return False # ], line 424 self.bra = self.cursor # (, line 425 if not len(self.current) > 4: return False # delete, line 425 if not self.slice_del(): return False return True def __r_Suffix_Noun_Step2b(self): # (, line 429 # [, line 430 self.ket = self.cursor # substring, line 430 if self.find_among_b(ArabicStemmer.a_13) == 0: return False # ], line 430 self.bra = self.cursor # (, line 431 if not len(self.current) >= 5: return False # delete, line 431 if not self.slice_del(): return False return True def __r_Suffix_Noun_Step2c1(self): # (, line 435 # [, line 436 self.ket = self.cursor # substring, line 436 if self.find_among_b(ArabicStemmer.a_14) == 0: return False # ], line 436 self.bra = self.cursor # (, line 437 if not len(self.current) >= 4: return False # delete, line 437 if not self.slice_del(): return False return True def __r_Suffix_Noun_Step2c2(self): # (, line 440 # [, line 441 self.ket = self.cursor # substring, line 441 if self.find_among_b(ArabicStemmer.a_15) == 0: return False # ], line 441 self.bra = self.cursor # (, line 442 if not len(self.current) >= 4: return False # delete, line 442 if not self.slice_del(): return False return True def __r_Suffix_Noun_Step3(self): # (, line 445 # [, line 446 self.ket = self.cursor # substring, line 446 if self.find_among_b(ArabicStemmer.a_16) == 0: return False # ], line 446 self.bra = self.cursor # (, line 447 if not len(self.current) >= 3: return False # delete, line 447 if not self.slice_del(): return False return True def __r_Suffix_Verb_Step1(self): # (, line 451 # [, line 452 self.ket = self.cursor # substring, line 452 among_var = self.find_among_b(ArabicStemmer.a_17) if among_var == 0: return False # ], line 452 self.bra = self.cursor if among_var == 1: # (, line 453 if not len(self.current) >= 4: return False # delete, line 453 if not self.slice_del(): return False elif among_var == 2: # (, line 454 if not len(self.current) >= 5: return False # delete, line 454 if not self.slice_del(): return False elif among_var == 3: # (, line 455 if not len(self.current) >= 6: return False # delete, line 455 if not self.slice_del(): return False return True def __r_Suffix_Verb_Step2a(self): # (, line 458 # [, line 459 self.ket = self.cursor # substring, line 459 among_var = self.find_among_b(ArabicStemmer.a_18) if among_var == 0: return False # ], line 459 self.bra = self.cursor if among_var == 1: # (, line 460 if not len(self.current) >= 4: return False # delete, line 460 if not self.slice_del(): return False elif among_var == 2: # (, line 462 if not len(self.current) >= 5: return False # delete, line 462 if not self.slice_del(): return False elif among_var == 3: # (, line 463 if not len(self.current) > 5: return False # delete, line 463 if not self.slice_del(): return False elif among_var == 4: # (, line 464 if not len(self.current) >= 6: return False # delete, line 464 if not self.slice_del(): return False return True def __r_Suffix_Verb_Step2b(self): # (, line 468 # [, line 469 self.ket = self.cursor # substring, line 469 if self.find_among_b(ArabicStemmer.a_19) == 0: return False # ], line 469 self.bra = self.cursor # (, line 470 if not len(self.current) >= 5: return False # delete, line 470 if not self.slice_del(): return False return True def __r_Suffix_Verb_Step2c(self): # (, line 475 # [, line 476 self.ket = self.cursor # substring, line 476 among_var = self.find_among_b(ArabicStemmer.a_20) if among_var == 0: return False # ], line 476 self.bra = self.cursor if among_var == 1: # (, line 477 if not len(self.current) >= 4: return False # delete, line 477 if not self.slice_del(): return False elif among_var == 2: # (, line 478 if not len(self.current) >= 6: return False # delete, line 478 if not self.slice_del(): return False return True def __r_Suffix_All_alef_maqsura(self): # (, line 482 # [, line 483 self.ket = self.cursor # substring, line 483 if self.find_among_b(ArabicStemmer.a_21) == 0: return False # ], line 483 self.bra = self.cursor # (, line 484 # <-, line 484 if not self.slice_from(u"\u064A"): return False return True def _stem(self): # (, line 491 # set is_noun, line 493 self.B_is_noun = True # set is_verb, line 494 self.B_is_verb = True # unset is_defined, line 495 self.B_is_defined = False # do, line 498 v_1 = self.cursor # call Checks1, line 498 self.__r_Checks1() self.cursor = v_1 # do, line 501 # call Normalize_pre, line 501 self.__r_Normalize_pre() # backwards, line 504 self.limit_backward = self.cursor self.cursor = self.limit # (, line 504 # do, line 506 v_3 = self.limit - self.cursor try: # (, line 506 # or, line 520 try: v_4 = self.limit - self.cursor try: # (, line 508 # Boolean test is_verb, line 509 if not self.B_is_verb: raise lab2() # (, line 510 # or, line 515 try: v_5 = self.limit - self.cursor try: # (, line 511 # (, line 512 # atleast, line 512 v_6 = 1 while True: v_7 = self.limit - self.cursor try: # call Suffix_Verb_Step1, line 512 if not self.__r_Suffix_Verb_Step1(): raise lab5() v_6 -= 1 continue except lab5: pass self.cursor = self.limit - v_7 break if v_6 > 0: raise lab4() # (, line 513 # or, line 513 try: v_8 = self.limit - self.cursor try: # call Suffix_Verb_Step2a, line 513 if not self.__r_Suffix_Verb_Step2a(): raise lab7() raise lab6() except lab7: pass self.cursor = self.limit - v_8 try: # call Suffix_Verb_Step2c, line 513 if not self.__r_Suffix_Verb_Step2c(): raise lab8() raise lab6() except lab8: pass self.cursor = self.limit - v_8 # next, line 513 if self.cursor <= self.limit_backward: raise lab4() self.cursor -= 1 except lab6: pass raise lab3() except lab4: pass self.cursor = self.limit - v_5 try: # call Suffix_Verb_Step2b, line 515 if not self.__r_Suffix_Verb_Step2b(): raise lab9() raise lab3() except lab9: pass self.cursor = self.limit - v_5 # call Suffix_Verb_Step2a, line 516 if not self.__r_Suffix_Verb_Step2a(): raise lab2() except lab3: pass raise lab1() except lab2: pass self.cursor = self.limit - v_4 try: # (, line 520 # Boolean test is_noun, line 521 if not self.B_is_noun: raise lab10() # (, line 522 # try, line 524 v_9 = self.limit - self.cursor try: # (, line 524 # or, line 526 try: v_10 = self.limit - self.cursor try: # call Suffix_Noun_Step2c2, line 525 if not self.__r_Suffix_Noun_Step2c2(): raise lab13() raise lab12() except lab13: pass self.cursor = self.limit - v_10 try: # (, line 526 # not, line 526 try: # Boolean test is_defined, line 526 if not self.B_is_defined: raise lab15() raise lab14() except lab15: pass # call Suffix_Noun_Step1a, line 526 if not self.__r_Suffix_Noun_Step1a(): raise lab14() # (, line 526 # or, line 528 try: v_12 = self.limit - self.cursor try: # call Suffix_Noun_Step2a, line 527 if not self.__r_Suffix_Noun_Step2a(): raise lab17() raise lab16() except lab17: pass self.cursor = self.limit - v_12 try: # call Suffix_Noun_Step2b, line 528 if not self.__r_Suffix_Noun_Step2b(): raise lab18() raise lab16() except lab18: pass self.cursor = self.limit - v_12 try: # call Suffix_Noun_Step2c1, line 529 if not self.__r_Suffix_Noun_Step2c1(): raise lab19() raise lab16() except lab19: pass self.cursor = self.limit - v_12 # next, line 530 if self.cursor <= self.limit_backward: raise lab14() self.cursor -= 1 except lab16: pass raise lab12() except lab14: pass self.cursor = self.limit - v_10 try: # (, line 531 # call Suffix_Noun_Step1b, line 531 if not self.__r_Suffix_Noun_Step1b(): raise lab20() # (, line 531 # or, line 533 try: v_13 = self.limit - self.cursor try: # call Suffix_Noun_Step2a, line 532 if not self.__r_Suffix_Noun_Step2a(): raise lab22() raise lab21() except lab22: pass self.cursor = self.limit - v_13 try: # call Suffix_Noun_Step2b, line 533 if not self.__r_Suffix_Noun_Step2b(): raise lab23() raise lab21() except lab23: pass self.cursor = self.limit - v_13 # call Suffix_Noun_Step2c1, line 534 if not self.__r_Suffix_Noun_Step2c1(): raise lab20() except lab21: pass raise lab12() except lab20: pass self.cursor = self.limit - v_10 try: # (, line 535 # not, line 535 try: # Boolean test is_defined, line 535 if not self.B_is_defined: raise lab25() raise lab24() except lab25: pass # call Suffix_Noun_Step2a, line 535 if not self.__r_Suffix_Noun_Step2a(): raise lab24() raise lab12() except lab24: pass self.cursor = self.limit - v_10 # (, line 536 # call Suffix_Noun_Step2b, line 536 if not self.__r_Suffix_Noun_Step2b(): self.cursor = self.limit - v_9 raise lab11() except lab12: pass except lab11: pass # call Suffix_Noun_Step3, line 538 if not self.__r_Suffix_Noun_Step3(): raise lab10() raise lab1() except lab10: pass self.cursor = self.limit - v_4 # call Suffix_All_alef_maqsura, line 544 if not self.__r_Suffix_All_alef_maqsura(): raise lab0() except lab1: pass except lab0: pass self.cursor = self.limit - v_3 self.cursor = self.limit_backward # do, line 549 v_15 = self.cursor try: # (, line 549 # try, line 550 v_16 = self.cursor try: # call Prefix_Step1, line 550 if not self.__r_Prefix_Step1(): self.cursor = v_16 raise lab27() except lab27: pass # try, line 551 v_17 = self.cursor try: # call Prefix_Step2, line 551 if not self.__r_Prefix_Step2(): self.cursor = v_17 raise lab28() except lab28: pass # (, line 552 # or, line 553 try: v_18 = self.cursor try: # call Prefix_Step3a_Noun, line 552 if not self.__r_Prefix_Step3a_Noun(): raise lab30() raise lab29() except lab30: pass self.cursor = v_18 try: # (, line 553 # Boolean test is_noun, line 553 if not self.B_is_noun: raise lab31() # call Prefix_Step3b_Noun, line 553 if not self.__r_Prefix_Step3b_Noun(): raise lab31() raise lab29() except lab31: pass self.cursor = v_18 # (, line 554 # Boolean test is_verb, line 554 if not self.B_is_verb: raise lab26() # try, line 554 v_19 = self.cursor try: # call Prefix_Step3_Verb, line 554 if not self.__r_Prefix_Step3_Verb(): self.cursor = v_19 raise lab32() except lab32: pass # call Prefix_Step4_Verb, line 554 if not self.__r_Prefix_Step4_Verb(): raise lab26() except lab29: pass except lab26: pass self.cursor = v_15 # do, line 559 # call Normalize_post, line 559 self.__r_Normalize_post() return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass class lab9(BaseException): pass class lab10(BaseException): pass class lab11(BaseException): pass class lab12(BaseException): pass class lab13(BaseException): pass class lab14(BaseException): pass class lab15(BaseException): pass class lab16(BaseException): pass class lab17(BaseException): pass class lab18(BaseException): pass class lab19(BaseException): pass class lab20(BaseException): pass class lab21(BaseException): pass class lab22(BaseException): pass class lab23(BaseException): pass class lab24(BaseException): pass class lab25(BaseException): pass class lab26(BaseException): pass class lab27(BaseException): pass class lab28(BaseException): pass class lab29(BaseException): pass class lab30(BaseException): pass class lab31(BaseException): pass class lab32(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/basestemmer.py0000644000175000017500000002231213542377226024472 0ustar dmitrydmitry00000000000000class BaseStemmer(object): def __init__(self): self.set_current("") def set_current(self, value): ''' Set the self.current string. ''' self.current = value self.cursor = 0 self.limit = len(self.current) self.limit_backward = 0 self.bra = self.cursor self.ket = self.limit def get_current(self): ''' Get the self.current string. ''' return self.current def copy_from(self, other): self.current = other.current self.cursor = other.cursor self.limit = other.limit self.limit_backward = other.limit_backward self.bra = other.bra self.ket = other.ket def in_grouping(self, s, min, max): if self.cursor >= self.limit: return False ch = ord(self.current[self.cursor]) if ch > max or ch < min: return False ch -= min if (s[ch >> 3] & (0x1 << (ch & 0x7))) == 0: return False self.cursor += 1 return True def go_in_grouping(self, s, min, max): while self.cursor < self.limit: ch = ord(self.current[self.cursor]) if ch > max or ch < min: return True ch -= min if (s[ch >> 3] & (0x1 << (ch & 0x7))) == 0: return True self.cursor += 1 return False def in_grouping_b(self, s, min, max): if self.cursor <= self.limit_backward: return False ch = ord(self.current[self.cursor - 1]) if ch > max or ch < min: return False ch -= min if (s[ch >> 3] & (0x1 << (ch & 0x7))) == 0: return False self.cursor -= 1 return True def go_in_grouping_b(self, s, min, max): while self.cursor > self.limit_backward: ch = ord(self.current[self.cursor - 1]) if ch > max or ch < min: return True ch -= min if (s[ch >> 3] & (0x1 << (ch & 0x7))) == 0: return True self.cursor -= 1 return False def out_grouping(self, s, min, max): if self.cursor >= self.limit: return False ch = ord(self.current[self.cursor]) if ch > max or ch < min: self.cursor += 1 return True ch -= min if (s[ch >> 3] & (0X1 << (ch & 0x7))) == 0: self.cursor += 1 return True return False def go_out_grouping(self, s, min, max): while self.cursor < self.limit: ch = ord(self.current[self.cursor]) if ch <= max and ch >= min: ch -= min if (s[ch >> 3] & (0X1 << (ch & 0x7))): return True self.cursor += 1 return False def out_grouping_b(self, s, min, max): if self.cursor <= self.limit_backward: return False ch = ord(self.current[self.cursor - 1]) if ch > max or ch < min: self.cursor -= 1 return True ch -= min if (s[ch >> 3] & (0X1 << (ch & 0x7))) == 0: self.cursor -= 1 return True return False def go_out_grouping_b(self, s, min, max): while self.cursor > self.limit_backward: ch = ord(self.current[self.cursor - 1]) if ch <= max and ch >= min: ch -= min if (s[ch >> 3] & (0X1 << (ch & 0x7))): return True self.cursor -= 1 return False def eq_s(self, s): if self.limit - self.cursor < len(s): return False if self.current[self.cursor:self.cursor + len(s)] != s: return False self.cursor += len(s) return True def eq_s_b(self, s): if self.cursor - self.limit_backward < len(s): return False if self.current[self.cursor - len(s):self.cursor] != s: return False self.cursor -= len(s) return True def find_among(self, v): i = 0 j = len(v) c = self.cursor l = self.limit common_i = 0 common_j = 0 first_key_inspected = False while True: k = i + ((j - i) >> 1) diff = 0 common = min(common_i, common_j) # smaller w = v[k] for i2 in range(common, len(w.s)): if c + common == l: diff = -1 break diff = ord(self.current[c + common]) - ord(w.s[i2]) if diff != 0: break common += 1 if diff < 0: j = k common_j = common else: i = k common_i = common if j - i <= 1: if i > 0: break # v->s has been inspected if j == i: break # only one item in v # - but now we need to go round once more to get # v->s inspected. This looks messy, but is actually # the optimal approach. if first_key_inspected: break first_key_inspected = True while True: w = v[i] if common_i >= len(w.s): self.cursor = c + len(w.s) if w.method is None: return w.result method = getattr(self, w.method) res = method() self.cursor = c + len(w.s) if res: return w.result i = w.substring_i if i < 0: return 0 return -1 # not reachable def find_among_b(self, v): ''' find_among_b is for backwards processing. Same comments apply ''' i = 0 j = len(v) c = self.cursor lb = self.limit_backward common_i = 0 common_j = 0 first_key_inspected = False while True: k = i + ((j - i) >> 1) diff = 0 common = min(common_i, common_j) w = v[k] for i2 in range(len(w.s) - 1 - common, -1, -1): if c - common == lb: diff = -1 break diff = ord(self.current[c - 1 - common]) - ord(w.s[i2]) if diff != 0: break common += 1 if diff < 0: j = k common_j = common else: i = k common_i = common if j - i <= 1: if i > 0: break if j == i: break if first_key_inspected: break first_key_inspected = True while True: w = v[i] if common_i >= len(w.s): self.cursor = c - len(w.s) if w.method is None: return w.result method = getattr(self, w.method) res = method() self.cursor = c - len(w.s) if res: return w.result i = w.substring_i if i < 0: return 0 return -1 # not reachable def replace_s(self, c_bra, c_ket, s): ''' to replace chars between c_bra and c_ket in self.current by the chars in s. @type c_bra int @type c_ket int @type s: string ''' adjustment = len(s) - (c_ket - c_bra) self.current = self.current[0:c_bra] + s + self.current[c_ket:] self.limit += adjustment if self.cursor >= c_ket: self.cursor += adjustment elif self.cursor > c_bra: self.cursor = c_bra return adjustment def slice_check(self): if self.bra < 0 or self.bra > self.ket or self.ket > self.limit or self.limit > len(self.current): return False return True def slice_from(self, s): ''' @type s string ''' result = False if self.slice_check(): self.replace_s(self.bra, self.ket, s) result = True return result def slice_del(self): return self.slice_from("") def insert(self, c_bra, c_ket, s): ''' @type c_bra int @type c_ket int @type s: string ''' adjustment = self.replace_s(c_bra, c_ket, s) if c_bra <= self.bra: self.bra += adjustment if c_bra <= self.ket: self.ket += adjustment def slice_to(self): ''' Return the slice as a string. ''' result = '' if self.slice_check(): result = self.current[self.bra:self.ket] return result def assign_to(self): ''' Return the current string up to the limit. ''' return self.current[0:self.limit] def stemWord(self, word): self.set_current(word) self._stem() return self.get_current() def stemWords(self, words): return [self.stemWord(word) for word in words] snowballstemmer-2.0.0/src/snowballstemmer/basque_stemmer.py0000644000175000017500000005555313545325430025205 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class BasqueStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"idea", -1, 1), Among(u"bidea", 0, 1), Among(u"kidea", 0, 1), Among(u"pidea", 0, 1), Among(u"kundea", -1, 1), Among(u"galea", -1, 1), Among(u"tailea", -1, 1), Among(u"tzailea", -1, 1), Among(u"gunea", -1, 1), Among(u"kunea", -1, 1), Among(u"tzaga", -1, 1), Among(u"gaia", -1, 1), Among(u"aldia", -1, 1), Among(u"taldia", 12, 1), Among(u"karia", -1, 1), Among(u"garria", -1, 2), Among(u"karria", -1, 1), Among(u"ka", -1, 1), Among(u"tzaka", 17, 1), Among(u"la", -1, 1), Among(u"mena", -1, 1), Among(u"pena", -1, 1), Among(u"kina", -1, 1), Among(u"ezina", -1, 1), Among(u"tezina", 23, 1), Among(u"kuna", -1, 1), Among(u"tuna", -1, 1), Among(u"kizuna", -1, 1), Among(u"era", -1, 1), Among(u"bera", 28, 1), Among(u"arabera", 29, 4), Among(u"kera", 28, 1), Among(u"pera", 28, 1), Among(u"orra", -1, 1), Among(u"korra", 33, 1), Among(u"dura", -1, 1), Among(u"gura", -1, 1), Among(u"kura", -1, 1), Among(u"tura", -1, 1), Among(u"eta", -1, 1), Among(u"keta", 39, 1), Among(u"gailua", -1, 1), Among(u"eza", -1, 1), Among(u"erreza", 42, 1), Among(u"tza", -1, 2), Among(u"gaitza", 44, 1), Among(u"kaitza", 44, 1), Among(u"kuntza", 44, 1), Among(u"ide", -1, 1), Among(u"bide", 48, 1), Among(u"kide", 48, 1), Among(u"pide", 48, 1), Among(u"kunde", -1, 1), Among(u"tzake", -1, 1), Among(u"tzeke", -1, 1), Among(u"le", -1, 1), Among(u"gale", 55, 1), Among(u"taile", 55, 1), Among(u"tzaile", 55, 1), Among(u"gune", -1, 1), Among(u"kune", -1, 1), Among(u"tze", -1, 1), Among(u"atze", 61, 1), Among(u"gai", -1, 1), Among(u"aldi", -1, 1), Among(u"taldi", 64, 1), Among(u"ki", -1, 1), Among(u"ari", -1, 1), Among(u"kari", 67, 1), Among(u"lari", 67, 1), Among(u"tari", 67, 1), Among(u"etari", 70, 1), Among(u"garri", -1, 2), Among(u"karri", -1, 1), Among(u"arazi", -1, 1), Among(u"tarazi", 74, 1), Among(u"an", -1, 1), Among(u"ean", 76, 1), Among(u"rean", 77, 1), Among(u"kan", 76, 1), Among(u"etan", 76, 1), Among(u"atseden", -1, 3), Among(u"men", -1, 1), Among(u"pen", -1, 1), Among(u"kin", -1, 1), Among(u"rekin", 84, 1), Among(u"ezin", -1, 1), Among(u"tezin", 86, 1), Among(u"tun", -1, 1), Among(u"kizun", -1, 1), Among(u"go", -1, 1), Among(u"ago", 90, 1), Among(u"tio", -1, 1), Among(u"dako", -1, 1), Among(u"or", -1, 1), Among(u"kor", 94, 1), Among(u"tzat", -1, 1), Among(u"du", -1, 1), Among(u"gailu", -1, 1), Among(u"tu", -1, 1), Among(u"atu", 99, 1), Among(u"aldatu", 100, 1), Among(u"tatu", 100, 1), Among(u"baditu", 99, 5), Among(u"ez", -1, 1), Among(u"errez", 104, 1), Among(u"tzez", 104, 1), Among(u"gaitz", -1, 1), Among(u"kaitz", -1, 1) ] a_1 = [ Among(u"ada", -1, 1), Among(u"kada", 0, 1), Among(u"anda", -1, 1), Among(u"denda", -1, 1), Among(u"gabea", -1, 1), Among(u"kabea", -1, 1), Among(u"aldea", -1, 1), Among(u"kaldea", 6, 1), Among(u"taldea", 6, 1), Among(u"ordea", -1, 1), Among(u"zalea", -1, 1), Among(u"tzalea", 10, 1), Among(u"gilea", -1, 1), Among(u"emea", -1, 1), Among(u"kumea", -1, 1), Among(u"nea", -1, 1), Among(u"enea", 15, 1), Among(u"zionea", 15, 1), Among(u"unea", 15, 1), Among(u"gunea", 18, 1), Among(u"pea", -1, 1), Among(u"aurrea", -1, 1), Among(u"tea", -1, 1), Among(u"kotea", 22, 1), Among(u"artea", 22, 1), Among(u"ostea", 22, 1), Among(u"etxea", -1, 1), Among(u"ga", -1, 1), Among(u"anga", 27, 1), Among(u"gaia", -1, 1), Among(u"aldia", -1, 1), Among(u"taldia", 30, 1), Among(u"handia", -1, 1), Among(u"mendia", -1, 1), Among(u"geia", -1, 1), Among(u"egia", -1, 1), Among(u"degia", 35, 1), Among(u"tegia", 35, 1), Among(u"nahia", -1, 1), Among(u"ohia", -1, 1), Among(u"kia", -1, 1), Among(u"tokia", 40, 1), Among(u"oia", -1, 1), Among(u"koia", 42, 1), Among(u"aria", -1, 1), Among(u"karia", 44, 1), Among(u"laria", 44, 1), Among(u"taria", 44, 1), Among(u"eria", -1, 1), Among(u"keria", 48, 1), Among(u"teria", 48, 1), Among(u"garria", -1, 2), Among(u"larria", -1, 1), Among(u"kirria", -1, 1), Among(u"duria", -1, 1), Among(u"asia", -1, 1), Among(u"tia", -1, 1), Among(u"ezia", -1, 1), Among(u"bizia", -1, 1), Among(u"ontzia", -1, 1), Among(u"ka", -1, 1), Among(u"joka", 60, 3), Among(u"aurka", 60, 10), Among(u"ska", 60, 1), Among(u"xka", 60, 1), Among(u"zka", 60, 1), Among(u"gibela", -1, 1), Among(u"gela", -1, 1), Among(u"kaila", -1, 1), Among(u"skila", -1, 1), Among(u"tila", -1, 1), Among(u"ola", -1, 1), Among(u"na", -1, 1), Among(u"kana", 72, 1), Among(u"ena", 72, 1), Among(u"garrena", 74, 1), Among(u"gerrena", 74, 1), Among(u"urrena", 74, 1), Among(u"zaina", 72, 1), Among(u"tzaina", 78, 1), Among(u"kina", 72, 1), Among(u"mina", 72, 1), Among(u"garna", 72, 1), Among(u"una", 72, 1), Among(u"duna", 83, 1), Among(u"asuna", 83, 1), Among(u"tasuna", 85, 1), Among(u"ondoa", -1, 1), Among(u"kondoa", 87, 1), Among(u"ngoa", -1, 1), Among(u"zioa", -1, 1), Among(u"koa", -1, 1), Among(u"takoa", 91, 1), Among(u"zkoa", 91, 1), Among(u"noa", -1, 1), Among(u"zinoa", 94, 1), Among(u"aroa", -1, 1), Among(u"taroa", 96, 1), Among(u"zaroa", 96, 1), Among(u"eroa", -1, 1), Among(u"oroa", -1, 1), Among(u"osoa", -1, 1), Among(u"toa", -1, 1), Among(u"ttoa", 102, 1), Among(u"ztoa", 102, 1), Among(u"txoa", -1, 1), Among(u"tzoa", -1, 1), Among(u"\u00F1oa", -1, 1), Among(u"ra", -1, 1), Among(u"ara", 108, 1), Among(u"dara", 109, 1), Among(u"liara", 109, 1), Among(u"tiara", 109, 1), Among(u"tara", 109, 1), Among(u"etara", 113, 1), Among(u"tzara", 109, 1), Among(u"bera", 108, 1), Among(u"kera", 108, 1), Among(u"pera", 108, 1), Among(u"ora", 108, 2), Among(u"tzarra", 108, 1), Among(u"korra", 108, 1), Among(u"tra", 108, 1), Among(u"sa", -1, 1), Among(u"osa", 123, 1), Among(u"ta", -1, 1), Among(u"eta", 125, 1), Among(u"keta", 126, 1), Among(u"sta", 125, 1), Among(u"dua", -1, 1), Among(u"mendua", 129, 1), Among(u"ordua", 129, 1), Among(u"lekua", -1, 1), Among(u"burua", -1, 1), Among(u"durua", -1, 1), Among(u"tsua", -1, 1), Among(u"tua", -1, 1), Among(u"mentua", 136, 1), Among(u"estua", 136, 1), Among(u"txua", -1, 1), Among(u"zua", -1, 1), Among(u"tzua", 140, 1), Among(u"za", -1, 1), Among(u"eza", 142, 1), Among(u"eroza", 142, 1), Among(u"tza", 142, 2), Among(u"koitza", 145, 1), Among(u"antza", 145, 1), Among(u"gintza", 145, 1), Among(u"kintza", 145, 1), Among(u"kuntza", 145, 1), Among(u"gabe", -1, 1), Among(u"kabe", -1, 1), Among(u"kide", -1, 1), Among(u"alde", -1, 1), Among(u"kalde", 154, 1), Among(u"talde", 154, 1), Among(u"orde", -1, 1), Among(u"ge", -1, 1), Among(u"zale", -1, 1), Among(u"tzale", 159, 1), Among(u"gile", -1, 1), Among(u"eme", -1, 1), Among(u"kume", -1, 1), Among(u"ne", -1, 1), Among(u"zione", 164, 1), Among(u"une", 164, 1), Among(u"gune", 166, 1), Among(u"pe", -1, 1), Among(u"aurre", -1, 1), Among(u"te", -1, 1), Among(u"kote", 170, 1), Among(u"arte", 170, 1), Among(u"oste", 170, 1), Among(u"etxe", -1, 1), Among(u"gai", -1, 1), Among(u"di", -1, 1), Among(u"aldi", 176, 1), Among(u"taldi", 177, 1), Among(u"geldi", 176, 8), Among(u"handi", 176, 1), Among(u"mendi", 176, 1), Among(u"gei", -1, 1), Among(u"egi", -1, 1), Among(u"degi", 183, 1), Among(u"tegi", 183, 1), Among(u"nahi", -1, 1), Among(u"ohi", -1, 1), Among(u"ki", -1, 1), Among(u"toki", 188, 1), Among(u"oi", -1, 1), Among(u"goi", 190, 1), Among(u"koi", 190, 1), Among(u"ari", -1, 1), Among(u"kari", 193, 1), Among(u"lari", 193, 1), Among(u"tari", 193, 1), Among(u"garri", -1, 2), Among(u"larri", -1, 1), Among(u"kirri", -1, 1), Among(u"duri", -1, 1), Among(u"asi", -1, 1), Among(u"ti", -1, 1), Among(u"ontzi", -1, 1), Among(u"\u00F1i", -1, 1), Among(u"ak", -1, 1), Among(u"ek", -1, 1), Among(u"tarik", -1, 1), Among(u"gibel", -1, 1), Among(u"ail", -1, 1), Among(u"kail", 209, 1), Among(u"kan", -1, 1), Among(u"tan", -1, 1), Among(u"etan", 212, 1), Among(u"en", -1, 4), Among(u"ren", 214, 2), Among(u"garren", 215, 1), Among(u"gerren", 215, 1), Among(u"urren", 215, 1), Among(u"ten", 214, 4), Among(u"tzen", 214, 4), Among(u"zain", -1, 1), Among(u"tzain", 221, 1), Among(u"kin", -1, 1), Among(u"min", -1, 1), Among(u"dun", -1, 1), Among(u"asun", -1, 1), Among(u"tasun", 226, 1), Among(u"aizun", -1, 1), Among(u"ondo", -1, 1), Among(u"kondo", 229, 1), Among(u"go", -1, 1), Among(u"ngo", 231, 1), Among(u"zio", -1, 1), Among(u"ko", -1, 1), Among(u"trako", 234, 5), Among(u"tako", 234, 1), Among(u"etako", 236, 1), Among(u"eko", 234, 1), Among(u"tariko", 234, 1), Among(u"sko", 234, 1), Among(u"tuko", 234, 1), Among(u"minutuko", 241, 6), Among(u"zko", 234, 1), Among(u"no", -1, 1), Among(u"zino", 244, 1), Among(u"ro", -1, 1), Among(u"aro", 246, 1), Among(u"igaro", 247, 9), Among(u"taro", 247, 1), Among(u"zaro", 247, 1), Among(u"ero", 246, 1), Among(u"giro", 246, 1), Among(u"oro", 246, 1), Among(u"oso", -1, 1), Among(u"to", -1, 1), Among(u"tto", 255, 1), Among(u"zto", 255, 1), Among(u"txo", -1, 1), Among(u"tzo", -1, 1), Among(u"gintzo", 259, 1), Among(u"\u00F1o", -1, 1), Among(u"zp", -1, 1), Among(u"ar", -1, 1), Among(u"dar", 263, 1), Among(u"behar", 263, 1), Among(u"zehar", 263, 7), Among(u"liar", 263, 1), Among(u"tiar", 263, 1), Among(u"tar", 263, 1), Among(u"tzar", 263, 1), Among(u"or", -1, 2), Among(u"kor", 271, 1), Among(u"os", -1, 1), Among(u"ket", -1, 1), Among(u"du", -1, 1), Among(u"mendu", 275, 1), Among(u"ordu", 275, 1), Among(u"leku", -1, 1), Among(u"buru", -1, 2), Among(u"duru", -1, 1), Among(u"tsu", -1, 1), Among(u"tu", -1, 1), Among(u"tatu", 282, 4), Among(u"mentu", 282, 1), Among(u"estu", 282, 1), Among(u"txu", -1, 1), Among(u"zu", -1, 1), Among(u"tzu", 287, 1), Among(u"gintzu", 288, 1), Among(u"z", -1, 1), Among(u"ez", 290, 1), Among(u"eroz", 290, 1), Among(u"tz", 290, 1), Among(u"koitz", 293, 1) ] a_2 = [ Among(u"zlea", -1, 2), Among(u"keria", -1, 1), Among(u"la", -1, 1), Among(u"era", -1, 1), Among(u"dade", -1, 1), Among(u"tade", -1, 1), Among(u"date", -1, 1), Among(u"tate", -1, 1), Among(u"gi", -1, 1), Among(u"ki", -1, 1), Among(u"ik", -1, 1), Among(u"lanik", 10, 1), Among(u"rik", 10, 1), Among(u"larik", 12, 1), Among(u"ztik", 10, 1), Among(u"go", -1, 1), Among(u"ro", -1, 1), Among(u"ero", 16, 1), Among(u"to", -1, 1) ] g_v = [17, 65, 16] I_p2 = 0 I_p1 = 0 I_pV = 0 def __r_mark_regions(self): # (, line 23 self.I_pV = self.limit self.I_p1 = self.limit self.I_p2 = self.limit # do, line 29 v_1 = self.cursor try: # (, line 29 # or, line 31 try: v_2 = self.cursor try: # (, line 30 if not self.in_grouping(BasqueStemmer.g_v, 97, 117): raise lab2() # or, line 30 try: v_3 = self.cursor try: # (, line 30 if not self.out_grouping(BasqueStemmer.g_v, 97, 117): raise lab4() # gopast grouping v, line 30 if not self.go_out_grouping(BasqueStemmer.g_v, 97, 117): raise lab4() self.cursor += 1 raise lab3() except lab4: pass self.cursor = v_3 # (, line 30 if not self.in_grouping(BasqueStemmer.g_v, 97, 117): raise lab2() # gopast non v, line 30 if not self.go_in_grouping(BasqueStemmer.g_v, 97, 117): raise lab2() self.cursor += 1 except lab3: pass raise lab1() except lab2: pass self.cursor = v_2 # (, line 32 if not self.out_grouping(BasqueStemmer.g_v, 97, 117): raise lab0() # or, line 32 try: v_4 = self.cursor try: # (, line 32 if not self.out_grouping(BasqueStemmer.g_v, 97, 117): raise lab6() # gopast grouping v, line 32 if not self.go_out_grouping(BasqueStemmer.g_v, 97, 117): raise lab6() self.cursor += 1 raise lab5() except lab6: pass self.cursor = v_4 # (, line 32 if not self.in_grouping(BasqueStemmer.g_v, 97, 117): raise lab0() # next, line 32 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab5: pass except lab1: pass # setmark pV, line 33 self.I_pV = self.cursor except lab0: pass self.cursor = v_1 # do, line 35 v_5 = self.cursor try: # (, line 35 # gopast grouping v, line 36 if not self.go_out_grouping(BasqueStemmer.g_v, 97, 117): raise lab7() self.cursor += 1 # gopast non v, line 36 if not self.go_in_grouping(BasqueStemmer.g_v, 97, 117): raise lab7() self.cursor += 1 # setmark p1, line 36 self.I_p1 = self.cursor # gopast grouping v, line 37 if not self.go_out_grouping(BasqueStemmer.g_v, 97, 117): raise lab7() self.cursor += 1 # gopast non v, line 37 if not self.go_in_grouping(BasqueStemmer.g_v, 97, 117): raise lab7() self.cursor += 1 # setmark p2, line 37 self.I_p2 = self.cursor except lab7: pass self.cursor = v_5 return True def __r_RV(self): if not self.I_pV <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_aditzak(self): # (, line 47 # [, line 48 self.ket = self.cursor # substring, line 48 among_var = self.find_among_b(BasqueStemmer.a_0) if among_var == 0: return False # ], line 48 self.bra = self.cursor if among_var == 1: # (, line 59 # call RV, line 59 if not self.__r_RV(): return False # delete, line 59 if not self.slice_del(): return False elif among_var == 2: # (, line 61 # call R2, line 61 if not self.__r_R2(): return False # delete, line 61 if not self.slice_del(): return False elif among_var == 3: # (, line 63 # <-, line 63 if not self.slice_from(u"atseden"): return False elif among_var == 4: # (, line 65 # <-, line 65 if not self.slice_from(u"arabera"): return False elif among_var == 5: # (, line 67 # <-, line 67 if not self.slice_from(u"baditu"): return False return True def __r_izenak(self): # (, line 72 # [, line 73 self.ket = self.cursor # substring, line 73 among_var = self.find_among_b(BasqueStemmer.a_1) if among_var == 0: return False # ], line 73 self.bra = self.cursor if among_var == 1: # (, line 103 # call RV, line 103 if not self.__r_RV(): return False # delete, line 103 if not self.slice_del(): return False elif among_var == 2: # (, line 105 # call R2, line 105 if not self.__r_R2(): return False # delete, line 105 if not self.slice_del(): return False elif among_var == 3: # (, line 107 # <-, line 107 if not self.slice_from(u"jok"): return False elif among_var == 4: # (, line 109 # call R1, line 109 if not self.__r_R1(): return False # delete, line 109 if not self.slice_del(): return False elif among_var == 5: # (, line 111 # <-, line 111 if not self.slice_from(u"tra"): return False elif among_var == 6: # (, line 113 # <-, line 113 if not self.slice_from(u"minutu"): return False elif among_var == 7: # (, line 115 # <-, line 115 if not self.slice_from(u"zehar"): return False elif among_var == 8: # (, line 117 # <-, line 117 if not self.slice_from(u"geldi"): return False elif among_var == 9: # (, line 119 # <-, line 119 if not self.slice_from(u"igaro"): return False elif among_var == 10: # (, line 121 # <-, line 121 if not self.slice_from(u"aurka"): return False return True def __r_adjetiboak(self): # (, line 125 # [, line 126 self.ket = self.cursor # substring, line 126 among_var = self.find_among_b(BasqueStemmer.a_2) if among_var == 0: return False # ], line 126 self.bra = self.cursor if among_var == 1: # (, line 129 # call RV, line 129 if not self.__r_RV(): return False # delete, line 129 if not self.slice_del(): return False elif among_var == 2: # (, line 131 # <-, line 131 if not self.slice_from(u"z"): return False return True def _stem(self): # (, line 137 # do, line 138 # call mark_regions, line 138 self.__r_mark_regions() # backwards, line 139 self.limit_backward = self.cursor self.cursor = self.limit # (, line 139 # repeat, line 140 while True: v_2 = self.limit - self.cursor try: # call aditzak, line 140 if not self.__r_aditzak(): raise lab0() continue except lab0: pass self.cursor = self.limit - v_2 break # repeat, line 141 while True: v_3 = self.limit - self.cursor try: # call izenak, line 141 if not self.__r_izenak(): raise lab1() continue except lab1: pass self.cursor = self.limit - v_3 break # do, line 142 v_4 = self.limit - self.cursor # call adjetiboak, line 142 self.__r_adjetiboak() self.cursor = self.limit - v_4 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/catalan_stemmer.py0000644000175000017500000006521113545325430025320 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class CatalanStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 7), Among(u"\u00B7", 0, 6), Among(u"\u00E0", 0, 1), Among(u"\u00E1", 0, 1), Among(u"\u00E8", 0, 2), Among(u"\u00E9", 0, 2), Among(u"\u00EC", 0, 3), Among(u"\u00ED", 0, 3), Among(u"\u00EF", 0, 3), Among(u"\u00F2", 0, 4), Among(u"\u00F3", 0, 4), Among(u"\u00FA", 0, 5), Among(u"\u00FC", 0, 5) ] a_1 = [ Among(u"la", -1, 1), Among(u"-la", 0, 1), Among(u"sela", 0, 1), Among(u"le", -1, 1), Among(u"me", -1, 1), Among(u"-me", 4, 1), Among(u"se", -1, 1), Among(u"-te", -1, 1), Among(u"hi", -1, 1), Among(u"'hi", 8, 1), Among(u"li", -1, 1), Among(u"-li", 10, 1), Among(u"'l", -1, 1), Among(u"'m", -1, 1), Among(u"-m", -1, 1), Among(u"'n", -1, 1), Among(u"-n", -1, 1), Among(u"ho", -1, 1), Among(u"'ho", 17, 1), Among(u"lo", -1, 1), Among(u"selo", 19, 1), Among(u"'s", -1, 1), Among(u"las", -1, 1), Among(u"selas", 22, 1), Among(u"les", -1, 1), Among(u"-les", 24, 1), Among(u"'ls", -1, 1), Among(u"-ls", -1, 1), Among(u"'ns", -1, 1), Among(u"-ns", -1, 1), Among(u"ens", -1, 1), Among(u"los", -1, 1), Among(u"selos", 31, 1), Among(u"nos", -1, 1), Among(u"-nos", 33, 1), Among(u"vos", -1, 1), Among(u"us", -1, 1), Among(u"-us", 36, 1), Among(u"'t", -1, 1) ] a_2 = [ Among(u"ica", -1, 4), Among(u"l\u00F3gica", 0, 3), Among(u"enca", -1, 1), Among(u"ada", -1, 2), Among(u"ancia", -1, 1), Among(u"encia", -1, 1), Among(u"\u00E8ncia", -1, 1), Among(u"\u00EDcia", -1, 1), Among(u"logia", -1, 3), Among(u"inia", -1, 1), Among(u"\u00EDinia", 9, 1), Among(u"eria", -1, 1), Among(u"\u00E0ria", -1, 1), Among(u"at\u00F2ria", -1, 1), Among(u"alla", -1, 1), Among(u"ella", -1, 1), Among(u"\u00EDvola", -1, 1), Among(u"ima", -1, 1), Among(u"\u00EDssima", 17, 1), Among(u"qu\u00EDssima", 18, 5), Among(u"ana", -1, 1), Among(u"ina", -1, 1), Among(u"era", -1, 1), Among(u"sfera", 22, 1), Among(u"ora", -1, 1), Among(u"dora", 24, 1), Among(u"adora", 25, 1), Among(u"adura", -1, 1), Among(u"esa", -1, 1), Among(u"osa", -1, 1), Among(u"assa", -1, 1), Among(u"essa", -1, 1), Among(u"issa", -1, 1), Among(u"eta", -1, 1), Among(u"ita", -1, 1), Among(u"ota", -1, 1), Among(u"ista", -1, 1), Among(u"ialista", 36, 1), Among(u"ionista", 36, 1), Among(u"iva", -1, 1), Among(u"ativa", 39, 1), Among(u"n\u00E7a", -1, 1), Among(u"log\u00EDa", -1, 3), Among(u"ic", -1, 4), Among(u"\u00EDstic", 43, 1), Among(u"enc", -1, 1), Among(u"esc", -1, 1), Among(u"ud", -1, 1), Among(u"atge", -1, 1), Among(u"ble", -1, 1), Among(u"able", 49, 1), Among(u"ible", 49, 1), Among(u"isme", -1, 1), Among(u"ialisme", 52, 1), Among(u"ionisme", 52, 1), Among(u"ivisme", 52, 1), Among(u"aire", -1, 1), Among(u"icte", -1, 1), Among(u"iste", -1, 1), Among(u"ici", -1, 1), Among(u"\u00EDci", -1, 1), Among(u"logi", -1, 3), Among(u"ari", -1, 1), Among(u"tori", -1, 1), Among(u"al", -1, 1), Among(u"il", -1, 1), Among(u"all", -1, 1), Among(u"ell", -1, 1), Among(u"\u00EDvol", -1, 1), Among(u"isam", -1, 1), Among(u"issem", -1, 1), Among(u"\u00ECssem", -1, 1), Among(u"\u00EDssem", -1, 1), Among(u"\u00EDssim", -1, 1), Among(u"qu\u00EDssim", 73, 5), Among(u"amen", -1, 1), Among(u"\u00ECssin", -1, 1), Among(u"ar", -1, 1), Among(u"ificar", 77, 1), Among(u"egar", 77, 1), Among(u"ejar", 77, 1), Among(u"itar", 77, 1), Among(u"itzar", 77, 1), Among(u"fer", -1, 1), Among(u"or", -1, 1), Among(u"dor", 84, 1), Among(u"dur", -1, 1), Among(u"doras", -1, 1), Among(u"ics", -1, 4), Among(u"l\u00F3gics", 88, 3), Among(u"uds", -1, 1), Among(u"nces", -1, 1), Among(u"ades", -1, 2), Among(u"ancies", -1, 1), Among(u"encies", -1, 1), Among(u"\u00E8ncies", -1, 1), Among(u"\u00EDcies", -1, 1), Among(u"logies", -1, 3), Among(u"inies", -1, 1), Among(u"\u00EDnies", -1, 1), Among(u"eries", -1, 1), Among(u"\u00E0ries", -1, 1), Among(u"at\u00F2ries", -1, 1), Among(u"bles", -1, 1), Among(u"ables", 103, 1), Among(u"ibles", 103, 1), Among(u"imes", -1, 1), Among(u"\u00EDssimes", 106, 1), Among(u"qu\u00EDssimes", 107, 5), Among(u"formes", -1, 1), Among(u"ismes", -1, 1), Among(u"ialismes", 110, 1), Among(u"ines", -1, 1), Among(u"eres", -1, 1), Among(u"ores", -1, 1), Among(u"dores", 114, 1), Among(u"idores", 115, 1), Among(u"dures", -1, 1), Among(u"eses", -1, 1), Among(u"oses", -1, 1), Among(u"asses", -1, 1), Among(u"ictes", -1, 1), Among(u"ites", -1, 1), Among(u"otes", -1, 1), Among(u"istes", -1, 1), Among(u"ialistes", 124, 1), Among(u"ionistes", 124, 1), Among(u"iques", -1, 4), Among(u"l\u00F3giques", 127, 3), Among(u"ives", -1, 1), Among(u"atives", 129, 1), Among(u"log\u00EDes", -1, 3), Among(u"alleng\u00FCes", -1, 1), Among(u"icis", -1, 1), Among(u"\u00EDcis", -1, 1), Among(u"logis", -1, 3), Among(u"aris", -1, 1), Among(u"toris", -1, 1), Among(u"ls", -1, 1), Among(u"als", 138, 1), Among(u"ells", 138, 1), Among(u"ims", -1, 1), Among(u"\u00EDssims", 141, 1), Among(u"qu\u00EDssims", 142, 5), Among(u"ions", -1, 1), Among(u"cions", 144, 1), Among(u"acions", 145, 2), Among(u"esos", -1, 1), Among(u"osos", -1, 1), Among(u"assos", -1, 1), Among(u"issos", -1, 1), Among(u"ers", -1, 1), Among(u"ors", -1, 1), Among(u"dors", 152, 1), Among(u"adors", 153, 1), Among(u"idors", 153, 1), Among(u"ats", -1, 1), Among(u"itats", 156, 1), Among(u"bilitats", 157, 1), Among(u"ivitats", 157, 1), Among(u"ativitats", 159, 1), Among(u"\u00EFtats", 156, 1), Among(u"ets", -1, 1), Among(u"ants", -1, 1), Among(u"ents", -1, 1), Among(u"ments", 164, 1), Among(u"aments", 165, 1), Among(u"ots", -1, 1), Among(u"uts", -1, 1), Among(u"ius", -1, 1), Among(u"trius", 169, 1), Among(u"atius", 169, 1), Among(u"\u00E8s", -1, 1), Among(u"\u00E9s", -1, 1), Among(u"\u00EDs", -1, 1), Among(u"d\u00EDs", 174, 1), Among(u"\u00F3s", -1, 1), Among(u"itat", -1, 1), Among(u"bilitat", 177, 1), Among(u"ivitat", 177, 1), Among(u"ativitat", 179, 1), Among(u"\u00EFtat", -1, 1), Among(u"et", -1, 1), Among(u"ant", -1, 1), Among(u"ent", -1, 1), Among(u"ient", 184, 1), Among(u"ment", 184, 1), Among(u"ament", 186, 1), Among(u"isament", 187, 1), Among(u"ot", -1, 1), Among(u"isseu", -1, 1), Among(u"\u00ECsseu", -1, 1), Among(u"\u00EDsseu", -1, 1), Among(u"triu", -1, 1), Among(u"\u00EDssiu", -1, 1), Among(u"atiu", -1, 1), Among(u"\u00F3", -1, 1), Among(u"i\u00F3", 196, 1), Among(u"ci\u00F3", 197, 1), Among(u"aci\u00F3", 198, 1) ] a_3 = [ Among(u"aba", -1, 1), Among(u"esca", -1, 1), Among(u"isca", -1, 1), Among(u"\u00EFsca", -1, 1), Among(u"ada", -1, 1), Among(u"ida", -1, 1), Among(u"uda", -1, 1), Among(u"\u00EFda", -1, 1), Among(u"ia", -1, 1), Among(u"aria", 8, 1), Among(u"iria", 8, 1), Among(u"ara", -1, 1), Among(u"iera", -1, 1), Among(u"ira", -1, 1), Among(u"adora", -1, 1), Among(u"\u00EFra", -1, 1), Among(u"ava", -1, 1), Among(u"ixa", -1, 1), Among(u"itza", -1, 1), Among(u"\u00EDa", -1, 1), Among(u"ar\u00EDa", 19, 1), Among(u"er\u00EDa", 19, 1), Among(u"ir\u00EDa", 19, 1), Among(u"\u00EFa", -1, 1), Among(u"isc", -1, 1), Among(u"\u00EFsc", -1, 1), Among(u"ad", -1, 1), Among(u"ed", -1, 1), Among(u"id", -1, 1), Among(u"ie", -1, 1), Among(u"re", -1, 1), Among(u"dre", 30, 1), Among(u"ase", -1, 1), Among(u"iese", -1, 1), Among(u"aste", -1, 1), Among(u"iste", -1, 1), Among(u"ii", -1, 1), Among(u"ini", -1, 1), Among(u"esqui", -1, 1), Among(u"eixi", -1, 1), Among(u"itzi", -1, 1), Among(u"am", -1, 1), Among(u"em", -1, 1), Among(u"arem", 42, 1), Among(u"irem", 42, 1), Among(u"\u00E0rem", 42, 1), Among(u"\u00EDrem", 42, 1), Among(u"\u00E0ssem", 42, 1), Among(u"\u00E9ssem", 42, 1), Among(u"iguem", 42, 1), Among(u"\u00EFguem", 42, 1), Among(u"avem", 42, 1), Among(u"\u00E0vem", 42, 1), Among(u"\u00E1vem", 42, 1), Among(u"ir\u00ECem", 42, 1), Among(u"\u00EDem", 42, 1), Among(u"ar\u00EDem", 55, 1), Among(u"ir\u00EDem", 55, 1), Among(u"assim", -1, 1), Among(u"essim", -1, 1), Among(u"issim", -1, 1), Among(u"\u00E0ssim", -1, 1), Among(u"\u00E8ssim", -1, 1), Among(u"\u00E9ssim", -1, 1), Among(u"\u00EDssim", -1, 1), Among(u"\u00EFm", -1, 1), Among(u"an", -1, 1), Among(u"aban", 66, 1), Among(u"arian", 66, 1), Among(u"aran", 66, 1), Among(u"ieran", 66, 1), Among(u"iran", 66, 1), Among(u"\u00EDan", 66, 1), Among(u"ar\u00EDan", 72, 1), Among(u"er\u00EDan", 72, 1), Among(u"ir\u00EDan", 72, 1), Among(u"en", -1, 1), Among(u"ien", 76, 1), Among(u"arien", 77, 1), Among(u"irien", 77, 1), Among(u"aren", 76, 1), Among(u"eren", 76, 1), Among(u"iren", 76, 1), Among(u"\u00E0ren", 76, 1), Among(u"\u00EFren", 76, 1), Among(u"asen", 76, 1), Among(u"iesen", 76, 1), Among(u"assen", 76, 1), Among(u"essen", 76, 1), Among(u"issen", 76, 1), Among(u"\u00E9ssen", 76, 1), Among(u"\u00EFssen", 76, 1), Among(u"esquen", 76, 1), Among(u"isquen", 76, 1), Among(u"\u00EFsquen", 76, 1), Among(u"aven", 76, 1), Among(u"ixen", 76, 1), Among(u"eixen", 96, 1), Among(u"\u00EFxen", 76, 1), Among(u"\u00EFen", 76, 1), Among(u"in", -1, 1), Among(u"inin", 100, 1), Among(u"sin", 100, 1), Among(u"isin", 102, 1), Among(u"assin", 102, 1), Among(u"essin", 102, 1), Among(u"issin", 102, 1), Among(u"\u00EFssin", 102, 1), Among(u"esquin", 100, 1), Among(u"eixin", 100, 1), Among(u"aron", -1, 1), Among(u"ieron", -1, 1), Among(u"ar\u00E1n", -1, 1), Among(u"er\u00E1n", -1, 1), Among(u"ir\u00E1n", -1, 1), Among(u"i\u00EFn", -1, 1), Among(u"ado", -1, 1), Among(u"ido", -1, 1), Among(u"ando", -1, 2), Among(u"iendo", -1, 1), Among(u"io", -1, 1), Among(u"ixo", -1, 1), Among(u"eixo", 121, 1), Among(u"\u00EFxo", -1, 1), Among(u"itzo", -1, 1), Among(u"ar", -1, 1), Among(u"tzar", 125, 1), Among(u"er", -1, 1), Among(u"eixer", 127, 1), Among(u"ir", -1, 1), Among(u"ador", -1, 1), Among(u"as", -1, 1), Among(u"abas", 131, 1), Among(u"adas", 131, 1), Among(u"idas", 131, 1), Among(u"aras", 131, 1), Among(u"ieras", 131, 1), Among(u"\u00EDas", 131, 1), Among(u"ar\u00EDas", 137, 1), Among(u"er\u00EDas", 137, 1), Among(u"ir\u00EDas", 137, 1), Among(u"ids", -1, 1), Among(u"es", -1, 1), Among(u"ades", 142, 1), Among(u"ides", 142, 1), Among(u"udes", 142, 1), Among(u"\u00EFdes", 142, 1), Among(u"atges", 142, 1), Among(u"ies", 142, 1), Among(u"aries", 148, 1), Among(u"iries", 148, 1), Among(u"ares", 142, 1), Among(u"ires", 142, 1), Among(u"adores", 142, 1), Among(u"\u00EFres", 142, 1), Among(u"ases", 142, 1), Among(u"ieses", 142, 1), Among(u"asses", 142, 1), Among(u"esses", 142, 1), Among(u"isses", 142, 1), Among(u"\u00EFsses", 142, 1), Among(u"ques", 142, 1), Among(u"esques", 161, 1), Among(u"\u00EFsques", 161, 1), Among(u"aves", 142, 1), Among(u"ixes", 142, 1), Among(u"eixes", 165, 1), Among(u"\u00EFxes", 142, 1), Among(u"\u00EFes", 142, 1), Among(u"abais", -1, 1), Among(u"arais", -1, 1), Among(u"ierais", -1, 1), Among(u"\u00EDais", -1, 1), Among(u"ar\u00EDais", 172, 1), Among(u"er\u00EDais", 172, 1), Among(u"ir\u00EDais", 172, 1), Among(u"aseis", -1, 1), Among(u"ieseis", -1, 1), Among(u"asteis", -1, 1), Among(u"isteis", -1, 1), Among(u"inis", -1, 1), Among(u"sis", -1, 1), Among(u"isis", 181, 1), Among(u"assis", 181, 1), Among(u"essis", 181, 1), Among(u"issis", 181, 1), Among(u"\u00EFssis", 181, 1), Among(u"esquis", -1, 1), Among(u"eixis", -1, 1), Among(u"itzis", -1, 1), Among(u"\u00E1is", -1, 1), Among(u"ar\u00E9is", -1, 1), Among(u"er\u00E9is", -1, 1), Among(u"ir\u00E9is", -1, 1), Among(u"ams", -1, 1), Among(u"ados", -1, 1), Among(u"idos", -1, 1), Among(u"amos", -1, 1), Among(u"\u00E1bamos", 197, 1), Among(u"\u00E1ramos", 197, 1), Among(u"i\u00E9ramos", 197, 1), Among(u"\u00EDamos", 197, 1), Among(u"ar\u00EDamos", 201, 1), Among(u"er\u00EDamos", 201, 1), Among(u"ir\u00EDamos", 201, 1), Among(u"aremos", -1, 1), Among(u"eremos", -1, 1), Among(u"iremos", -1, 1), Among(u"\u00E1semos", -1, 1), Among(u"i\u00E9semos", -1, 1), Among(u"imos", -1, 1), Among(u"adors", -1, 1), Among(u"ass", -1, 1), Among(u"erass", 212, 1), Among(u"ess", -1, 1), Among(u"ats", -1, 1), Among(u"its", -1, 1), Among(u"ents", -1, 1), Among(u"\u00E0s", -1, 1), Among(u"ar\u00E0s", 218, 1), Among(u"ir\u00E0s", 218, 1), Among(u"ar\u00E1s", -1, 1), Among(u"er\u00E1s", -1, 1), Among(u"ir\u00E1s", -1, 1), Among(u"\u00E9s", -1, 1), Among(u"ar\u00E9s", 224, 1), Among(u"\u00EDs", -1, 1), Among(u"i\u00EFs", -1, 1), Among(u"at", -1, 1), Among(u"it", -1, 1), Among(u"ant", -1, 1), Among(u"ent", -1, 1), Among(u"int", -1, 1), Among(u"ut", -1, 1), Among(u"\u00EFt", -1, 1), Among(u"au", -1, 1), Among(u"erau", 235, 1), Among(u"ieu", -1, 1), Among(u"ineu", -1, 1), Among(u"areu", -1, 1), Among(u"ireu", -1, 1), Among(u"\u00E0reu", -1, 1), Among(u"\u00EDreu", -1, 1), Among(u"asseu", -1, 1), Among(u"esseu", -1, 1), Among(u"eresseu", 244, 1), Among(u"\u00E0sseu", -1, 1), Among(u"\u00E9sseu", -1, 1), Among(u"igueu", -1, 1), Among(u"\u00EFgueu", -1, 1), Among(u"\u00E0veu", -1, 1), Among(u"\u00E1veu", -1, 1), Among(u"itzeu", -1, 1), Among(u"\u00ECeu", -1, 1), Among(u"ir\u00ECeu", 253, 1), Among(u"\u00EDeu", -1, 1), Among(u"ar\u00EDeu", 255, 1), Among(u"ir\u00EDeu", 255, 1), Among(u"assiu", -1, 1), Among(u"issiu", -1, 1), Among(u"\u00E0ssiu", -1, 1), Among(u"\u00E8ssiu", -1, 1), Among(u"\u00E9ssiu", -1, 1), Among(u"\u00EDssiu", -1, 1), Among(u"\u00EFu", -1, 1), Among(u"ix", -1, 1), Among(u"eix", 265, 1), Among(u"\u00EFx", -1, 1), Among(u"itz", -1, 1), Among(u"i\u00E0", -1, 1), Among(u"ar\u00E0", -1, 1), Among(u"ir\u00E0", -1, 1), Among(u"itz\u00E0", -1, 1), Among(u"ar\u00E1", -1, 1), Among(u"er\u00E1", -1, 1), Among(u"ir\u00E1", -1, 1), Among(u"ir\u00E8", -1, 1), Among(u"ar\u00E9", -1, 1), Among(u"er\u00E9", -1, 1), Among(u"ir\u00E9", -1, 1), Among(u"\u00ED", -1, 1), Among(u"i\u00EF", -1, 1), Among(u"i\u00F3", -1, 1) ] a_4 = [ Among(u"a", -1, 1), Among(u"e", -1, 1), Among(u"i", -1, 1), Among(u"\u00EFn", -1, 1), Among(u"o", -1, 1), Among(u"ir", -1, 1), Among(u"s", -1, 1), Among(u"is", 6, 1), Among(u"os", 6, 1), Among(u"\u00EFs", 6, 1), Among(u"it", -1, 1), Among(u"eu", -1, 1), Among(u"iu", -1, 1), Among(u"iqu", -1, 2), Among(u"itz", -1, 1), Among(u"\u00E0", -1, 1), Among(u"\u00E1", -1, 1), Among(u"\u00E9", -1, 1), Among(u"\u00EC", -1, 1), Among(u"\u00ED", -1, 1), Among(u"\u00EF", -1, 1), Among(u"\u00F3", -1, 1) ] g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, 81, 6, 10] I_p2 = 0 I_p1 = 0 def __r_mark_regions(self): # (, line 36 self.I_p1 = self.limit self.I_p2 = self.limit # do, line 41 v_1 = self.cursor try: # (, line 41 # gopast grouping v, line 42 if not self.go_out_grouping(CatalanStemmer.g_v, 97, 252): raise lab0() self.cursor += 1 # gopast non v, line 42 if not self.go_in_grouping(CatalanStemmer.g_v, 97, 252): raise lab0() self.cursor += 1 # setmark p1, line 42 self.I_p1 = self.cursor # gopast grouping v, line 43 if not self.go_out_grouping(CatalanStemmer.g_v, 97, 252): raise lab0() self.cursor += 1 # gopast non v, line 43 if not self.go_in_grouping(CatalanStemmer.g_v, 97, 252): raise lab0() self.cursor += 1 # setmark p2, line 43 self.I_p2 = self.cursor except lab0: pass self.cursor = v_1 return True def __r_cleaning(self): # repeat, line 47 while True: v_1 = self.cursor try: # (, line 47 # [, line 48 self.bra = self.cursor # substring, line 48 among_var = self.find_among(CatalanStemmer.a_0) if among_var == 0: raise lab0() # ], line 48 self.ket = self.cursor if among_var == 1: # (, line 49 # <-, line 49 if not self.slice_from(u"a"): return False elif among_var == 2: # (, line 51 # <-, line 51 if not self.slice_from(u"e"): return False elif among_var == 3: # (, line 53 # <-, line 53 if not self.slice_from(u"i"): return False elif among_var == 4: # (, line 55 # <-, line 55 if not self.slice_from(u"o"): return False elif among_var == 5: # (, line 57 # <-, line 57 if not self.slice_from(u"u"): return False elif among_var == 6: # (, line 60 # <-, line 60 if not self.slice_from(u"."): return False elif among_var == 7: # (, line 61 # next, line 61 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_attached_pronoun(self): # (, line 70 # [, line 71 self.ket = self.cursor # substring, line 71 if self.find_among_b(CatalanStemmer.a_1) == 0: return False # ], line 71 self.bra = self.cursor # (, line 81 # call R1, line 81 if not self.__r_R1(): return False # delete, line 81 if not self.slice_del(): return False return True def __r_standard_suffix(self): # (, line 85 # [, line 86 self.ket = self.cursor # substring, line 86 among_var = self.find_among_b(CatalanStemmer.a_2) if among_var == 0: return False # ], line 86 self.bra = self.cursor if among_var == 1: # (, line 110 # call R1, line 110 if not self.__r_R1(): return False # delete, line 110 if not self.slice_del(): return False elif among_var == 2: # (, line 112 # call R2, line 112 if not self.__r_R2(): return False # delete, line 112 if not self.slice_del(): return False elif among_var == 3: # (, line 114 # call R2, line 114 if not self.__r_R2(): return False # <-, line 114 if not self.slice_from(u"log"): return False elif among_var == 4: # (, line 116 # call R2, line 116 if not self.__r_R2(): return False # <-, line 116 if not self.slice_from(u"ic"): return False elif among_var == 5: # (, line 118 # call R1, line 118 if not self.__r_R1(): return False # <-, line 118 if not self.slice_from(u"c"): return False return True def __r_verb_suffix(self): # (, line 122 # [, line 123 self.ket = self.cursor # substring, line 123 among_var = self.find_among_b(CatalanStemmer.a_3) if among_var == 0: return False # ], line 123 self.bra = self.cursor if among_var == 1: # (, line 168 # call R1, line 168 if not self.__r_R1(): return False # delete, line 168 if not self.slice_del(): return False elif among_var == 2: # (, line 170 # call R2, line 170 if not self.__r_R2(): return False # delete, line 170 if not self.slice_del(): return False return True def __r_residual_suffix(self): # (, line 174 # [, line 175 self.ket = self.cursor # substring, line 175 among_var = self.find_among_b(CatalanStemmer.a_4) if among_var == 0: return False # ], line 175 self.bra = self.cursor if among_var == 1: # (, line 178 # call R1, line 178 if not self.__r_R1(): return False # delete, line 178 if not self.slice_del(): return False elif among_var == 2: # (, line 180 # call R1, line 180 if not self.__r_R1(): return False # <-, line 180 if not self.slice_from(u"ic"): return False return True def _stem(self): # (, line 185 # do, line 186 # call mark_regions, line 186 self.__r_mark_regions() # backwards, line 187 self.limit_backward = self.cursor self.cursor = self.limit # (, line 187 # do, line 188 v_2 = self.limit - self.cursor # call attached_pronoun, line 188 self.__r_attached_pronoun() self.cursor = self.limit - v_2 # do, line 189 v_3 = self.limit - self.cursor try: # (, line 189 # or, line 189 try: v_4 = self.limit - self.cursor try: # call standard_suffix, line 189 if not self.__r_standard_suffix(): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_4 # call verb_suffix, line 190 if not self.__r_verb_suffix(): raise lab0() except lab1: pass except lab0: pass self.cursor = self.limit - v_3 # do, line 192 v_5 = self.limit - self.cursor # call residual_suffix, line 192 self.__r_residual_suffix() self.cursor = self.limit - v_5 self.cursor = self.limit_backward # do, line 194 v_6 = self.cursor # call cleaning, line 194 self.__r_cleaning() self.cursor = v_6 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/danish_stemmer.py0000644000175000017500000002000513545325430025153 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class DanishStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"hed", -1, 1), Among(u"ethed", 0, 1), Among(u"ered", -1, 1), Among(u"e", -1, 1), Among(u"erede", 3, 1), Among(u"ende", 3, 1), Among(u"erende", 5, 1), Among(u"ene", 3, 1), Among(u"erne", 3, 1), Among(u"ere", 3, 1), Among(u"en", -1, 1), Among(u"heden", 10, 1), Among(u"eren", 10, 1), Among(u"er", -1, 1), Among(u"heder", 13, 1), Among(u"erer", 13, 1), Among(u"s", -1, 2), Among(u"heds", 16, 1), Among(u"es", 16, 1), Among(u"endes", 18, 1), Among(u"erendes", 19, 1), Among(u"enes", 18, 1), Among(u"ernes", 18, 1), Among(u"eres", 18, 1), Among(u"ens", 16, 1), Among(u"hedens", 24, 1), Among(u"erens", 24, 1), Among(u"ers", 16, 1), Among(u"ets", 16, 1), Among(u"erets", 28, 1), Among(u"et", -1, 1), Among(u"eret", 30, 1) ] a_1 = [ Among(u"gd", -1, -1), Among(u"dt", -1, -1), Among(u"gt", -1, -1), Among(u"kt", -1, -1) ] a_2 = [ Among(u"ig", -1, 1), Among(u"lig", 0, 1), Among(u"elig", 1, 1), Among(u"els", -1, 1), Among(u"l\u00F8st", -1, 2) ] g_c = [119, 223, 119, 1] g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128] g_s_ending = [239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16] I_x = 0 I_p1 = 0 S_ch = "" def __r_mark_regions(self): # (, line 31 self.I_p1 = self.limit # test, line 35 v_1 = self.cursor # (, line 35 # hop, line 35 c = self.cursor + 3 if 0 > c or c > self.limit: return False self.cursor = c # setmark x, line 35 self.I_x = self.cursor self.cursor = v_1 # goto grouping v, line 36 if not self.go_out_grouping(DanishStemmer.g_v, 97, 248): return False # gopast non v, line 36 if not self.go_in_grouping(DanishStemmer.g_v, 97, 248): return False self.cursor += 1 # setmark p1, line 36 self.I_p1 = self.cursor # try, line 37 try: # (, line 37 if not self.I_p1 < self.I_x: raise lab0() self.I_p1 = self.I_x except lab0: pass return True def __r_main_suffix(self): # (, line 42 # setlimit, line 43 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 43 # [, line 43 self.ket = self.cursor # substring, line 43 among_var = self.find_among_b(DanishStemmer.a_0) if among_var == 0: self.limit_backward = v_2 return False # ], line 43 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 50 # delete, line 50 if not self.slice_del(): return False elif among_var == 2: # (, line 52 if not self.in_grouping_b(DanishStemmer.g_s_ending, 97, 229): return False # delete, line 52 if not self.slice_del(): return False return True def __r_consonant_pair(self): # (, line 56 # test, line 57 v_1 = self.limit - self.cursor # (, line 57 # setlimit, line 58 if self.cursor < self.I_p1: return False v_3 = self.limit_backward self.limit_backward = self.I_p1 # (, line 58 # [, line 58 self.ket = self.cursor # substring, line 58 if self.find_among_b(DanishStemmer.a_1) == 0: self.limit_backward = v_3 return False # ], line 58 self.bra = self.cursor self.limit_backward = v_3 self.cursor = self.limit - v_1 # next, line 64 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # ], line 64 self.bra = self.cursor # delete, line 64 if not self.slice_del(): return False return True def __r_other_suffix(self): # (, line 67 # do, line 68 v_1 = self.limit - self.cursor try: # (, line 68 # [, line 68 self.ket = self.cursor # literal, line 68 if not self.eq_s_b(u"st"): raise lab0() # ], line 68 self.bra = self.cursor # literal, line 68 if not self.eq_s_b(u"ig"): raise lab0() # delete, line 68 if not self.slice_del(): return False except lab0: pass self.cursor = self.limit - v_1 # setlimit, line 69 if self.cursor < self.I_p1: return False v_3 = self.limit_backward self.limit_backward = self.I_p1 # (, line 69 # [, line 69 self.ket = self.cursor # substring, line 69 among_var = self.find_among_b(DanishStemmer.a_2) if among_var == 0: self.limit_backward = v_3 return False # ], line 69 self.bra = self.cursor self.limit_backward = v_3 if among_var == 1: # (, line 72 # delete, line 72 if not self.slice_del(): return False # do, line 72 v_4 = self.limit - self.cursor # call consonant_pair, line 72 self.__r_consonant_pair() self.cursor = self.limit - v_4 elif among_var == 2: # (, line 74 # <-, line 74 if not self.slice_from(u"l\u00F8s"): return False return True def __r_undouble(self): # (, line 77 # setlimit, line 78 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 78 # [, line 78 self.ket = self.cursor if not self.in_grouping_b(DanishStemmer.g_c, 98, 122): self.limit_backward = v_2 return False # ], line 78 self.bra = self.cursor # -> ch, line 78 self.S_ch = self.slice_to() if self.S_ch == '': return False self.limit_backward = v_2 # name ch, line 79 if not self.eq_s_b(self.S_ch): return False # delete, line 80 if not self.slice_del(): return False return True def _stem(self): # (, line 84 # do, line 86 v_1 = self.cursor # call mark_regions, line 86 self.__r_mark_regions() self.cursor = v_1 # backwards, line 87 self.limit_backward = self.cursor self.cursor = self.limit # (, line 87 # do, line 88 v_2 = self.limit - self.cursor # call main_suffix, line 88 self.__r_main_suffix() self.cursor = self.limit - v_2 # do, line 89 v_3 = self.limit - self.cursor # call consonant_pair, line 89 self.__r_consonant_pair() self.cursor = self.limit - v_3 # do, line 90 v_4 = self.limit - self.cursor # call other_suffix, line 90 self.__r_other_suffix() self.cursor = self.limit - v_4 # do, line 91 v_5 = self.limit - self.cursor # call undouble, line 91 self.__r_undouble() self.cursor = self.limit - v_5 self.cursor = self.limit_backward return True class lab0(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/dutch_stemmer.py0000644000175000017500000004625413545325430025032 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class DutchStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 6), Among(u"\u00E1", 0, 1), Among(u"\u00E4", 0, 1), Among(u"\u00E9", 0, 2), Among(u"\u00EB", 0, 2), Among(u"\u00ED", 0, 3), Among(u"\u00EF", 0, 3), Among(u"\u00F3", 0, 4), Among(u"\u00F6", 0, 4), Among(u"\u00FA", 0, 5), Among(u"\u00FC", 0, 5) ] a_1 = [ Among(u"", -1, 3), Among(u"I", 0, 2), Among(u"Y", 0, 1) ] a_2 = [ Among(u"dd", -1, -1), Among(u"kk", -1, -1), Among(u"tt", -1, -1) ] a_3 = [ Among(u"ene", -1, 2), Among(u"se", -1, 3), Among(u"en", -1, 2), Among(u"heden", 2, 1), Among(u"s", -1, 3) ] a_4 = [ Among(u"end", -1, 1), Among(u"ig", -1, 2), Among(u"ing", -1, 1), Among(u"lijk", -1, 3), Among(u"baar", -1, 4), Among(u"bar", -1, 5) ] a_5 = [ Among(u"aa", -1, -1), Among(u"ee", -1, -1), Among(u"oo", -1, -1), Among(u"uu", -1, -1) ] g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128] g_v_I = [1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128] g_v_j = [17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128] I_p2 = 0 I_p1 = 0 B_e_found = False def __r_prelude(self): # (, line 41 # test, line 42 v_1 = self.cursor # repeat, line 42 while True: v_2 = self.cursor try: # (, line 42 # [, line 43 self.bra = self.cursor # substring, line 43 among_var = self.find_among(DutchStemmer.a_0) if among_var == 0: raise lab0() # ], line 43 self.ket = self.cursor if among_var == 1: # (, line 45 # <-, line 45 if not self.slice_from(u"a"): return False elif among_var == 2: # (, line 47 # <-, line 47 if not self.slice_from(u"e"): return False elif among_var == 3: # (, line 49 # <-, line 49 if not self.slice_from(u"i"): return False elif among_var == 4: # (, line 51 # <-, line 51 if not self.slice_from(u"o"): return False elif among_var == 5: # (, line 53 # <-, line 53 if not self.slice_from(u"u"): return False elif among_var == 6: # (, line 54 # next, line 54 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_2 break self.cursor = v_1 # try, line 57 v_3 = self.cursor try: # (, line 57 # [, line 57 self.bra = self.cursor # literal, line 57 if not self.eq_s(u"y"): self.cursor = v_3 raise lab1() # ], line 57 self.ket = self.cursor # <-, line 57 if not self.slice_from(u"Y"): return False except lab1: pass # repeat, line 58 while True: v_4 = self.cursor try: # goto, line 58 try: while True: v_5 = self.cursor try: # (, line 58 if not self.in_grouping(DutchStemmer.g_v, 97, 232): raise lab4() # [, line 59 self.bra = self.cursor # or, line 59 try: v_6 = self.cursor try: # (, line 59 # literal, line 59 if not self.eq_s(u"i"): raise lab6() # ], line 59 self.ket = self.cursor if not self.in_grouping(DutchStemmer.g_v, 97, 232): raise lab6() # <-, line 59 if not self.slice_from(u"I"): return False raise lab5() except lab6: pass self.cursor = v_6 # (, line 60 # literal, line 60 if not self.eq_s(u"y"): raise lab4() # ], line 60 self.ket = self.cursor # <-, line 60 if not self.slice_from(u"Y"): return False except lab5: pass self.cursor = v_5 raise lab3() except lab4: pass self.cursor = v_5 if self.cursor >= self.limit: raise lab2() self.cursor += 1 except lab3: pass continue except lab2: pass self.cursor = v_4 break return True def __r_mark_regions(self): # (, line 64 self.I_p1 = self.limit self.I_p2 = self.limit # gopast grouping v, line 69 if not self.go_out_grouping(DutchStemmer.g_v, 97, 232): return False self.cursor += 1 # gopast non v, line 69 if not self.go_in_grouping(DutchStemmer.g_v, 97, 232): return False self.cursor += 1 # setmark p1, line 69 self.I_p1 = self.cursor # try, line 70 try: # (, line 70 if not self.I_p1 < 3: raise lab0() self.I_p1 = 3 except lab0: pass # gopast grouping v, line 71 if not self.go_out_grouping(DutchStemmer.g_v, 97, 232): return False self.cursor += 1 # gopast non v, line 71 if not self.go_in_grouping(DutchStemmer.g_v, 97, 232): return False self.cursor += 1 # setmark p2, line 71 self.I_p2 = self.cursor return True def __r_postlude(self): # repeat, line 75 while True: v_1 = self.cursor try: # (, line 75 # [, line 77 self.bra = self.cursor # substring, line 77 among_var = self.find_among(DutchStemmer.a_1) if among_var == 0: raise lab0() # ], line 77 self.ket = self.cursor if among_var == 1: # (, line 78 # <-, line 78 if not self.slice_from(u"y"): return False elif among_var == 2: # (, line 79 # <-, line 79 if not self.slice_from(u"i"): return False elif among_var == 3: # (, line 80 # next, line 80 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_undouble(self): # (, line 90 # test, line 91 v_1 = self.limit - self.cursor # among, line 91 if self.find_among_b(DutchStemmer.a_2) == 0: return False self.cursor = self.limit - v_1 # [, line 91 self.ket = self.cursor # next, line 91 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # ], line 91 self.bra = self.cursor # delete, line 91 if not self.slice_del(): return False return True def __r_e_ending(self): # (, line 94 # unset e_found, line 95 self.B_e_found = False # [, line 96 self.ket = self.cursor # literal, line 96 if not self.eq_s_b(u"e"): return False # ], line 96 self.bra = self.cursor # call R1, line 96 if not self.__r_R1(): return False # test, line 96 v_1 = self.limit - self.cursor if not self.out_grouping_b(DutchStemmer.g_v, 97, 232): return False self.cursor = self.limit - v_1 # delete, line 96 if not self.slice_del(): return False # set e_found, line 97 self.B_e_found = True # call undouble, line 98 if not self.__r_undouble(): return False return True def __r_en_ending(self): # (, line 101 # call R1, line 102 if not self.__r_R1(): return False # and, line 102 v_1 = self.limit - self.cursor if not self.out_grouping_b(DutchStemmer.g_v, 97, 232): return False self.cursor = self.limit - v_1 # not, line 102 v_2 = self.limit - self.cursor try: # literal, line 102 if not self.eq_s_b(u"gem"): raise lab0() return False except lab0: pass self.cursor = self.limit - v_2 # delete, line 102 if not self.slice_del(): return False # call undouble, line 103 if not self.__r_undouble(): return False return True def __r_standard_suffix(self): # (, line 106 # do, line 107 v_1 = self.limit - self.cursor try: # (, line 107 # [, line 108 self.ket = self.cursor # substring, line 108 among_var = self.find_among_b(DutchStemmer.a_3) if among_var == 0: raise lab0() # ], line 108 self.bra = self.cursor if among_var == 1: # (, line 110 # call R1, line 110 if not self.__r_R1(): raise lab0() # <-, line 110 if not self.slice_from(u"heid"): return False elif among_var == 2: # (, line 113 # call en_ending, line 113 if not self.__r_en_ending(): raise lab0() elif among_var == 3: # (, line 116 # call R1, line 116 if not self.__r_R1(): raise lab0() if not self.out_grouping_b(DutchStemmer.g_v_j, 97, 232): raise lab0() # delete, line 116 if not self.slice_del(): return False except lab0: pass self.cursor = self.limit - v_1 # do, line 120 v_2 = self.limit - self.cursor # call e_ending, line 120 self.__r_e_ending() self.cursor = self.limit - v_2 # do, line 122 v_3 = self.limit - self.cursor try: # (, line 122 # [, line 122 self.ket = self.cursor # literal, line 122 if not self.eq_s_b(u"heid"): raise lab1() # ], line 122 self.bra = self.cursor # call R2, line 122 if not self.__r_R2(): raise lab1() # not, line 122 v_4 = self.limit - self.cursor try: # literal, line 122 if not self.eq_s_b(u"c"): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_4 # delete, line 122 if not self.slice_del(): return False # [, line 123 self.ket = self.cursor # literal, line 123 if not self.eq_s_b(u"en"): raise lab1() # ], line 123 self.bra = self.cursor # call en_ending, line 123 if not self.__r_en_ending(): raise lab1() except lab1: pass self.cursor = self.limit - v_3 # do, line 126 v_5 = self.limit - self.cursor try: # (, line 126 # [, line 127 self.ket = self.cursor # substring, line 127 among_var = self.find_among_b(DutchStemmer.a_4) if among_var == 0: raise lab3() # ], line 127 self.bra = self.cursor if among_var == 1: # (, line 129 # call R2, line 129 if not self.__r_R2(): raise lab3() # delete, line 129 if not self.slice_del(): return False # or, line 130 try: v_6 = self.limit - self.cursor try: # (, line 130 # [, line 130 self.ket = self.cursor # literal, line 130 if not self.eq_s_b(u"ig"): raise lab5() # ], line 130 self.bra = self.cursor # call R2, line 130 if not self.__r_R2(): raise lab5() # not, line 130 v_7 = self.limit - self.cursor try: # literal, line 130 if not self.eq_s_b(u"e"): raise lab6() raise lab5() except lab6: pass self.cursor = self.limit - v_7 # delete, line 130 if not self.slice_del(): return False raise lab4() except lab5: pass self.cursor = self.limit - v_6 # call undouble, line 130 if not self.__r_undouble(): raise lab3() except lab4: pass elif among_var == 2: # (, line 133 # call R2, line 133 if not self.__r_R2(): raise lab3() # not, line 133 v_8 = self.limit - self.cursor try: # literal, line 133 if not self.eq_s_b(u"e"): raise lab7() raise lab3() except lab7: pass self.cursor = self.limit - v_8 # delete, line 133 if not self.slice_del(): return False elif among_var == 3: # (, line 136 # call R2, line 136 if not self.__r_R2(): raise lab3() # delete, line 136 if not self.slice_del(): return False # call e_ending, line 136 if not self.__r_e_ending(): raise lab3() elif among_var == 4: # (, line 139 # call R2, line 139 if not self.__r_R2(): raise lab3() # delete, line 139 if not self.slice_del(): return False elif among_var == 5: # (, line 142 # call R2, line 142 if not self.__r_R2(): raise lab3() # Boolean test e_found, line 142 if not self.B_e_found: raise lab3() # delete, line 142 if not self.slice_del(): return False except lab3: pass self.cursor = self.limit - v_5 # do, line 146 v_9 = self.limit - self.cursor try: # (, line 146 if not self.out_grouping_b(DutchStemmer.g_v_I, 73, 232): raise lab8() # test, line 148 v_10 = self.limit - self.cursor # (, line 148 # among, line 149 if self.find_among_b(DutchStemmer.a_5) == 0: raise lab8() if not self.out_grouping_b(DutchStemmer.g_v, 97, 232): raise lab8() self.cursor = self.limit - v_10 # [, line 152 self.ket = self.cursor # next, line 152 if self.cursor <= self.limit_backward: raise lab8() self.cursor -= 1 # ], line 152 self.bra = self.cursor # delete, line 152 if not self.slice_del(): return False except lab8: pass self.cursor = self.limit - v_9 return True def _stem(self): # (, line 157 # do, line 159 v_1 = self.cursor # call prelude, line 159 self.__r_prelude() self.cursor = v_1 # do, line 160 v_2 = self.cursor # call mark_regions, line 160 self.__r_mark_regions() self.cursor = v_2 # backwards, line 161 self.limit_backward = self.cursor self.cursor = self.limit # do, line 162 # call standard_suffix, line 162 self.__r_standard_suffix() self.cursor = self.limit_backward # do, line 163 v_4 = self.cursor # call postlude, line 163 self.__r_postlude() self.cursor = v_4 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/english_stemmer.py0000644000175000017500000007216113545325430025350 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class EnglishStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"arsen", -1, -1), Among(u"commun", -1, -1), Among(u"gener", -1, -1) ] a_1 = [ Among(u"'", -1, 1), Among(u"'s'", 0, 1), Among(u"'s", -1, 1) ] a_2 = [ Among(u"ied", -1, 2), Among(u"s", -1, 3), Among(u"ies", 1, 2), Among(u"sses", 1, 1), Among(u"ss", 1, -1), Among(u"us", 1, -1) ] a_3 = [ Among(u"", -1, 3), Among(u"bb", 0, 2), Among(u"dd", 0, 2), Among(u"ff", 0, 2), Among(u"gg", 0, 2), Among(u"bl", 0, 1), Among(u"mm", 0, 2), Among(u"nn", 0, 2), Among(u"pp", 0, 2), Among(u"rr", 0, 2), Among(u"at", 0, 1), Among(u"tt", 0, 2), Among(u"iz", 0, 1) ] a_4 = [ Among(u"ed", -1, 2), Among(u"eed", 0, 1), Among(u"ing", -1, 2), Among(u"edly", -1, 2), Among(u"eedly", 3, 1), Among(u"ingly", -1, 2) ] a_5 = [ Among(u"anci", -1, 3), Among(u"enci", -1, 2), Among(u"ogi", -1, 13), Among(u"li", -1, 15), Among(u"bli", 3, 12), Among(u"abli", 4, 4), Among(u"alli", 3, 8), Among(u"fulli", 3, 9), Among(u"lessli", 3, 14), Among(u"ousli", 3, 10), Among(u"entli", 3, 5), Among(u"aliti", -1, 8), Among(u"biliti", -1, 12), Among(u"iviti", -1, 11), Among(u"tional", -1, 1), Among(u"ational", 14, 7), Among(u"alism", -1, 8), Among(u"ation", -1, 7), Among(u"ization", 17, 6), Among(u"izer", -1, 6), Among(u"ator", -1, 7), Among(u"iveness", -1, 11), Among(u"fulness", -1, 9), Among(u"ousness", -1, 10) ] a_6 = [ Among(u"icate", -1, 4), Among(u"ative", -1, 6), Among(u"alize", -1, 3), Among(u"iciti", -1, 4), Among(u"ical", -1, 4), Among(u"tional", -1, 1), Among(u"ational", 5, 2), Among(u"ful", -1, 5), Among(u"ness", -1, 5) ] a_7 = [ Among(u"ic", -1, 1), Among(u"ance", -1, 1), Among(u"ence", -1, 1), Among(u"able", -1, 1), Among(u"ible", -1, 1), Among(u"ate", -1, 1), Among(u"ive", -1, 1), Among(u"ize", -1, 1), Among(u"iti", -1, 1), Among(u"al", -1, 1), Among(u"ism", -1, 1), Among(u"ion", -1, 2), Among(u"er", -1, 1), Among(u"ous", -1, 1), Among(u"ant", -1, 1), Among(u"ent", -1, 1), Among(u"ment", 15, 1), Among(u"ement", 16, 1) ] a_8 = [ Among(u"e", -1, 1), Among(u"l", -1, 2) ] a_9 = [ Among(u"succeed", -1, -1), Among(u"proceed", -1, -1), Among(u"exceed", -1, -1), Among(u"canning", -1, -1), Among(u"inning", -1, -1), Among(u"earring", -1, -1), Among(u"herring", -1, -1), Among(u"outing", -1, -1) ] a_10 = [ Among(u"andes", -1, -1), Among(u"atlas", -1, -1), Among(u"bias", -1, -1), Among(u"cosmos", -1, -1), Among(u"dying", -1, 3), Among(u"early", -1, 9), Among(u"gently", -1, 7), Among(u"howe", -1, -1), Among(u"idly", -1, 6), Among(u"lying", -1, 4), Among(u"news", -1, -1), Among(u"only", -1, 10), Among(u"singly", -1, 11), Among(u"skies", -1, 2), Among(u"skis", -1, 1), Among(u"sky", -1, -1), Among(u"tying", -1, 5), Among(u"ugly", -1, 8) ] g_v = [17, 65, 16, 1] g_v_WXY = [1, 17, 65, 208, 1] g_valid_LI = [55, 141, 2] B_Y_found = False I_p2 = 0 I_p1 = 0 def __r_prelude(self): # (, line 25 # unset Y_found, line 26 self.B_Y_found = False # do, line 27 v_1 = self.cursor try: # (, line 27 # [, line 27 self.bra = self.cursor # literal, line 27 if not self.eq_s(u"'"): raise lab0() # ], line 27 self.ket = self.cursor # delete, line 27 if not self.slice_del(): return False except lab0: pass self.cursor = v_1 # do, line 28 v_2 = self.cursor try: # (, line 28 # [, line 28 self.bra = self.cursor # literal, line 28 if not self.eq_s(u"y"): raise lab1() # ], line 28 self.ket = self.cursor # <-, line 28 if not self.slice_from(u"Y"): return False # set Y_found, line 28 self.B_Y_found = True except lab1: pass self.cursor = v_2 # do, line 29 v_3 = self.cursor try: # repeat, line 29 while True: v_4 = self.cursor try: # (, line 29 # goto, line 29 try: while True: v_5 = self.cursor try: # (, line 29 if not self.in_grouping(EnglishStemmer.g_v, 97, 121): raise lab5() # [, line 29 self.bra = self.cursor # literal, line 29 if not self.eq_s(u"y"): raise lab5() # ], line 29 self.ket = self.cursor self.cursor = v_5 raise lab4() except lab5: pass self.cursor = v_5 if self.cursor >= self.limit: raise lab3() self.cursor += 1 except lab4: pass # <-, line 29 if not self.slice_from(u"Y"): return False # set Y_found, line 29 self.B_Y_found = True continue except lab3: pass self.cursor = v_4 break except lab2: pass self.cursor = v_3 return True def __r_mark_regions(self): # (, line 32 self.I_p1 = self.limit self.I_p2 = self.limit # do, line 35 v_1 = self.cursor try: # (, line 35 # or, line 41 try: v_2 = self.cursor try: # among, line 36 if self.find_among(EnglishStemmer.a_0) == 0: raise lab2() raise lab1() except lab2: pass self.cursor = v_2 # (, line 41 # gopast grouping v, line 41 if not self.go_out_grouping(EnglishStemmer.g_v, 97, 121): raise lab0() self.cursor += 1 # gopast non v, line 41 if not self.go_in_grouping(EnglishStemmer.g_v, 97, 121): raise lab0() self.cursor += 1 except lab1: pass # setmark p1, line 42 self.I_p1 = self.cursor # gopast grouping v, line 43 if not self.go_out_grouping(EnglishStemmer.g_v, 97, 121): raise lab0() self.cursor += 1 # gopast non v, line 43 if not self.go_in_grouping(EnglishStemmer.g_v, 97, 121): raise lab0() self.cursor += 1 # setmark p2, line 43 self.I_p2 = self.cursor except lab0: pass self.cursor = v_1 return True def __r_shortv(self): # (, line 49 # or, line 51 try: v_1 = self.limit - self.cursor try: # (, line 50 if not self.out_grouping_b(EnglishStemmer.g_v_WXY, 89, 121): raise lab1() if not self.in_grouping_b(EnglishStemmer.g_v, 97, 121): raise lab1() if not self.out_grouping_b(EnglishStemmer.g_v, 97, 121): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 52 if not self.out_grouping_b(EnglishStemmer.g_v, 97, 121): return False if not self.in_grouping_b(EnglishStemmer.g_v, 97, 121): return False # atlimit, line 52 if self.cursor > self.limit_backward: return False except lab0: pass return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_Step_1a(self): # (, line 58 # try, line 59 v_1 = self.limit - self.cursor try: # (, line 59 # [, line 60 self.ket = self.cursor # substring, line 60 if self.find_among_b(EnglishStemmer.a_1) == 0: self.cursor = self.limit - v_1 raise lab0() # ], line 60 self.bra = self.cursor # (, line 62 # delete, line 62 if not self.slice_del(): return False except lab0: pass # [, line 65 self.ket = self.cursor # substring, line 65 among_var = self.find_among_b(EnglishStemmer.a_2) if among_var == 0: return False # ], line 65 self.bra = self.cursor if among_var == 1: # (, line 66 # <-, line 66 if not self.slice_from(u"ss"): return False elif among_var == 2: # (, line 68 # or, line 68 try: v_2 = self.limit - self.cursor try: # (, line 68 # hop, line 68 c = self.cursor - 2 if self.limit_backward > c or c > self.limit: raise lab2() self.cursor = c # <-, line 68 if not self.slice_from(u"i"): return False raise lab1() except lab2: pass self.cursor = self.limit - v_2 # <-, line 68 if not self.slice_from(u"ie"): return False except lab1: pass elif among_var == 3: # (, line 69 # next, line 69 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # gopast grouping v, line 69 if not self.go_out_grouping_b(EnglishStemmer.g_v, 97, 121): return False self.cursor -= 1 # delete, line 69 if not self.slice_del(): return False return True def __r_Step_1b(self): # (, line 74 # [, line 75 self.ket = self.cursor # substring, line 75 among_var = self.find_among_b(EnglishStemmer.a_4) if among_var == 0: return False # ], line 75 self.bra = self.cursor if among_var == 1: # (, line 77 # call R1, line 77 if not self.__r_R1(): return False # <-, line 77 if not self.slice_from(u"ee"): return False elif among_var == 2: # (, line 79 # test, line 80 v_1 = self.limit - self.cursor # gopast grouping v, line 80 if not self.go_out_grouping_b(EnglishStemmer.g_v, 97, 121): return False self.cursor -= 1 self.cursor = self.limit - v_1 # delete, line 80 if not self.slice_del(): return False # test, line 81 v_2 = self.limit - self.cursor # substring, line 81 among_var = self.find_among_b(EnglishStemmer.a_3) if among_var == 0: return False self.cursor = self.limit - v_2 if among_var == 1: # (, line 83 # <+, line 83 c = self.cursor self.insert(self.cursor, self.cursor, u"e") self.cursor = c elif among_var == 2: # (, line 86 # [, line 86 self.ket = self.cursor # next, line 86 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # ], line 86 self.bra = self.cursor # delete, line 86 if not self.slice_del(): return False elif among_var == 3: # (, line 87 # atmark, line 87 if self.cursor != self.I_p1: return False # test, line 87 v_3 = self.limit - self.cursor # call shortv, line 87 if not self.__r_shortv(): return False self.cursor = self.limit - v_3 # <+, line 87 c = self.cursor self.insert(self.cursor, self.cursor, u"e") self.cursor = c return True def __r_Step_1c(self): # (, line 93 # [, line 94 self.ket = self.cursor # or, line 94 try: v_1 = self.limit - self.cursor try: # literal, line 94 if not self.eq_s_b(u"y"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # literal, line 94 if not self.eq_s_b(u"Y"): return False except lab0: pass # ], line 94 self.bra = self.cursor if not self.out_grouping_b(EnglishStemmer.g_v, 97, 121): return False # not, line 95 try: # atlimit, line 95 if self.cursor > self.limit_backward: raise lab2() return False except lab2: pass # <-, line 96 if not self.slice_from(u"i"): return False return True def __r_Step_2(self): # (, line 99 # [, line 100 self.ket = self.cursor # substring, line 100 among_var = self.find_among_b(EnglishStemmer.a_5) if among_var == 0: return False # ], line 100 self.bra = self.cursor # call R1, line 100 if not self.__r_R1(): return False if among_var == 1: # (, line 101 # <-, line 101 if not self.slice_from(u"tion"): return False elif among_var == 2: # (, line 102 # <-, line 102 if not self.slice_from(u"ence"): return False elif among_var == 3: # (, line 103 # <-, line 103 if not self.slice_from(u"ance"): return False elif among_var == 4: # (, line 104 # <-, line 104 if not self.slice_from(u"able"): return False elif among_var == 5: # (, line 105 # <-, line 105 if not self.slice_from(u"ent"): return False elif among_var == 6: # (, line 107 # <-, line 107 if not self.slice_from(u"ize"): return False elif among_var == 7: # (, line 109 # <-, line 109 if not self.slice_from(u"ate"): return False elif among_var == 8: # (, line 111 # <-, line 111 if not self.slice_from(u"al"): return False elif among_var == 9: # (, line 112 # <-, line 112 if not self.slice_from(u"ful"): return False elif among_var == 10: # (, line 114 # <-, line 114 if not self.slice_from(u"ous"): return False elif among_var == 11: # (, line 116 # <-, line 116 if not self.slice_from(u"ive"): return False elif among_var == 12: # (, line 118 # <-, line 118 if not self.slice_from(u"ble"): return False elif among_var == 13: # (, line 119 # literal, line 119 if not self.eq_s_b(u"l"): return False # <-, line 119 if not self.slice_from(u"og"): return False elif among_var == 14: # (, line 121 # <-, line 121 if not self.slice_from(u"less"): return False elif among_var == 15: # (, line 122 if not self.in_grouping_b(EnglishStemmer.g_valid_LI, 99, 116): return False # delete, line 122 if not self.slice_del(): return False return True def __r_Step_3(self): # (, line 126 # [, line 127 self.ket = self.cursor # substring, line 127 among_var = self.find_among_b(EnglishStemmer.a_6) if among_var == 0: return False # ], line 127 self.bra = self.cursor # call R1, line 127 if not self.__r_R1(): return False if among_var == 1: # (, line 128 # <-, line 128 if not self.slice_from(u"tion"): return False elif among_var == 2: # (, line 129 # <-, line 129 if not self.slice_from(u"ate"): return False elif among_var == 3: # (, line 130 # <-, line 130 if not self.slice_from(u"al"): return False elif among_var == 4: # (, line 132 # <-, line 132 if not self.slice_from(u"ic"): return False elif among_var == 5: # (, line 134 # delete, line 134 if not self.slice_del(): return False elif among_var == 6: # (, line 136 # call R2, line 136 if not self.__r_R2(): return False # delete, line 136 if not self.slice_del(): return False return True def __r_Step_4(self): # (, line 140 # [, line 141 self.ket = self.cursor # substring, line 141 among_var = self.find_among_b(EnglishStemmer.a_7) if among_var == 0: return False # ], line 141 self.bra = self.cursor # call R2, line 141 if not self.__r_R2(): return False if among_var == 1: # (, line 144 # delete, line 144 if not self.slice_del(): return False elif among_var == 2: # (, line 145 # or, line 145 try: v_1 = self.limit - self.cursor try: # literal, line 145 if not self.eq_s_b(u"s"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # literal, line 145 if not self.eq_s_b(u"t"): return False except lab0: pass # delete, line 145 if not self.slice_del(): return False return True def __r_Step_5(self): # (, line 149 # [, line 150 self.ket = self.cursor # substring, line 150 among_var = self.find_among_b(EnglishStemmer.a_8) if among_var == 0: return False # ], line 150 self.bra = self.cursor if among_var == 1: # (, line 151 # or, line 151 try: v_1 = self.limit - self.cursor try: # call R2, line 151 if not self.__r_R2(): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 151 # call R1, line 151 if not self.__r_R1(): return False # not, line 151 v_2 = self.limit - self.cursor try: # call shortv, line 151 if not self.__r_shortv(): raise lab2() return False except lab2: pass self.cursor = self.limit - v_2 except lab0: pass # delete, line 151 if not self.slice_del(): return False elif among_var == 2: # (, line 152 # call R2, line 152 if not self.__r_R2(): return False # literal, line 152 if not self.eq_s_b(u"l"): return False # delete, line 152 if not self.slice_del(): return False return True def __r_exception2(self): # (, line 156 # [, line 158 self.ket = self.cursor # substring, line 158 if self.find_among_b(EnglishStemmer.a_9) == 0: return False # ], line 158 self.bra = self.cursor # atlimit, line 158 if self.cursor > self.limit_backward: return False return True def __r_exception1(self): # (, line 168 # [, line 170 self.bra = self.cursor # substring, line 170 among_var = self.find_among(EnglishStemmer.a_10) if among_var == 0: return False # ], line 170 self.ket = self.cursor # atlimit, line 170 if self.cursor < self.limit: return False if among_var == 1: # (, line 174 # <-, line 174 if not self.slice_from(u"ski"): return False elif among_var == 2: # (, line 175 # <-, line 175 if not self.slice_from(u"sky"): return False elif among_var == 3: # (, line 176 # <-, line 176 if not self.slice_from(u"die"): return False elif among_var == 4: # (, line 177 # <-, line 177 if not self.slice_from(u"lie"): return False elif among_var == 5: # (, line 178 # <-, line 178 if not self.slice_from(u"tie"): return False elif among_var == 6: # (, line 182 # <-, line 182 if not self.slice_from(u"idl"): return False elif among_var == 7: # (, line 183 # <-, line 183 if not self.slice_from(u"gentl"): return False elif among_var == 8: # (, line 184 # <-, line 184 if not self.slice_from(u"ugli"): return False elif among_var == 9: # (, line 185 # <-, line 185 if not self.slice_from(u"earli"): return False elif among_var == 10: # (, line 186 # <-, line 186 if not self.slice_from(u"onli"): return False elif among_var == 11: # (, line 187 # <-, line 187 if not self.slice_from(u"singl"): return False return True def __r_postlude(self): # (, line 203 # Boolean test Y_found, line 203 if not self.B_Y_found: return False # repeat, line 203 while True: v_1 = self.cursor try: # (, line 203 # goto, line 203 try: while True: v_2 = self.cursor try: # (, line 203 # [, line 203 self.bra = self.cursor # literal, line 203 if not self.eq_s(u"Y"): raise lab2() # ], line 203 self.ket = self.cursor self.cursor = v_2 raise lab1() except lab2: pass self.cursor = v_2 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab1: pass # <-, line 203 if not self.slice_from(u"y"): return False continue except lab0: pass self.cursor = v_1 break return True def _stem(self): # (, line 205 # or, line 207 try: v_1 = self.cursor try: # call exception1, line 207 if not self.__r_exception1(): raise lab1() raise lab0() except lab1: pass self.cursor = v_1 try: # not, line 208 v_2 = self.cursor try: # hop, line 208 c = self.cursor + 3 if 0 > c or c > self.limit: raise lab3() self.cursor = c raise lab2() except lab3: pass self.cursor = v_2 raise lab0() except lab2: pass self.cursor = v_1 # (, line 208 # do, line 209 # call prelude, line 209 self.__r_prelude() # do, line 210 # call mark_regions, line 210 self.__r_mark_regions() # backwards, line 211 self.limit_backward = self.cursor self.cursor = self.limit # (, line 211 # do, line 213 v_5 = self.limit - self.cursor # call Step_1a, line 213 self.__r_Step_1a() self.cursor = self.limit - v_5 # or, line 215 try: v_6 = self.limit - self.cursor try: # call exception2, line 215 if not self.__r_exception2(): raise lab5() raise lab4() except lab5: pass self.cursor = self.limit - v_6 # (, line 215 # do, line 217 v_7 = self.limit - self.cursor # call Step_1b, line 217 self.__r_Step_1b() self.cursor = self.limit - v_7 # do, line 218 v_8 = self.limit - self.cursor # call Step_1c, line 218 self.__r_Step_1c() self.cursor = self.limit - v_8 # do, line 220 v_9 = self.limit - self.cursor # call Step_2, line 220 self.__r_Step_2() self.cursor = self.limit - v_9 # do, line 221 v_10 = self.limit - self.cursor # call Step_3, line 221 self.__r_Step_3() self.cursor = self.limit - v_10 # do, line 222 v_11 = self.limit - self.cursor # call Step_4, line 222 self.__r_Step_4() self.cursor = self.limit - v_11 # do, line 224 v_12 = self.limit - self.cursor # call Step_5, line 224 self.__r_Step_5() self.cursor = self.limit - v_12 except lab4: pass self.cursor = self.limit_backward # do, line 227 v_13 = self.cursor # call postlude, line 227 self.__r_postlude() self.cursor = v_13 except lab0: pass return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/finnish_stemmer.py0000644000175000017500000005111313545325430025347 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class FinnishStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"pa", -1, 1), Among(u"sti", -1, 2), Among(u"kaan", -1, 1), Among(u"han", -1, 1), Among(u"kin", -1, 1), Among(u"h\u00E4n", -1, 1), Among(u"k\u00E4\u00E4n", -1, 1), Among(u"ko", -1, 1), Among(u"p\u00E4", -1, 1), Among(u"k\u00F6", -1, 1) ] a_1 = [ Among(u"lla", -1, -1), Among(u"na", -1, -1), Among(u"ssa", -1, -1), Among(u"ta", -1, -1), Among(u"lta", 3, -1), Among(u"sta", 3, -1) ] a_2 = [ Among(u"ll\u00E4", -1, -1), Among(u"n\u00E4", -1, -1), Among(u"ss\u00E4", -1, -1), Among(u"t\u00E4", -1, -1), Among(u"lt\u00E4", 3, -1), Among(u"st\u00E4", 3, -1) ] a_3 = [ Among(u"lle", -1, -1), Among(u"ine", -1, -1) ] a_4 = [ Among(u"nsa", -1, 3), Among(u"mme", -1, 3), Among(u"nne", -1, 3), Among(u"ni", -1, 2), Among(u"si", -1, 1), Among(u"an", -1, 4), Among(u"en", -1, 6), Among(u"\u00E4n", -1, 5), Among(u"ns\u00E4", -1, 3) ] a_5 = [ Among(u"aa", -1, -1), Among(u"ee", -1, -1), Among(u"ii", -1, -1), Among(u"oo", -1, -1), Among(u"uu", -1, -1), Among(u"\u00E4\u00E4", -1, -1), Among(u"\u00F6\u00F6", -1, -1) ] a_6 = [ Among(u"a", -1, 8), Among(u"lla", 0, -1), Among(u"na", 0, -1), Among(u"ssa", 0, -1), Among(u"ta", 0, -1), Among(u"lta", 4, -1), Among(u"sta", 4, -1), Among(u"tta", 4, 2), Among(u"lle", -1, -1), Among(u"ine", -1, -1), Among(u"ksi", -1, -1), Among(u"n", -1, 7), Among(u"han", 11, 1), Among(u"den", 11, -1, "_FinnishStemmer__r_VI"), Among(u"seen", 11, -1, "_FinnishStemmer__r_LONG"), Among(u"hen", 11, 2), Among(u"tten", 11, -1, "_FinnishStemmer__r_VI"), Among(u"hin", 11, 3), Among(u"siin", 11, -1, "_FinnishStemmer__r_VI"), Among(u"hon", 11, 4), Among(u"h\u00E4n", 11, 5), Among(u"h\u00F6n", 11, 6), Among(u"\u00E4", -1, 8), Among(u"ll\u00E4", 22, -1), Among(u"n\u00E4", 22, -1), Among(u"ss\u00E4", 22, -1), Among(u"t\u00E4", 22, -1), Among(u"lt\u00E4", 26, -1), Among(u"st\u00E4", 26, -1), Among(u"tt\u00E4", 26, 2) ] a_7 = [ Among(u"eja", -1, -1), Among(u"mma", -1, 1), Among(u"imma", 1, -1), Among(u"mpa", -1, 1), Among(u"impa", 3, -1), Among(u"mmi", -1, 1), Among(u"immi", 5, -1), Among(u"mpi", -1, 1), Among(u"impi", 7, -1), Among(u"ej\u00E4", -1, -1), Among(u"mm\u00E4", -1, 1), Among(u"imm\u00E4", 10, -1), Among(u"mp\u00E4", -1, 1), Among(u"imp\u00E4", 12, -1) ] a_8 = [ Among(u"i", -1, -1), Among(u"j", -1, -1) ] a_9 = [ Among(u"mma", -1, 1), Among(u"imma", 0, -1) ] g_AEI = [17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8] g_C = [119, 223, 119, 1] g_V1 = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32] g_V2 = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32] g_particle_end = [17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32] B_ending_removed = False S_x = "" I_p2 = 0 I_p1 = 0 def __r_mark_regions(self): # (, line 42 self.I_p1 = self.limit self.I_p2 = self.limit # goto grouping V1, line 47 if not self.go_out_grouping(FinnishStemmer.g_V1, 97, 246): return False # gopast non V1, line 47 if not self.go_in_grouping(FinnishStemmer.g_V1, 97, 246): return False self.cursor += 1 # setmark p1, line 47 self.I_p1 = self.cursor # goto grouping V1, line 48 if not self.go_out_grouping(FinnishStemmer.g_V1, 97, 246): return False # gopast non V1, line 48 if not self.go_in_grouping(FinnishStemmer.g_V1, 97, 246): return False self.cursor += 1 # setmark p2, line 48 self.I_p2 = self.cursor return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_particle_etc(self): # (, line 55 # setlimit, line 56 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 56 # [, line 56 self.ket = self.cursor # substring, line 56 among_var = self.find_among_b(FinnishStemmer.a_0) if among_var == 0: self.limit_backward = v_2 return False # ], line 56 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 63 if not self.in_grouping_b(FinnishStemmer.g_particle_end, 97, 246): return False elif among_var == 2: # (, line 65 # call R2, line 65 if not self.__r_R2(): return False # delete, line 67 if not self.slice_del(): return False return True def __r_possessive(self): # (, line 69 # setlimit, line 70 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 70 # [, line 70 self.ket = self.cursor # substring, line 70 among_var = self.find_among_b(FinnishStemmer.a_4) if among_var == 0: self.limit_backward = v_2 return False # ], line 70 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 73 # not, line 73 v_3 = self.limit - self.cursor try: # literal, line 73 if not self.eq_s_b(u"k"): raise lab0() return False except lab0: pass self.cursor = self.limit - v_3 # delete, line 73 if not self.slice_del(): return False elif among_var == 2: # (, line 75 # delete, line 75 if not self.slice_del(): return False # [, line 75 self.ket = self.cursor # literal, line 75 if not self.eq_s_b(u"kse"): return False # ], line 75 self.bra = self.cursor # <-, line 75 if not self.slice_from(u"ksi"): return False elif among_var == 3: # (, line 79 # delete, line 79 if not self.slice_del(): return False elif among_var == 4: # (, line 82 # among, line 82 if self.find_among_b(FinnishStemmer.a_1) == 0: return False # delete, line 82 if not self.slice_del(): return False elif among_var == 5: # (, line 84 # among, line 84 if self.find_among_b(FinnishStemmer.a_2) == 0: return False # delete, line 85 if not self.slice_del(): return False elif among_var == 6: # (, line 87 # among, line 87 if self.find_among_b(FinnishStemmer.a_3) == 0: return False # delete, line 87 if not self.slice_del(): return False return True def __r_LONG(self): # among, line 92 if self.find_among_b(FinnishStemmer.a_5) == 0: return False return True def __r_VI(self): # (, line 94 # literal, line 94 if not self.eq_s_b(u"i"): return False if not self.in_grouping_b(FinnishStemmer.g_V2, 97, 246): return False return True def __r_case_ending(self): # (, line 96 # setlimit, line 97 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 97 # [, line 97 self.ket = self.cursor # substring, line 97 among_var = self.find_among_b(FinnishStemmer.a_6) if among_var == 0: self.limit_backward = v_2 return False # ], line 97 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 99 # literal, line 99 if not self.eq_s_b(u"a"): return False elif among_var == 2: # (, line 100 # literal, line 100 if not self.eq_s_b(u"e"): return False elif among_var == 3: # (, line 101 # literal, line 101 if not self.eq_s_b(u"i"): return False elif among_var == 4: # (, line 102 # literal, line 102 if not self.eq_s_b(u"o"): return False elif among_var == 5: # (, line 103 # literal, line 103 if not self.eq_s_b(u"\u00E4"): return False elif among_var == 6: # (, line 104 # literal, line 104 if not self.eq_s_b(u"\u00F6"): return False elif among_var == 7: # (, line 112 # try, line 112 v_3 = self.limit - self.cursor try: # (, line 112 # and, line 114 v_4 = self.limit - self.cursor # or, line 113 try: v_5 = self.limit - self.cursor try: # call LONG, line 112 if not self.__r_LONG(): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_5 # literal, line 113 if not self.eq_s_b(u"ie"): self.cursor = self.limit - v_3 raise lab0() except lab1: pass self.cursor = self.limit - v_4 # next, line 114 if self.cursor <= self.limit_backward: self.cursor = self.limit - v_3 raise lab0() self.cursor -= 1 # ], line 114 self.bra = self.cursor except lab0: pass elif among_var == 8: # (, line 120 if not self.in_grouping_b(FinnishStemmer.g_V1, 97, 246): return False if not self.in_grouping_b(FinnishStemmer.g_C, 98, 122): return False # delete, line 139 if not self.slice_del(): return False # set ending_removed, line 140 self.B_ending_removed = True return True def __r_other_endings(self): # (, line 142 # setlimit, line 143 if self.cursor < self.I_p2: return False v_2 = self.limit_backward self.limit_backward = self.I_p2 # (, line 143 # [, line 143 self.ket = self.cursor # substring, line 143 among_var = self.find_among_b(FinnishStemmer.a_7) if among_var == 0: self.limit_backward = v_2 return False # ], line 143 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 147 # not, line 147 v_3 = self.limit - self.cursor try: # literal, line 147 if not self.eq_s_b(u"po"): raise lab0() return False except lab0: pass self.cursor = self.limit - v_3 # delete, line 152 if not self.slice_del(): return False return True def __r_i_plural(self): # (, line 154 # setlimit, line 155 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 155 # [, line 155 self.ket = self.cursor # substring, line 155 if self.find_among_b(FinnishStemmer.a_8) == 0: self.limit_backward = v_2 return False # ], line 155 self.bra = self.cursor self.limit_backward = v_2 # delete, line 159 if not self.slice_del(): return False return True def __r_t_plural(self): # (, line 161 # setlimit, line 162 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 162 # [, line 163 self.ket = self.cursor # literal, line 163 if not self.eq_s_b(u"t"): self.limit_backward = v_2 return False # ], line 163 self.bra = self.cursor # test, line 163 v_3 = self.limit - self.cursor if not self.in_grouping_b(FinnishStemmer.g_V1, 97, 246): self.limit_backward = v_2 return False self.cursor = self.limit - v_3 # delete, line 164 if not self.slice_del(): return False self.limit_backward = v_2 # setlimit, line 166 if self.cursor < self.I_p2: return False v_5 = self.limit_backward self.limit_backward = self.I_p2 # (, line 166 # [, line 166 self.ket = self.cursor # substring, line 166 among_var = self.find_among_b(FinnishStemmer.a_9) if among_var == 0: self.limit_backward = v_5 return False # ], line 166 self.bra = self.cursor self.limit_backward = v_5 if among_var == 1: # (, line 168 # not, line 168 v_6 = self.limit - self.cursor try: # literal, line 168 if not self.eq_s_b(u"po"): raise lab0() return False except lab0: pass self.cursor = self.limit - v_6 # delete, line 171 if not self.slice_del(): return False return True def __r_tidy(self): # (, line 173 # setlimit, line 174 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 174 # do, line 175 v_3 = self.limit - self.cursor try: # (, line 175 # and, line 175 v_4 = self.limit - self.cursor # call LONG, line 175 if not self.__r_LONG(): raise lab0() self.cursor = self.limit - v_4 # (, line 175 # [, line 175 self.ket = self.cursor # next, line 175 if self.cursor <= self.limit_backward: raise lab0() self.cursor -= 1 # ], line 175 self.bra = self.cursor # delete, line 175 if not self.slice_del(): return False except lab0: pass self.cursor = self.limit - v_3 # do, line 176 v_5 = self.limit - self.cursor try: # (, line 176 # [, line 176 self.ket = self.cursor if not self.in_grouping_b(FinnishStemmer.g_AEI, 97, 228): raise lab1() # ], line 176 self.bra = self.cursor if not self.in_grouping_b(FinnishStemmer.g_C, 98, 122): raise lab1() # delete, line 176 if not self.slice_del(): return False except lab1: pass self.cursor = self.limit - v_5 # do, line 177 v_6 = self.limit - self.cursor try: # (, line 177 # [, line 177 self.ket = self.cursor # literal, line 177 if not self.eq_s_b(u"j"): raise lab2() # ], line 177 self.bra = self.cursor # or, line 177 try: v_7 = self.limit - self.cursor try: # literal, line 177 if not self.eq_s_b(u"o"): raise lab4() raise lab3() except lab4: pass self.cursor = self.limit - v_7 # literal, line 177 if not self.eq_s_b(u"u"): raise lab2() except lab3: pass # delete, line 177 if not self.slice_del(): return False except lab2: pass self.cursor = self.limit - v_6 # do, line 178 v_8 = self.limit - self.cursor try: # (, line 178 # [, line 178 self.ket = self.cursor # literal, line 178 if not self.eq_s_b(u"o"): raise lab5() # ], line 178 self.bra = self.cursor # literal, line 178 if not self.eq_s_b(u"j"): raise lab5() # delete, line 178 if not self.slice_del(): return False except lab5: pass self.cursor = self.limit - v_8 self.limit_backward = v_2 # goto non V1, line 180 if not self.go_in_grouping_b(FinnishStemmer.g_V1, 97, 246): return False # [, line 180 self.ket = self.cursor if not self.in_grouping_b(FinnishStemmer.g_C, 98, 122): return False # ], line 180 self.bra = self.cursor # -> x, line 180 self.S_x = self.slice_to() if self.S_x == '': return False # name x, line 180 if not self.eq_s_b(self.S_x): return False # delete, line 180 if not self.slice_del(): return False return True def _stem(self): # (, line 184 # do, line 186 v_1 = self.cursor # call mark_regions, line 186 self.__r_mark_regions() self.cursor = v_1 # unset ending_removed, line 187 self.B_ending_removed = False # backwards, line 188 self.limit_backward = self.cursor self.cursor = self.limit # (, line 188 # do, line 189 v_2 = self.limit - self.cursor # call particle_etc, line 189 self.__r_particle_etc() self.cursor = self.limit - v_2 # do, line 190 v_3 = self.limit - self.cursor # call possessive, line 190 self.__r_possessive() self.cursor = self.limit - v_3 # do, line 191 v_4 = self.limit - self.cursor # call case_ending, line 191 self.__r_case_ending() self.cursor = self.limit - v_4 # do, line 192 v_5 = self.limit - self.cursor # call other_endings, line 192 self.__r_other_endings() self.cursor = self.limit - v_5 # or, line 193 try: try: # (, line 193 # Boolean test ending_removed, line 193 if not self.B_ending_removed: raise lab1() # do, line 193 v_7 = self.limit - self.cursor # call i_plural, line 193 self.__r_i_plural() self.cursor = self.limit - v_7 raise lab0() except lab1: pass # do, line 193 v_8 = self.limit - self.cursor # call t_plural, line 193 self.__r_t_plural() self.cursor = self.limit - v_8 except lab0: pass # do, line 194 v_9 = self.limit - self.cursor # call tidy, line 194 self.__r_tidy() self.cursor = self.limit - v_9 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/french_stemmer.py0000644000175000017500000012474513545325430025172 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class FrenchStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"col", -1, -1), Among(u"par", -1, -1), Among(u"tap", -1, -1) ] a_1 = [ Among(u"", -1, 7), Among(u"H", 0, 6), Among(u"He", 1, 4), Among(u"Hi", 1, 5), Among(u"I", 0, 1), Among(u"U", 0, 2), Among(u"Y", 0, 3) ] a_2 = [ Among(u"iqU", -1, 3), Among(u"abl", -1, 3), Among(u"I\u00E8r", -1, 4), Among(u"i\u00E8r", -1, 4), Among(u"eus", -1, 2), Among(u"iv", -1, 1) ] a_3 = [ Among(u"ic", -1, 2), Among(u"abil", -1, 1), Among(u"iv", -1, 3) ] a_4 = [ Among(u"iqUe", -1, 1), Among(u"atrice", -1, 2), Among(u"ance", -1, 1), Among(u"ence", -1, 5), Among(u"logie", -1, 3), Among(u"able", -1, 1), Among(u"isme", -1, 1), Among(u"euse", -1, 11), Among(u"iste", -1, 1), Among(u"ive", -1, 8), Among(u"if", -1, 8), Among(u"usion", -1, 4), Among(u"ation", -1, 2), Among(u"ution", -1, 4), Among(u"ateur", -1, 2), Among(u"iqUes", -1, 1), Among(u"atrices", -1, 2), Among(u"ances", -1, 1), Among(u"ences", -1, 5), Among(u"logies", -1, 3), Among(u"ables", -1, 1), Among(u"ismes", -1, 1), Among(u"euses", -1, 11), Among(u"istes", -1, 1), Among(u"ives", -1, 8), Among(u"ifs", -1, 8), Among(u"usions", -1, 4), Among(u"ations", -1, 2), Among(u"utions", -1, 4), Among(u"ateurs", -1, 2), Among(u"ments", -1, 15), Among(u"ements", 30, 6), Among(u"issements", 31, 12), Among(u"it\u00E9s", -1, 7), Among(u"ment", -1, 15), Among(u"ement", 34, 6), Among(u"issement", 35, 12), Among(u"amment", 34, 13), Among(u"emment", 34, 14), Among(u"aux", -1, 10), Among(u"eaux", 39, 9), Among(u"eux", -1, 1), Among(u"it\u00E9", -1, 7) ] a_5 = [ Among(u"ira", -1, 1), Among(u"ie", -1, 1), Among(u"isse", -1, 1), Among(u"issante", -1, 1), Among(u"i", -1, 1), Among(u"irai", 4, 1), Among(u"ir", -1, 1), Among(u"iras", -1, 1), Among(u"ies", -1, 1), Among(u"\u00EEmes", -1, 1), Among(u"isses", -1, 1), Among(u"issantes", -1, 1), Among(u"\u00EEtes", -1, 1), Among(u"is", -1, 1), Among(u"irais", 13, 1), Among(u"issais", 13, 1), Among(u"irions", -1, 1), Among(u"issions", -1, 1), Among(u"irons", -1, 1), Among(u"issons", -1, 1), Among(u"issants", -1, 1), Among(u"it", -1, 1), Among(u"irait", 21, 1), Among(u"issait", 21, 1), Among(u"issant", -1, 1), Among(u"iraIent", -1, 1), Among(u"issaIent", -1, 1), Among(u"irent", -1, 1), Among(u"issent", -1, 1), Among(u"iront", -1, 1), Among(u"\u00EEt", -1, 1), Among(u"iriez", -1, 1), Among(u"issiez", -1, 1), Among(u"irez", -1, 1), Among(u"issez", -1, 1) ] a_6 = [ Among(u"a", -1, 3), Among(u"era", 0, 2), Among(u"asse", -1, 3), Among(u"ante", -1, 3), Among(u"\u00E9e", -1, 2), Among(u"ai", -1, 3), Among(u"erai", 5, 2), Among(u"er", -1, 2), Among(u"as", -1, 3), Among(u"eras", 8, 2), Among(u"\u00E2mes", -1, 3), Among(u"asses", -1, 3), Among(u"antes", -1, 3), Among(u"\u00E2tes", -1, 3), Among(u"\u00E9es", -1, 2), Among(u"ais", -1, 3), Among(u"erais", 15, 2), Among(u"ions", -1, 1), Among(u"erions", 17, 2), Among(u"assions", 17, 3), Among(u"erons", -1, 2), Among(u"ants", -1, 3), Among(u"\u00E9s", -1, 2), Among(u"ait", -1, 3), Among(u"erait", 23, 2), Among(u"ant", -1, 3), Among(u"aIent", -1, 3), Among(u"eraIent", 26, 2), Among(u"\u00E8rent", -1, 2), Among(u"assent", -1, 3), Among(u"eront", -1, 2), Among(u"\u00E2t", -1, 3), Among(u"ez", -1, 2), Among(u"iez", 32, 2), Among(u"eriez", 33, 2), Among(u"assiez", 33, 3), Among(u"erez", 32, 2), Among(u"\u00E9", -1, 2) ] a_7 = [ Among(u"e", -1, 3), Among(u"I\u00E8re", 0, 2), Among(u"i\u00E8re", 0, 2), Among(u"ion", -1, 1), Among(u"Ier", -1, 2), Among(u"ier", -1, 2) ] a_8 = [ Among(u"ell", -1, -1), Among(u"eill", -1, -1), Among(u"enn", -1, -1), Among(u"onn", -1, -1), Among(u"ett", -1, -1) ] g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5] g_keep_with_s = [1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128] I_p2 = 0 I_p1 = 0 I_pV = 0 def __r_prelude(self): # repeat, line 38 while True: v_1 = self.cursor try: # goto, line 38 try: while True: v_2 = self.cursor try: # (, line 38 # or, line 44 try: v_3 = self.cursor try: # (, line 40 if not self.in_grouping(FrenchStemmer.g_v, 97, 251): raise lab4() # [, line 40 self.bra = self.cursor # or, line 40 try: v_4 = self.cursor try: # (, line 40 # literal, line 40 if not self.eq_s(u"u"): raise lab6() # ], line 40 self.ket = self.cursor if not self.in_grouping(FrenchStemmer.g_v, 97, 251): raise lab6() # <-, line 40 if not self.slice_from(u"U"): return False raise lab5() except lab6: pass self.cursor = v_4 try: # (, line 41 # literal, line 41 if not self.eq_s(u"i"): raise lab7() # ], line 41 self.ket = self.cursor if not self.in_grouping(FrenchStemmer.g_v, 97, 251): raise lab7() # <-, line 41 if not self.slice_from(u"I"): return False raise lab5() except lab7: pass self.cursor = v_4 # (, line 42 # literal, line 42 if not self.eq_s(u"y"): raise lab4() # ], line 42 self.ket = self.cursor # <-, line 42 if not self.slice_from(u"Y"): return False except lab5: pass raise lab3() except lab4: pass self.cursor = v_3 try: # (, line 45 # [, line 45 self.bra = self.cursor # literal, line 45 if not self.eq_s(u"\u00EB"): raise lab8() # ], line 45 self.ket = self.cursor # <-, line 45 if not self.slice_from(u"He"): return False raise lab3() except lab8: pass self.cursor = v_3 try: # (, line 47 # [, line 47 self.bra = self.cursor # literal, line 47 if not self.eq_s(u"\u00EF"): raise lab9() # ], line 47 self.ket = self.cursor # <-, line 47 if not self.slice_from(u"Hi"): return False raise lab3() except lab9: pass self.cursor = v_3 try: # (, line 49 # [, line 49 self.bra = self.cursor # literal, line 49 if not self.eq_s(u"y"): raise lab10() # ], line 49 self.ket = self.cursor if not self.in_grouping(FrenchStemmer.g_v, 97, 251): raise lab10() # <-, line 49 if not self.slice_from(u"Y"): return False raise lab3() except lab10: pass self.cursor = v_3 # (, line 51 # literal, line 51 if not self.eq_s(u"q"): raise lab2() # [, line 51 self.bra = self.cursor # literal, line 51 if not self.eq_s(u"u"): raise lab2() # ], line 51 self.ket = self.cursor # <-, line 51 if not self.slice_from(u"U"): return False except lab3: pass self.cursor = v_2 raise lab1() except lab2: pass self.cursor = v_2 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab1: pass continue except lab0: pass self.cursor = v_1 break return True def __r_mark_regions(self): # (, line 54 self.I_pV = self.limit self.I_p1 = self.limit self.I_p2 = self.limit # do, line 60 v_1 = self.cursor try: # (, line 60 # or, line 62 try: v_2 = self.cursor try: # (, line 61 if not self.in_grouping(FrenchStemmer.g_v, 97, 251): raise lab2() if not self.in_grouping(FrenchStemmer.g_v, 97, 251): raise lab2() # next, line 61 if self.cursor >= self.limit: raise lab2() self.cursor += 1 raise lab1() except lab2: pass self.cursor = v_2 try: # among, line 63 if self.find_among(FrenchStemmer.a_0) == 0: raise lab3() raise lab1() except lab3: pass self.cursor = v_2 # (, line 70 # next, line 70 if self.cursor >= self.limit: raise lab0() self.cursor += 1 # gopast grouping v, line 70 if not self.go_out_grouping(FrenchStemmer.g_v, 97, 251): raise lab0() self.cursor += 1 except lab1: pass # setmark pV, line 71 self.I_pV = self.cursor except lab0: pass self.cursor = v_1 # do, line 73 v_3 = self.cursor try: # (, line 73 # gopast grouping v, line 74 if not self.go_out_grouping(FrenchStemmer.g_v, 97, 251): raise lab4() self.cursor += 1 # gopast non v, line 74 if not self.go_in_grouping(FrenchStemmer.g_v, 97, 251): raise lab4() self.cursor += 1 # setmark p1, line 74 self.I_p1 = self.cursor # gopast grouping v, line 75 if not self.go_out_grouping(FrenchStemmer.g_v, 97, 251): raise lab4() self.cursor += 1 # gopast non v, line 75 if not self.go_in_grouping(FrenchStemmer.g_v, 97, 251): raise lab4() self.cursor += 1 # setmark p2, line 75 self.I_p2 = self.cursor except lab4: pass self.cursor = v_3 return True def __r_postlude(self): # repeat, line 79 while True: v_1 = self.cursor try: # (, line 79 # [, line 81 self.bra = self.cursor # substring, line 81 among_var = self.find_among(FrenchStemmer.a_1) if among_var == 0: raise lab0() # ], line 81 self.ket = self.cursor if among_var == 1: # (, line 82 # <-, line 82 if not self.slice_from(u"i"): return False elif among_var == 2: # (, line 83 # <-, line 83 if not self.slice_from(u"u"): return False elif among_var == 3: # (, line 84 # <-, line 84 if not self.slice_from(u"y"): return False elif among_var == 4: # (, line 85 # <-, line 85 if not self.slice_from(u"\u00EB"): return False elif among_var == 5: # (, line 86 # <-, line 86 if not self.slice_from(u"\u00EF"): return False elif among_var == 6: # (, line 87 # delete, line 87 if not self.slice_del(): return False elif among_var == 7: # (, line 88 # next, line 88 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_RV(self): if not self.I_pV <= self.cursor: return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_standard_suffix(self): # (, line 98 # [, line 99 self.ket = self.cursor # substring, line 99 among_var = self.find_among_b(FrenchStemmer.a_4) if among_var == 0: return False # ], line 99 self.bra = self.cursor if among_var == 1: # (, line 103 # call R2, line 103 if not self.__r_R2(): return False # delete, line 103 if not self.slice_del(): return False elif among_var == 2: # (, line 106 # call R2, line 106 if not self.__r_R2(): return False # delete, line 106 if not self.slice_del(): return False # try, line 107 v_1 = self.limit - self.cursor try: # (, line 107 # [, line 107 self.ket = self.cursor # literal, line 107 if not self.eq_s_b(u"ic"): self.cursor = self.limit - v_1 raise lab0() # ], line 107 self.bra = self.cursor # or, line 107 try: v_2 = self.limit - self.cursor try: # (, line 107 # call R2, line 107 if not self.__r_R2(): raise lab2() # delete, line 107 if not self.slice_del(): return False raise lab1() except lab2: pass self.cursor = self.limit - v_2 # <-, line 107 if not self.slice_from(u"iqU"): return False except lab1: pass except lab0: pass elif among_var == 3: # (, line 111 # call R2, line 111 if not self.__r_R2(): return False # <-, line 111 if not self.slice_from(u"log"): return False elif among_var == 4: # (, line 114 # call R2, line 114 if not self.__r_R2(): return False # <-, line 114 if not self.slice_from(u"u"): return False elif among_var == 5: # (, line 117 # call R2, line 117 if not self.__r_R2(): return False # <-, line 117 if not self.slice_from(u"ent"): return False elif among_var == 6: # (, line 120 # call RV, line 121 if not self.__r_RV(): return False # delete, line 121 if not self.slice_del(): return False # try, line 122 v_3 = self.limit - self.cursor try: # (, line 122 # [, line 123 self.ket = self.cursor # substring, line 123 among_var = self.find_among_b(FrenchStemmer.a_2) if among_var == 0: self.cursor = self.limit - v_3 raise lab3() # ], line 123 self.bra = self.cursor if among_var == 1: # (, line 124 # call R2, line 124 if not self.__r_R2(): self.cursor = self.limit - v_3 raise lab3() # delete, line 124 if not self.slice_del(): return False # [, line 124 self.ket = self.cursor # literal, line 124 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_3 raise lab3() # ], line 124 self.bra = self.cursor # call R2, line 124 if not self.__r_R2(): self.cursor = self.limit - v_3 raise lab3() # delete, line 124 if not self.slice_del(): return False elif among_var == 2: # (, line 125 # or, line 125 try: v_4 = self.limit - self.cursor try: # (, line 125 # call R2, line 125 if not self.__r_R2(): raise lab5() # delete, line 125 if not self.slice_del(): return False raise lab4() except lab5: pass self.cursor = self.limit - v_4 # (, line 125 # call R1, line 125 if not self.__r_R1(): self.cursor = self.limit - v_3 raise lab3() # <-, line 125 if not self.slice_from(u"eux"): return False except lab4: pass elif among_var == 3: # (, line 127 # call R2, line 127 if not self.__r_R2(): self.cursor = self.limit - v_3 raise lab3() # delete, line 127 if not self.slice_del(): return False elif among_var == 4: # (, line 129 # call RV, line 129 if not self.__r_RV(): self.cursor = self.limit - v_3 raise lab3() # <-, line 129 if not self.slice_from(u"i"): return False except lab3: pass elif among_var == 7: # (, line 135 # call R2, line 136 if not self.__r_R2(): return False # delete, line 136 if not self.slice_del(): return False # try, line 137 v_5 = self.limit - self.cursor try: # (, line 137 # [, line 138 self.ket = self.cursor # substring, line 138 among_var = self.find_among_b(FrenchStemmer.a_3) if among_var == 0: self.cursor = self.limit - v_5 raise lab6() # ], line 138 self.bra = self.cursor if among_var == 1: # (, line 139 # or, line 139 try: v_6 = self.limit - self.cursor try: # (, line 139 # call R2, line 139 if not self.__r_R2(): raise lab8() # delete, line 139 if not self.slice_del(): return False raise lab7() except lab8: pass self.cursor = self.limit - v_6 # <-, line 139 if not self.slice_from(u"abl"): return False except lab7: pass elif among_var == 2: # (, line 140 # or, line 140 try: v_7 = self.limit - self.cursor try: # (, line 140 # call R2, line 140 if not self.__r_R2(): raise lab10() # delete, line 140 if not self.slice_del(): return False raise lab9() except lab10: pass self.cursor = self.limit - v_7 # <-, line 140 if not self.slice_from(u"iqU"): return False except lab9: pass elif among_var == 3: # (, line 141 # call R2, line 141 if not self.__r_R2(): self.cursor = self.limit - v_5 raise lab6() # delete, line 141 if not self.slice_del(): return False except lab6: pass elif among_var == 8: # (, line 147 # call R2, line 148 if not self.__r_R2(): return False # delete, line 148 if not self.slice_del(): return False # try, line 149 v_8 = self.limit - self.cursor try: # (, line 149 # [, line 149 self.ket = self.cursor # literal, line 149 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_8 raise lab11() # ], line 149 self.bra = self.cursor # call R2, line 149 if not self.__r_R2(): self.cursor = self.limit - v_8 raise lab11() # delete, line 149 if not self.slice_del(): return False # [, line 149 self.ket = self.cursor # literal, line 149 if not self.eq_s_b(u"ic"): self.cursor = self.limit - v_8 raise lab11() # ], line 149 self.bra = self.cursor # or, line 149 try: v_9 = self.limit - self.cursor try: # (, line 149 # call R2, line 149 if not self.__r_R2(): raise lab13() # delete, line 149 if not self.slice_del(): return False raise lab12() except lab13: pass self.cursor = self.limit - v_9 # <-, line 149 if not self.slice_from(u"iqU"): return False except lab12: pass except lab11: pass elif among_var == 9: # (, line 151 # <-, line 151 if not self.slice_from(u"eau"): return False elif among_var == 10: # (, line 152 # call R1, line 152 if not self.__r_R1(): return False # <-, line 152 if not self.slice_from(u"al"): return False elif among_var == 11: # (, line 154 # or, line 154 try: v_10 = self.limit - self.cursor try: # (, line 154 # call R2, line 154 if not self.__r_R2(): raise lab15() # delete, line 154 if not self.slice_del(): return False raise lab14() except lab15: pass self.cursor = self.limit - v_10 # (, line 154 # call R1, line 154 if not self.__r_R1(): return False # <-, line 154 if not self.slice_from(u"eux"): return False except lab14: pass elif among_var == 12: # (, line 157 # call R1, line 157 if not self.__r_R1(): return False if not self.out_grouping_b(FrenchStemmer.g_v, 97, 251): return False # delete, line 157 if not self.slice_del(): return False elif among_var == 13: # (, line 162 # call RV, line 162 if not self.__r_RV(): return False # fail, line 162 # (, line 162 # <-, line 162 if not self.slice_from(u"ant"): return False return False elif among_var == 14: # (, line 163 # call RV, line 163 if not self.__r_RV(): return False # fail, line 163 # (, line 163 # <-, line 163 if not self.slice_from(u"ent"): return False return False elif among_var == 15: # (, line 165 # test, line 165 v_11 = self.limit - self.cursor # (, line 165 if not self.in_grouping_b(FrenchStemmer.g_v, 97, 251): return False # call RV, line 165 if not self.__r_RV(): return False self.cursor = self.limit - v_11 # fail, line 165 # (, line 165 # delete, line 165 if not self.slice_del(): return False return False return True def __r_i_verb_suffix(self): # setlimit, line 170 if self.cursor < self.I_pV: return False v_2 = self.limit_backward self.limit_backward = self.I_pV # (, line 170 # [, line 171 self.ket = self.cursor # substring, line 171 if self.find_among_b(FrenchStemmer.a_5) == 0: self.limit_backward = v_2 return False # ], line 171 self.bra = self.cursor # (, line 177 # not, line 177 v_3 = self.limit - self.cursor try: # literal, line 177 if not self.eq_s_b(u"H"): raise lab0() self.limit_backward = v_2 return False except lab0: pass self.cursor = self.limit - v_3 if not self.out_grouping_b(FrenchStemmer.g_v, 97, 251): self.limit_backward = v_2 return False # delete, line 177 if not self.slice_del(): return False self.limit_backward = v_2 return True def __r_verb_suffix(self): # setlimit, line 181 if self.cursor < self.I_pV: return False v_2 = self.limit_backward self.limit_backward = self.I_pV # (, line 181 # [, line 182 self.ket = self.cursor # substring, line 182 among_var = self.find_among_b(FrenchStemmer.a_6) if among_var == 0: self.limit_backward = v_2 return False # ], line 182 self.bra = self.cursor if among_var == 1: # (, line 184 # call R2, line 184 if not self.__r_R2(): self.limit_backward = v_2 return False # delete, line 184 if not self.slice_del(): return False elif among_var == 2: # (, line 192 # delete, line 192 if not self.slice_del(): return False elif among_var == 3: # (, line 197 # delete, line 197 if not self.slice_del(): return False # try, line 198 v_3 = self.limit - self.cursor try: # (, line 198 # [, line 198 self.ket = self.cursor # literal, line 198 if not self.eq_s_b(u"e"): self.cursor = self.limit - v_3 raise lab0() # ], line 198 self.bra = self.cursor # delete, line 198 if not self.slice_del(): return False except lab0: pass self.limit_backward = v_2 return True def __r_residual_suffix(self): # (, line 205 # try, line 206 v_1 = self.limit - self.cursor try: # (, line 206 # [, line 206 self.ket = self.cursor # literal, line 206 if not self.eq_s_b(u"s"): self.cursor = self.limit - v_1 raise lab0() # ], line 206 self.bra = self.cursor # test, line 206 v_2 = self.limit - self.cursor # (, line 206 # or, line 206 try: v_3 = self.limit - self.cursor try: # literal, line 206 if not self.eq_s_b(u"Hi"): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_3 if not self.out_grouping_b(FrenchStemmer.g_keep_with_s, 97, 232): self.cursor = self.limit - v_1 raise lab0() except lab1: pass self.cursor = self.limit - v_2 # delete, line 206 if not self.slice_del(): return False except lab0: pass # setlimit, line 207 if self.cursor < self.I_pV: return False v_5 = self.limit_backward self.limit_backward = self.I_pV # (, line 207 # [, line 208 self.ket = self.cursor # substring, line 208 among_var = self.find_among_b(FrenchStemmer.a_7) if among_var == 0: self.limit_backward = v_5 return False # ], line 208 self.bra = self.cursor if among_var == 1: # (, line 209 # call R2, line 209 if not self.__r_R2(): self.limit_backward = v_5 return False # or, line 209 try: v_6 = self.limit - self.cursor try: # literal, line 209 if not self.eq_s_b(u"s"): raise lab4() raise lab3() except lab4: pass self.cursor = self.limit - v_6 # literal, line 209 if not self.eq_s_b(u"t"): self.limit_backward = v_5 return False except lab3: pass # delete, line 209 if not self.slice_del(): return False elif among_var == 2: # (, line 211 # <-, line 211 if not self.slice_from(u"i"): return False elif among_var == 3: # (, line 212 # delete, line 212 if not self.slice_del(): return False self.limit_backward = v_5 return True def __r_un_double(self): # (, line 217 # test, line 218 v_1 = self.limit - self.cursor # among, line 218 if self.find_among_b(FrenchStemmer.a_8) == 0: return False self.cursor = self.limit - v_1 # [, line 218 self.ket = self.cursor # next, line 218 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # ], line 218 self.bra = self.cursor # delete, line 218 if not self.slice_del(): return False return True def __r_un_accent(self): # (, line 221 # atleast, line 222 v_1 = 1 while True: try: if not self.out_grouping_b(FrenchStemmer.g_v, 97, 251): raise lab0() v_1 -= 1 continue except lab0: pass break if v_1 > 0: return False # [, line 223 self.ket = self.cursor # or, line 223 try: v_3 = self.limit - self.cursor try: # literal, line 223 if not self.eq_s_b(u"\u00E9"): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_3 # literal, line 223 if not self.eq_s_b(u"\u00E8"): return False except lab1: pass # ], line 223 self.bra = self.cursor # <-, line 223 if not self.slice_from(u"e"): return False return True def _stem(self): # (, line 227 # do, line 229 v_1 = self.cursor # call prelude, line 229 self.__r_prelude() self.cursor = v_1 # do, line 230 # call mark_regions, line 230 self.__r_mark_regions() # backwards, line 231 self.limit_backward = self.cursor self.cursor = self.limit # (, line 231 # do, line 233 v_3 = self.limit - self.cursor try: # (, line 233 # or, line 243 try: v_4 = self.limit - self.cursor try: # (, line 234 # and, line 239 v_5 = self.limit - self.cursor # (, line 235 # or, line 235 try: v_6 = self.limit - self.cursor try: # call standard_suffix, line 235 if not self.__r_standard_suffix(): raise lab4() raise lab3() except lab4: pass self.cursor = self.limit - v_6 try: # call i_verb_suffix, line 236 if not self.__r_i_verb_suffix(): raise lab5() raise lab3() except lab5: pass self.cursor = self.limit - v_6 # call verb_suffix, line 237 if not self.__r_verb_suffix(): raise lab2() except lab3: pass self.cursor = self.limit - v_5 # try, line 240 v_7 = self.limit - self.cursor try: # (, line 240 # [, line 240 self.ket = self.cursor # or, line 240 try: v_8 = self.limit - self.cursor try: # (, line 240 # literal, line 240 if not self.eq_s_b(u"Y"): raise lab8() # ], line 240 self.bra = self.cursor # <-, line 240 if not self.slice_from(u"i"): return False raise lab7() except lab8: pass self.cursor = self.limit - v_8 # (, line 241 # literal, line 241 if not self.eq_s_b(u"\u00E7"): self.cursor = self.limit - v_7 raise lab6() # ], line 241 self.bra = self.cursor # <-, line 241 if not self.slice_from(u"c"): return False except lab7: pass except lab6: pass raise lab1() except lab2: pass self.cursor = self.limit - v_4 # call residual_suffix, line 244 if not self.__r_residual_suffix(): raise lab0() except lab1: pass except lab0: pass self.cursor = self.limit - v_3 # do, line 249 v_9 = self.limit - self.cursor # call un_double, line 249 self.__r_un_double() self.cursor = self.limit - v_9 # do, line 250 v_10 = self.limit - self.cursor # call un_accent, line 250 self.__r_un_accent() self.cursor = self.limit - v_10 self.cursor = self.limit_backward # do, line 252 v_11 = self.cursor # call postlude, line 252 self.__r_postlude() self.cursor = v_11 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass class lab9(BaseException): pass class lab10(BaseException): pass class lab11(BaseException): pass class lab12(BaseException): pass class lab13(BaseException): pass class lab14(BaseException): pass class lab15(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/german_stemmer.py0000644000175000017500000004220613545325430025165 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class GermanStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 5), Among(u"U", 0, 2), Among(u"Y", 0, 1), Among(u"\u00E4", 0, 3), Among(u"\u00F6", 0, 4), Among(u"\u00FC", 0, 2) ] a_1 = [ Among(u"e", -1, 2), Among(u"em", -1, 1), Among(u"en", -1, 2), Among(u"ern", -1, 1), Among(u"er", -1, 1), Among(u"s", -1, 3), Among(u"es", 5, 2) ] a_2 = [ Among(u"en", -1, 1), Among(u"er", -1, 1), Among(u"st", -1, 2), Among(u"est", 2, 1) ] a_3 = [ Among(u"ig", -1, 1), Among(u"lich", -1, 1) ] a_4 = [ Among(u"end", -1, 1), Among(u"ig", -1, 2), Among(u"ung", -1, 1), Among(u"lich", -1, 3), Among(u"isch", -1, 2), Among(u"ik", -1, 2), Among(u"heit", -1, 3), Among(u"keit", -1, 4) ] g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8] g_s_ending = [117, 30, 5] g_st_ending = [117, 30, 4] I_x = 0 I_p2 = 0 I_p1 = 0 def __r_prelude(self): # (, line 33 # test, line 35 v_1 = self.cursor # repeat, line 35 while True: v_2 = self.cursor try: # (, line 35 # or, line 38 try: v_3 = self.cursor try: # (, line 36 # [, line 37 self.bra = self.cursor # literal, line 37 if not self.eq_s(u"\u00DF"): raise lab2() # ], line 37 self.ket = self.cursor # <-, line 37 if not self.slice_from(u"ss"): return False raise lab1() except lab2: pass self.cursor = v_3 # next, line 38 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab1: pass continue except lab0: pass self.cursor = v_2 break self.cursor = v_1 # repeat, line 41 while True: v_4 = self.cursor try: # goto, line 41 try: while True: v_5 = self.cursor try: # (, line 41 if not self.in_grouping(GermanStemmer.g_v, 97, 252): raise lab5() # [, line 42 self.bra = self.cursor # or, line 42 try: v_6 = self.cursor try: # (, line 42 # literal, line 42 if not self.eq_s(u"u"): raise lab7() # ], line 42 self.ket = self.cursor if not self.in_grouping(GermanStemmer.g_v, 97, 252): raise lab7() # <-, line 42 if not self.slice_from(u"U"): return False raise lab6() except lab7: pass self.cursor = v_6 # (, line 43 # literal, line 43 if not self.eq_s(u"y"): raise lab5() # ], line 43 self.ket = self.cursor if not self.in_grouping(GermanStemmer.g_v, 97, 252): raise lab5() # <-, line 43 if not self.slice_from(u"Y"): return False except lab6: pass self.cursor = v_5 raise lab4() except lab5: pass self.cursor = v_5 if self.cursor >= self.limit: raise lab3() self.cursor += 1 except lab4: pass continue except lab3: pass self.cursor = v_4 break return True def __r_mark_regions(self): # (, line 47 self.I_p1 = self.limit self.I_p2 = self.limit # test, line 52 v_1 = self.cursor # (, line 52 # hop, line 52 c = self.cursor + 3 if 0 > c or c > self.limit: return False self.cursor = c # setmark x, line 52 self.I_x = self.cursor self.cursor = v_1 # gopast grouping v, line 54 if not self.go_out_grouping(GermanStemmer.g_v, 97, 252): return False self.cursor += 1 # gopast non v, line 54 if not self.go_in_grouping(GermanStemmer.g_v, 97, 252): return False self.cursor += 1 # setmark p1, line 54 self.I_p1 = self.cursor # try, line 55 try: # (, line 55 if not self.I_p1 < self.I_x: raise lab0() self.I_p1 = self.I_x except lab0: pass # gopast grouping v, line 56 if not self.go_out_grouping(GermanStemmer.g_v, 97, 252): return False self.cursor += 1 # gopast non v, line 56 if not self.go_in_grouping(GermanStemmer.g_v, 97, 252): return False self.cursor += 1 # setmark p2, line 56 self.I_p2 = self.cursor return True def __r_postlude(self): # repeat, line 60 while True: v_1 = self.cursor try: # (, line 60 # [, line 62 self.bra = self.cursor # substring, line 62 among_var = self.find_among(GermanStemmer.a_0) if among_var == 0: raise lab0() # ], line 62 self.ket = self.cursor if among_var == 1: # (, line 63 # <-, line 63 if not self.slice_from(u"y"): return False elif among_var == 2: # (, line 64 # <-, line 64 if not self.slice_from(u"u"): return False elif among_var == 3: # (, line 65 # <-, line 65 if not self.slice_from(u"a"): return False elif among_var == 4: # (, line 66 # <-, line 66 if not self.slice_from(u"o"): return False elif among_var == 5: # (, line 68 # next, line 68 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_standard_suffix(self): # (, line 78 # do, line 79 v_1 = self.limit - self.cursor try: # (, line 79 # [, line 80 self.ket = self.cursor # substring, line 80 among_var = self.find_among_b(GermanStemmer.a_1) if among_var == 0: raise lab0() # ], line 80 self.bra = self.cursor # call R1, line 80 if not self.__r_R1(): raise lab0() if among_var == 1: # (, line 82 # delete, line 82 if not self.slice_del(): return False elif among_var == 2: # (, line 85 # delete, line 85 if not self.slice_del(): return False # try, line 86 v_2 = self.limit - self.cursor try: # (, line 86 # [, line 86 self.ket = self.cursor # literal, line 86 if not self.eq_s_b(u"s"): self.cursor = self.limit - v_2 raise lab1() # ], line 86 self.bra = self.cursor # literal, line 86 if not self.eq_s_b(u"nis"): self.cursor = self.limit - v_2 raise lab1() # delete, line 86 if not self.slice_del(): return False except lab1: pass elif among_var == 3: # (, line 89 if not self.in_grouping_b(GermanStemmer.g_s_ending, 98, 116): raise lab0() # delete, line 89 if not self.slice_del(): return False except lab0: pass self.cursor = self.limit - v_1 # do, line 93 v_3 = self.limit - self.cursor try: # (, line 93 # [, line 94 self.ket = self.cursor # substring, line 94 among_var = self.find_among_b(GermanStemmer.a_2) if among_var == 0: raise lab2() # ], line 94 self.bra = self.cursor # call R1, line 94 if not self.__r_R1(): raise lab2() if among_var == 1: # (, line 96 # delete, line 96 if not self.slice_del(): return False elif among_var == 2: # (, line 99 if not self.in_grouping_b(GermanStemmer.g_st_ending, 98, 116): raise lab2() # hop, line 99 c = self.cursor - 3 if self.limit_backward > c or c > self.limit: raise lab2() self.cursor = c # delete, line 99 if not self.slice_del(): return False except lab2: pass self.cursor = self.limit - v_3 # do, line 103 v_4 = self.limit - self.cursor try: # (, line 103 # [, line 104 self.ket = self.cursor # substring, line 104 among_var = self.find_among_b(GermanStemmer.a_4) if among_var == 0: raise lab3() # ], line 104 self.bra = self.cursor # call R2, line 104 if not self.__r_R2(): raise lab3() if among_var == 1: # (, line 106 # delete, line 106 if not self.slice_del(): return False # try, line 107 v_5 = self.limit - self.cursor try: # (, line 107 # [, line 107 self.ket = self.cursor # literal, line 107 if not self.eq_s_b(u"ig"): self.cursor = self.limit - v_5 raise lab4() # ], line 107 self.bra = self.cursor # not, line 107 v_6 = self.limit - self.cursor try: # literal, line 107 if not self.eq_s_b(u"e"): raise lab5() self.cursor = self.limit - v_5 raise lab4() except lab5: pass self.cursor = self.limit - v_6 # call R2, line 107 if not self.__r_R2(): self.cursor = self.limit - v_5 raise lab4() # delete, line 107 if not self.slice_del(): return False except lab4: pass elif among_var == 2: # (, line 110 # not, line 110 v_7 = self.limit - self.cursor try: # literal, line 110 if not self.eq_s_b(u"e"): raise lab6() raise lab3() except lab6: pass self.cursor = self.limit - v_7 # delete, line 110 if not self.slice_del(): return False elif among_var == 3: # (, line 113 # delete, line 113 if not self.slice_del(): return False # try, line 114 v_8 = self.limit - self.cursor try: # (, line 114 # [, line 115 self.ket = self.cursor # or, line 115 try: v_9 = self.limit - self.cursor try: # literal, line 115 if not self.eq_s_b(u"er"): raise lab9() raise lab8() except lab9: pass self.cursor = self.limit - v_9 # literal, line 115 if not self.eq_s_b(u"en"): self.cursor = self.limit - v_8 raise lab7() except lab8: pass # ], line 115 self.bra = self.cursor # call R1, line 115 if not self.__r_R1(): self.cursor = self.limit - v_8 raise lab7() # delete, line 115 if not self.slice_del(): return False except lab7: pass elif among_var == 4: # (, line 119 # delete, line 119 if not self.slice_del(): return False # try, line 120 v_10 = self.limit - self.cursor try: # (, line 120 # [, line 121 self.ket = self.cursor # substring, line 121 if self.find_among_b(GermanStemmer.a_3) == 0: self.cursor = self.limit - v_10 raise lab10() # ], line 121 self.bra = self.cursor # call R2, line 121 if not self.__r_R2(): self.cursor = self.limit - v_10 raise lab10() # (, line 123 # delete, line 123 if not self.slice_del(): return False except lab10: pass except lab3: pass self.cursor = self.limit - v_4 return True def _stem(self): # (, line 133 # do, line 134 v_1 = self.cursor # call prelude, line 134 self.__r_prelude() self.cursor = v_1 # do, line 135 v_2 = self.cursor # call mark_regions, line 135 self.__r_mark_regions() self.cursor = v_2 # backwards, line 136 self.limit_backward = self.cursor self.cursor = self.limit # do, line 137 # call standard_suffix, line 137 self.__r_standard_suffix() self.cursor = self.limit_backward # do, line 138 v_4 = self.cursor # call postlude, line 138 self.__r_postlude() self.cursor = v_4 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass class lab9(BaseException): pass class lab10(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/greek_stemmer.py0000644000175000017500000032451513545325430025017 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class GreekStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 25), Among(u"\u0386", 0, 1), Among(u"\u0388", 0, 5), Among(u"\u0389", 0, 7), Among(u"\u038A", 0, 9), Among(u"\u038C", 0, 15), Among(u"\u038E", 0, 20), Among(u"\u038F", 0, 24), Among(u"\u0390", 0, 7), Among(u"\u0391", 0, 1), Among(u"\u0392", 0, 2), Among(u"\u0393", 0, 3), Among(u"\u0394", 0, 4), Among(u"\u0395", 0, 5), Among(u"\u0396", 0, 6), Among(u"\u0397", 0, 7), Among(u"\u0398", 0, 8), Among(u"\u0399", 0, 9), Among(u"\u039A", 0, 10), Among(u"\u039B", 0, 11), Among(u"\u039C", 0, 12), Among(u"\u039D", 0, 13), Among(u"\u039E", 0, 14), Among(u"\u039F", 0, 15), Among(u"\u03A0", 0, 16), Among(u"\u03A1", 0, 17), Among(u"\u03A3", 0, 18), Among(u"\u03A4", 0, 19), Among(u"\u03A5", 0, 20), Among(u"\u03A6", 0, 21), Among(u"\u03A7", 0, 22), Among(u"\u03A8", 0, 23), Among(u"\u03A9", 0, 24), Among(u"\u03AA", 0, 9), Among(u"\u03AB", 0, 20), Among(u"\u03AC", 0, 1), Among(u"\u03AD", 0, 5), Among(u"\u03AE", 0, 7), Among(u"\u03AF", 0, 9), Among(u"\u03B0", 0, 20), Among(u"\u03C2", 0, 18), Among(u"\u03CA", 0, 7), Among(u"\u03CB", 0, 20), Among(u"\u03CC", 0, 15), Among(u"\u03CD", 0, 20), Among(u"\u03CE", 0, 24) ] a_1 = [ Among(u"\u03C3\u03BA\u03B1\u03B3\u03B9\u03B1", -1, 2), Among(u"\u03C6\u03B1\u03B3\u03B9\u03B1", -1, 1), Among(u"\u03BF\u03BB\u03BF\u03B3\u03B9\u03B1", -1, 3), Among(u"\u03C3\u03BF\u03B3\u03B9\u03B1", -1, 4), Among(u"\u03C4\u03B1\u03C4\u03BF\u03B3\u03B9\u03B1", -1, 5), Among(u"\u03BA\u03C1\u03B5\u03B1\u03C4\u03B1", -1, 6), Among(u"\u03C0\u03B5\u03C1\u03B1\u03C4\u03B1", -1, 7), Among(u"\u03C4\u03B5\u03C1\u03B1\u03C4\u03B1", -1, 8), Among(u"\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C4\u03B1", -1, 11), Among(u"\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C4\u03B1", -1, 10), Among(u"\u03C6\u03C9\u03C4\u03B1", -1, 9), Among(u"\u03C0\u03B5\u03C1\u03B1\u03C4\u03B7", -1, 7), Among(u"\u03C3\u03BA\u03B1\u03B3\u03B9\u03C9\u03BD", -1, 2), Among(u"\u03C6\u03B1\u03B3\u03B9\u03C9\u03BD", -1, 1), Among(u"\u03BF\u03BB\u03BF\u03B3\u03B9\u03C9\u03BD", -1, 3), Among(u"\u03C3\u03BF\u03B3\u03B9\u03C9\u03BD", -1, 4), Among(u"\u03C4\u03B1\u03C4\u03BF\u03B3\u03B9\u03C9\u03BD", -1, 5), Among(u"\u03BA\u03C1\u03B5\u03B1\u03C4\u03C9\u03BD", -1, 6), Among(u"\u03C0\u03B5\u03C1\u03B1\u03C4\u03C9\u03BD", -1, 7), Among(u"\u03C4\u03B5\u03C1\u03B1\u03C4\u03C9\u03BD", -1, 8), Among(u"\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C4\u03C9\u03BD", -1, 11), Among(u"\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C4\u03C9\u03BD", -1, 10), Among(u"\u03C6\u03C9\u03C4\u03C9\u03BD", -1, 9), Among(u"\u03BA\u03C1\u03B5\u03B1\u03C3", -1, 6), Among(u"\u03C0\u03B5\u03C1\u03B1\u03C3", -1, 7), Among(u"\u03C4\u03B5\u03C1\u03B1\u03C3", -1, 8), Among(u"\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C3", -1, 11), Among(u"\u03BA\u03C1\u03B5\u03B1\u03C4\u03BF\u03C3", -1, 6), Among(u"\u03C0\u03B5\u03C1\u03B1\u03C4\u03BF\u03C3", -1, 7), Among(u"\u03C4\u03B5\u03C1\u03B1\u03C4\u03BF\u03C3", -1, 8), Among(u"\u03B3\u03B5\u03B3\u03BF\u03BD\u03BF\u03C4\u03BF\u03C3", -1, 11), Among(u"\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C4\u03BF\u03C3", -1, 10), Among(u"\u03C6\u03C9\u03C4\u03BF\u03C3", -1, 9), Among(u"\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4\u03C9\u03C3", -1, 10), Among(u"\u03C6\u03C9\u03C3", -1, 9), Among(u"\u03C3\u03BA\u03B1\u03B3\u03B9\u03BF\u03C5", -1, 2), Among(u"\u03C6\u03B1\u03B3\u03B9\u03BF\u03C5", -1, 1), Among(u"\u03BF\u03BB\u03BF\u03B3\u03B9\u03BF\u03C5", -1, 3), Among(u"\u03C3\u03BF\u03B3\u03B9\u03BF\u03C5", -1, 4), Among(u"\u03C4\u03B1\u03C4\u03BF\u03B3\u03B9\u03BF\u03C5", -1, 5) ] a_2 = [ Among(u"\u03C0\u03B1", -1, 1), Among(u"\u03BE\u03B1\u03BD\u03B1\u03C0\u03B1", 0, 1), Among(u"\u03B5\u03C0\u03B1", 0, 1), Among(u"\u03C0\u03B5\u03C1\u03B9\u03C0\u03B1", 0, 1), Among(u"\u03B1\u03BD\u03B1\u03BC\u03C0\u03B1", 0, 1), Among(u"\u03B5\u03BC\u03C0\u03B1", 0, 1), Among(u"\u03B4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B1\u03B8\u03C1\u03BF", -1, 1), Among(u"\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", 7, 1) ] a_3 = [ Among(u"\u03B2", -1, 1), Among(u"\u03B2\u03B1\u03B8\u03C5\u03C1\u03B9", -1, 1), Among(u"\u03B2\u03B1\u03C1\u03BA", -1, 1), Among(u"\u03BC\u03B1\u03C1\u03BA", -1, 1), Among(u"\u03BB", -1, 1), Among(u"\u03BC", -1, 1), Among(u"\u03BA\u03BF\u03C1\u03BD", -1, 1), Among(u"\u03C0", -1, 1), Among(u"\u03B9\u03BC\u03C0", 7, 1), Among(u"\u03C1", -1, 1), Among(u"\u03BC\u03B1\u03C1", 9, 1), Among(u"\u03B1\u03BC\u03C0\u03B1\u03C1", 9, 1), Among(u"\u03B3\u03BA\u03C1", 9, 1), Among(u"\u03B2\u03BF\u03BB\u03B2\u03BF\u03C1", 9, 1), Among(u"\u03B3\u03BB\u03C5\u03BA\u03BF\u03C1", 9, 1), Among(u"\u03C0\u03B9\u03C0\u03B5\u03C1\u03BF\u03C1", 9, 1), Among(u"\u03C0\u03C1", 9, 1), Among(u"\u03BC\u03C0\u03C1", 16, 1), Among(u"\u03B1\u03C1\u03C1", 9, 1), Among(u"\u03B3\u03BB\u03C5\u03BA\u03C5\u03C1", 9, 1), Among(u"\u03C0\u03BF\u03BB\u03C5\u03C1", 9, 1), Among(u"\u03BB\u03BF\u03C5", -1, 1) ] a_4 = [ Among(u"\u03B9\u03B6\u03B1", -1, 1), Among(u"\u03B9\u03B6\u03B5", -1, 1), Among(u"\u03B9\u03B6\u03B1\u03BC\u03B5", -1, 1), Among(u"\u03B9\u03B6\u03BF\u03C5\u03BC\u03B5", -1, 1), Among(u"\u03B9\u03B6\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B9\u03B6\u03BF\u03C5\u03BD\u03B5", -1, 1), Among(u"\u03B9\u03B6\u03B1\u03C4\u03B5", -1, 1), Among(u"\u03B9\u03B6\u03B5\u03C4\u03B5", -1, 1), Among(u"\u03B9\u03B6\u03B5\u03B9", -1, 1), Among(u"\u03B9\u03B6\u03B1\u03BD", -1, 1), Among(u"\u03B9\u03B6\u03BF\u03C5\u03BD", -1, 1), Among(u"\u03B9\u03B6\u03B5\u03C3", -1, 1), Among(u"\u03B9\u03B6\u03B5\u03B9\u03C3", -1, 1), Among(u"\u03B9\u03B6\u03C9", -1, 1) ] a_5 = [ Among(u"\u03B2\u03B9", -1, 1), Among(u"\u03BB\u03B9", -1, 1), Among(u"\u03B1\u03BB", -1, 1), Among(u"\u03B5\u03BD", -1, 1), Among(u"\u03C3", -1, 1), Among(u"\u03C7", -1, 1), Among(u"\u03C5\u03C8", -1, 1), Among(u"\u03B6\u03C9", -1, 1) ] a_6 = [ Among(u"\u03C9\u03B8\u03B7\u03BA\u03B1", -1, 1), Among(u"\u03C9\u03B8\u03B7\u03BA\u03B5", -1, 1), Among(u"\u03C9\u03B8\u03B7\u03BA\u03B1\u03BC\u03B5", -1, 1), Among(u"\u03C9\u03B8\u03B7\u03BA\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03C9\u03B8\u03B7\u03BA\u03B1\u03C4\u03B5", -1, 1), Among(u"\u03C9\u03B8\u03B7\u03BA\u03B1\u03BD", -1, 1), Among(u"\u03C9\u03B8\u03B7\u03BA\u03B5\u03C3", -1, 1) ] a_7 = [ Among(u"\u03BE\u03B1\u03BD\u03B1\u03C0\u03B1", -1, 1), Among(u"\u03B5\u03C0\u03B1", -1, 1), Among(u"\u03C0\u03B5\u03C1\u03B9\u03C0\u03B1", -1, 1), Among(u"\u03B1\u03BD\u03B1\u03BC\u03C0\u03B1", -1, 1), Among(u"\u03B5\u03BC\u03C0\u03B1", -1, 1), Among(u"\u03C7\u03B1\u03C1\u03C4\u03BF\u03C0\u03B1", -1, 1), Among(u"\u03B5\u03BE\u03B1\u03C1\u03C7\u03B1", -1, 1), Among(u"\u03BA\u03BB\u03B5", -1, 1), Among(u"\u03B5\u03BA\u03BB\u03B5", 7, 1), Among(u"\u03B1\u03C0\u03B5\u03BA\u03BB\u03B5", 8, 1), Among(u"\u03B1\u03C0\u03BF\u03BA\u03BB\u03B5", 7, 1), Among(u"\u03B5\u03C3\u03C9\u03BA\u03BB\u03B5", 7, 1), Among(u"\u03B4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03C0\u03B5", -1, 1), Among(u"\u03B5\u03C0\u03B5", 13, 1), Among(u"\u03BC\u03B5\u03C4\u03B5\u03C0\u03B5", 14, 1), Among(u"\u03B5\u03C3\u03B5", -1, 1), Among(u"\u03B1\u03B8\u03C1\u03BF", -1, 1), Among(u"\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", 17, 1) ] a_8 = [ Among(u"\u03B3\u03B5", -1, 1), Among(u"\u03B3\u03BA\u03B5", -1, 1), Among(u"\u03B3\u03BA", -1, 1), Among(u"\u03BC", -1, 1), Among(u"\u03C0\u03BF\u03C5\u03BA\u03B1\u03BC", 3, 1), Among(u"\u03BA\u03BF\u03BC", 3, 1), Among(u"\u03B1\u03BD", -1, 1), Among(u"\u03BF\u03BB\u03BF", -1, 1), Among(u"\u03C0", -1, 1), Among(u"\u03BB\u03B1\u03C1", -1, 1), Among(u"\u03B4\u03B7\u03BC\u03BF\u03BA\u03C1\u03B1\u03C4", -1, 1), Among(u"\u03B1\u03C6", -1, 1), Among(u"\u03B3\u03B9\u03B3\u03B1\u03BD\u03C4\u03BF\u03B1\u03C6", 11, 1) ] a_9 = [ Among(u"\u03B9\u03C3\u03B1", -1, 1), Among(u"\u03B9\u03C3\u03B1\u03BC\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03B1\u03C4\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03B1\u03BD", -1, 1), Among(u"\u03B9\u03C3\u03B5\u03C3", -1, 1) ] a_10 = [ Among(u"\u03BE\u03B1\u03BD\u03B1\u03C0\u03B1", -1, 1), Among(u"\u03B5\u03C0\u03B1", -1, 1), Among(u"\u03C0\u03B5\u03C1\u03B9\u03C0\u03B1", -1, 1), Among(u"\u03B1\u03BD\u03B1\u03BC\u03C0\u03B1", -1, 1), Among(u"\u03B5\u03BC\u03C0\u03B1", -1, 1), Among(u"\u03C7\u03B1\u03C1\u03C4\u03BF\u03C0\u03B1", -1, 1), Among(u"\u03B5\u03BE\u03B1\u03C1\u03C7\u03B1", -1, 1), Among(u"\u03BA\u03BB\u03B5", -1, 1), Among(u"\u03B5\u03BA\u03BB\u03B5", 7, 1), Among(u"\u03B1\u03C0\u03B5\u03BA\u03BB\u03B5", 8, 1), Among(u"\u03B1\u03C0\u03BF\u03BA\u03BB\u03B5", 7, 1), Among(u"\u03B5\u03C3\u03C9\u03BA\u03BB\u03B5", 7, 1), Among(u"\u03B4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03C0\u03B5", -1, 1), Among(u"\u03B5\u03C0\u03B5", 13, 1), Among(u"\u03BC\u03B5\u03C4\u03B5\u03C0\u03B5", 14, 1), Among(u"\u03B5\u03C3\u03B5", -1, 1), Among(u"\u03B1\u03B8\u03C1\u03BF", -1, 1), Among(u"\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", 17, 1) ] a_11 = [ Among(u"\u03B9\u03C3\u03BF\u03C5\u03BC\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03BF\u03C5\u03BD\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03B5\u03C4\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03B5\u03B9", -1, 1), Among(u"\u03B9\u03C3\u03BF\u03C5\u03BD", -1, 1), Among(u"\u03B9\u03C3\u03B5\u03B9\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03C9", -1, 1) ] a_12 = [ Among(u"\u03BA\u03BB\u03B5", -1, 1), Among(u"\u03B5\u03C3\u03C9\u03BA\u03BB\u03B5", 0, 1), Among(u"\u03C0\u03BB\u03B5", -1, 1), Among(u"\u03B4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03C3\u03B5", -1, 1), Among(u"\u03B1\u03C3\u03B5", 4, 1), Among(u"\u03C3\u03C5\u03BD\u03B1\u03B8\u03C1\u03BF", -1, 1) ] a_13 = [ Among(u"\u03B1\u03C4\u03B1", -1, 1), Among(u"\u03C6\u03B1", -1, 1), Among(u"\u03B7\u03C6\u03B1", 1, 1), Among(u"\u03BC\u03B5\u03B3", -1, 1), Among(u"\u03BB\u03C5\u03B3", -1, 1), Among(u"\u03B7\u03B4", -1, 1), Among(u"\u03BA\u03B1\u03B8", -1, 1), Among(u"\u03B5\u03C7\u03B8", -1, 1), Among(u"\u03BA\u03B1\u03BA", -1, 1), Among(u"\u03BC\u03B1\u03BA", -1, 1), Among(u"\u03C3\u03BA", -1, 1), Among(u"\u03C6\u03B9\u03BB", -1, 1), Among(u"\u03BA\u03C5\u03BB", -1, 1), Among(u"\u03BC", -1, 1), Among(u"\u03B3\u03B5\u03BC", 13, 1), Among(u"\u03B1\u03C7\u03BD", -1, 1), Among(u"\u03C0", -1, 1), Among(u"\u03B1\u03C0", 16, 1), Among(u"\u03B5\u03BC\u03C0", 16, 1), Among(u"\u03B5\u03C5\u03C0", 16, 1), Among(u"\u03B1\u03C1", -1, 1), Among(u"\u03B1\u03BF\u03C1", -1, 1), Among(u"\u03B3\u03C5\u03C1", -1, 1), Among(u"\u03C7\u03C1", -1, 1), Among(u"\u03C7\u03C9\u03C1", -1, 1), Among(u"\u03BA\u03C4", -1, 1), Among(u"\u03B1\u03BA\u03C4", 25, 1), Among(u"\u03C7\u03C4", -1, 1), Among(u"\u03B1\u03C7\u03C4", 27, 1), Among(u"\u03C4\u03B1\u03C7", -1, 1), Among(u"\u03C3\u03C7", -1, 1), Among(u"\u03B1\u03C3\u03C7", 30, 1), Among(u"\u03C5\u03C8", -1, 1) ] a_14 = [ Among(u"\u03B9\u03C3\u03C4\u03B1", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03B7", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03BF\u03B9", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03C9\u03BD", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03BF", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03B5\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03B7\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03BF\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03BF\u03C5\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03C4\u03BF\u03C5", -1, 1) ] a_15 = [ Among(u"\u03B5\u03B3\u03BA\u03BB\u03B5", -1, 1), Among(u"\u03B1\u03C0\u03BF\u03BA\u03BB\u03B5", -1, 1), Among(u"\u03C3\u03B5", -1, 1), Among(u"\u03BC\u03B5\u03C4\u03B1\u03C3\u03B5", 2, 1), Among(u"\u03BC\u03B9\u03BA\u03C1\u03BF\u03C3\u03B5", 2, 1) ] a_16 = [ Among(u"\u03B4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B1\u03BD\u03C4\u03B9\u03B4\u03B1\u03BD\u03B5", 0, 1) ] a_17 = [ Among(u"\u03B1\u03C4\u03BF\u03BC\u03B9\u03BA", -1, 2), Among(u"\u03B5\u03B8\u03BD\u03B9\u03BA", -1, 4), Among(u"\u03C4\u03BF\u03C0\u03B9\u03BA", -1, 7), Among(u"\u03B5\u03BA\u03BB\u03B5\u03BA\u03C4\u03B9\u03BA", -1, 5), Among(u"\u03C3\u03BA\u03B5\u03C0\u03C4\u03B9\u03BA", -1, 6), Among(u"\u03B3\u03BD\u03C9\u03C3\u03C4\u03B9\u03BA", -1, 3), Among(u"\u03B1\u03B3\u03BD\u03C9\u03C3\u03C4\u03B9\u03BA", 5, 1), Among(u"\u03B1\u03BB\u03B5\u03BE\u03B1\u03BD\u03B4\u03C1\u03B9\u03BD", -1, 8), Among(u"\u03B8\u03B5\u03B1\u03C4\u03C1\u03B9\u03BD", -1, 10), Among(u"\u03B2\u03C5\u03B6\u03B1\u03BD\u03C4\u03B9\u03BD", -1, 9) ] a_18 = [ Among(u"\u03B9\u03C3\u03BC\u03BF\u03B9", -1, 1), Among(u"\u03B9\u03C3\u03BC\u03C9\u03BD", -1, 1), Among(u"\u03B9\u03C3\u03BC\u03BF", -1, 1), Among(u"\u03B9\u03C3\u03BC\u03BF\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03BC\u03BF\u03C5\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03BC\u03BF\u03C5", -1, 1) ] a_19 = [ Among(u"\u03C3", -1, 1), Among(u"\u03C7", -1, 1) ] a_20 = [ Among(u"\u03BF\u03C5\u03B4\u03B1\u03BA\u03B9\u03B1", -1, 1), Among(u"\u03B1\u03C1\u03B1\u03BA\u03B9\u03B1", -1, 1), Among(u"\u03BF\u03C5\u03B4\u03B1\u03BA\u03B9", -1, 1), Among(u"\u03B1\u03C1\u03B1\u03BA\u03B9", -1, 1) ] a_21 = [ Among(u"\u03B2\u03B1\u03BC\u03B2", -1, 1), Among(u"\u03C3\u03BB\u03BF\u03B2", -1, 1), Among(u"\u03C4\u03C3\u03B5\u03C7\u03BF\u03C3\u03BB\u03BF\u03B2", 1, 1), Among(u"\u03C4\u03B6", -1, 1), Among(u"\u03BA", -1, 1), Among(u"\u03BA\u03B1\u03C0\u03B1\u03BA", 4, 1), Among(u"\u03C3\u03BF\u03BA", 4, 1), Among(u"\u03C3\u03BA", 4, 1), Among(u"\u03BC\u03B1\u03BB", -1, 1), Among(u"\u03C0\u03BB", -1, 1), Among(u"\u03BB\u03BF\u03C5\u03BB", -1, 1), Among(u"\u03C6\u03C5\u03BB", -1, 1), Among(u"\u03BA\u03B1\u03B9\u03BC", -1, 1), Among(u"\u03BA\u03BB\u03B9\u03BC", -1, 1), Among(u"\u03C6\u03B1\u03C1\u03BC", -1, 1), Among(u"\u03C3\u03C0\u03B1\u03BD", -1, 1), Among(u"\u03BA\u03BF\u03BD", -1, 1), Among(u"\u03BA\u03B1\u03C4\u03C1\u03B1\u03C0", -1, 1), Among(u"\u03C1", -1, 1), Among(u"\u03B2\u03C1", 18, 1), Among(u"\u03BB\u03B1\u03B2\u03C1", 19, 1), Among(u"\u03B1\u03BC\u03B2\u03C1", 19, 1), Among(u"\u03BC\u03B5\u03C1", 18, 1), Among(u"\u03B1\u03BD\u03B8\u03C1", 18, 1), Among(u"\u03BA\u03BF\u03C1", 18, 1), Among(u"\u03C3", -1, 1), Among(u"\u03BD\u03B1\u03B3\u03BA\u03B1\u03C3", 25, 1), Among(u"\u03BC\u03BF\u03C5\u03C3\u03C4", -1, 1), Among(u"\u03C1\u03C5", -1, 1), Among(u"\u03C6", -1, 1), Among(u"\u03C3\u03C6", 29, 1), Among(u"\u03B1\u03BB\u03B9\u03C3\u03C6", 30, 1), Among(u"\u03C7", -1, 1) ] a_22 = [ Among(u"\u03B2", -1, 1), Among(u"\u03BA\u03B1\u03C1\u03B4", -1, 1), Among(u"\u03B6", -1, 1), Among(u"\u03C3\u03BA", -1, 1), Among(u"\u03B2\u03B1\u03BB", -1, 1), Among(u"\u03B3\u03BB", -1, 1), Among(u"\u03C4\u03C1\u03B9\u03C0\u03BF\u03BB", -1, 1), Among(u"\u03B3\u03B9\u03B1\u03BD", -1, 1), Among(u"\u03B7\u03B3\u03BF\u03C5\u03BC\u03B5\u03BD", -1, 1), Among(u"\u03BA\u03BF\u03BD", -1, 1), Among(u"\u03BC\u03B1\u03BA\u03C1\u03C5\u03BD", -1, 1), Among(u"\u03C0", -1, 1), Among(u"\u03C0\u03B1\u03C4\u03B5\u03C1", -1, 1), Among(u"\u03C4\u03BF\u03C3", -1, 1), Among(u"\u03BD\u03C5\u03C6", -1, 1) ] a_23 = [ Among(u"\u03B1\u03BA\u03B9\u03B1", -1, 1), Among(u"\u03B1\u03C1\u03B1\u03BA\u03B9\u03B1", 0, 1), Among(u"\u03B9\u03C4\u03C3\u03B1", -1, 1), Among(u"\u03B1\u03BA\u03B9", -1, 1), Among(u"\u03B1\u03C1\u03B1\u03BA\u03B9", 3, 1), Among(u"\u03B9\u03C4\u03C3\u03C9\u03BD", -1, 1), Among(u"\u03B9\u03C4\u03C3\u03B1\u03C3", -1, 1), Among(u"\u03B9\u03C4\u03C3\u03B5\u03C3", -1, 1) ] a_24 = [ Among(u"\u03C8\u03B1\u03BB", -1, 1), Among(u"\u03B1\u03B9\u03C6\u03BD", -1, 1), Among(u"\u03BF\u03BB\u03BF", -1, 1), Among(u"\u03B9\u03C1", -1, 1) ] a_25 = [ Among(u"\u03B5", -1, 1), Among(u"\u03C0\u03B1\u03B9\u03C7\u03BD", -1, 1) ] a_26 = [ Among(u"\u03B9\u03B4\u03B9\u03B1", -1, 1), Among(u"\u03B9\u03B4\u03B9\u03C9\u03BD", -1, 1), Among(u"\u03B9\u03B4\u03B9\u03BF", -1, 1) ] a_27 = [ Among(u"\u03B9\u03B2", -1, 1), Among(u"\u03B4", -1, 1), Among(u"\u03C6\u03C1\u03B1\u03B3\u03BA", -1, 1), Among(u"\u03BB\u03C5\u03BA", -1, 1), Among(u"\u03BF\u03B2\u03B5\u03BB", -1, 1), Among(u"\u03BC\u03B7\u03BD", -1, 1), Among(u"\u03C1", -1, 1) ] a_28 = [ Among(u"\u03B9\u03C3\u03BA\u03B5", -1, 1), Among(u"\u03B9\u03C3\u03BA\u03BF", -1, 1), Among(u"\u03B9\u03C3\u03BA\u03BF\u03C3", -1, 1), Among(u"\u03B9\u03C3\u03BA\u03BF\u03C5", -1, 1) ] a_29 = [ Among(u"\u03B1\u03B4\u03C9\u03BD", -1, 1), Among(u"\u03B1\u03B4\u03B5\u03C3", -1, 1) ] a_30 = [ Among(u"\u03B3\u03B9\u03B1\u03B3\u03B9", -1, -1), Among(u"\u03B8\u03B5\u03B9", -1, -1), Among(u"\u03BF\u03BA", -1, -1), Among(u"\u03BC\u03B1\u03BC", -1, -1), Among(u"\u03BC\u03B1\u03BD", -1, -1), Among(u"\u03BC\u03C0\u03B1\u03BC\u03C0", -1, -1), Among(u"\u03C0\u03B5\u03B8\u03B5\u03C1", -1, -1), Among(u"\u03C0\u03B1\u03C4\u03B5\u03C1", -1, -1), Among(u"\u03BA\u03C5\u03C1", -1, -1), Among(u"\u03BD\u03C4\u03B1\u03BD\u03C4", -1, -1) ] a_31 = [ Among(u"\u03B5\u03B4\u03C9\u03BD", -1, 1), Among(u"\u03B5\u03B4\u03B5\u03C3", -1, 1) ] a_32 = [ Among(u"\u03BC\u03B9\u03BB", -1, 1), Among(u"\u03B4\u03B1\u03C0", -1, 1), Among(u"\u03B3\u03B7\u03C0", -1, 1), Among(u"\u03B9\u03C0", -1, 1), Among(u"\u03B5\u03BC\u03C0", -1, 1), Among(u"\u03BF\u03C0", -1, 1), Among(u"\u03BA\u03C1\u03B1\u03C3\u03C0", -1, 1), Among(u"\u03C5\u03C0", -1, 1) ] a_33 = [ Among(u"\u03BF\u03C5\u03B4\u03C9\u03BD", -1, 1), Among(u"\u03BF\u03C5\u03B4\u03B5\u03C3", -1, 1) ] a_34 = [ Among(u"\u03C4\u03C1\u03B1\u03B3", -1, 1), Among(u"\u03C6\u03B5", -1, 1), Among(u"\u03BA\u03B1\u03BB\u03B9\u03B1\u03BA", -1, 1), Among(u"\u03B1\u03C1\u03BA", -1, 1), Among(u"\u03C3\u03BA", -1, 1), Among(u"\u03C0\u03B5\u03C4\u03B1\u03BB", -1, 1), Among(u"\u03B2\u03B5\u03BB", -1, 1), Among(u"\u03BB\u03BF\u03C5\u03BB", -1, 1), Among(u"\u03C6\u03BB", -1, 1), Among(u"\u03C7\u03BD", -1, 1), Among(u"\u03C0\u03BB\u03B5\u03BE", -1, 1), Among(u"\u03C3\u03C0", -1, 1), Among(u"\u03C6\u03C1", -1, 1), Among(u"\u03C3", -1, 1), Among(u"\u03BB\u03B9\u03C7", -1, 1) ] a_35 = [ Among(u"\u03B5\u03C9\u03BD", -1, 1), Among(u"\u03B5\u03C9\u03C3", -1, 1) ] a_36 = [ Among(u"\u03B4", -1, 1), Among(u"\u03B9\u03B4", 0, 1), Among(u"\u03B8", -1, 1), Among(u"\u03B3\u03B1\u03BB", -1, 1), Among(u"\u03B5\u03BB", -1, 1), Among(u"\u03BD", -1, 1), Among(u"\u03C0", -1, 1), Among(u"\u03C0\u03B1\u03C1", -1, 1) ] a_37 = [ Among(u"\u03B9\u03B1", -1, 1), Among(u"\u03B9\u03C9\u03BD", -1, 1), Among(u"\u03B9\u03BF\u03C5", -1, 1) ] a_38 = [ Among(u"\u03B9\u03BA\u03B1", -1, 1), Among(u"\u03B9\u03BA\u03C9\u03BD", -1, 1), Among(u"\u03B9\u03BA\u03BF", -1, 1), Among(u"\u03B9\u03BA\u03BF\u03C5", -1, 1) ] a_39 = [ Among(u"\u03B1\u03B4", -1, 1), Among(u"\u03C3\u03C5\u03BD\u03B1\u03B4", 0, 1), Among(u"\u03BA\u03B1\u03C4\u03B1\u03B4", 0, 1), Among(u"\u03B1\u03BD\u03C4\u03B9\u03B4", -1, 1), Among(u"\u03B5\u03BD\u03B4", -1, 1), Among(u"\u03C6\u03C5\u03BB\u03BF\u03B4", -1, 1), Among(u"\u03C5\u03C0\u03BF\u03B4", -1, 1), Among(u"\u03C0\u03C1\u03C9\u03C4\u03BF\u03B4", -1, 1), Among(u"\u03B5\u03BE\u03C9\u03B4", -1, 1), Among(u"\u03B7\u03B8", -1, 1), Among(u"\u03B1\u03BD\u03B7\u03B8", 9, 1), Among(u"\u03BE\u03B9\u03BA", -1, 1), Among(u"\u03B1\u03BB", -1, 1), Among(u"\u03B1\u03BC\u03BC\u03BF\u03C7\u03B1\u03BB", 12, 1), Among(u"\u03C3\u03C5\u03BD\u03BF\u03BC\u03B7\u03BB", -1, 1), Among(u"\u03BC\u03C0\u03BF\u03BB", -1, 1), Among(u"\u03BC\u03BF\u03C5\u03BB", -1, 1), Among(u"\u03C4\u03C3\u03B1\u03BC", -1, 1), Among(u"\u03B2\u03C1\u03C9\u03BC", -1, 1), Among(u"\u03B1\u03BC\u03B1\u03BD", -1, 1), Among(u"\u03BC\u03C0\u03B1\u03BD", -1, 1), Among(u"\u03BA\u03B1\u03BB\u03BB\u03B9\u03BD", -1, 1), Among(u"\u03C0\u03BF\u03C3\u03C4\u03B5\u03BB\u03BD", -1, 1), Among(u"\u03C6\u03B9\u03BB\u03BF\u03BD", -1, 1), Among(u"\u03BA\u03B1\u03BB\u03C0", -1, 1), Among(u"\u03B3\u03B5\u03C1", -1, 1), Among(u"\u03C7\u03B1\u03C3", -1, 1), Among(u"\u03BC\u03C0\u03BF\u03C3", -1, 1), Among(u"\u03C0\u03BB\u03B9\u03B1\u03C4\u03C3", -1, 1), Among(u"\u03C0\u03B5\u03C4\u03C3", -1, 1), Among(u"\u03C0\u03B9\u03C4\u03C3", -1, 1), Among(u"\u03C6\u03C5\u03C3", -1, 1), Among(u"\u03BC\u03C0\u03B1\u03B3\u03B9\u03B1\u03C4", -1, 1), Among(u"\u03BD\u03B9\u03C4", -1, 1), Among(u"\u03C0\u03B9\u03BA\u03B1\u03BD\u03C4", -1, 1), Among(u"\u03C3\u03B5\u03C1\u03C4", -1, 1) ] a_40 = [ Among(u"\u03B1\u03B3\u03B1\u03BC\u03B5", -1, 1), Among(u"\u03B7\u03BA\u03B1\u03BC\u03B5", -1, 1), Among(u"\u03B7\u03B8\u03B7\u03BA\u03B1\u03BC\u03B5", 1, 1), Among(u"\u03B7\u03C3\u03B1\u03BC\u03B5", -1, 1), Among(u"\u03BF\u03C5\u03C3\u03B1\u03BC\u03B5", -1, 1) ] a_41 = [ Among(u"\u03B2\u03BF\u03C5\u03B2", -1, 1), Among(u"\u03BE\u03B5\u03B8", -1, 1), Among(u"\u03C0\u03B5\u03B8", -1, 1), Among(u"\u03B1\u03C0\u03BF\u03B8", -1, 1), Among(u"\u03B1\u03C0\u03BF\u03BA", -1, 1), Among(u"\u03BF\u03C5\u03BB", -1, 1), Among(u"\u03B1\u03BD\u03B1\u03C0", -1, 1), Among(u"\u03C0\u03B9\u03BA\u03C1", -1, 1), Among(u"\u03C0\u03BF\u03C4", -1, 1), Among(u"\u03B1\u03C0\u03BF\u03C3\u03C4", -1, 1), Among(u"\u03C7", -1, 1), Among(u"\u03C3\u03B9\u03C7", 10, 1) ] a_42 = [ Among(u"\u03C4\u03C1", -1, 1), Among(u"\u03C4\u03C3", -1, 1) ] a_43 = [ Among(u"\u03B1\u03B3\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B7\u03BA\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B7\u03B8\u03B7\u03BA\u03B1\u03BD\u03B5", 1, 1), Among(u"\u03B7\u03C3\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03BF\u03C5\u03C3\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03BF\u03BD\u03C4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B9\u03BF\u03BD\u03C4\u03B1\u03BD\u03B5", 5, 1), Among(u"\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B9\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD\u03B5", 7, 1), Among(u"\u03BF\u03C4\u03B1\u03BD\u03B5", -1, 1), Among(u"\u03B9\u03BF\u03C4\u03B1\u03BD\u03B5", 9, 1) ] a_44 = [ Among(u"\u03C4\u03B1\u03B2", -1, 1), Among(u"\u03BD\u03C4\u03B1\u03B2", 0, 1), Among(u"\u03C8\u03B7\u03BB\u03BF\u03C4\u03B1\u03B2", 0, 1), Among(u"\u03BB\u03B9\u03B2", -1, 1), Among(u"\u03BA\u03BB\u03B9\u03B2", 3, 1), Among(u"\u03BE\u03B7\u03C1\u03BF\u03BA\u03BB\u03B9\u03B2", 4, 1), Among(u"\u03B3", -1, 1), Among(u"\u03B1\u03B3", 6, 1), Among(u"\u03C4\u03C1\u03B1\u03B3", 7, 1), Among(u"\u03C4\u03C3\u03B1\u03B3", 7, 1), Among(u"\u03B1\u03B8\u03B9\u03B3\u03B3", 6, 1), Among(u"\u03C4\u03C3\u03B9\u03B3\u03B3", 6, 1), Among(u"\u03B1\u03C4\u03C3\u03B9\u03B3\u03B3", 11, 1), Among(u"\u03C3\u03C4\u03B5\u03B3", 6, 1), Among(u"\u03B1\u03C0\u03B7\u03B3", 6, 1), Among(u"\u03C3\u03B9\u03B3", 6, 1), Among(u"\u03B1\u03BD\u03BF\u03C1\u03B3", 6, 1), Among(u"\u03B5\u03BD\u03BF\u03C1\u03B3", 6, 1), Among(u"\u03BA\u03B1\u03BB\u03C0\u03BF\u03C5\u03B6", -1, 1), Among(u"\u03B8", -1, 1), Among(u"\u03BC\u03C9\u03B1\u03BC\u03B5\u03B8", 19, 1), Among(u"\u03C0\u03B9\u03B8", 19, 1), Among(u"\u03B1\u03C0\u03B9\u03B8", 21, 1), Among(u"\u03B4\u03B5\u03BA", -1, 1), Among(u"\u03C0\u03B5\u03BB\u03B5\u03BA", -1, 1), Among(u"\u03B9\u03BA", -1, 1), Among(u"\u03B1\u03BD\u03B9\u03BA", 25, 1), Among(u"\u03B2\u03BF\u03C5\u03BB\u03BA", -1, 1), Among(u"\u03B2\u03B1\u03C3\u03BA", -1, 1), Among(u"\u03B2\u03C1\u03B1\u03C7\u03C5\u03BA", -1, 1), Among(u"\u03B3\u03B1\u03BB", -1, 1), Among(u"\u03BA\u03B1\u03C4\u03B1\u03B3\u03B1\u03BB", 30, 1), Among(u"\u03BF\u03BB\u03BF\u03B3\u03B1\u03BB", 30, 1), Among(u"\u03B2\u03B1\u03B8\u03C5\u03B3\u03B1\u03BB", 30, 1), Among(u"\u03BC\u03B5\u03BB", -1, 1), Among(u"\u03BA\u03B1\u03C3\u03C4\u03B5\u03BB", -1, 1), Among(u"\u03C0\u03BF\u03C1\u03C4\u03BF\u03BB", -1, 1), Among(u"\u03C0\u03BB", -1, 1), Among(u"\u03B4\u03B9\u03C0\u03BB", 37, 1), Among(u"\u03BB\u03B1\u03BF\u03C0\u03BB", 37, 1), Among(u"\u03C8\u03C5\u03C7\u03BF\u03C0\u03BB", 37, 1), Among(u"\u03BF\u03C5\u03BB", -1, 1), Among(u"\u03BC", -1, 1), Among(u"\u03BF\u03BB\u03B9\u03B3\u03BF\u03B4\u03B1\u03BC", 42, 1), Among(u"\u03BC\u03BF\u03C5\u03C3\u03BF\u03C5\u03BB\u03BC", 42, 1), Among(u"\u03B4\u03C1\u03B1\u03B4\u03BF\u03C5\u03BC", 42, 1), Among(u"\u03B2\u03C1\u03B1\u03C7\u03BC", 42, 1), Among(u"\u03BD", -1, 1), Among(u"\u03B1\u03BC\u03B5\u03C1\u03B9\u03BA\u03B1\u03BD", 47, 1), Among(u"\u03C0", -1, 1), Among(u"\u03B1\u03B4\u03B1\u03C0", 49, 1), Among(u"\u03C7\u03B1\u03BC\u03B7\u03BB\u03BF\u03B4\u03B1\u03C0", 49, 1), Among(u"\u03C0\u03BF\u03BB\u03C5\u03B4\u03B1\u03C0", 49, 1), Among(u"\u03BA\u03BF\u03C0", 49, 1), Among(u"\u03C5\u03C0\u03BF\u03BA\u03BF\u03C0", 53, 1), Among(u"\u03C4\u03C3\u03BF\u03C0", 49, 1), Among(u"\u03C3\u03C0", 49, 1), Among(u"\u03B5\u03C1", -1, 1), Among(u"\u03B3\u03B5\u03C1", 57, 1), Among(u"\u03B2\u03B5\u03C4\u03B5\u03C1", 57, 1), Among(u"\u03BB\u03BF\u03C5\u03B8\u03B7\u03C1", -1, 1), Among(u"\u03BA\u03BF\u03C1\u03BC\u03BF\u03C1", -1, 1), Among(u"\u03C0\u03B5\u03C1\u03B9\u03C4\u03C1", -1, 1), Among(u"\u03BF\u03C5\u03C1", -1, 1), Among(u"\u03C3", -1, 1), Among(u"\u03B2\u03B1\u03C3", 64, 1), Among(u"\u03C0\u03BF\u03BB\u03B9\u03C3", 64, 1), Among(u"\u03C3\u03B1\u03C1\u03B1\u03BA\u03B1\u03C4\u03C3", 64, 1), Among(u"\u03B8\u03C5\u03C3", 64, 1), Among(u"\u03B4\u03B9\u03B1\u03C4", -1, 1), Among(u"\u03C0\u03BB\u03B1\u03C4", -1, 1), Among(u"\u03C4\u03C3\u03B1\u03C1\u03BB\u03B1\u03C4", -1, 1), Among(u"\u03C4\u03B5\u03C4", -1, 1), Among(u"\u03C0\u03BF\u03C5\u03C1\u03B9\u03C4", -1, 1), Among(u"\u03C3\u03BF\u03C5\u03BB\u03C4", -1, 1), Among(u"\u03BC\u03B1\u03B9\u03BD\u03C4", -1, 1), Among(u"\u03B6\u03C9\u03BD\u03C4", -1, 1), Among(u"\u03BA\u03B1\u03C3\u03C4", -1, 1), Among(u"\u03C6", -1, 1), Among(u"\u03B4\u03B9\u03B1\u03C6", 78, 1), Among(u"\u03C3\u03C4\u03B5\u03C6", 78, 1), Among(u"\u03C6\u03C9\u03C4\u03BF\u03C3\u03C4\u03B5\u03C6", 80, 1), Among(u"\u03C0\u03B5\u03C1\u03B7\u03C6", 78, 1), Among(u"\u03C5\u03C0\u03B5\u03C1\u03B7\u03C6", 82, 1), Among(u"\u03BA\u03BF\u03B9\u03BB\u03B1\u03C1\u03C6", 78, 1), Among(u"\u03C0\u03B5\u03BD\u03C4\u03B1\u03C1\u03C6", 78, 1), Among(u"\u03BF\u03C1\u03C6", 78, 1), Among(u"\u03C7", -1, 1), Among(u"\u03B1\u03BC\u03B7\u03C7", 87, 1), Among(u"\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 87, 1), Among(u"\u03BC\u03B5\u03B3\u03BB\u03BF\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 89, 1), Among(u"\u03BA\u03B1\u03C0\u03BD\u03BF\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 89, 1), Among(u"\u03BC\u03B9\u03BA\u03C1\u03BF\u03B2\u03B9\u03BF\u03BC\u03B7\u03C7", 89, 1), Among(u"\u03C0\u03BF\u03BB\u03C5\u03BC\u03B7\u03C7", 87, 1), Among(u"\u03BB\u03B9\u03C7", 87, 1) ] a_45 = [ Among(u"\u03B7\u03C3\u03B5\u03C4\u03B5", -1, 1) ] a_46 = [ Among(u"\u03B5\u03BD\u03B4", -1, 1), Among(u"\u03C3\u03C5\u03BD\u03B4", -1, 1), Among(u"\u03BF\u03B4", -1, 1), Among(u"\u03B4\u03B9\u03B1\u03B8", -1, 1), Among(u"\u03BA\u03B1\u03B8", -1, 1), Among(u"\u03C1\u03B1\u03B8", -1, 1), Among(u"\u03C4\u03B1\u03B8", -1, 1), Among(u"\u03C4\u03B9\u03B8", -1, 1), Among(u"\u03B5\u03BA\u03B8", -1, 1), Among(u"\u03B5\u03BD\u03B8", -1, 1), Among(u"\u03C3\u03C5\u03BD\u03B8", -1, 1), Among(u"\u03C1\u03BF\u03B8", -1, 1), Among(u"\u03C5\u03C0\u03B5\u03C1\u03B8", -1, 1), Among(u"\u03C3\u03B8", -1, 1), Among(u"\u03B5\u03C5\u03B8", -1, 1), Among(u"\u03B1\u03C1\u03BA", -1, 1), Among(u"\u03C9\u03C6\u03B5\u03BB", -1, 1), Among(u"\u03B2\u03BF\u03BB", -1, 1), Among(u"\u03B1\u03B9\u03BD", -1, 1), Among(u"\u03C0\u03BF\u03BD", -1, 1), Among(u"\u03C1\u03BF\u03BD", -1, 1), Among(u"\u03C3\u03C5\u03BD", -1, 1), Among(u"\u03B2\u03B1\u03C1", -1, 1), Among(u"\u03B2\u03C1", -1, 1), Among(u"\u03B1\u03B9\u03C1", -1, 1), Among(u"\u03C6\u03BF\u03C1", -1, 1), Among(u"\u03B5\u03C5\u03C1", -1, 1), Among(u"\u03C0\u03C5\u03C1", -1, 1), Among(u"\u03C7\u03C9\u03C1", -1, 1), Among(u"\u03BD\u03B5\u03C4", -1, 1), Among(u"\u03C3\u03C7", -1, 1) ] a_47 = [ Among(u"\u03C0\u03B1\u03B3", -1, 1), Among(u"\u03B4", -1, 1), Among(u"\u03B1\u03B4", 1, 1), Among(u"\u03B8", -1, 1), Among(u"\u03B1\u03B8", 3, 1), Among(u"\u03C4\u03BF\u03BA", -1, 1), Among(u"\u03C3\u03BA", -1, 1), Among(u"\u03C0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB", -1, 1), Among(u"\u03C3\u03BA\u03B5\u03BB", -1, 1), Among(u"\u03B1\u03C0\u03BB", -1, 1), Among(u"\u03B5\u03BC", -1, 1), Among(u"\u03B1\u03BD", -1, 1), Among(u"\u03B2\u03B5\u03BD", -1, 1), Among(u"\u03B2\u03B1\u03C1\u03BF\u03BD", -1, 1), Among(u"\u03BA\u03BF\u03C0", -1, 1), Among(u"\u03C3\u03B5\u03C1\u03C0", -1, 1), Among(u"\u03B1\u03B2\u03B1\u03C1", -1, 1), Among(u"\u03B5\u03BD\u03B1\u03C1", -1, 1), Among(u"\u03B1\u03B2\u03C1", -1, 1), Among(u"\u03BC\u03C0\u03BF\u03C1", -1, 1), Among(u"\u03B8\u03B1\u03C1\u03C1", -1, 1), Among(u"\u03BD\u03C4\u03C1", -1, 1), Among(u"\u03C5", -1, 1), Among(u"\u03BD\u03B9\u03C6", -1, 1), Among(u"\u03C3\u03C5\u03C1\u03C6", -1, 1) ] a_48 = [ Among(u"\u03BF\u03BD\u03C4\u03B1\u03C3", -1, 1), Among(u"\u03C9\u03BD\u03C4\u03B1\u03C3", -1, 1) ] a_49 = [ Among(u"\u03BF\u03BC\u03B1\u03C3\u03C4\u03B5", -1, 1), Among(u"\u03B9\u03BF\u03BC\u03B1\u03C3\u03C4\u03B5", 0, 1) ] a_50 = [ Among(u"\u03C0", -1, 1), Among(u"\u03B1\u03C0", 0, 1), Among(u"\u03B1\u03BA\u03B1\u03C4\u03B1\u03C0", 1, 1), Among(u"\u03C3\u03C5\u03BC\u03C0", 0, 1), Among(u"\u03B1\u03C3\u03C5\u03BC\u03C0", 3, 1), Among(u"\u03B1\u03BC\u03B5\u03C4\u03B1\u03BC\u03C6", -1, 1) ] a_51 = [ Among(u"\u03B6", -1, 1), Among(u"\u03B1\u03BB", -1, 1), Among(u"\u03C0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB", 1, 1), Among(u"\u03B5\u03BA\u03C4\u03B5\u03BB", -1, 1), Among(u"\u03BC", -1, 1), Among(u"\u03BE", -1, 1), Among(u"\u03C0\u03C1\u03BF", -1, 1), Among(u"\u03B1\u03C1", -1, 1), Among(u"\u03BD\u03B9\u03C3", -1, 1) ] a_52 = [ Among(u"\u03B7\u03B8\u03B7\u03BA\u03B1", -1, 1), Among(u"\u03B7\u03B8\u03B7\u03BA\u03B5", -1, 1), Among(u"\u03B7\u03B8\u03B7\u03BA\u03B5\u03C3", -1, 1) ] a_53 = [ Among(u"\u03C0\u03B9\u03B8", -1, 1), Among(u"\u03BF\u03B8", -1, 1), Among(u"\u03BD\u03B1\u03C1\u03B8", -1, 1), Among(u"\u03C3\u03BA\u03BF\u03C5\u03BB", -1, 1), Among(u"\u03C3\u03BA\u03C9\u03BB", -1, 1), Among(u"\u03C3\u03C6", -1, 1) ] a_54 = [ Among(u"\u03B8", -1, 1), Among(u"\u03B4\u03B9\u03B1\u03B8", 0, 1), Among(u"\u03C0\u03B1\u03C1\u03B1\u03BA\u03B1\u03C4\u03B1\u03B8", 0, 1), Among(u"\u03C3\u03C5\u03BD\u03B8", 0, 1), Among(u"\u03C0\u03C1\u03BF\u03C3\u03B8", 0, 1) ] a_55 = [ Among(u"\u03B7\u03BA\u03B1", -1, 1), Among(u"\u03B7\u03BA\u03B5", -1, 1), Among(u"\u03B7\u03BA\u03B5\u03C3", -1, 1) ] a_56 = [ Among(u"\u03C6\u03B1\u03B3", -1, 1), Among(u"\u03BB\u03B7\u03B3", -1, 1), Among(u"\u03C6\u03C1\u03C5\u03B4", -1, 1), Among(u"\u03BC\u03B1\u03BD\u03C4\u03B9\u03BB", -1, 1), Among(u"\u03BC\u03B1\u03BB\u03BB", -1, 1), Among(u"\u03BF\u03BC", -1, 1), Among(u"\u03B2\u03BB\u03B5\u03C0", -1, 1), Among(u"\u03C0\u03BF\u03B4\u03B1\u03C1", -1, 1), Among(u"\u03BA\u03C5\u03BC\u03B1\u03C4", -1, 1), Among(u"\u03C0\u03C1\u03C9\u03C4", -1, 1), Among(u"\u03BB\u03B1\u03C7", -1, 1), Among(u"\u03C0\u03B1\u03BD\u03C4\u03B1\u03C7", -1, 1) ] a_57 = [ Among(u"\u03C4\u03C3\u03B1", -1, 1), Among(u"\u03C7\u03B1\u03B4", -1, 1), Among(u"\u03BC\u03B5\u03B4", -1, 1), Among(u"\u03BB\u03B1\u03BC\u03C0\u03B9\u03B4", -1, 1), Among(u"\u03B4\u03B5", -1, 1), Among(u"\u03C0\u03BB\u03B5", -1, 1), Among(u"\u03BC\u03B5\u03C3\u03B1\u03B6", -1, 1), Among(u"\u03B4\u03B5\u03C3\u03C0\u03BF\u03B6", -1, 1), Among(u"\u03B1\u03B9\u03B8", -1, 1), Among(u"\u03C6\u03B1\u03C1\u03BC\u03B1\u03BA", -1, 1), Among(u"\u03B1\u03B3\u03BA", -1, 1), Among(u"\u03B1\u03BD\u03B7\u03BA", -1, 1), Among(u"\u03BB", -1, 1), Among(u"\u03BC", -1, 1), Among(u"\u03B1\u03BC", 13, 1), Among(u"\u03B2\u03C1\u03BF\u03BC", 13, 1), Among(u"\u03C5\u03C0\u03BF\u03C4\u03B5\u03B9\u03BD", -1, 1), Among(u"\u03B5\u03BA\u03BB\u03B9\u03C0", -1, 1), Among(u"\u03C1", -1, 1), Among(u"\u03B5\u03BD\u03B4\u03B9\u03B1\u03C6\u03B5\u03C1", 18, 1), Among(u"\u03B1\u03BD\u03B1\u03C1\u03C1", 18, 1), Among(u"\u03C0\u03B1\u03C4", -1, 1), Among(u"\u03BA\u03B1\u03B8\u03B1\u03C1\u03B5\u03C5", -1, 1), Among(u"\u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03B5\u03C5", -1, 1), Among(u"\u03BB\u03B5\u03C7", -1, 1) ] a_58 = [ Among(u"\u03BF\u03C5\u03C3\u03B1", -1, 1), Among(u"\u03BF\u03C5\u03C3\u03B5", -1, 1), Among(u"\u03BF\u03C5\u03C3\u03B5\u03C3", -1, 1) ] a_59 = [ Among(u"\u03C8\u03BF\u03C6", -1, -1), Among(u"\u03BD\u03B1\u03C5\u03BB\u03BF\u03C7", -1, -1) ] a_60 = [ Among(u"\u03C0\u03B5\u03BB", -1, 1), Among(u"\u03BB\u03BB", -1, 1), Among(u"\u03C3\u03BC\u03B7\u03BD", -1, 1), Among(u"\u03C1\u03C0", -1, 1), Among(u"\u03C0\u03C1", -1, 1), Among(u"\u03C6\u03C1", -1, 1), Among(u"\u03C7\u03BF\u03C1\u03C4", -1, 1), Among(u"\u03BF\u03C6", -1, 1), Among(u"\u03C3\u03C6", -1, 1), Among(u"\u03BB\u03BF\u03C7", -1, 1) ] a_61 = [ Among(u"\u03B1\u03BC\u03B1\u03BB\u03BB\u03B9", -1, 1), Among(u"\u03BB", -1, 1), Among(u"\u03B1\u03BC\u03B1\u03BB", 1, 1), Among(u"\u03BC", -1, 1), Among(u"\u03BF\u03C5\u03BB\u03B1\u03BC", 3, 1), Among(u"\u03B5\u03BD", -1, 1), Among(u"\u03B4\u03B5\u03C1\u03B2\u03B5\u03BD", 5, 1), Among(u"\u03C0", -1, 1), Among(u"\u03B1\u03B5\u03B9\u03C0", 7, 1), Among(u"\u03B1\u03C1\u03C4\u03B9\u03C0", 7, 1), Among(u"\u03C3\u03C5\u03BC\u03C0", 7, 1), Among(u"\u03BD\u03B5\u03BF\u03C0", 7, 1), Among(u"\u03BA\u03C1\u03BF\u03BA\u03B1\u03BB\u03BF\u03C0", 7, 1), Among(u"\u03BF\u03BB\u03BF\u03C0", 7, 1), Among(u"\u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03BF\u03C0", 7, 1), Among(u"\u03C3\u03B9\u03B4\u03B7\u03C1\u03BF\u03C0", 7, 1), Among(u"\u03B4\u03C1\u03BF\u03C3\u03BF\u03C0", 7, 1), Among(u"\u03B1\u03C3\u03C0", 7, 1), Among(u"\u03B1\u03BD\u03C5\u03C0", 7, 1), Among(u"\u03C1", -1, 1), Among(u"\u03B1\u03C3\u03C0\u03B1\u03C1", 19, 1), Among(u"\u03C7\u03B1\u03C1", 19, 1), Among(u"\u03B1\u03C7\u03B1\u03C1", 21, 1), Among(u"\u03B1\u03C0\u03B5\u03C1", 19, 1), Among(u"\u03C4\u03C1", 19, 1), Among(u"\u03BF\u03C5\u03C1", 19, 1), Among(u"\u03C4", -1, 1), Among(u"\u03B4\u03B9\u03B1\u03C4", 26, 1), Among(u"\u03B5\u03C0\u03B9\u03C4", 26, 1), Among(u"\u03C3\u03C5\u03BD\u03C4", 26, 1), Among(u"\u03BF\u03BC\u03BF\u03C4", 26, 1), Among(u"\u03BD\u03BF\u03BC\u03BF\u03C4", 30, 1), Among(u"\u03B1\u03C0\u03BF\u03C4", 26, 1), Among(u"\u03C5\u03C0\u03BF\u03C4", 26, 1), Among(u"\u03B1\u03B2\u03B1\u03C3\u03C4", 26, 1), Among(u"\u03B1\u03B9\u03BC\u03BF\u03C3\u03C4", 26, 1), Among(u"\u03C0\u03C1\u03BF\u03C3\u03C4", 26, 1), Among(u"\u03B1\u03BD\u03C5\u03C3\u03C4", 26, 1), Among(u"\u03BD\u03B1\u03C5", -1, 1), Among(u"\u03B1\u03C6", -1, 1), Among(u"\u03BE\u03B5\u03C6", -1, 1), Among(u"\u03B1\u03B4\u03B7\u03C6", -1, 1), Among(u"\u03C0\u03B1\u03BC\u03C6", -1, 1), Among(u"\u03C0\u03BF\u03BB\u03C5\u03C6", -1, 1) ] a_62 = [ Among(u"\u03B1\u03B3\u03B1", -1, 1), Among(u"\u03B1\u03B3\u03B5", -1, 1), Among(u"\u03B1\u03B3\u03B5\u03C3", -1, 1) ] a_63 = [ Among(u"\u03B7\u03C3\u03B1", -1, 1), Among(u"\u03B7\u03C3\u03B5", -1, 1), Among(u"\u03B7\u03C3\u03BF\u03C5", -1, 1) ] a_64 = [ Among(u"\u03BD", -1, 1), Among(u"\u03B4\u03C9\u03B4\u03B5\u03BA\u03B1\u03BD", 0, 1), Among(u"\u03B5\u03C0\u03C4\u03B1\u03BD", 0, 1), Among(u"\u03BC\u03B5\u03B3\u03B1\u03BB\u03BF\u03BD", 0, 1), Among(u"\u03B5\u03C1\u03B7\u03BC\u03BF\u03BD", 0, 1), Among(u"\u03C7\u03B5\u03C1\u03C3\u03BF\u03BD", 0, 1) ] a_65 = [ Among(u"\u03B7\u03C3\u03C4\u03B5", -1, 1) ] a_66 = [ Among(u"\u03C3\u03B2", -1, 1), Among(u"\u03B1\u03C3\u03B2", 0, 1), Among(u"\u03B1\u03C0\u03BB", -1, 1), Among(u"\u03B1\u03B5\u03B9\u03BC\u03BD", -1, 1), Among(u"\u03C7\u03C1", -1, 1), Among(u"\u03B1\u03C7\u03C1", 4, 1), Among(u"\u03BA\u03BF\u03B9\u03BD\u03BF\u03C7\u03C1", 4, 1), Among(u"\u03B4\u03C5\u03C3\u03C7\u03C1", 4, 1), Among(u"\u03B5\u03C5\u03C7\u03C1", 4, 1), Among(u"\u03C0\u03B1\u03BB\u03B9\u03BC\u03C8", -1, 1) ] a_67 = [ Among(u"\u03BF\u03C5\u03BD\u03B5", -1, 1), Among(u"\u03B7\u03B8\u03BF\u03C5\u03BD\u03B5", 0, 1), Among(u"\u03B7\u03C3\u03BF\u03C5\u03BD\u03B5", 0, 1) ] a_68 = [ Among(u"\u03C3\u03C0\u03B9", -1, 1), Among(u"\u03BD", -1, 1), Among(u"\u03B5\u03BE\u03C9\u03BD", 1, 1), Among(u"\u03C1", -1, 1), Among(u"\u03C3\u03C4\u03C1\u03B1\u03B2\u03BF\u03BC\u03BF\u03C5\u03C4\u03C3", -1, 1), Among(u"\u03BA\u03B1\u03BA\u03BF\u03BC\u03BF\u03C5\u03C4\u03C3", -1, 1) ] a_69 = [ Among(u"\u03BF\u03C5\u03BC\u03B5", -1, 1), Among(u"\u03B7\u03B8\u03BF\u03C5\u03BC\u03B5", 0, 1), Among(u"\u03B7\u03C3\u03BF\u03C5\u03BC\u03B5", 0, 1) ] a_70 = [ Among(u"\u03B1\u03B6", -1, 1), Among(u"\u03C9\u03C1\u03B9\u03BF\u03C0\u03BB", -1, 1), Among(u"\u03B1\u03C3\u03BF\u03C5\u03C3", -1, 1), Among(u"\u03C0\u03B1\u03C1\u03B1\u03C3\u03BF\u03C5\u03C3", 2, 1), Among(u"\u03B1\u03BB\u03BB\u03BF\u03C3\u03BF\u03C5\u03C3", -1, 1), Among(u"\u03C6", -1, 1), Among(u"\u03C7", -1, 1) ] a_71 = [ Among(u"\u03BC\u03B1\u03C4\u03B1", -1, 1), Among(u"\u03BC\u03B1\u03C4\u03C9\u03BD", -1, 1), Among(u"\u03BC\u03B1\u03C4\u03BF\u03C3", -1, 1) ] a_72 = [ Among(u"\u03B1", -1, 1), Among(u"\u03B9\u03BF\u03C5\u03BC\u03B1", 0, 1), Among(u"\u03BF\u03BC\u03BF\u03C5\u03BD\u03B1", 0, 1), Among(u"\u03B9\u03BF\u03BC\u03BF\u03C5\u03BD\u03B1", 2, 1), Among(u"\u03BF\u03C3\u03BF\u03C5\u03BD\u03B1", 0, 1), Among(u"\u03B9\u03BF\u03C3\u03BF\u03C5\u03BD\u03B1", 4, 1), Among(u"\u03B5", -1, 1), Among(u"\u03B1\u03B3\u03B1\u03C4\u03B5", 6, 1), Among(u"\u03B7\u03BA\u03B1\u03C4\u03B5", 6, 1), Among(u"\u03B7\u03B8\u03B7\u03BA\u03B1\u03C4\u03B5", 8, 1), Among(u"\u03B7\u03C3\u03B1\u03C4\u03B5", 6, 1), Among(u"\u03BF\u03C5\u03C3\u03B1\u03C4\u03B5", 6, 1), Among(u"\u03B5\u03B9\u03C4\u03B5", 6, 1), Among(u"\u03B7\u03B8\u03B5\u03B9\u03C4\u03B5", 12, 1), Among(u"\u03B9\u03B5\u03BC\u03B1\u03C3\u03C4\u03B5", 6, 1), Among(u"\u03BF\u03C5\u03BC\u03B1\u03C3\u03C4\u03B5", 6, 1), Among(u"\u03B9\u03BF\u03C5\u03BC\u03B1\u03C3\u03C4\u03B5", 15, 1), Among(u"\u03B9\u03B5\u03C3\u03B1\u03C3\u03C4\u03B5", 6, 1), Among(u"\u03BF\u03C3\u03B1\u03C3\u03C4\u03B5", 6, 1), Among(u"\u03B9\u03BF\u03C3\u03B1\u03C3\u03C4\u03B5", 18, 1), Among(u"\u03B7", -1, 1), Among(u"\u03B9", -1, 1), Among(u"\u03B1\u03BC\u03B1\u03B9", 21, 1), Among(u"\u03B9\u03B5\u03BC\u03B1\u03B9", 21, 1), Among(u"\u03BF\u03BC\u03B1\u03B9", 21, 1), Among(u"\u03BF\u03C5\u03BC\u03B1\u03B9", 21, 1), Among(u"\u03B1\u03C3\u03B1\u03B9", 21, 1), Among(u"\u03B5\u03C3\u03B1\u03B9", 21, 1), Among(u"\u03B9\u03B5\u03C3\u03B1\u03B9", 27, 1), Among(u"\u03B1\u03C4\u03B1\u03B9", 21, 1), Among(u"\u03B5\u03C4\u03B1\u03B9", 21, 1), Among(u"\u03B9\u03B5\u03C4\u03B1\u03B9", 30, 1), Among(u"\u03BF\u03BD\u03C4\u03B1\u03B9", 21, 1), Among(u"\u03BF\u03C5\u03BD\u03C4\u03B1\u03B9", 21, 1), Among(u"\u03B9\u03BF\u03C5\u03BD\u03C4\u03B1\u03B9", 33, 1), Among(u"\u03B5\u03B9", 21, 1), Among(u"\u03B1\u03B5\u03B9", 35, 1), Among(u"\u03B7\u03B8\u03B5\u03B9", 35, 1), Among(u"\u03B7\u03C3\u03B5\u03B9", 35, 1), Among(u"\u03BF\u03B9", 21, 1), Among(u"\u03B1\u03BD", -1, 1), Among(u"\u03B1\u03B3\u03B1\u03BD", 40, 1), Among(u"\u03B7\u03BA\u03B1\u03BD", 40, 1), Among(u"\u03B7\u03B8\u03B7\u03BA\u03B1\u03BD", 42, 1), Among(u"\u03B7\u03C3\u03B1\u03BD", 40, 1), Among(u"\u03BF\u03C5\u03C3\u03B1\u03BD", 40, 1), Among(u"\u03BF\u03BD\u03C4\u03BF\u03C5\u03C3\u03B1\u03BD", 45, 1), Among(u"\u03B9\u03BF\u03BD\u03C4\u03BF\u03C5\u03C3\u03B1\u03BD", 46, 1), Among(u"\u03BF\u03BD\u03C4\u03B1\u03BD", 40, 1), Among(u"\u03B9\u03BF\u03BD\u03C4\u03B1\u03BD", 48, 1), Among(u"\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD", 40, 1), Among(u"\u03B9\u03BF\u03C5\u03BD\u03C4\u03B1\u03BD", 50, 1), Among(u"\u03BF\u03C4\u03B1\u03BD", 40, 1), Among(u"\u03B9\u03BF\u03C4\u03B1\u03BD", 52, 1), Among(u"\u03BF\u03BC\u03B1\u03C3\u03C4\u03B1\u03BD", 40, 1), Among(u"\u03B9\u03BF\u03BC\u03B1\u03C3\u03C4\u03B1\u03BD", 54, 1), Among(u"\u03BF\u03C3\u03B1\u03C3\u03C4\u03B1\u03BD", 40, 1), Among(u"\u03B9\u03BF\u03C3\u03B1\u03C3\u03C4\u03B1\u03BD", 56, 1), Among(u"\u03BF\u03C5\u03BD", -1, 1), Among(u"\u03B7\u03B8\u03BF\u03C5\u03BD", 58, 1), Among(u"\u03BF\u03BC\u03BF\u03C5\u03BD", 58, 1), Among(u"\u03B9\u03BF\u03BC\u03BF\u03C5\u03BD", 60, 1), Among(u"\u03B7\u03C3\u03BF\u03C5\u03BD", 58, 1), Among(u"\u03BF\u03C3\u03BF\u03C5\u03BD", 58, 1), Among(u"\u03B9\u03BF\u03C3\u03BF\u03C5\u03BD", 63, 1), Among(u"\u03C9\u03BD", -1, 1), Among(u"\u03B7\u03B4\u03C9\u03BD", 65, 1), Among(u"\u03BF", -1, 1), Among(u"\u03B1\u03C3", -1, 1), Among(u"\u03B5\u03C3", -1, 1), Among(u"\u03B7\u03B4\u03B5\u03C3", 69, 1), Among(u"\u03B7\u03C3\u03B5\u03C3", 69, 1), Among(u"\u03B7\u03C3", -1, 1), Among(u"\u03B5\u03B9\u03C3", -1, 1), Among(u"\u03B7\u03B8\u03B5\u03B9\u03C3", 73, 1), Among(u"\u03BF\u03C3", -1, 1), Among(u"\u03C5\u03C3", -1, 1), Among(u"\u03BF\u03C5\u03C3", 76, 1), Among(u"\u03C5", -1, 1), Among(u"\u03BF\u03C5", 78, 1), Among(u"\u03C9", -1, 1), Among(u"\u03B1\u03C9", 80, 1), Among(u"\u03B7\u03B8\u03C9", 80, 1), Among(u"\u03B7\u03C3\u03C9", 80, 1) ] a_73 = [ Among(u"\u03BF\u03C4\u03B5\u03C1", -1, 1), Among(u"\u03B5\u03C3\u03C4\u03B5\u03C1", -1, 1), Among(u"\u03C5\u03C4\u03B5\u03C1", -1, 1), Among(u"\u03C9\u03C4\u03B5\u03C1", -1, 1), Among(u"\u03BF\u03C4\u03B1\u03C4", -1, 1), Among(u"\u03B5\u03C3\u03C4\u03B1\u03C4", -1, 1), Among(u"\u03C5\u03C4\u03B1\u03C4", -1, 1), Among(u"\u03C9\u03C4\u03B1\u03C4", -1, 1) ] g_v = [81, 65, 16, 1] g_v2 = [81, 65, 0, 1] B_test1 = False def __r_has_min_length(self): # (, line 108 if not len(self.current) >= 3: return False return True def __r_tolower(self): # (, line 112 # repeat, line 113 while True: v_1 = self.limit - self.cursor try: # (, line 113 # [, line 114 self.ket = self.cursor # substring, line 114 among_var = self.find_among_b(GreekStemmer.a_0) if among_var == 0: raise lab0() # ], line 114 self.bra = self.cursor if among_var == 1: # (, line 115 # <-, line 115 if not self.slice_from(u"\u03B1"): return False elif among_var == 2: # (, line 116 # <-, line 116 if not self.slice_from(u"\u03B2"): return False elif among_var == 3: # (, line 117 # <-, line 117 if not self.slice_from(u"\u03B3"): return False elif among_var == 4: # (, line 118 # <-, line 118 if not self.slice_from(u"\u03B4"): return False elif among_var == 5: # (, line 119 # <-, line 119 if not self.slice_from(u"\u03B5"): return False elif among_var == 6: # (, line 120 # <-, line 120 if not self.slice_from(u"\u03B6"): return False elif among_var == 7: # (, line 121 # <-, line 121 if not self.slice_from(u"\u03B7"): return False elif among_var == 8: # (, line 122 # <-, line 122 if not self.slice_from(u"\u03B8"): return False elif among_var == 9: # (, line 123 # <-, line 123 if not self.slice_from(u"\u03B9"): return False elif among_var == 10: # (, line 124 # <-, line 124 if not self.slice_from(u"\u03BA"): return False elif among_var == 11: # (, line 125 # <-, line 125 if not self.slice_from(u"\u03BB"): return False elif among_var == 12: # (, line 126 # <-, line 126 if not self.slice_from(u"\u03BC"): return False elif among_var == 13: # (, line 127 # <-, line 127 if not self.slice_from(u"\u03BD"): return False elif among_var == 14: # (, line 128 # <-, line 128 if not self.slice_from(u"\u03BE"): return False elif among_var == 15: # (, line 129 # <-, line 129 if not self.slice_from(u"\u03BF"): return False elif among_var == 16: # (, line 130 # <-, line 130 if not self.slice_from(u"\u03C0"): return False elif among_var == 17: # (, line 131 # <-, line 131 if not self.slice_from(u"\u03C1"): return False elif among_var == 18: # (, line 132 # <-, line 132 if not self.slice_from(u"\u03C3"): return False elif among_var == 19: # (, line 133 # <-, line 133 if not self.slice_from(u"\u03C4"): return False elif among_var == 20: # (, line 134 # <-, line 134 if not self.slice_from(u"\u03C5"): return False elif among_var == 21: # (, line 135 # <-, line 135 if not self.slice_from(u"\u03C6"): return False elif among_var == 22: # (, line 136 # <-, line 136 if not self.slice_from(u"\u03C7"): return False elif among_var == 23: # (, line 137 # <-, line 137 if not self.slice_from(u"\u03C8"): return False elif among_var == 24: # (, line 138 # <-, line 138 if not self.slice_from(u"\u03C9"): return False elif among_var == 25: # (, line 160 # next, line 160 if self.cursor <= self.limit_backward: raise lab0() self.cursor -= 1 continue except lab0: pass self.cursor = self.limit - v_1 break return True def __r_step1(self): # (, line 165 # [, line 166 self.ket = self.cursor # substring, line 166 among_var = self.find_among_b(GreekStemmer.a_1) if among_var == 0: return False # ], line 166 self.bra = self.cursor if among_var == 1: # (, line 167 # <-, line 167 if not self.slice_from(u"\u03C6\u03B1"): return False elif among_var == 2: # (, line 168 # <-, line 168 if not self.slice_from(u"\u03C3\u03BA\u03B1"): return False elif among_var == 3: # (, line 169 # <-, line 169 if not self.slice_from(u"\u03BF\u03BB\u03BF"): return False elif among_var == 4: # (, line 170 # <-, line 170 if not self.slice_from(u"\u03C3\u03BF"): return False elif among_var == 5: # (, line 171 # <-, line 171 if not self.slice_from(u"\u03C4\u03B1\u03C4\u03BF"): return False elif among_var == 6: # (, line 172 # <-, line 172 if not self.slice_from(u"\u03BA\u03C1\u03B5"): return False elif among_var == 7: # (, line 173 # <-, line 173 if not self.slice_from(u"\u03C0\u03B5\u03C1"): return False elif among_var == 8: # (, line 174 # <-, line 174 if not self.slice_from(u"\u03C4\u03B5\u03C1"): return False elif among_var == 9: # (, line 175 # <-, line 175 if not self.slice_from(u"\u03C6\u03C9"): return False elif among_var == 10: # (, line 176 # <-, line 176 if not self.slice_from(u"\u03BA\u03B1\u03B8\u03B5\u03C3\u03C4"): return False elif among_var == 11: # (, line 177 # <-, line 177 if not self.slice_from(u"\u03B3\u03B5\u03B3\u03BF\u03BD"): return False # unset test1, line 179 self.B_test1 = False return True def __r_steps1(self): # (, line 182 # [, line 183 self.ket = self.cursor # substring, line 183 if self.find_among_b(GreekStemmer.a_4) == 0: return False # ], line 183 self.bra = self.cursor # (, line 185 # delete, line 186 if not self.slice_del(): return False # unset test1, line 187 self.B_test1 = False # or, line 191 try: v_1 = self.limit - self.cursor try: # (, line 188 # [, line 188 self.ket = self.cursor # ], line 188 self.bra = self.cursor # substring, line 188 if self.find_among_b(GreekStemmer.a_2) == 0: raise lab1() # atlimit, line 188 if self.cursor > self.limit_backward: raise lab1() # (, line 190 # <-, line 190 if not self.slice_from(u"\u03B9"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 192 # [, line 192 self.ket = self.cursor # ], line 192 self.bra = self.cursor # substring, line 192 if self.find_among_b(GreekStemmer.a_3) == 0: return False # atlimit, line 192 if self.cursor > self.limit_backward: return False # (, line 196 # <-, line 196 if not self.slice_from(u"\u03B9\u03B6"): return False except lab0: pass return True def __r_steps2(self): # (, line 202 # [, line 203 self.ket = self.cursor # substring, line 203 if self.find_among_b(GreekStemmer.a_6) == 0: return False # ], line 203 self.bra = self.cursor # (, line 204 # delete, line 205 if not self.slice_del(): return False # unset test1, line 206 self.B_test1 = False # [, line 207 self.ket = self.cursor # ], line 207 self.bra = self.cursor # substring, line 207 if self.find_among_b(GreekStemmer.a_5) == 0: return False # atlimit, line 207 if self.cursor > self.limit_backward: return False # (, line 208 # <-, line 208 if not self.slice_from(u"\u03C9\u03BD"): return False return True def __r_steps3(self): # (, line 214 # [, line 215 self.ket = self.cursor # substring, line 215 if self.find_among_b(GreekStemmer.a_9) == 0: return False # ], line 215 self.bra = self.cursor # (, line 216 # delete, line 217 if not self.slice_del(): return False # unset test1, line 218 self.B_test1 = False # or, line 219 try: v_1 = self.limit - self.cursor try: # (, line 219 # literal, line 219 if not self.eq_s_b(u"\u03B9\u03C3\u03B1"): raise lab1() # atlimit, line 219 if self.cursor > self.limit_backward: raise lab1() # <-, line 219 if not self.slice_from(u"\u03B9\u03C3"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 220 # [, line 220 self.ket = self.cursor # ], line 220 self.bra = self.cursor # substring, line 220 if self.find_among_b(GreekStemmer.a_7) == 0: raise lab2() # atlimit, line 220 if self.cursor > self.limit_backward: raise lab2() # (, line 224 # <-, line 224 if not self.slice_from(u"\u03B9"): return False raise lab0() except lab2: pass self.cursor = self.limit - v_1 # (, line 226 # [, line 226 self.ket = self.cursor # ], line 226 self.bra = self.cursor # substring, line 226 if self.find_among_b(GreekStemmer.a_8) == 0: return False # atlimit, line 226 if self.cursor > self.limit_backward: return False # (, line 229 # <-, line 229 if not self.slice_from(u"\u03B9\u03C3"): return False except lab0: pass return True def __r_steps4(self): # (, line 235 # [, line 236 self.ket = self.cursor # substring, line 236 if self.find_among_b(GreekStemmer.a_11) == 0: return False # ], line 236 self.bra = self.cursor # (, line 237 # delete, line 238 if not self.slice_del(): return False # unset test1, line 239 self.B_test1 = False # [, line 240 self.ket = self.cursor # ], line 240 self.bra = self.cursor # substring, line 240 if self.find_among_b(GreekStemmer.a_10) == 0: return False # atlimit, line 240 if self.cursor > self.limit_backward: return False # (, line 244 # <-, line 244 if not self.slice_from(u"\u03B9"): return False return True def __r_steps5(self): # (, line 250 # [, line 251 self.ket = self.cursor # substring, line 251 if self.find_among_b(GreekStemmer.a_14) == 0: return False # ], line 251 self.bra = self.cursor # (, line 253 # delete, line 254 if not self.slice_del(): return False # unset test1, line 255 self.B_test1 = False # or, line 259 try: v_1 = self.limit - self.cursor try: # (, line 256 # [, line 256 self.ket = self.cursor # ], line 256 self.bra = self.cursor # substring, line 256 if self.find_among_b(GreekStemmer.a_12) == 0: raise lab1() # atlimit, line 256 if self.cursor > self.limit_backward: raise lab1() # (, line 258 # <-, line 258 if not self.slice_from(u"\u03B9"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 260 # [, line 260 self.ket = self.cursor # ], line 260 self.bra = self.cursor # substring, line 260 if self.find_among_b(GreekStemmer.a_13) == 0: return False # atlimit, line 260 if self.cursor > self.limit_backward: return False # (, line 264 # <-, line 264 if not self.slice_from(u"\u03B9\u03C3\u03C4"): return False except lab0: pass return True def __r_steps6(self): # (, line 270 # [, line 271 self.ket = self.cursor # substring, line 271 if self.find_among_b(GreekStemmer.a_18) == 0: return False # ], line 271 self.bra = self.cursor # (, line 272 # delete, line 273 if not self.slice_del(): return False # unset test1, line 274 self.B_test1 = False # or, line 278 try: v_1 = self.limit - self.cursor try: # (, line 275 # [, line 275 self.ket = self.cursor # ], line 275 self.bra = self.cursor # substring, line 275 if self.find_among_b(GreekStemmer.a_15) == 0: raise lab1() # atlimit, line 275 if self.cursor > self.limit_backward: raise lab1() # (, line 277 # <-, line 277 if not self.slice_from(u"\u03B9\u03C3\u03BC"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 279 # [, line 279 self.ket = self.cursor # ], line 279 self.bra = self.cursor # substring, line 279 if self.find_among_b(GreekStemmer.a_16) == 0: raise lab2() # atlimit, line 279 if self.cursor > self.limit_backward: raise lab2() # (, line 281 # <-, line 281 if not self.slice_from(u"\u03B9"): return False raise lab0() except lab2: pass self.cursor = self.limit - v_1 # (, line 283 # [, line 283 self.ket = self.cursor # substring, line 283 among_var = self.find_among_b(GreekStemmer.a_17) if among_var == 0: return False # ], line 283 self.bra = self.cursor if among_var == 1: # (, line 284 # <-, line 284 if not self.slice_from(u"\u03B1\u03B3\u03BD\u03C9\u03C3\u03C4"): return False elif among_var == 2: # (, line 285 # <-, line 285 if not self.slice_from(u"\u03B1\u03C4\u03BF\u03BC"): return False elif among_var == 3: # (, line 286 # <-, line 286 if not self.slice_from(u"\u03B3\u03BD\u03C9\u03C3\u03C4"): return False elif among_var == 4: # (, line 287 # <-, line 287 if not self.slice_from(u"\u03B5\u03B8\u03BD"): return False elif among_var == 5: # (, line 288 # <-, line 288 if not self.slice_from(u"\u03B5\u03BA\u03BB\u03B5\u03BA\u03C4"): return False elif among_var == 6: # (, line 289 # <-, line 289 if not self.slice_from(u"\u03C3\u03BA\u03B5\u03C0\u03C4"): return False elif among_var == 7: # (, line 290 # <-, line 290 if not self.slice_from(u"\u03C4\u03BF\u03C0"): return False elif among_var == 8: # (, line 291 # <-, line 291 if not self.slice_from(u"\u03B1\u03BB\u03B5\u03BE\u03B1\u03BD\u03B4\u03C1"): return False elif among_var == 9: # (, line 292 # <-, line 292 if not self.slice_from(u"\u03B2\u03C5\u03B6\u03B1\u03BD\u03C4"): return False elif among_var == 10: # (, line 293 # <-, line 293 if not self.slice_from(u"\u03B8\u03B5\u03B1\u03C4\u03C1"): return False except lab0: pass return True def __r_steps7(self): # (, line 299 # [, line 300 self.ket = self.cursor # substring, line 300 if self.find_among_b(GreekStemmer.a_20) == 0: return False # ], line 300 self.bra = self.cursor # (, line 301 # delete, line 302 if not self.slice_del(): return False # unset test1, line 303 self.B_test1 = False # [, line 304 self.ket = self.cursor # ], line 304 self.bra = self.cursor # substring, line 304 if self.find_among_b(GreekStemmer.a_19) == 0: return False # atlimit, line 304 if self.cursor > self.limit_backward: return False # (, line 306 # <-, line 306 if not self.slice_from(u"\u03B1\u03C1\u03B1\u03BA"): return False return True def __r_steps8(self): # (, line 312 # [, line 313 self.ket = self.cursor # substring, line 313 if self.find_among_b(GreekStemmer.a_23) == 0: return False # ], line 313 self.bra = self.cursor # (, line 314 # delete, line 315 if not self.slice_del(): return False # unset test1, line 316 self.B_test1 = False # or, line 323 try: v_1 = self.limit - self.cursor try: # (, line 317 # [, line 317 self.ket = self.cursor # ], line 317 self.bra = self.cursor # substring, line 317 if self.find_among_b(GreekStemmer.a_21) == 0: raise lab1() # atlimit, line 317 if self.cursor > self.limit_backward: raise lab1() # (, line 322 # <-, line 322 if not self.slice_from(u"\u03B1\u03BA"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 324 # [, line 324 self.ket = self.cursor # ], line 324 self.bra = self.cursor # substring, line 324 if self.find_among_b(GreekStemmer.a_22) == 0: raise lab2() # atlimit, line 324 if self.cursor > self.limit_backward: raise lab2() # (, line 327 # <-, line 327 if not self.slice_from(u"\u03B9\u03C4\u03C3"): return False raise lab0() except lab2: pass self.cursor = self.limit - v_1 # (, line 329 # [, line 329 self.ket = self.cursor # ], line 329 self.bra = self.cursor # literal, line 329 if not self.eq_s_b(u"\u03BA\u03BF\u03C1"): return False # <-, line 329 if not self.slice_from(u"\u03B9\u03C4\u03C3"): return False except lab0: pass return True def __r_steps9(self): # (, line 334 # [, line 335 self.ket = self.cursor # substring, line 335 if self.find_among_b(GreekStemmer.a_26) == 0: return False # ], line 335 self.bra = self.cursor # (, line 336 # delete, line 337 if not self.slice_del(): return False # unset test1, line 338 self.B_test1 = False # or, line 341 try: v_1 = self.limit - self.cursor try: # (, line 339 # [, line 339 self.ket = self.cursor # ], line 339 self.bra = self.cursor # substring, line 339 if self.find_among_b(GreekStemmer.a_24) == 0: raise lab1() # atlimit, line 339 if self.cursor > self.limit_backward: raise lab1() # (, line 340 # <-, line 340 if not self.slice_from(u"\u03B9\u03B4"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 342 # [, line 342 self.ket = self.cursor # ], line 342 self.bra = self.cursor # substring, line 342 if self.find_among_b(GreekStemmer.a_25) == 0: return False # (, line 343 # <-, line 343 if not self.slice_from(u"\u03B9\u03B4"): return False except lab0: pass return True def __r_steps10(self): # (, line 349 # [, line 350 self.ket = self.cursor # substring, line 350 if self.find_among_b(GreekStemmer.a_28) == 0: return False # ], line 350 self.bra = self.cursor # (, line 351 # delete, line 352 if not self.slice_del(): return False # unset test1, line 353 self.B_test1 = False # [, line 354 self.ket = self.cursor # ], line 354 self.bra = self.cursor # substring, line 354 if self.find_among_b(GreekStemmer.a_27) == 0: return False # atlimit, line 354 if self.cursor > self.limit_backward: return False # (, line 356 # <-, line 356 if not self.slice_from(u"\u03B9\u03C3\u03BA"): return False return True def __r_step2a(self): # (, line 362 # [, line 363 self.ket = self.cursor # substring, line 363 if self.find_among_b(GreekStemmer.a_29) == 0: return False # ], line 363 self.bra = self.cursor # (, line 364 # delete, line 364 if not self.slice_del(): return False # not, line 366 v_1 = self.limit - self.cursor try: # (, line 366 # [, line 366 self.ket = self.cursor # substring, line 366 if self.find_among_b(GreekStemmer.a_30) == 0: raise lab0() # ], line 366 self.bra = self.cursor return False except lab0: pass self.cursor = self.limit - v_1 # <+, line 369 c = self.cursor self.insert(self.cursor, self.cursor, u"\u03B1\u03B4") self.cursor = c return True def __r_step2b(self): # (, line 372 # [, line 373 self.ket = self.cursor # substring, line 373 if self.find_among_b(GreekStemmer.a_31) == 0: return False # ], line 373 self.bra = self.cursor # (, line 374 # delete, line 374 if not self.slice_del(): return False # [, line 376 self.ket = self.cursor # ], line 376 self.bra = self.cursor # substring, line 376 if self.find_among_b(GreekStemmer.a_32) == 0: return False # (, line 377 # <-, line 377 if not self.slice_from(u"\u03B5\u03B4"): return False return True def __r_step2c(self): # (, line 381 # [, line 382 self.ket = self.cursor # substring, line 382 if self.find_among_b(GreekStemmer.a_33) == 0: return False # ], line 382 self.bra = self.cursor # (, line 383 # delete, line 383 if not self.slice_del(): return False # [, line 385 self.ket = self.cursor # ], line 385 self.bra = self.cursor # substring, line 385 if self.find_among_b(GreekStemmer.a_34) == 0: return False # (, line 387 # <-, line 387 if not self.slice_from(u"\u03BF\u03C5\u03B4"): return False return True def __r_step2d(self): # (, line 391 # [, line 392 self.ket = self.cursor # substring, line 392 if self.find_among_b(GreekStemmer.a_35) == 0: return False # ], line 392 self.bra = self.cursor # (, line 393 # delete, line 393 if not self.slice_del(): return False # unset test1, line 393 self.B_test1 = False # [, line 395 self.ket = self.cursor # ], line 395 self.bra = self.cursor # substring, line 395 if self.find_among_b(GreekStemmer.a_36) == 0: return False # atlimit, line 395 if self.cursor > self.limit_backward: return False # (, line 396 # <-, line 396 if not self.slice_from(u"\u03B5"): return False return True def __r_step3(self): # (, line 400 # [, line 401 self.ket = self.cursor # substring, line 401 if self.find_among_b(GreekStemmer.a_37) == 0: return False # ], line 401 self.bra = self.cursor # (, line 402 # delete, line 402 if not self.slice_del(): return False # unset test1, line 402 self.B_test1 = False # (, line 404 # [, line 404 self.ket = self.cursor # ], line 404 self.bra = self.cursor if not self.in_grouping_b(GreekStemmer.g_v, 945, 969): return False # <-, line 404 if not self.slice_from(u"\u03B9"): return False return True def __r_step4(self): # (, line 407 # [, line 408 self.ket = self.cursor # substring, line 408 if self.find_among_b(GreekStemmer.a_38) == 0: return False # ], line 408 self.bra = self.cursor # (, line 409 # delete, line 409 if not self.slice_del(): return False # unset test1, line 409 self.B_test1 = False # or, line 411 try: v_1 = self.limit - self.cursor try: # (, line 411 # [, line 411 self.ket = self.cursor # ], line 411 self.bra = self.cursor if not self.in_grouping_b(GreekStemmer.g_v, 945, 969): raise lab1() # <-, line 411 if not self.slice_from(u"\u03B9\u03BA"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 # [, line 412 self.ket = self.cursor except lab0: pass # ], line 412 self.bra = self.cursor # substring, line 412 if self.find_among_b(GreekStemmer.a_39) == 0: return False # atlimit, line 412 if self.cursor > self.limit_backward: return False # (, line 417 # <-, line 417 if not self.slice_from(u"\u03B9\u03BA"): return False return True def __r_step5a(self): # (, line 421 # do, line 422 v_1 = self.limit - self.cursor try: # (, line 422 # literal, line 422 if not self.eq_s_b(u"\u03B1\u03B3\u03B1\u03BC\u03B5"): raise lab0() # atlimit, line 422 if self.cursor > self.limit_backward: raise lab0() # <-, line 422 if not self.slice_from(u"\u03B1\u03B3\u03B1\u03BC"): return False except lab0: pass self.cursor = self.limit - v_1 # do, line 423 v_2 = self.limit - self.cursor try: # (, line 423 # [, line 424 self.ket = self.cursor # substring, line 424 if self.find_among_b(GreekStemmer.a_40) == 0: raise lab1() # ], line 424 self.bra = self.cursor # (, line 425 # delete, line 425 if not self.slice_del(): return False # unset test1, line 425 self.B_test1 = False except lab1: pass self.cursor = self.limit - v_2 # [, line 428 self.ket = self.cursor # literal, line 428 if not self.eq_s_b(u"\u03B1\u03BC\u03B5"): return False # ], line 428 self.bra = self.cursor # delete, line 429 if not self.slice_del(): return False # unset test1, line 430 self.B_test1 = False # [, line 431 self.ket = self.cursor # ], line 431 self.bra = self.cursor # substring, line 431 if self.find_among_b(GreekStemmer.a_41) == 0: return False # atlimit, line 431 if self.cursor > self.limit_backward: return False # (, line 433 # <-, line 433 if not self.slice_from(u"\u03B1\u03BC"): return False return True def __r_step5b(self): # (, line 437 # do, line 438 v_1 = self.limit - self.cursor try: # (, line 438 # [, line 439 self.ket = self.cursor # substring, line 439 if self.find_among_b(GreekStemmer.a_43) == 0: raise lab0() # ], line 439 self.bra = self.cursor # (, line 441 # delete, line 442 if not self.slice_del(): return False # unset test1, line 443 self.B_test1 = False # [, line 444 self.ket = self.cursor # ], line 444 self.bra = self.cursor # substring, line 444 if self.find_among_b(GreekStemmer.a_42) == 0: raise lab0() # atlimit, line 444 if self.cursor > self.limit_backward: raise lab0() # (, line 445 # <-, line 445 if not self.slice_from(u"\u03B1\u03B3\u03B1\u03BD"): return False except lab0: pass self.cursor = self.limit - v_1 # [, line 450 self.ket = self.cursor # literal, line 450 if not self.eq_s_b(u"\u03B1\u03BD\u03B5"): return False # ], line 450 self.bra = self.cursor # delete, line 451 if not self.slice_del(): return False # unset test1, line 452 self.B_test1 = False # or, line 453 try: v_2 = self.limit - self.cursor try: # (, line 453 # [, line 453 self.ket = self.cursor # ], line 453 self.bra = self.cursor if not self.in_grouping_b(GreekStemmer.g_v2, 945, 969): raise lab2() # <-, line 453 if not self.slice_from(u"\u03B1\u03BD"): return False raise lab1() except lab2: pass self.cursor = self.limit - v_2 # [, line 454 self.ket = self.cursor except lab1: pass # ], line 454 self.bra = self.cursor # substring, line 454 if self.find_among_b(GreekStemmer.a_44) == 0: return False # atlimit, line 454 if self.cursor > self.limit_backward: return False # (, line 471 # <-, line 471 if not self.slice_from(u"\u03B1\u03BD"): return False return True def __r_step5c(self): # (, line 475 # do, line 476 v_1 = self.limit - self.cursor try: # (, line 476 # [, line 477 self.ket = self.cursor # substring, line 477 if self.find_among_b(GreekStemmer.a_45) == 0: raise lab0() # ], line 477 self.bra = self.cursor # (, line 478 # delete, line 478 if not self.slice_del(): return False # unset test1, line 478 self.B_test1 = False except lab0: pass self.cursor = self.limit - v_1 # [, line 481 self.ket = self.cursor # literal, line 481 if not self.eq_s_b(u"\u03B5\u03C4\u03B5"): return False # ], line 481 self.bra = self.cursor # delete, line 482 if not self.slice_del(): return False # unset test1, line 483 self.B_test1 = False # or, line 484 try: v_2 = self.limit - self.cursor try: # (, line 484 # [, line 484 self.ket = self.cursor # ], line 484 self.bra = self.cursor if not self.in_grouping_b(GreekStemmer.g_v2, 945, 969): raise lab2() # <-, line 484 if not self.slice_from(u"\u03B5\u03C4"): return False raise lab1() except lab2: pass self.cursor = self.limit - v_2 try: # (, line 485 # [, line 485 self.ket = self.cursor # ], line 485 self.bra = self.cursor # substring, line 485 if self.find_among_b(GreekStemmer.a_46) == 0: raise lab3() # (, line 489 # <-, line 489 if not self.slice_from(u"\u03B5\u03C4"): return False raise lab1() except lab3: pass self.cursor = self.limit - v_2 # [, line 491 self.ket = self.cursor except lab1: pass # ], line 491 self.bra = self.cursor # substring, line 491 if self.find_among_b(GreekStemmer.a_47) == 0: return False # atlimit, line 491 if self.cursor > self.limit_backward: return False # (, line 495 # <-, line 495 if not self.slice_from(u"\u03B5\u03C4"): return False return True def __r_step5d(self): # (, line 499 # [, line 500 self.ket = self.cursor # substring, line 500 if self.find_among_b(GreekStemmer.a_48) == 0: return False # ], line 500 self.bra = self.cursor # (, line 501 # delete, line 502 if not self.slice_del(): return False # unset test1, line 503 self.B_test1 = False # or, line 504 try: v_1 = self.limit - self.cursor try: # (, line 504 # [, line 504 self.ket = self.cursor # ], line 504 self.bra = self.cursor # literal, line 504 if not self.eq_s_b(u"\u03B1\u03C1\u03C7"): raise lab1() # atlimit, line 504 if self.cursor > self.limit_backward: raise lab1() # <-, line 504 if not self.slice_from(u"\u03BF\u03BD\u03C4"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 505 # [, line 505 self.ket = self.cursor # ], line 505 self.bra = self.cursor # literal, line 505 if not self.eq_s_b(u"\u03BA\u03C1\u03B5"): return False # <-, line 505 if not self.slice_from(u"\u03C9\u03BD\u03C4"): return False except lab0: pass return True def __r_step5e(self): # (, line 510 # [, line 511 self.ket = self.cursor # substring, line 511 if self.find_among_b(GreekStemmer.a_49) == 0: return False # ], line 511 self.bra = self.cursor # (, line 512 # delete, line 513 if not self.slice_del(): return False # unset test1, line 514 self.B_test1 = False # (, line 515 # [, line 515 self.ket = self.cursor # ], line 515 self.bra = self.cursor # literal, line 515 if not self.eq_s_b(u"\u03BF\u03BD"): return False # atlimit, line 515 if self.cursor > self.limit_backward: return False # <-, line 515 if not self.slice_from(u"\u03BF\u03BC\u03B1\u03C3\u03C4"): return False return True def __r_step5f(self): # (, line 520 # do, line 521 v_1 = self.limit - self.cursor try: # (, line 521 # [, line 522 self.ket = self.cursor # literal, line 522 if not self.eq_s_b(u"\u03B9\u03B5\u03C3\u03C4\u03B5"): raise lab0() # ], line 522 self.bra = self.cursor # delete, line 523 if not self.slice_del(): return False # unset test1, line 524 self.B_test1 = False # [, line 525 self.ket = self.cursor # ], line 525 self.bra = self.cursor # substring, line 525 if self.find_among_b(GreekStemmer.a_50) == 0: raise lab0() # atlimit, line 525 if self.cursor > self.limit_backward: raise lab0() # (, line 526 # <-, line 526 if not self.slice_from(u"\u03B9\u03B5\u03C3\u03C4"): return False except lab0: pass self.cursor = self.limit - v_1 # [, line 529 self.ket = self.cursor # literal, line 529 if not self.eq_s_b(u"\u03B5\u03C3\u03C4\u03B5"): return False # ], line 529 self.bra = self.cursor # delete, line 530 if not self.slice_del(): return False # unset test1, line 531 self.B_test1 = False # [, line 532 self.ket = self.cursor # ], line 532 self.bra = self.cursor # substring, line 532 if self.find_among_b(GreekStemmer.a_51) == 0: return False # atlimit, line 532 if self.cursor > self.limit_backward: return False # (, line 534 # <-, line 534 if not self.slice_from(u"\u03B9\u03B5\u03C3\u03C4"): return False return True def __r_step5g(self): # (, line 538 # do, line 539 v_1 = self.limit - self.cursor try: # (, line 539 # [, line 540 self.ket = self.cursor # substring, line 540 if self.find_among_b(GreekStemmer.a_52) == 0: raise lab0() # ], line 540 self.bra = self.cursor # (, line 541 # delete, line 541 if not self.slice_del(): return False # unset test1, line 541 self.B_test1 = False except lab0: pass self.cursor = self.limit - v_1 # [, line 544 self.ket = self.cursor # substring, line 544 if self.find_among_b(GreekStemmer.a_55) == 0: return False # ], line 544 self.bra = self.cursor # (, line 545 # delete, line 546 if not self.slice_del(): return False # unset test1, line 547 self.B_test1 = False # or, line 550 try: v_2 = self.limit - self.cursor try: # (, line 548 # [, line 548 self.ket = self.cursor # ], line 548 self.bra = self.cursor # substring, line 548 if self.find_among_b(GreekStemmer.a_53) == 0: raise lab2() # (, line 549 # <-, line 549 if not self.slice_from(u"\u03B7\u03BA"): return False raise lab1() except lab2: pass self.cursor = self.limit - v_2 # (, line 551 # [, line 551 self.ket = self.cursor # ], line 551 self.bra = self.cursor # substring, line 551 if self.find_among_b(GreekStemmer.a_54) == 0: return False # atlimit, line 551 if self.cursor > self.limit_backward: return False # (, line 552 # <-, line 552 if not self.slice_from(u"\u03B7\u03BA"): return False except lab1: pass return True def __r_step5h(self): # (, line 558 # [, line 559 self.ket = self.cursor # substring, line 559 if self.find_among_b(GreekStemmer.a_58) == 0: return False # ], line 559 self.bra = self.cursor # (, line 560 # delete, line 561 if not self.slice_del(): return False # unset test1, line 562 self.B_test1 = False # or, line 567 try: v_1 = self.limit - self.cursor try: # (, line 563 # [, line 563 self.ket = self.cursor # ], line 563 self.bra = self.cursor # substring, line 563 if self.find_among_b(GreekStemmer.a_56) == 0: raise lab1() # (, line 565 # <-, line 565 if not self.slice_from(u"\u03BF\u03C5\u03C3"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 568 # [, line 568 self.ket = self.cursor # ], line 568 self.bra = self.cursor # substring, line 568 if self.find_among_b(GreekStemmer.a_57) == 0: return False # atlimit, line 568 if self.cursor > self.limit_backward: return False # (, line 572 # <-, line 572 if not self.slice_from(u"\u03BF\u03C5\u03C3"): return False except lab0: pass return True def __r_step5i(self): # (, line 578 # [, line 579 self.ket = self.cursor # substring, line 579 if self.find_among_b(GreekStemmer.a_62) == 0: return False # ], line 579 self.bra = self.cursor # (, line 580 # delete, line 581 if not self.slice_del(): return False # unset test1, line 582 self.B_test1 = False # or, line 583 try: v_1 = self.limit - self.cursor try: # (, line 583 # [, line 583 self.ket = self.cursor # ], line 583 self.bra = self.cursor # literal, line 583 if not self.eq_s_b(u"\u03BA\u03BF\u03BB\u03BB"): raise lab1() # <-, line 583 if not self.slice_from(u"\u03B1\u03B3"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 583 # not, line 584 v_2 = self.limit - self.cursor try: # (, line 584 # [, line 584 self.ket = self.cursor # substring, line 584 if self.find_among_b(GreekStemmer.a_59) == 0: raise lab2() # ], line 584 self.bra = self.cursor return False except lab2: pass self.cursor = self.limit - v_2 # or, line 588 try: v_3 = self.limit - self.cursor try: # (, line 585 # [, line 585 self.ket = self.cursor # ], line 585 self.bra = self.cursor # substring, line 585 if self.find_among_b(GreekStemmer.a_60) == 0: raise lab4() # (, line 587 # <-, line 587 if not self.slice_from(u"\u03B1\u03B3"): return False raise lab3() except lab4: pass self.cursor = self.limit - v_3 # (, line 589 # [, line 589 self.ket = self.cursor # ], line 589 self.bra = self.cursor # substring, line 589 if self.find_among_b(GreekStemmer.a_61) == 0: return False # atlimit, line 589 if self.cursor > self.limit_backward: return False # (, line 595 # <-, line 595 if not self.slice_from(u"\u03B1\u03B3"): return False except lab3: pass except lab0: pass return True def __r_step5j(self): # (, line 602 # [, line 603 self.ket = self.cursor # substring, line 603 if self.find_among_b(GreekStemmer.a_63) == 0: return False # ], line 603 self.bra = self.cursor # (, line 604 # delete, line 604 if not self.slice_del(): return False # unset test1, line 604 self.B_test1 = False # [, line 606 self.ket = self.cursor # ], line 606 self.bra = self.cursor # substring, line 606 if self.find_among_b(GreekStemmer.a_64) == 0: return False # atlimit, line 606 if self.cursor > self.limit_backward: return False # (, line 607 # <-, line 607 if not self.slice_from(u"\u03B7\u03C3"): return False return True def __r_step5k(self): # (, line 611 # [, line 612 self.ket = self.cursor # substring, line 612 if self.find_among_b(GreekStemmer.a_65) == 0: return False # ], line 612 self.bra = self.cursor # (, line 613 # delete, line 613 if not self.slice_del(): return False # unset test1, line 613 self.B_test1 = False # [, line 615 self.ket = self.cursor # ], line 615 self.bra = self.cursor # substring, line 615 if self.find_among_b(GreekStemmer.a_66) == 0: return False # atlimit, line 615 if self.cursor > self.limit_backward: return False # (, line 617 # <-, line 617 if not self.slice_from(u"\u03B7\u03C3\u03C4"): return False return True def __r_step5l(self): # (, line 621 # [, line 622 self.ket = self.cursor # substring, line 622 if self.find_among_b(GreekStemmer.a_67) == 0: return False # ], line 622 self.bra = self.cursor # (, line 623 # delete, line 623 if not self.slice_del(): return False # unset test1, line 623 self.B_test1 = False # [, line 625 self.ket = self.cursor # ], line 625 self.bra = self.cursor # substring, line 625 if self.find_among_b(GreekStemmer.a_68) == 0: return False # atlimit, line 625 if self.cursor > self.limit_backward: return False # (, line 626 # <-, line 626 if not self.slice_from(u"\u03BF\u03C5\u03BD"): return False return True def __r_step5m(self): # (, line 630 # [, line 631 self.ket = self.cursor # substring, line 631 if self.find_among_b(GreekStemmer.a_69) == 0: return False # ], line 631 self.bra = self.cursor # (, line 632 # delete, line 632 if not self.slice_del(): return False # unset test1, line 632 self.B_test1 = False # [, line 634 self.ket = self.cursor # ], line 634 self.bra = self.cursor # substring, line 634 if self.find_among_b(GreekStemmer.a_70) == 0: return False # atlimit, line 634 if self.cursor > self.limit_backward: return False # (, line 636 # <-, line 636 if not self.slice_from(u"\u03BF\u03C5\u03BC"): return False return True def __r_step6(self): # (, line 640 # do, line 641 v_1 = self.limit - self.cursor try: # (, line 641 # [, line 642 self.ket = self.cursor # substring, line 642 if self.find_among_b(GreekStemmer.a_71) == 0: raise lab0() # ], line 642 self.bra = self.cursor # (, line 643 # <-, line 643 if not self.slice_from(u"\u03BC\u03B1"): return False except lab0: pass self.cursor = self.limit - v_1 # Boolean test test1, line 646 if not self.B_test1: return False # [, line 647 self.ket = self.cursor # substring, line 647 if self.find_among_b(GreekStemmer.a_72) == 0: return False # ], line 647 self.bra = self.cursor # (, line 657 # delete, line 657 if not self.slice_del(): return False return True def __r_step7(self): # (, line 661 # [, line 662 self.ket = self.cursor # substring, line 662 if self.find_among_b(GreekStemmer.a_73) == 0: return False # ], line 662 self.bra = self.cursor # (, line 663 # delete, line 663 if not self.slice_del(): return False return True def _stem(self): # (, line 668 # backwards, line 669 self.limit_backward = self.cursor self.cursor = self.limit # (, line 669 # do, line 670 v_1 = self.limit - self.cursor # call tolower, line 670 self.__r_tolower() self.cursor = self.limit - v_1 # call has_min_length, line 671 if not self.__r_has_min_length(): return False # set test1, line 672 self.B_test1 = True # do, line 673 v_2 = self.limit - self.cursor # call step1, line 673 self.__r_step1() self.cursor = self.limit - v_2 # do, line 674 v_3 = self.limit - self.cursor # call steps1, line 674 self.__r_steps1() self.cursor = self.limit - v_3 # do, line 675 v_4 = self.limit - self.cursor # call steps2, line 675 self.__r_steps2() self.cursor = self.limit - v_4 # do, line 676 v_5 = self.limit - self.cursor # call steps3, line 676 self.__r_steps3() self.cursor = self.limit - v_5 # do, line 677 v_6 = self.limit - self.cursor # call steps4, line 677 self.__r_steps4() self.cursor = self.limit - v_6 # do, line 678 v_7 = self.limit - self.cursor # call steps5, line 678 self.__r_steps5() self.cursor = self.limit - v_7 # do, line 679 v_8 = self.limit - self.cursor # call steps6, line 679 self.__r_steps6() self.cursor = self.limit - v_8 # do, line 680 v_9 = self.limit - self.cursor # call steps7, line 680 self.__r_steps7() self.cursor = self.limit - v_9 # do, line 681 v_10 = self.limit - self.cursor # call steps8, line 681 self.__r_steps8() self.cursor = self.limit - v_10 # do, line 682 v_11 = self.limit - self.cursor # call steps9, line 682 self.__r_steps9() self.cursor = self.limit - v_11 # do, line 683 v_12 = self.limit - self.cursor # call steps10, line 683 self.__r_steps10() self.cursor = self.limit - v_12 # do, line 684 v_13 = self.limit - self.cursor # call step2a, line 684 self.__r_step2a() self.cursor = self.limit - v_13 # do, line 685 v_14 = self.limit - self.cursor # call step2b, line 685 self.__r_step2b() self.cursor = self.limit - v_14 # do, line 686 v_15 = self.limit - self.cursor # call step2c, line 686 self.__r_step2c() self.cursor = self.limit - v_15 # do, line 687 v_16 = self.limit - self.cursor # call step2d, line 687 self.__r_step2d() self.cursor = self.limit - v_16 # do, line 688 v_17 = self.limit - self.cursor # call step3, line 688 self.__r_step3() self.cursor = self.limit - v_17 # do, line 689 v_18 = self.limit - self.cursor # call step4, line 689 self.__r_step4() self.cursor = self.limit - v_18 # do, line 690 v_19 = self.limit - self.cursor # call step5a, line 690 self.__r_step5a() self.cursor = self.limit - v_19 # do, line 691 v_20 = self.limit - self.cursor # call step5b, line 691 self.__r_step5b() self.cursor = self.limit - v_20 # do, line 692 v_21 = self.limit - self.cursor # call step5c, line 692 self.__r_step5c() self.cursor = self.limit - v_21 # do, line 693 v_22 = self.limit - self.cursor # call step5d, line 693 self.__r_step5d() self.cursor = self.limit - v_22 # do, line 694 v_23 = self.limit - self.cursor # call step5e, line 694 self.__r_step5e() self.cursor = self.limit - v_23 # do, line 695 v_24 = self.limit - self.cursor # call step5f, line 695 self.__r_step5f() self.cursor = self.limit - v_24 # do, line 696 v_25 = self.limit - self.cursor # call step5g, line 696 self.__r_step5g() self.cursor = self.limit - v_25 # do, line 697 v_26 = self.limit - self.cursor # call step5h, line 697 self.__r_step5h() self.cursor = self.limit - v_26 # do, line 698 v_27 = self.limit - self.cursor # call step5j, line 698 self.__r_step5j() self.cursor = self.limit - v_27 # do, line 699 v_28 = self.limit - self.cursor # call step5i, line 699 self.__r_step5i() self.cursor = self.limit - v_28 # do, line 700 v_29 = self.limit - self.cursor # call step5k, line 700 self.__r_step5k() self.cursor = self.limit - v_29 # do, line 701 v_30 = self.limit - self.cursor # call step5l, line 701 self.__r_step5l() self.cursor = self.limit - v_30 # do, line 702 v_31 = self.limit - self.cursor # call step5m, line 702 self.__r_step5m() self.cursor = self.limit - v_31 # do, line 703 v_32 = self.limit - self.cursor # call step6, line 703 self.__r_step6() self.cursor = self.limit - v_32 # do, line 704 v_33 = self.limit - self.cursor # call step7, line 704 self.__r_step7() self.cursor = self.limit - v_33 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/hindi_stemmer.py0000644000175000017500000001774413545325430025020 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class HindiStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"\u0906\u0901", -1, -1), Among(u"\u093E\u0901", -1, -1), Among(u"\u0907\u092F\u093E\u0901", 1, -1), Among(u"\u0906\u0907\u092F\u093E\u0901", 2, -1), Among(u"\u093E\u0907\u092F\u093E\u0901", 2, -1), Among(u"\u093F\u092F\u093E\u0901", 1, -1), Among(u"\u0906\u0902", -1, -1), Among(u"\u0909\u0906\u0902", 6, -1), Among(u"\u0941\u0906\u0902", 6, -1), Among(u"\u0908\u0902", -1, -1), Among(u"\u0906\u0908\u0902", 9, -1), Among(u"\u093E\u0908\u0902", 9, -1), Among(u"\u090F\u0902", -1, -1), Among(u"\u0906\u090F\u0902", 12, -1), Among(u"\u0909\u090F\u0902", 12, -1), Among(u"\u093E\u090F\u0902", 12, -1), Among(u"\u0924\u093E\u090F\u0902", 15, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0924\u093E\u090F\u0902", 16, -1), Among(u"\u0928\u093E\u090F\u0902", 15, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0928\u093E\u090F\u0902", 18, -1), Among(u"\u0941\u090F\u0902", 12, -1), Among(u"\u0913\u0902", -1, -1), Among(u"\u0906\u0913\u0902", 21, -1), Among(u"\u0909\u0913\u0902", 21, -1), Among(u"\u093E\u0913\u0902", 21, -1), Among(u"\u0924\u093E\u0913\u0902", 24, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0924\u093E\u0913\u0902", 25, -1), Among(u"\u0928\u093E\u0913\u0902", 24, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0928\u093E\u0913\u0902", 27, -1), Among(u"\u0941\u0913\u0902", 21, -1), Among(u"\u093E\u0902", -1, -1), Among(u"\u0907\u092F\u093E\u0902", 30, -1), Among(u"\u0906\u0907\u092F\u093E\u0902", 31, -1), Among(u"\u093E\u0907\u092F\u093E\u0902", 31, -1), Among(u"\u093F\u092F\u093E\u0902", 30, -1), Among(u"\u0940\u0902", -1, -1), Among(u"\u0924\u0940\u0902", 35, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0924\u0940\u0902", 36, -1), Among(u"\u0906\u0924\u0940\u0902", 36, -1), Among(u"\u093E\u0924\u0940\u0902", 36, -1), Among(u"\u0947\u0902", -1, -1), Among(u"\u094B\u0902", -1, -1), Among(u"\u0907\u092F\u094B\u0902", 41, -1), Among(u"\u0906\u0907\u092F\u094B\u0902", 42, -1), Among(u"\u093E\u0907\u092F\u094B\u0902", 42, -1), Among(u"\u093F\u092F\u094B\u0902", 41, -1), Among(u"\u0905", -1, -1), Among(u"\u0906", -1, -1), Among(u"\u0907", -1, -1), Among(u"\u0908", -1, -1), Among(u"\u0906\u0908", 49, -1), Among(u"\u093E\u0908", 49, -1), Among(u"\u0909", -1, -1), Among(u"\u090A", -1, -1), Among(u"\u090F", -1, -1), Among(u"\u0906\u090F", 54, -1), Among(u"\u0907\u090F", 54, -1), Among(u"\u0906\u0907\u090F", 56, -1), Among(u"\u093E\u0907\u090F", 56, -1), Among(u"\u093E\u090F", 54, -1), Among(u"\u093F\u090F", 54, -1), Among(u"\u0913", -1, -1), Among(u"\u0906\u0913", 61, -1), Among(u"\u093E\u0913", 61, -1), Among(u"\u0915\u0930", -1, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0915\u0930", 64, -1), Among(u"\u0906\u0915\u0930", 64, -1), Among(u"\u093E\u0915\u0930", 64, -1), Among(u"\u093E", -1, -1), Among(u"\u090A\u0902\u0917\u093E", 68, -1), Among(u"\u0906\u090A\u0902\u0917\u093E", 69, -1), Among(u"\u093E\u090A\u0902\u0917\u093E", 69, -1), Among(u"\u0942\u0902\u0917\u093E", 68, -1), Among(u"\u090F\u0917\u093E", 68, -1), Among(u"\u0906\u090F\u0917\u093E", 73, -1), Among(u"\u093E\u090F\u0917\u093E", 73, -1), Among(u"\u0947\u0917\u093E", 68, -1), Among(u"\u0924\u093E", 68, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0924\u093E", 77, -1), Among(u"\u0906\u0924\u093E", 77, -1), Among(u"\u093E\u0924\u093E", 77, -1), Among(u"\u0928\u093E", 68, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0928\u093E", 81, -1), Among(u"\u0906\u0928\u093E", 81, -1), Among(u"\u093E\u0928\u093E", 81, -1), Among(u"\u0906\u092F\u093E", 68, -1), Among(u"\u093E\u092F\u093E", 68, -1), Among(u"\u093F", -1, -1), Among(u"\u0940", -1, -1), Among(u"\u090A\u0902\u0917\u0940", 88, -1), Among(u"\u0906\u090A\u0902\u0917\u0940", 89, -1), Among(u"\u093E\u090A\u0902\u0917\u0940", 89, -1), Among(u"\u090F\u0902\u0917\u0940", 88, -1), Among(u"\u0906\u090F\u0902\u0917\u0940", 92, -1), Among(u"\u093E\u090F\u0902\u0917\u0940", 92, -1), Among(u"\u0942\u0902\u0917\u0940", 88, -1), Among(u"\u0947\u0902\u0917\u0940", 88, -1), Among(u"\u090F\u0917\u0940", 88, -1), Among(u"\u0906\u090F\u0917\u0940", 97, -1), Among(u"\u093E\u090F\u0917\u0940", 97, -1), Among(u"\u0913\u0917\u0940", 88, -1), Among(u"\u0906\u0913\u0917\u0940", 100, -1), Among(u"\u093E\u0913\u0917\u0940", 100, -1), Among(u"\u0947\u0917\u0940", 88, -1), Among(u"\u094B\u0917\u0940", 88, -1), Among(u"\u0924\u0940", 88, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0924\u0940", 105, -1), Among(u"\u0906\u0924\u0940", 105, -1), Among(u"\u093E\u0924\u0940", 105, -1), Among(u"\u0928\u0940", 88, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0928\u0940", 109, -1), Among(u"\u0941", -1, -1), Among(u"\u0942", -1, -1), Among(u"\u0947", -1, -1), Among(u"\u090F\u0902\u0917\u0947", 113, -1), Among(u"\u0906\u090F\u0902\u0917\u0947", 114, -1), Among(u"\u093E\u090F\u0902\u0917\u0947", 114, -1), Among(u"\u0947\u0902\u0917\u0947", 113, -1), Among(u"\u0913\u0917\u0947", 113, -1), Among(u"\u0906\u0913\u0917\u0947", 118, -1), Among(u"\u093E\u0913\u0917\u0947", 118, -1), Among(u"\u094B\u0917\u0947", 113, -1), Among(u"\u0924\u0947", 113, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0924\u0947", 122, -1), Among(u"\u0906\u0924\u0947", 122, -1), Among(u"\u093E\u0924\u0947", 122, -1), Among(u"\u0928\u0947", 113, -1, "_HindiStemmer__r_CONSONANT"), Among(u"\u0905\u0928\u0947", 126, -1), Among(u"\u0906\u0928\u0947", 126, -1), Among(u"\u093E\u0928\u0947", 126, -1), Among(u"\u094B", -1, -1), Among(u"\u094D", -1, -1) ] g_consonant = [255, 255, 255, 255, 159, 0, 0, 0, 248, 7] I_p = 0 def __r_CONSONANT(self): # (, line 129 if not self.in_grouping_b(HindiStemmer.g_consonant, 2325, 2399): return False return True def _stem(self): # (, line 131 # test, line 132 v_1 = self.cursor # (, line 132 # next, line 132 if self.cursor >= self.limit: return False self.cursor += 1 # setmark p, line 132 self.I_p = self.cursor self.cursor = v_1 # backwards, line 133 self.limit_backward = self.cursor self.cursor = self.limit # (, line 133 # setlimit, line 139 if self.cursor < self.I_p: return False v_3 = self.limit_backward self.limit_backward = self.I_p # (, line 139 # [, line 139 self.ket = self.cursor # substring, line 139 if self.find_among_b(HindiStemmer.a_0) == 0: self.limit_backward = v_3 return False # ], line 139 self.bra = self.cursor self.limit_backward = v_3 # delete, line 321 if not self.slice_del(): return False self.cursor = self.limit_backward return True class lab0(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/hungarian_stemmer.py0000644000175000017500000004424313545325430025673 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class HungarianStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"cs", -1, -1), Among(u"dzs", -1, -1), Among(u"gy", -1, -1), Among(u"ly", -1, -1), Among(u"ny", -1, -1), Among(u"sz", -1, -1), Among(u"ty", -1, -1), Among(u"zs", -1, -1) ] a_1 = [ Among(u"\u00E1", -1, 1), Among(u"\u00E9", -1, 2) ] a_2 = [ Among(u"bb", -1, -1), Among(u"cc", -1, -1), Among(u"dd", -1, -1), Among(u"ff", -1, -1), Among(u"gg", -1, -1), Among(u"jj", -1, -1), Among(u"kk", -1, -1), Among(u"ll", -1, -1), Among(u"mm", -1, -1), Among(u"nn", -1, -1), Among(u"pp", -1, -1), Among(u"rr", -1, -1), Among(u"ccs", -1, -1), Among(u"ss", -1, -1), Among(u"zzs", -1, -1), Among(u"tt", -1, -1), Among(u"vv", -1, -1), Among(u"ggy", -1, -1), Among(u"lly", -1, -1), Among(u"nny", -1, -1), Among(u"tty", -1, -1), Among(u"ssz", -1, -1), Among(u"zz", -1, -1) ] a_3 = [ Among(u"al", -1, 1), Among(u"el", -1, 1) ] a_4 = [ Among(u"ba", -1, -1), Among(u"ra", -1, -1), Among(u"be", -1, -1), Among(u"re", -1, -1), Among(u"ig", -1, -1), Among(u"nak", -1, -1), Among(u"nek", -1, -1), Among(u"val", -1, -1), Among(u"vel", -1, -1), Among(u"ul", -1, -1), Among(u"n\u00E1l", -1, -1), Among(u"n\u00E9l", -1, -1), Among(u"b\u00F3l", -1, -1), Among(u"r\u00F3l", -1, -1), Among(u"t\u00F3l", -1, -1), Among(u"\u00FCl", -1, -1), Among(u"b\u0151l", -1, -1), Among(u"r\u0151l", -1, -1), Among(u"t\u0151l", -1, -1), Among(u"n", -1, -1), Among(u"an", 19, -1), Among(u"ban", 20, -1), Among(u"en", 19, -1), Among(u"ben", 22, -1), Among(u"k\u00E9ppen", 22, -1), Among(u"on", 19, -1), Among(u"\u00F6n", 19, -1), Among(u"k\u00E9pp", -1, -1), Among(u"kor", -1, -1), Among(u"t", -1, -1), Among(u"at", 29, -1), Among(u"et", 29, -1), Among(u"k\u00E9nt", 29, -1), Among(u"ank\u00E9nt", 32, -1), Among(u"enk\u00E9nt", 32, -1), Among(u"onk\u00E9nt", 32, -1), Among(u"ot", 29, -1), Among(u"\u00E9rt", 29, -1), Among(u"\u00F6t", 29, -1), Among(u"hez", -1, -1), Among(u"hoz", -1, -1), Among(u"h\u00F6z", -1, -1), Among(u"v\u00E1", -1, -1), Among(u"v\u00E9", -1, -1) ] a_5 = [ Among(u"\u00E1n", -1, 2), Among(u"\u00E9n", -1, 1), Among(u"\u00E1nk\u00E9nt", -1, 2) ] a_6 = [ Among(u"stul", -1, 1), Among(u"astul", 0, 1), Among(u"\u00E1stul", 0, 2), Among(u"st\u00FCl", -1, 1), Among(u"est\u00FCl", 3, 1), Among(u"\u00E9st\u00FCl", 3, 3) ] a_7 = [ Among(u"\u00E1", -1, 1), Among(u"\u00E9", -1, 1) ] a_8 = [ Among(u"k", -1, 3), Among(u"ak", 0, 3), Among(u"ek", 0, 3), Among(u"ok", 0, 3), Among(u"\u00E1k", 0, 1), Among(u"\u00E9k", 0, 2), Among(u"\u00F6k", 0, 3) ] a_9 = [ Among(u"\u00E9i", -1, 1), Among(u"\u00E1\u00E9i", 0, 3), Among(u"\u00E9\u00E9i", 0, 2), Among(u"\u00E9", -1, 1), Among(u"k\u00E9", 3, 1), Among(u"ak\u00E9", 4, 1), Among(u"ek\u00E9", 4, 1), Among(u"ok\u00E9", 4, 1), Among(u"\u00E1k\u00E9", 4, 3), Among(u"\u00E9k\u00E9", 4, 2), Among(u"\u00F6k\u00E9", 4, 1), Among(u"\u00E9\u00E9", 3, 2) ] a_10 = [ Among(u"a", -1, 1), Among(u"ja", 0, 1), Among(u"d", -1, 1), Among(u"ad", 2, 1), Among(u"ed", 2, 1), Among(u"od", 2, 1), Among(u"\u00E1d", 2, 2), Among(u"\u00E9d", 2, 3), Among(u"\u00F6d", 2, 1), Among(u"e", -1, 1), Among(u"je", 9, 1), Among(u"nk", -1, 1), Among(u"unk", 11, 1), Among(u"\u00E1nk", 11, 2), Among(u"\u00E9nk", 11, 3), Among(u"\u00FCnk", 11, 1), Among(u"uk", -1, 1), Among(u"juk", 16, 1), Among(u"\u00E1juk", 17, 2), Among(u"\u00FCk", -1, 1), Among(u"j\u00FCk", 19, 1), Among(u"\u00E9j\u00FCk", 20, 3), Among(u"m", -1, 1), Among(u"am", 22, 1), Among(u"em", 22, 1), Among(u"om", 22, 1), Among(u"\u00E1m", 22, 2), Among(u"\u00E9m", 22, 3), Among(u"o", -1, 1), Among(u"\u00E1", -1, 2), Among(u"\u00E9", -1, 3) ] a_11 = [ Among(u"id", -1, 1), Among(u"aid", 0, 1), Among(u"jaid", 1, 1), Among(u"eid", 0, 1), Among(u"jeid", 3, 1), Among(u"\u00E1id", 0, 2), Among(u"\u00E9id", 0, 3), Among(u"i", -1, 1), Among(u"ai", 7, 1), Among(u"jai", 8, 1), Among(u"ei", 7, 1), Among(u"jei", 10, 1), Among(u"\u00E1i", 7, 2), Among(u"\u00E9i", 7, 3), Among(u"itek", -1, 1), Among(u"eitek", 14, 1), Among(u"jeitek", 15, 1), Among(u"\u00E9itek", 14, 3), Among(u"ik", -1, 1), Among(u"aik", 18, 1), Among(u"jaik", 19, 1), Among(u"eik", 18, 1), Among(u"jeik", 21, 1), Among(u"\u00E1ik", 18, 2), Among(u"\u00E9ik", 18, 3), Among(u"ink", -1, 1), Among(u"aink", 25, 1), Among(u"jaink", 26, 1), Among(u"eink", 25, 1), Among(u"jeink", 28, 1), Among(u"\u00E1ink", 25, 2), Among(u"\u00E9ink", 25, 3), Among(u"aitok", -1, 1), Among(u"jaitok", 32, 1), Among(u"\u00E1itok", -1, 2), Among(u"im", -1, 1), Among(u"aim", 35, 1), Among(u"jaim", 36, 1), Among(u"eim", 35, 1), Among(u"jeim", 38, 1), Among(u"\u00E1im", 35, 2), Among(u"\u00E9im", 35, 3) ] g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 36, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] I_p1 = 0 def __r_mark_regions(self): # (, line 44 self.I_p1 = self.limit # or, line 51 try: v_1 = self.cursor try: # (, line 48 if not self.in_grouping(HungarianStemmer.g_v, 97, 369): raise lab1() # goto non v, line 48 if not self.go_in_grouping(HungarianStemmer.g_v, 97, 369): raise lab1() # or, line 49 try: v_2 = self.cursor try: # among, line 49 if self.find_among(HungarianStemmer.a_0) == 0: raise lab3() raise lab2() except lab3: pass self.cursor = v_2 # next, line 49 if self.cursor >= self.limit: raise lab1() self.cursor += 1 except lab2: pass # setmark p1, line 50 self.I_p1 = self.cursor raise lab0() except lab1: pass self.cursor = v_1 # (, line 53 if not self.out_grouping(HungarianStemmer.g_v, 97, 369): return False # gopast grouping v, line 53 if not self.go_out_grouping(HungarianStemmer.g_v, 97, 369): return False self.cursor += 1 # setmark p1, line 53 self.I_p1 = self.cursor except lab0: pass return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_v_ending(self): # (, line 60 # [, line 61 self.ket = self.cursor # substring, line 61 among_var = self.find_among_b(HungarianStemmer.a_1) if among_var == 0: return False # ], line 61 self.bra = self.cursor # call R1, line 61 if not self.__r_R1(): return False if among_var == 1: # (, line 62 # <-, line 62 if not self.slice_from(u"a"): return False elif among_var == 2: # (, line 63 # <-, line 63 if not self.slice_from(u"e"): return False return True def __r_double(self): # (, line 67 # test, line 68 v_1 = self.limit - self.cursor # among, line 68 if self.find_among_b(HungarianStemmer.a_2) == 0: return False self.cursor = self.limit - v_1 return True def __r_undouble(self): # (, line 72 # next, line 73 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # [, line 73 self.ket = self.cursor # hop, line 73 c = self.cursor - 1 if self.limit_backward > c or c > self.limit: return False self.cursor = c # ], line 73 self.bra = self.cursor # delete, line 73 if not self.slice_del(): return False return True def __r_instrum(self): # (, line 76 # [, line 77 self.ket = self.cursor # substring, line 77 if self.find_among_b(HungarianStemmer.a_3) == 0: return False # ], line 77 self.bra = self.cursor # call R1, line 77 if not self.__r_R1(): return False # (, line 78 # call double, line 78 if not self.__r_double(): return False # delete, line 81 if not self.slice_del(): return False # call undouble, line 82 if not self.__r_undouble(): return False return True def __r_case(self): # (, line 86 # [, line 87 self.ket = self.cursor # substring, line 87 if self.find_among_b(HungarianStemmer.a_4) == 0: return False # ], line 87 self.bra = self.cursor # call R1, line 87 if not self.__r_R1(): return False # delete, line 111 if not self.slice_del(): return False # call v_ending, line 112 if not self.__r_v_ending(): return False return True def __r_case_special(self): # (, line 115 # [, line 116 self.ket = self.cursor # substring, line 116 among_var = self.find_among_b(HungarianStemmer.a_5) if among_var == 0: return False # ], line 116 self.bra = self.cursor # call R1, line 116 if not self.__r_R1(): return False if among_var == 1: # (, line 117 # <-, line 117 if not self.slice_from(u"e"): return False elif among_var == 2: # (, line 118 # <-, line 118 if not self.slice_from(u"a"): return False return True def __r_case_other(self): # (, line 123 # [, line 124 self.ket = self.cursor # substring, line 124 among_var = self.find_among_b(HungarianStemmer.a_6) if among_var == 0: return False # ], line 124 self.bra = self.cursor # call R1, line 124 if not self.__r_R1(): return False if among_var == 1: # (, line 125 # delete, line 125 if not self.slice_del(): return False elif among_var == 2: # (, line 127 # <-, line 127 if not self.slice_from(u"a"): return False elif among_var == 3: # (, line 128 # <-, line 128 if not self.slice_from(u"e"): return False return True def __r_factive(self): # (, line 132 # [, line 133 self.ket = self.cursor # substring, line 133 if self.find_among_b(HungarianStemmer.a_7) == 0: return False # ], line 133 self.bra = self.cursor # call R1, line 133 if not self.__r_R1(): return False # (, line 134 # call double, line 134 if not self.__r_double(): return False # delete, line 137 if not self.slice_del(): return False # call undouble, line 138 if not self.__r_undouble(): return False return True def __r_plural(self): # (, line 141 # [, line 142 self.ket = self.cursor # substring, line 142 among_var = self.find_among_b(HungarianStemmer.a_8) if among_var == 0: return False # ], line 142 self.bra = self.cursor # call R1, line 142 if not self.__r_R1(): return False if among_var == 1: # (, line 143 # <-, line 143 if not self.slice_from(u"a"): return False elif among_var == 2: # (, line 144 # <-, line 144 if not self.slice_from(u"e"): return False elif among_var == 3: # (, line 145 # delete, line 145 if not self.slice_del(): return False return True def __r_owned(self): # (, line 153 # [, line 154 self.ket = self.cursor # substring, line 154 among_var = self.find_among_b(HungarianStemmer.a_9) if among_var == 0: return False # ], line 154 self.bra = self.cursor # call R1, line 154 if not self.__r_R1(): return False if among_var == 1: # (, line 155 # delete, line 155 if not self.slice_del(): return False elif among_var == 2: # (, line 156 # <-, line 156 if not self.slice_from(u"e"): return False elif among_var == 3: # (, line 157 # <-, line 157 if not self.slice_from(u"a"): return False return True def __r_sing_owner(self): # (, line 167 # [, line 168 self.ket = self.cursor # substring, line 168 among_var = self.find_among_b(HungarianStemmer.a_10) if among_var == 0: return False # ], line 168 self.bra = self.cursor # call R1, line 168 if not self.__r_R1(): return False if among_var == 1: # (, line 169 # delete, line 169 if not self.slice_del(): return False elif among_var == 2: # (, line 170 # <-, line 170 if not self.slice_from(u"a"): return False elif among_var == 3: # (, line 171 # <-, line 171 if not self.slice_from(u"e"): return False return True def __r_plur_owner(self): # (, line 192 # [, line 193 self.ket = self.cursor # substring, line 193 among_var = self.find_among_b(HungarianStemmer.a_11) if among_var == 0: return False # ], line 193 self.bra = self.cursor # call R1, line 193 if not self.__r_R1(): return False if among_var == 1: # (, line 194 # delete, line 194 if not self.slice_del(): return False elif among_var == 2: # (, line 195 # <-, line 195 if not self.slice_from(u"a"): return False elif among_var == 3: # (, line 196 # <-, line 196 if not self.slice_from(u"e"): return False return True def _stem(self): # (, line 228 # do, line 229 v_1 = self.cursor # call mark_regions, line 229 self.__r_mark_regions() self.cursor = v_1 # backwards, line 230 self.limit_backward = self.cursor self.cursor = self.limit # (, line 230 # do, line 231 v_2 = self.limit - self.cursor # call instrum, line 231 self.__r_instrum() self.cursor = self.limit - v_2 # do, line 232 v_3 = self.limit - self.cursor # call case, line 232 self.__r_case() self.cursor = self.limit - v_3 # do, line 233 v_4 = self.limit - self.cursor # call case_special, line 233 self.__r_case_special() self.cursor = self.limit - v_4 # do, line 234 v_5 = self.limit - self.cursor # call case_other, line 234 self.__r_case_other() self.cursor = self.limit - v_5 # do, line 235 v_6 = self.limit - self.cursor # call factive, line 235 self.__r_factive() self.cursor = self.limit - v_6 # do, line 236 v_7 = self.limit - self.cursor # call owned, line 236 self.__r_owned() self.cursor = self.limit - v_7 # do, line 237 v_8 = self.limit - self.cursor # call sing_owner, line 237 self.__r_sing_owner() self.cursor = self.limit - v_8 # do, line 238 v_9 = self.limit - self.cursor # call plur_owner, line 238 self.__r_plur_owner() self.cursor = self.limit - v_9 # do, line 239 v_10 = self.limit - self.cursor # call plural, line 239 self.__r_plural() self.cursor = self.limit - v_10 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/indonesian_stemmer.py0000644000175000017500000002713413545325430026046 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class IndonesianStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"kah", -1, 1), Among(u"lah", -1, 1), Among(u"pun", -1, 1) ] a_1 = [ Among(u"nya", -1, 1), Among(u"ku", -1, 1), Among(u"mu", -1, 1) ] a_2 = [ Among(u"i", -1, 1, "_IndonesianStemmer__r_SUFFIX_I_OK"), Among(u"an", -1, 1, "_IndonesianStemmer__r_SUFFIX_AN_OK"), Among(u"kan", 1, 1, "_IndonesianStemmer__r_SUFFIX_KAN_OK") ] a_3 = [ Among(u"di", -1, 1), Among(u"ke", -1, 2), Among(u"me", -1, 1), Among(u"mem", 2, 5), Among(u"men", 2, 1), Among(u"meng", 4, 1), Among(u"meny", 4, 3, "_IndonesianStemmer__r_VOWEL"), Among(u"pem", -1, 6), Among(u"pen", -1, 2), Among(u"peng", 8, 2), Among(u"peny", 8, 4, "_IndonesianStemmer__r_VOWEL"), Among(u"ter", -1, 1) ] a_4 = [ Among(u"be", -1, 3, "_IndonesianStemmer__r_KER"), Among(u"belajar", 0, 4), Among(u"ber", 0, 3), Among(u"pe", -1, 1), Among(u"pelajar", 3, 2), Among(u"per", 3, 1) ] g_vowel = [17, 65, 16] I_prefix = 0 I_measure = 0 def __r_remove_particle(self): # (, line 50 # [, line 51 self.ket = self.cursor # substring, line 51 if self.find_among_b(IndonesianStemmer.a_0) == 0: return False # ], line 51 self.bra = self.cursor # (, line 52 # delete, line 52 if not self.slice_del(): return False self.I_measure -= 1 return True def __r_remove_possessive_pronoun(self): # (, line 56 # [, line 57 self.ket = self.cursor # substring, line 57 if self.find_among_b(IndonesianStemmer.a_1) == 0: return False # ], line 57 self.bra = self.cursor # (, line 58 # delete, line 58 if not self.slice_del(): return False self.I_measure -= 1 return True def __r_SUFFIX_KAN_OK(self): # (, line 63 # and, line 85 if not self.I_prefix != 3: return False if not self.I_prefix != 2: return False return True def __r_SUFFIX_AN_OK(self): # (, line 89 if not self.I_prefix != 1: return False return True def __r_SUFFIX_I_OK(self): # (, line 91 if not self.I_prefix <= 2: return False # not, line 128 v_1 = self.limit - self.cursor try: # literal, line 128 if not self.eq_s_b(u"s"): raise lab0() return False except lab0: pass self.cursor = self.limit - v_1 return True def __r_remove_suffix(self): # (, line 131 # [, line 132 self.ket = self.cursor # substring, line 132 if self.find_among_b(IndonesianStemmer.a_2) == 0: return False # ], line 132 self.bra = self.cursor # (, line 134 # delete, line 134 if not self.slice_del(): return False self.I_measure -= 1 return True def __r_VOWEL(self): # (, line 141 if not self.in_grouping(IndonesianStemmer.g_vowel, 97, 117): return False return True def __r_KER(self): # (, line 143 if not self.out_grouping(IndonesianStemmer.g_vowel, 97, 117): return False # literal, line 143 if not self.eq_s(u"er"): return False return True def __r_remove_first_order_prefix(self): # (, line 145 # [, line 146 self.bra = self.cursor # substring, line 146 among_var = self.find_among(IndonesianStemmer.a_3) if among_var == 0: return False # ], line 146 self.ket = self.cursor if among_var == 1: # (, line 147 # delete, line 147 if not self.slice_del(): return False self.I_prefix = 1 self.I_measure -= 1 elif among_var == 2: # (, line 148 # delete, line 148 if not self.slice_del(): return False self.I_prefix = 3 self.I_measure -= 1 elif among_var == 3: # (, line 149 self.I_prefix = 1 # <-, line 149 if not self.slice_from(u"s"): return False self.I_measure -= 1 elif among_var == 4: # (, line 150 self.I_prefix = 3 # <-, line 150 if not self.slice_from(u"s"): return False self.I_measure -= 1 elif among_var == 5: # (, line 151 self.I_prefix = 1 self.I_measure -= 1 # or, line 151 try: v_1 = self.cursor try: # and, line 151 v_2 = self.cursor if not self.in_grouping(IndonesianStemmer.g_vowel, 97, 117): raise lab1() self.cursor = v_2 # <-, line 151 if not self.slice_from(u"p"): return False raise lab0() except lab1: pass self.cursor = v_1 # delete, line 151 if not self.slice_del(): return False except lab0: pass elif among_var == 6: # (, line 152 self.I_prefix = 3 self.I_measure -= 1 # or, line 152 try: v_3 = self.cursor try: # and, line 152 v_4 = self.cursor if not self.in_grouping(IndonesianStemmer.g_vowel, 97, 117): raise lab3() self.cursor = v_4 # <-, line 152 if not self.slice_from(u"p"): return False raise lab2() except lab3: pass self.cursor = v_3 # delete, line 152 if not self.slice_del(): return False except lab2: pass return True def __r_remove_second_order_prefix(self): # (, line 156 # [, line 162 self.bra = self.cursor # substring, line 162 among_var = self.find_among(IndonesianStemmer.a_4) if among_var == 0: return False # ], line 162 self.ket = self.cursor if among_var == 1: # (, line 163 # delete, line 163 if not self.slice_del(): return False self.I_prefix = 2 self.I_measure -= 1 elif among_var == 2: # (, line 164 # <-, line 164 if not self.slice_from(u"ajar"): return False self.I_measure -= 1 elif among_var == 3: # (, line 165 # delete, line 165 if not self.slice_del(): return False self.I_prefix = 4 self.I_measure -= 1 elif among_var == 4: # (, line 166 # <-, line 166 if not self.slice_from(u"ajar"): return False self.I_prefix = 4 self.I_measure -= 1 return True def _stem(self): # (, line 171 self.I_measure = 0 # do, line 173 v_1 = self.cursor try: # (, line 173 # repeat, line 173 while True: v_2 = self.cursor try: # (, line 173 # gopast grouping vowel, line 173 if not self.go_out_grouping(IndonesianStemmer.g_vowel, 97, 117): raise lab1() self.cursor += 1 self.I_measure += 1 continue except lab1: pass self.cursor = v_2 break except lab0: pass self.cursor = v_1 if not self.I_measure > 2: return False self.I_prefix = 0 # backwards, line 176 self.limit_backward = self.cursor self.cursor = self.limit # (, line 176 # do, line 177 v_3 = self.limit - self.cursor # call remove_particle, line 177 self.__r_remove_particle() self.cursor = self.limit - v_3 if not self.I_measure > 2: return False # do, line 179 v_4 = self.limit - self.cursor # call remove_possessive_pronoun, line 179 self.__r_remove_possessive_pronoun() self.cursor = self.limit - v_4 self.cursor = self.limit_backward if not self.I_measure > 2: return False # or, line 188 try: v_5 = self.cursor try: # test, line 182 v_6 = self.cursor # (, line 182 # call remove_first_order_prefix, line 183 if not self.__r_remove_first_order_prefix(): raise lab3() # do, line 184 v_7 = self.cursor try: # (, line 184 # test, line 185 v_8 = self.cursor # (, line 185 if not self.I_measure > 2: raise lab4() # backwards, line 185 self.limit_backward = self.cursor self.cursor = self.limit # call remove_suffix, line 185 if not self.__r_remove_suffix(): raise lab4() self.cursor = self.limit_backward self.cursor = v_8 if not self.I_measure > 2: raise lab4() # call remove_second_order_prefix, line 186 if not self.__r_remove_second_order_prefix(): raise lab4() except lab4: pass self.cursor = v_7 self.cursor = v_6 raise lab2() except lab3: pass self.cursor = v_5 # (, line 188 # do, line 189 v_9 = self.cursor # call remove_second_order_prefix, line 189 self.__r_remove_second_order_prefix() self.cursor = v_9 # do, line 190 v_10 = self.cursor try: # (, line 190 if not self.I_measure > 2: raise lab5() # backwards, line 190 self.limit_backward = self.cursor self.cursor = self.limit # call remove_suffix, line 190 if not self.__r_remove_suffix(): raise lab5() self.cursor = self.limit_backward except lab5: pass self.cursor = v_10 except lab2: pass return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/irish_stemmer.py0000644000175000017500000002456013545325430025035 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class IrishStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"b'", -1, 1), Among(u"bh", -1, 4), Among(u"bhf", 1, 2), Among(u"bp", -1, 8), Among(u"ch", -1, 5), Among(u"d'", -1, 1), Among(u"d'fh", 5, 2), Among(u"dh", -1, 6), Among(u"dt", -1, 9), Among(u"fh", -1, 2), Among(u"gc", -1, 5), Among(u"gh", -1, 7), Among(u"h-", -1, 1), Among(u"m'", -1, 1), Among(u"mb", -1, 4), Among(u"mh", -1, 10), Among(u"n-", -1, 1), Among(u"nd", -1, 6), Among(u"ng", -1, 7), Among(u"ph", -1, 8), Among(u"sh", -1, 3), Among(u"t-", -1, 1), Among(u"th", -1, 9), Among(u"ts", -1, 3) ] a_1 = [ Among(u"\u00EDochta", -1, 1), Among(u"a\u00EDochta", 0, 1), Among(u"ire", -1, 2), Among(u"aire", 2, 2), Among(u"abh", -1, 1), Among(u"eabh", 4, 1), Among(u"ibh", -1, 1), Among(u"aibh", 6, 1), Among(u"amh", -1, 1), Among(u"eamh", 8, 1), Among(u"imh", -1, 1), Among(u"aimh", 10, 1), Among(u"\u00EDocht", -1, 1), Among(u"a\u00EDocht", 12, 1), Among(u"ir\u00ED", -1, 2), Among(u"air\u00ED", 14, 2) ] a_2 = [ Among(u"\u00F3ideacha", -1, 6), Among(u"patacha", -1, 5), Among(u"achta", -1, 1), Among(u"arcachta", 2, 2), Among(u"eachta", 2, 1), Among(u"grafa\u00EDochta", -1, 4), Among(u"paite", -1, 5), Among(u"ach", -1, 1), Among(u"each", 7, 1), Among(u"\u00F3ideach", 8, 6), Among(u"gineach", 8, 3), Among(u"patach", 7, 5), Among(u"grafa\u00EDoch", -1, 4), Among(u"pataigh", -1, 5), Among(u"\u00F3idigh", -1, 6), Among(u"acht\u00FAil", -1, 1), Among(u"eacht\u00FAil", 15, 1), Among(u"gineas", -1, 3), Among(u"ginis", -1, 3), Among(u"acht", -1, 1), Among(u"arcacht", 19, 2), Among(u"eacht", 19, 1), Among(u"grafa\u00EDocht", -1, 4), Among(u"arcachta\u00ED", -1, 2), Among(u"grafa\u00EDochta\u00ED", -1, 4) ] a_3 = [ Among(u"imid", -1, 1), Among(u"aimid", 0, 1), Among(u"\u00EDmid", -1, 1), Among(u"a\u00EDmid", 2, 1), Among(u"adh", -1, 2), Among(u"eadh", 4, 2), Among(u"faidh", -1, 1), Among(u"fidh", -1, 1), Among(u"\u00E1il", -1, 2), Among(u"ain", -1, 2), Among(u"tear", -1, 2), Among(u"tar", -1, 2) ] g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 2] I_p2 = 0 I_p1 = 0 I_pV = 0 def __r_mark_regions(self): # (, line 28 self.I_pV = self.limit self.I_p1 = self.limit self.I_p2 = self.limit # do, line 34 v_1 = self.cursor try: # (, line 34 # gopast grouping v, line 35 if not self.go_out_grouping(IrishStemmer.g_v, 97, 250): raise lab0() self.cursor += 1 # setmark pV, line 35 self.I_pV = self.cursor except lab0: pass self.cursor = v_1 # do, line 37 v_2 = self.cursor try: # (, line 37 # gopast grouping v, line 38 if not self.go_out_grouping(IrishStemmer.g_v, 97, 250): raise lab1() self.cursor += 1 # gopast non v, line 38 if not self.go_in_grouping(IrishStemmer.g_v, 97, 250): raise lab1() self.cursor += 1 # setmark p1, line 38 self.I_p1 = self.cursor # gopast grouping v, line 39 if not self.go_out_grouping(IrishStemmer.g_v, 97, 250): raise lab1() self.cursor += 1 # gopast non v, line 39 if not self.go_in_grouping(IrishStemmer.g_v, 97, 250): raise lab1() self.cursor += 1 # setmark p2, line 39 self.I_p2 = self.cursor except lab1: pass self.cursor = v_2 return True def __r_initial_morph(self): # (, line 43 # [, line 44 self.bra = self.cursor # substring, line 44 among_var = self.find_among(IrishStemmer.a_0) if among_var == 0: return False # ], line 44 self.ket = self.cursor if among_var == 1: # (, line 46 # delete, line 46 if not self.slice_del(): return False elif among_var == 2: # (, line 52 # <-, line 52 if not self.slice_from(u"f"): return False elif among_var == 3: # (, line 58 # <-, line 58 if not self.slice_from(u"s"): return False elif among_var == 4: # (, line 61 # <-, line 61 if not self.slice_from(u"b"): return False elif among_var == 5: # (, line 63 # <-, line 63 if not self.slice_from(u"c"): return False elif among_var == 6: # (, line 65 # <-, line 65 if not self.slice_from(u"d"): return False elif among_var == 7: # (, line 69 # <-, line 69 if not self.slice_from(u"g"): return False elif among_var == 8: # (, line 71 # <-, line 71 if not self.slice_from(u"p"): return False elif among_var == 9: # (, line 75 # <-, line 75 if not self.slice_from(u"t"): return False elif among_var == 10: # (, line 89 # <-, line 89 if not self.slice_from(u"m"): return False return True def __r_RV(self): if not self.I_pV <= self.cursor: return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_noun_sfx(self): # (, line 103 # [, line 104 self.ket = self.cursor # substring, line 104 among_var = self.find_among_b(IrishStemmer.a_1) if among_var == 0: return False # ], line 104 self.bra = self.cursor if among_var == 1: # (, line 108 # call R1, line 108 if not self.__r_R1(): return False # delete, line 108 if not self.slice_del(): return False elif among_var == 2: # (, line 110 # call R2, line 110 if not self.__r_R2(): return False # delete, line 110 if not self.slice_del(): return False return True def __r_deriv(self): # (, line 113 # [, line 114 self.ket = self.cursor # substring, line 114 among_var = self.find_among_b(IrishStemmer.a_2) if among_var == 0: return False # ], line 114 self.bra = self.cursor if among_var == 1: # (, line 116 # call R2, line 116 if not self.__r_R2(): return False # delete, line 116 if not self.slice_del(): return False elif among_var == 2: # (, line 118 # <-, line 118 if not self.slice_from(u"arc"): return False elif among_var == 3: # (, line 120 # <-, line 120 if not self.slice_from(u"gin"): return False elif among_var == 4: # (, line 122 # <-, line 122 if not self.slice_from(u"graf"): return False elif among_var == 5: # (, line 124 # <-, line 124 if not self.slice_from(u"paite"): return False elif among_var == 6: # (, line 126 # <-, line 126 if not self.slice_from(u"\u00F3id"): return False return True def __r_verb_sfx(self): # (, line 129 # [, line 130 self.ket = self.cursor # substring, line 130 among_var = self.find_among_b(IrishStemmer.a_3) if among_var == 0: return False # ], line 130 self.bra = self.cursor if among_var == 1: # (, line 133 # call RV, line 133 if not self.__r_RV(): return False # delete, line 133 if not self.slice_del(): return False elif among_var == 2: # (, line 138 # call R1, line 138 if not self.__r_R1(): return False # delete, line 138 if not self.slice_del(): return False return True def _stem(self): # (, line 143 # do, line 144 v_1 = self.cursor # call initial_morph, line 144 self.__r_initial_morph() self.cursor = v_1 # do, line 145 # call mark_regions, line 145 self.__r_mark_regions() # backwards, line 146 self.limit_backward = self.cursor self.cursor = self.limit # (, line 146 # do, line 147 v_3 = self.limit - self.cursor # call noun_sfx, line 147 self.__r_noun_sfx() self.cursor = self.limit - v_3 # do, line 148 v_4 = self.limit - self.cursor # call deriv, line 148 self.__r_deriv() self.cursor = self.limit - v_4 # do, line 149 v_5 = self.limit - self.cursor # call verb_sfx, line 149 self.__r_verb_sfx() self.cursor = self.limit - v_5 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/italian_stemmer.py0000644000175000017500000007047213545325430025343 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class ItalianStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 7), Among(u"qu", 0, 6), Among(u"\u00E1", 0, 1), Among(u"\u00E9", 0, 2), Among(u"\u00ED", 0, 3), Among(u"\u00F3", 0, 4), Among(u"\u00FA", 0, 5) ] a_1 = [ Among(u"", -1, 3), Among(u"I", 0, 1), Among(u"U", 0, 2) ] a_2 = [ Among(u"la", -1, -1), Among(u"cela", 0, -1), Among(u"gliela", 0, -1), Among(u"mela", 0, -1), Among(u"tela", 0, -1), Among(u"vela", 0, -1), Among(u"le", -1, -1), Among(u"cele", 6, -1), Among(u"gliele", 6, -1), Among(u"mele", 6, -1), Among(u"tele", 6, -1), Among(u"vele", 6, -1), Among(u"ne", -1, -1), Among(u"cene", 12, -1), Among(u"gliene", 12, -1), Among(u"mene", 12, -1), Among(u"sene", 12, -1), Among(u"tene", 12, -1), Among(u"vene", 12, -1), Among(u"ci", -1, -1), Among(u"li", -1, -1), Among(u"celi", 20, -1), Among(u"glieli", 20, -1), Among(u"meli", 20, -1), Among(u"teli", 20, -1), Among(u"veli", 20, -1), Among(u"gli", 20, -1), Among(u"mi", -1, -1), Among(u"si", -1, -1), Among(u"ti", -1, -1), Among(u"vi", -1, -1), Among(u"lo", -1, -1), Among(u"celo", 31, -1), Among(u"glielo", 31, -1), Among(u"melo", 31, -1), Among(u"telo", 31, -1), Among(u"velo", 31, -1) ] a_3 = [ Among(u"ando", -1, 1), Among(u"endo", -1, 1), Among(u"ar", -1, 2), Among(u"er", -1, 2), Among(u"ir", -1, 2) ] a_4 = [ Among(u"ic", -1, -1), Among(u"abil", -1, -1), Among(u"os", -1, -1), Among(u"iv", -1, 1) ] a_5 = [ Among(u"ic", -1, 1), Among(u"abil", -1, 1), Among(u"iv", -1, 1) ] a_6 = [ Among(u"ica", -1, 1), Among(u"logia", -1, 3), Among(u"osa", -1, 1), Among(u"ista", -1, 1), Among(u"iva", -1, 9), Among(u"anza", -1, 1), Among(u"enza", -1, 5), Among(u"ice", -1, 1), Among(u"atrice", 7, 1), Among(u"iche", -1, 1), Among(u"logie", -1, 3), Among(u"abile", -1, 1), Among(u"ibile", -1, 1), Among(u"usione", -1, 4), Among(u"azione", -1, 2), Among(u"uzione", -1, 4), Among(u"atore", -1, 2), Among(u"ose", -1, 1), Among(u"ante", -1, 1), Among(u"mente", -1, 1), Among(u"amente", 19, 7), Among(u"iste", -1, 1), Among(u"ive", -1, 9), Among(u"anze", -1, 1), Among(u"enze", -1, 5), Among(u"ici", -1, 1), Among(u"atrici", 25, 1), Among(u"ichi", -1, 1), Among(u"abili", -1, 1), Among(u"ibili", -1, 1), Among(u"ismi", -1, 1), Among(u"usioni", -1, 4), Among(u"azioni", -1, 2), Among(u"uzioni", -1, 4), Among(u"atori", -1, 2), Among(u"osi", -1, 1), Among(u"anti", -1, 1), Among(u"amenti", -1, 6), Among(u"imenti", -1, 6), Among(u"isti", -1, 1), Among(u"ivi", -1, 9), Among(u"ico", -1, 1), Among(u"ismo", -1, 1), Among(u"oso", -1, 1), Among(u"amento", -1, 6), Among(u"imento", -1, 6), Among(u"ivo", -1, 9), Among(u"it\u00E0", -1, 8), Among(u"ist\u00E0", -1, 1), Among(u"ist\u00E8", -1, 1), Among(u"ist\u00EC", -1, 1) ] a_7 = [ Among(u"isca", -1, 1), Among(u"enda", -1, 1), Among(u"ata", -1, 1), Among(u"ita", -1, 1), Among(u"uta", -1, 1), Among(u"ava", -1, 1), Among(u"eva", -1, 1), Among(u"iva", -1, 1), Among(u"erebbe", -1, 1), Among(u"irebbe", -1, 1), Among(u"isce", -1, 1), Among(u"ende", -1, 1), Among(u"are", -1, 1), Among(u"ere", -1, 1), Among(u"ire", -1, 1), Among(u"asse", -1, 1), Among(u"ate", -1, 1), Among(u"avate", 16, 1), Among(u"evate", 16, 1), Among(u"ivate", 16, 1), Among(u"ete", -1, 1), Among(u"erete", 20, 1), Among(u"irete", 20, 1), Among(u"ite", -1, 1), Among(u"ereste", -1, 1), Among(u"ireste", -1, 1), Among(u"ute", -1, 1), Among(u"erai", -1, 1), Among(u"irai", -1, 1), Among(u"isci", -1, 1), Among(u"endi", -1, 1), Among(u"erei", -1, 1), Among(u"irei", -1, 1), Among(u"assi", -1, 1), Among(u"ati", -1, 1), Among(u"iti", -1, 1), Among(u"eresti", -1, 1), Among(u"iresti", -1, 1), Among(u"uti", -1, 1), Among(u"avi", -1, 1), Among(u"evi", -1, 1), Among(u"ivi", -1, 1), Among(u"isco", -1, 1), Among(u"ando", -1, 1), Among(u"endo", -1, 1), Among(u"Yamo", -1, 1), Among(u"iamo", -1, 1), Among(u"avamo", -1, 1), Among(u"evamo", -1, 1), Among(u"ivamo", -1, 1), Among(u"eremo", -1, 1), Among(u"iremo", -1, 1), Among(u"assimo", -1, 1), Among(u"ammo", -1, 1), Among(u"emmo", -1, 1), Among(u"eremmo", 54, 1), Among(u"iremmo", 54, 1), Among(u"immo", -1, 1), Among(u"ano", -1, 1), Among(u"iscano", 58, 1), Among(u"avano", 58, 1), Among(u"evano", 58, 1), Among(u"ivano", 58, 1), Among(u"eranno", -1, 1), Among(u"iranno", -1, 1), Among(u"ono", -1, 1), Among(u"iscono", 65, 1), Among(u"arono", 65, 1), Among(u"erono", 65, 1), Among(u"irono", 65, 1), Among(u"erebbero", -1, 1), Among(u"irebbero", -1, 1), Among(u"assero", -1, 1), Among(u"essero", -1, 1), Among(u"issero", -1, 1), Among(u"ato", -1, 1), Among(u"ito", -1, 1), Among(u"uto", -1, 1), Among(u"avo", -1, 1), Among(u"evo", -1, 1), Among(u"ivo", -1, 1), Among(u"ar", -1, 1), Among(u"ir", -1, 1), Among(u"er\u00E0", -1, 1), Among(u"ir\u00E0", -1, 1), Among(u"er\u00F2", -1, 1), Among(u"ir\u00F2", -1, 1) ] g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1] g_AEIO = [17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2] g_CG = [17] I_p2 = 0 I_p1 = 0 I_pV = 0 def __r_prelude(self): # (, line 34 # test, line 35 v_1 = self.cursor # repeat, line 35 while True: v_2 = self.cursor try: # (, line 35 # [, line 36 self.bra = self.cursor # substring, line 36 among_var = self.find_among(ItalianStemmer.a_0) if among_var == 0: raise lab0() # ], line 36 self.ket = self.cursor if among_var == 1: # (, line 37 # <-, line 37 if not self.slice_from(u"\u00E0"): return False elif among_var == 2: # (, line 38 # <-, line 38 if not self.slice_from(u"\u00E8"): return False elif among_var == 3: # (, line 39 # <-, line 39 if not self.slice_from(u"\u00EC"): return False elif among_var == 4: # (, line 40 # <-, line 40 if not self.slice_from(u"\u00F2"): return False elif among_var == 5: # (, line 41 # <-, line 41 if not self.slice_from(u"\u00F9"): return False elif among_var == 6: # (, line 42 # <-, line 42 if not self.slice_from(u"qU"): return False elif among_var == 7: # (, line 43 # next, line 43 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_2 break self.cursor = v_1 # repeat, line 46 while True: v_3 = self.cursor try: # goto, line 46 try: while True: v_4 = self.cursor try: # (, line 46 if not self.in_grouping(ItalianStemmer.g_v, 97, 249): raise lab3() # [, line 47 self.bra = self.cursor # or, line 47 try: v_5 = self.cursor try: # (, line 47 # literal, line 47 if not self.eq_s(u"u"): raise lab5() # ], line 47 self.ket = self.cursor if not self.in_grouping(ItalianStemmer.g_v, 97, 249): raise lab5() # <-, line 47 if not self.slice_from(u"U"): return False raise lab4() except lab5: pass self.cursor = v_5 # (, line 48 # literal, line 48 if not self.eq_s(u"i"): raise lab3() # ], line 48 self.ket = self.cursor if not self.in_grouping(ItalianStemmer.g_v, 97, 249): raise lab3() # <-, line 48 if not self.slice_from(u"I"): return False except lab4: pass self.cursor = v_4 raise lab2() except lab3: pass self.cursor = v_4 if self.cursor >= self.limit: raise lab1() self.cursor += 1 except lab2: pass continue except lab1: pass self.cursor = v_3 break return True def __r_mark_regions(self): # (, line 52 self.I_pV = self.limit self.I_p1 = self.limit self.I_p2 = self.limit # do, line 58 v_1 = self.cursor try: # (, line 58 # or, line 60 try: v_2 = self.cursor try: # (, line 59 if not self.in_grouping(ItalianStemmer.g_v, 97, 249): raise lab2() # or, line 59 try: v_3 = self.cursor try: # (, line 59 if not self.out_grouping(ItalianStemmer.g_v, 97, 249): raise lab4() # gopast grouping v, line 59 if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249): raise lab4() self.cursor += 1 raise lab3() except lab4: pass self.cursor = v_3 # (, line 59 if not self.in_grouping(ItalianStemmer.g_v, 97, 249): raise lab2() # gopast non v, line 59 if not self.go_in_grouping(ItalianStemmer.g_v, 97, 249): raise lab2() self.cursor += 1 except lab3: pass raise lab1() except lab2: pass self.cursor = v_2 # (, line 61 if not self.out_grouping(ItalianStemmer.g_v, 97, 249): raise lab0() # or, line 61 try: v_4 = self.cursor try: # (, line 61 if not self.out_grouping(ItalianStemmer.g_v, 97, 249): raise lab6() # gopast grouping v, line 61 if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249): raise lab6() self.cursor += 1 raise lab5() except lab6: pass self.cursor = v_4 # (, line 61 if not self.in_grouping(ItalianStemmer.g_v, 97, 249): raise lab0() # next, line 61 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab5: pass except lab1: pass # setmark pV, line 62 self.I_pV = self.cursor except lab0: pass self.cursor = v_1 # do, line 64 v_5 = self.cursor try: # (, line 64 # gopast grouping v, line 65 if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249): raise lab7() self.cursor += 1 # gopast non v, line 65 if not self.go_in_grouping(ItalianStemmer.g_v, 97, 249): raise lab7() self.cursor += 1 # setmark p1, line 65 self.I_p1 = self.cursor # gopast grouping v, line 66 if not self.go_out_grouping(ItalianStemmer.g_v, 97, 249): raise lab7() self.cursor += 1 # gopast non v, line 66 if not self.go_in_grouping(ItalianStemmer.g_v, 97, 249): raise lab7() self.cursor += 1 # setmark p2, line 66 self.I_p2 = self.cursor except lab7: pass self.cursor = v_5 return True def __r_postlude(self): # repeat, line 70 while True: v_1 = self.cursor try: # (, line 70 # [, line 72 self.bra = self.cursor # substring, line 72 among_var = self.find_among(ItalianStemmer.a_1) if among_var == 0: raise lab0() # ], line 72 self.ket = self.cursor if among_var == 1: # (, line 73 # <-, line 73 if not self.slice_from(u"i"): return False elif among_var == 2: # (, line 74 # <-, line 74 if not self.slice_from(u"u"): return False elif among_var == 3: # (, line 75 # next, line 75 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_RV(self): if not self.I_pV <= self.cursor: return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_attached_pronoun(self): # (, line 86 # [, line 87 self.ket = self.cursor # substring, line 87 if self.find_among_b(ItalianStemmer.a_2) == 0: return False # ], line 87 self.bra = self.cursor # among, line 97 among_var = self.find_among_b(ItalianStemmer.a_3) if among_var == 0: return False # (, line 97 # call RV, line 97 if not self.__r_RV(): return False if among_var == 1: # (, line 98 # delete, line 98 if not self.slice_del(): return False elif among_var == 2: # (, line 99 # <-, line 99 if not self.slice_from(u"e"): return False return True def __r_standard_suffix(self): # (, line 103 # [, line 104 self.ket = self.cursor # substring, line 104 among_var = self.find_among_b(ItalianStemmer.a_6) if among_var == 0: return False # ], line 104 self.bra = self.cursor if among_var == 1: # (, line 111 # call R2, line 111 if not self.__r_R2(): return False # delete, line 111 if not self.slice_del(): return False elif among_var == 2: # (, line 113 # call R2, line 113 if not self.__r_R2(): return False # delete, line 113 if not self.slice_del(): return False # try, line 114 v_1 = self.limit - self.cursor try: # (, line 114 # [, line 114 self.ket = self.cursor # literal, line 114 if not self.eq_s_b(u"ic"): self.cursor = self.limit - v_1 raise lab0() # ], line 114 self.bra = self.cursor # call R2, line 114 if not self.__r_R2(): self.cursor = self.limit - v_1 raise lab0() # delete, line 114 if not self.slice_del(): return False except lab0: pass elif among_var == 3: # (, line 117 # call R2, line 117 if not self.__r_R2(): return False # <-, line 117 if not self.slice_from(u"log"): return False elif among_var == 4: # (, line 119 # call R2, line 119 if not self.__r_R2(): return False # <-, line 119 if not self.slice_from(u"u"): return False elif among_var == 5: # (, line 121 # call R2, line 121 if not self.__r_R2(): return False # <-, line 121 if not self.slice_from(u"ente"): return False elif among_var == 6: # (, line 123 # call RV, line 123 if not self.__r_RV(): return False # delete, line 123 if not self.slice_del(): return False elif among_var == 7: # (, line 124 # call R1, line 125 if not self.__r_R1(): return False # delete, line 125 if not self.slice_del(): return False # try, line 126 v_2 = self.limit - self.cursor try: # (, line 126 # [, line 127 self.ket = self.cursor # substring, line 127 among_var = self.find_among_b(ItalianStemmer.a_4) if among_var == 0: self.cursor = self.limit - v_2 raise lab1() # ], line 127 self.bra = self.cursor # call R2, line 127 if not self.__r_R2(): self.cursor = self.limit - v_2 raise lab1() # delete, line 127 if not self.slice_del(): return False if among_var == 1: # (, line 128 # [, line 128 self.ket = self.cursor # literal, line 128 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_2 raise lab1() # ], line 128 self.bra = self.cursor # call R2, line 128 if not self.__r_R2(): self.cursor = self.limit - v_2 raise lab1() # delete, line 128 if not self.slice_del(): return False except lab1: pass elif among_var == 8: # (, line 133 # call R2, line 134 if not self.__r_R2(): return False # delete, line 134 if not self.slice_del(): return False # try, line 135 v_3 = self.limit - self.cursor try: # (, line 135 # [, line 136 self.ket = self.cursor # substring, line 136 if self.find_among_b(ItalianStemmer.a_5) == 0: self.cursor = self.limit - v_3 raise lab2() # ], line 136 self.bra = self.cursor # (, line 137 # call R2, line 137 if not self.__r_R2(): self.cursor = self.limit - v_3 raise lab2() # delete, line 137 if not self.slice_del(): return False except lab2: pass elif among_var == 9: # (, line 141 # call R2, line 142 if not self.__r_R2(): return False # delete, line 142 if not self.slice_del(): return False # try, line 143 v_4 = self.limit - self.cursor try: # (, line 143 # [, line 143 self.ket = self.cursor # literal, line 143 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_4 raise lab3() # ], line 143 self.bra = self.cursor # call R2, line 143 if not self.__r_R2(): self.cursor = self.limit - v_4 raise lab3() # delete, line 143 if not self.slice_del(): return False # [, line 143 self.ket = self.cursor # literal, line 143 if not self.eq_s_b(u"ic"): self.cursor = self.limit - v_4 raise lab3() # ], line 143 self.bra = self.cursor # call R2, line 143 if not self.__r_R2(): self.cursor = self.limit - v_4 raise lab3() # delete, line 143 if not self.slice_del(): return False except lab3: pass return True def __r_verb_suffix(self): # setlimit, line 148 if self.cursor < self.I_pV: return False v_2 = self.limit_backward self.limit_backward = self.I_pV # (, line 148 # [, line 149 self.ket = self.cursor # substring, line 149 if self.find_among_b(ItalianStemmer.a_7) == 0: self.limit_backward = v_2 return False # ], line 149 self.bra = self.cursor # (, line 163 # delete, line 163 if not self.slice_del(): return False self.limit_backward = v_2 return True def __r_vowel_suffix(self): # (, line 170 # try, line 171 v_1 = self.limit - self.cursor try: # (, line 171 # [, line 172 self.ket = self.cursor if not self.in_grouping_b(ItalianStemmer.g_AEIO, 97, 242): self.cursor = self.limit - v_1 raise lab0() # ], line 172 self.bra = self.cursor # call RV, line 172 if not self.__r_RV(): self.cursor = self.limit - v_1 raise lab0() # delete, line 172 if not self.slice_del(): return False # [, line 173 self.ket = self.cursor # literal, line 173 if not self.eq_s_b(u"i"): self.cursor = self.limit - v_1 raise lab0() # ], line 173 self.bra = self.cursor # call RV, line 173 if not self.__r_RV(): self.cursor = self.limit - v_1 raise lab0() # delete, line 173 if not self.slice_del(): return False except lab0: pass # try, line 175 v_2 = self.limit - self.cursor try: # (, line 175 # [, line 176 self.ket = self.cursor # literal, line 176 if not self.eq_s_b(u"h"): self.cursor = self.limit - v_2 raise lab1() # ], line 176 self.bra = self.cursor if not self.in_grouping_b(ItalianStemmer.g_CG, 99, 103): self.cursor = self.limit - v_2 raise lab1() # call RV, line 176 if not self.__r_RV(): self.cursor = self.limit - v_2 raise lab1() # delete, line 176 if not self.slice_del(): return False except lab1: pass return True def _stem(self): # (, line 181 # do, line 182 v_1 = self.cursor # call prelude, line 182 self.__r_prelude() self.cursor = v_1 # do, line 183 # call mark_regions, line 183 self.__r_mark_regions() # backwards, line 184 self.limit_backward = self.cursor self.cursor = self.limit # (, line 184 # do, line 185 v_3 = self.limit - self.cursor # call attached_pronoun, line 185 self.__r_attached_pronoun() self.cursor = self.limit - v_3 # do, line 186 v_4 = self.limit - self.cursor try: # (, line 186 # or, line 186 try: v_5 = self.limit - self.cursor try: # call standard_suffix, line 186 if not self.__r_standard_suffix(): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_5 # call verb_suffix, line 186 if not self.__r_verb_suffix(): raise lab0() except lab1: pass except lab0: pass self.cursor = self.limit - v_4 # do, line 187 v_6 = self.limit - self.cursor # call vowel_suffix, line 187 self.__r_vowel_suffix() self.cursor = self.limit - v_6 self.cursor = self.limit_backward # do, line 189 v_7 = self.cursor # call postlude, line 189 self.__r_postlude() self.cursor = v_7 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/lithuanian_stemmer.py0000644000175000017500000004064413545325430026054 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class LithuanianStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"a", -1, -1), Among(u"ia", 0, -1), Among(u"eria", 1, -1), Among(u"osna", 0, -1), Among(u"iosna", 3, -1), Among(u"uosna", 3, -1), Among(u"iuosna", 5, -1), Among(u"ysna", 0, -1), Among(u"\u0117sna", 0, -1), Among(u"e", -1, -1), Among(u"ie", 9, -1), Among(u"enie", 10, -1), Among(u"erie", 10, -1), Among(u"oje", 9, -1), Among(u"ioje", 13, -1), Among(u"uje", 9, -1), Among(u"iuje", 15, -1), Among(u"yje", 9, -1), Among(u"enyje", 17, -1), Among(u"eryje", 17, -1), Among(u"\u0117je", 9, -1), Among(u"ame", 9, -1), Among(u"iame", 21, -1), Among(u"sime", 9, -1), Among(u"ome", 9, -1), Among(u"\u0117me", 9, -1), Among(u"tum\u0117me", 25, -1), Among(u"ose", 9, -1), Among(u"iose", 27, -1), Among(u"uose", 27, -1), Among(u"iuose", 29, -1), Among(u"yse", 9, -1), Among(u"enyse", 31, -1), Among(u"eryse", 31, -1), Among(u"\u0117se", 9, -1), Among(u"ate", 9, -1), Among(u"iate", 35, -1), Among(u"ite", 9, -1), Among(u"kite", 37, -1), Among(u"site", 37, -1), Among(u"ote", 9, -1), Among(u"tute", 9, -1), Among(u"\u0117te", 9, -1), Among(u"tum\u0117te", 42, -1), Among(u"i", -1, -1), Among(u"ai", 44, -1), Among(u"iai", 45, -1), Among(u"eriai", 46, -1), Among(u"ei", 44, -1), Among(u"tumei", 48, -1), Among(u"ki", 44, -1), Among(u"imi", 44, -1), Among(u"erimi", 51, -1), Among(u"umi", 44, -1), Among(u"iumi", 53, -1), Among(u"si", 44, -1), Among(u"asi", 55, -1), Among(u"iasi", 56, -1), Among(u"esi", 55, -1), Among(u"iesi", 58, -1), Among(u"siesi", 59, -1), Among(u"isi", 55, -1), Among(u"aisi", 61, -1), Among(u"eisi", 61, -1), Among(u"tumeisi", 63, -1), Among(u"uisi", 61, -1), Among(u"osi", 55, -1), Among(u"\u0117josi", 66, -1), Among(u"uosi", 66, -1), Among(u"iuosi", 68, -1), Among(u"siuosi", 69, -1), Among(u"usi", 55, -1), Among(u"ausi", 71, -1), Among(u"\u010Diausi", 72, -1), Among(u"\u0105si", 55, -1), Among(u"\u0117si", 55, -1), Among(u"\u0173si", 55, -1), Among(u"t\u0173si", 76, -1), Among(u"ti", 44, -1), Among(u"enti", 78, -1), Among(u"inti", 78, -1), Among(u"oti", 78, -1), Among(u"ioti", 81, -1), Among(u"uoti", 81, -1), Among(u"iuoti", 83, -1), Among(u"auti", 78, -1), Among(u"iauti", 85, -1), Among(u"yti", 78, -1), Among(u"\u0117ti", 78, -1), Among(u"tel\u0117ti", 88, -1), Among(u"in\u0117ti", 88, -1), Among(u"ter\u0117ti", 88, -1), Among(u"ui", 44, -1), Among(u"iui", 92, -1), Among(u"eniui", 93, -1), Among(u"oj", -1, -1), Among(u"\u0117j", -1, -1), Among(u"k", -1, -1), Among(u"am", -1, -1), Among(u"iam", 98, -1), Among(u"iem", -1, -1), Among(u"im", -1, -1), Among(u"sim", 101, -1), Among(u"om", -1, -1), Among(u"tum", -1, -1), Among(u"\u0117m", -1, -1), Among(u"tum\u0117m", 105, -1), Among(u"an", -1, -1), Among(u"on", -1, -1), Among(u"ion", 108, -1), Among(u"un", -1, -1), Among(u"iun", 110, -1), Among(u"\u0117n", -1, -1), Among(u"o", -1, -1), Among(u"io", 113, -1), Among(u"enio", 114, -1), Among(u"\u0117jo", 113, -1), Among(u"uo", 113, -1), Among(u"s", -1, -1), Among(u"as", 118, -1), Among(u"ias", 119, -1), Among(u"es", 118, -1), Among(u"ies", 121, -1), Among(u"is", 118, -1), Among(u"ais", 123, -1), Among(u"iais", 124, -1), Among(u"tumeis", 123, -1), Among(u"imis", 123, -1), Among(u"enimis", 127, -1), Among(u"omis", 123, -1), Among(u"iomis", 129, -1), Among(u"umis", 123, -1), Among(u"\u0117mis", 123, -1), Among(u"enis", 123, -1), Among(u"asis", 123, -1), Among(u"ysis", 123, -1), Among(u"ams", 118, -1), Among(u"iams", 136, -1), Among(u"iems", 118, -1), Among(u"ims", 118, -1), Among(u"enims", 139, -1), Among(u"erims", 139, -1), Among(u"oms", 118, -1), Among(u"ioms", 142, -1), Among(u"ums", 118, -1), Among(u"\u0117ms", 118, -1), Among(u"ens", 118, -1), Among(u"os", 118, -1), Among(u"ios", 147, -1), Among(u"uos", 147, -1), Among(u"iuos", 149, -1), Among(u"ers", 118, -1), Among(u"us", 118, -1), Among(u"aus", 152, -1), Among(u"iaus", 153, -1), Among(u"ius", 152, -1), Among(u"ys", 118, -1), Among(u"enys", 156, -1), Among(u"erys", 156, -1), Among(u"\u0105s", 118, -1), Among(u"i\u0105s", 159, -1), Among(u"\u0117s", 118, -1), Among(u"am\u0117s", 161, -1), Among(u"iam\u0117s", 162, -1), Among(u"im\u0117s", 161, -1), Among(u"kim\u0117s", 164, -1), Among(u"sim\u0117s", 164, -1), Among(u"om\u0117s", 161, -1), Among(u"\u0117m\u0117s", 161, -1), Among(u"tum\u0117m\u0117s", 168, -1), Among(u"at\u0117s", 161, -1), Among(u"iat\u0117s", 170, -1), Among(u"sit\u0117s", 161, -1), Among(u"ot\u0117s", 161, -1), Among(u"\u0117t\u0117s", 161, -1), Among(u"tum\u0117t\u0117s", 174, -1), Among(u"\u012Fs", 118, -1), Among(u"\u016Bs", 118, -1), Among(u"t\u0173s", 118, -1), Among(u"at", -1, -1), Among(u"iat", 179, -1), Among(u"it", -1, -1), Among(u"sit", 181, -1), Among(u"ot", -1, -1), Among(u"\u0117t", -1, -1), Among(u"tum\u0117t", 184, -1), Among(u"u", -1, -1), Among(u"au", 186, -1), Among(u"iau", 187, -1), Among(u"\u010Diau", 188, -1), Among(u"iu", 186, -1), Among(u"eniu", 190, -1), Among(u"siu", 190, -1), Among(u"y", -1, -1), Among(u"\u0105", -1, -1), Among(u"i\u0105", 194, -1), Among(u"\u0117", -1, -1), Among(u"\u0119", -1, -1), Among(u"\u012F", -1, -1), Among(u"en\u012F", 198, -1), Among(u"er\u012F", 198, -1), Among(u"\u0173", -1, -1), Among(u"i\u0173", 201, -1), Among(u"er\u0173", 201, -1) ] a_1 = [ Among(u"ing", -1, -1), Among(u"aj", -1, -1), Among(u"iaj", 1, -1), Among(u"iej", -1, -1), Among(u"oj", -1, -1), Among(u"ioj", 4, -1), Among(u"uoj", 4, -1), Among(u"iuoj", 6, -1), Among(u"auj", -1, -1), Among(u"\u0105j", -1, -1), Among(u"i\u0105j", 9, -1), Among(u"\u0117j", -1, -1), Among(u"\u0173j", -1, -1), Among(u"i\u0173j", 12, -1), Among(u"ok", -1, -1), Among(u"iok", 14, -1), Among(u"iuk", -1, -1), Among(u"uliuk", 16, -1), Among(u"u\u010Diuk", 16, -1), Among(u"i\u0161k", -1, -1), Among(u"iul", -1, -1), Among(u"yl", -1, -1), Among(u"\u0117l", -1, -1), Among(u"am", -1, -1), Among(u"dam", 23, -1), Among(u"jam", 23, -1), Among(u"zgan", -1, -1), Among(u"ain", -1, -1), Among(u"esn", -1, -1), Among(u"op", -1, -1), Among(u"iop", 29, -1), Among(u"ias", -1, -1), Among(u"ies", -1, -1), Among(u"ais", -1, -1), Among(u"iais", 33, -1), Among(u"os", -1, -1), Among(u"ios", 35, -1), Among(u"uos", 35, -1), Among(u"iuos", 37, -1), Among(u"aus", -1, -1), Among(u"iaus", 39, -1), Among(u"\u0105s", -1, -1), Among(u"i\u0105s", 41, -1), Among(u"\u0119s", -1, -1), Among(u"ut\u0117ait", -1, -1), Among(u"ant", -1, -1), Among(u"iant", 45, -1), Among(u"siant", 46, -1), Among(u"int", -1, -1), Among(u"ot", -1, -1), Among(u"uot", 49, -1), Among(u"iuot", 50, -1), Among(u"yt", -1, -1), Among(u"\u0117t", -1, -1), Among(u"yk\u0161t", -1, -1), Among(u"iau", -1, -1), Among(u"dav", -1, -1), Among(u"sv", -1, -1), Among(u"\u0161v", -1, -1), Among(u"yk\u0161\u010D", -1, -1), Among(u"\u0119", -1, -1), Among(u"\u0117j\u0119", 60, -1) ] a_2 = [ Among(u"ojime", -1, 7), Among(u"\u0117jime", -1, 3), Among(u"avime", -1, 6), Among(u"okate", -1, 8), Among(u"aite", -1, 1), Among(u"uote", -1, 2), Among(u"asius", -1, 5), Among(u"okat\u0117s", -1, 8), Among(u"ait\u0117s", -1, 1), Among(u"uot\u0117s", -1, 2), Among(u"esiu", -1, 4) ] a_3 = [ Among(u"\u010D", -1, 1), Among(u"d\u017E", -1, 2) ] a_4 = [ Among(u"gd", -1, 1) ] g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 64, 1, 0, 64, 0, 0, 0, 0, 0, 0, 0, 4, 4] I_p1 = 0 def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_step1(self): # (, line 44 # setlimit, line 45 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 45 # [, line 45 self.ket = self.cursor # substring, line 45 if self.find_among_b(LithuanianStemmer.a_0) == 0: self.limit_backward = v_2 return False # ], line 45 self.bra = self.cursor self.limit_backward = v_2 # call R1, line 45 if not self.__r_R1(): return False # delete, line 229 if not self.slice_del(): return False return True def __r_step2(self): # repeat, line 232 while True: v_1 = self.limit - self.cursor try: # (, line 232 # setlimit, line 233 if self.cursor < self.I_p1: raise lab0() v_3 = self.limit_backward self.limit_backward = self.I_p1 # (, line 233 # [, line 233 self.ket = self.cursor # substring, line 233 if self.find_among_b(LithuanianStemmer.a_1) == 0: self.limit_backward = v_3 raise lab0() # ], line 233 self.bra = self.cursor self.limit_backward = v_3 # delete, line 303 if not self.slice_del(): return False continue except lab0: pass self.cursor = self.limit - v_1 break return True def __r_fix_conflicts(self): # (, line 306 # [, line 307 self.ket = self.cursor # substring, line 307 among_var = self.find_among_b(LithuanianStemmer.a_2) if among_var == 0: return False # ], line 307 self.bra = self.cursor if among_var == 1: # (, line 309 # <-, line 309 if not self.slice_from(u"ait\u0117"): return False elif among_var == 2: # (, line 314 # <-, line 314 if not self.slice_from(u"uot\u0117"): return False elif among_var == 3: # (, line 319 # <-, line 319 if not self.slice_from(u"\u0117jimas"): return False elif among_var == 4: # (, line 322 # <-, line 322 if not self.slice_from(u"esys"): return False elif among_var == 5: # (, line 324 # <-, line 324 if not self.slice_from(u"asys"): return False elif among_var == 6: # (, line 327 # <-, line 327 if not self.slice_from(u"avimas"): return False elif among_var == 7: # (, line 328 # <-, line 328 if not self.slice_from(u"ojimas"): return False elif among_var == 8: # (, line 331 # <-, line 331 if not self.slice_from(u"okat\u0117"): return False return True def __r_fix_chdz(self): # (, line 337 # [, line 338 self.ket = self.cursor # substring, line 338 among_var = self.find_among_b(LithuanianStemmer.a_3) if among_var == 0: return False # ], line 338 self.bra = self.cursor if among_var == 1: # (, line 339 # <-, line 339 if not self.slice_from(u"t"): return False elif among_var == 2: # (, line 340 # <-, line 340 if not self.slice_from(u"d"): return False return True def __r_fix_gd(self): # (, line 344 # [, line 345 self.ket = self.cursor # substring, line 345 if self.find_among_b(LithuanianStemmer.a_4) == 0: return False # ], line 345 self.bra = self.cursor # (, line 346 # <-, line 346 if not self.slice_from(u"g"): return False return True def _stem(self): # (, line 353 self.I_p1 = self.limit # do, line 357 v_1 = self.cursor try: # (, line 357 # try, line 359 v_2 = self.cursor try: # (, line 359 # test, line 359 v_3 = self.cursor # literal, line 359 if not self.eq_s(u"a"): self.cursor = v_2 raise lab1() self.cursor = v_3 if not len(self.current) > 6: self.cursor = v_2 raise lab1() # hop, line 359 c = self.cursor + 1 if 0 > c or c > self.limit: self.cursor = v_2 raise lab1() self.cursor = c except lab1: pass # gopast grouping v, line 361 if not self.go_out_grouping(LithuanianStemmer.g_v, 97, 371): raise lab0() self.cursor += 1 # gopast non v, line 361 if not self.go_in_grouping(LithuanianStemmer.g_v, 97, 371): raise lab0() self.cursor += 1 # setmark p1, line 361 self.I_p1 = self.cursor except lab0: pass self.cursor = v_1 # backwards, line 364 self.limit_backward = self.cursor self.cursor = self.limit # (, line 364 # do, line 365 v_4 = self.limit - self.cursor # call fix_conflicts, line 365 self.__r_fix_conflicts() self.cursor = self.limit - v_4 # do, line 366 v_5 = self.limit - self.cursor # call step1, line 366 self.__r_step1() self.cursor = self.limit - v_5 # do, line 367 v_6 = self.limit - self.cursor # call fix_chdz, line 367 self.__r_fix_chdz() self.cursor = self.limit - v_6 # do, line 368 v_7 = self.limit - self.cursor # call step2, line 368 self.__r_step2() self.cursor = self.limit - v_7 # do, line 369 v_8 = self.limit - self.cursor # call fix_chdz, line 369 self.__r_fix_chdz() self.cursor = self.limit - v_8 # do, line 370 v_9 = self.limit - self.cursor # call fix_gd, line 370 self.__r_fix_gd() self.cursor = self.limit - v_9 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/nepali_stemmer.py0000644000175000017500000002631113545325430025163 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class NepaliStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"\u0932\u093E\u0907", -1, 1), Among(u"\u0932\u093E\u0908", -1, 1), Among(u"\u0938\u0901\u0917", -1, 1), Among(u"\u0938\u0902\u0917", -1, 1), Among(u"\u092E\u093E\u0930\u094D\u092B\u0924", -1, 1), Among(u"\u0930\u0924", -1, 1), Among(u"\u0915\u093E", -1, 2), Among(u"\u092E\u093E", -1, 1), Among(u"\u0926\u094D\u0935\u093E\u0930\u093E", -1, 1), Among(u"\u0915\u093F", -1, 2), Among(u"\u092A\u091B\u093F", -1, 1), Among(u"\u0915\u0940", -1, 2), Among(u"\u0932\u0947", -1, 1), Among(u"\u0915\u0948", -1, 2), Among(u"\u0938\u0901\u0917\u0948", -1, 1), Among(u"\u092E\u0948", -1, 1), Among(u"\u0915\u094B", -1, 2) ] a_1 = [ Among(u"\u0901", -1, -1), Among(u"\u0902", -1, -1), Among(u"\u0948", -1, -1) ] a_2 = [ Among(u"\u0901", -1, 1), Among(u"\u0902", -1, 1), Among(u"\u0948", -1, 2) ] a_3 = [ Among(u"\u0925\u093F\u090F", -1, 1), Among(u"\u091B", -1, 1), Among(u"\u0907\u091B", 1, 1), Among(u"\u090F\u091B", 1, 1), Among(u"\u093F\u091B", 1, 1), Among(u"\u0947\u091B", 1, 1), Among(u"\u0928\u0947\u091B", 5, 1), Among(u"\u0939\u0941\u0928\u0947\u091B", 6, 1), Among(u"\u0907\u0928\u094D\u091B", 1, 1), Among(u"\u093F\u0928\u094D\u091B", 1, 1), Among(u"\u0939\u0941\u0928\u094D\u091B", 1, 1), Among(u"\u090F\u0915\u093E", -1, 1), Among(u"\u0907\u090F\u0915\u093E", 11, 1), Among(u"\u093F\u090F\u0915\u093E", 11, 1), Among(u"\u0947\u0915\u093E", -1, 1), Among(u"\u0928\u0947\u0915\u093E", 14, 1), Among(u"\u0926\u093E", -1, 1), Among(u"\u0907\u0926\u093E", 16, 1), Among(u"\u093F\u0926\u093E", 16, 1), Among(u"\u0926\u0947\u0916\u093F", -1, 1), Among(u"\u092E\u093E\u0925\u093F", -1, 1), Among(u"\u090F\u0915\u0940", -1, 1), Among(u"\u0907\u090F\u0915\u0940", 21, 1), Among(u"\u093F\u090F\u0915\u0940", 21, 1), Among(u"\u0947\u0915\u0940", -1, 1), Among(u"\u0926\u0947\u0916\u0940", -1, 1), Among(u"\u0925\u0940", -1, 1), Among(u"\u0926\u0940", -1, 1), Among(u"\u091B\u0941", -1, 1), Among(u"\u090F\u091B\u0941", 28, 1), Among(u"\u0947\u091B\u0941", 28, 1), Among(u"\u0928\u0947\u091B\u0941", 30, 1), Among(u"\u0928\u0941", -1, 1), Among(u"\u0939\u0930\u0941", -1, 1), Among(u"\u0939\u0930\u0942", -1, 1), Among(u"\u091B\u0947", -1, 1), Among(u"\u0925\u0947", -1, 1), Among(u"\u0928\u0947", -1, 1), Among(u"\u090F\u0915\u0948", -1, 1), Among(u"\u0947\u0915\u0948", -1, 1), Among(u"\u0928\u0947\u0915\u0948", 39, 1), Among(u"\u0926\u0948", -1, 1), Among(u"\u0907\u0926\u0948", 41, 1), Among(u"\u093F\u0926\u0948", 41, 1), Among(u"\u090F\u0915\u094B", -1, 1), Among(u"\u0907\u090F\u0915\u094B", 44, 1), Among(u"\u093F\u090F\u0915\u094B", 44, 1), Among(u"\u0947\u0915\u094B", -1, 1), Among(u"\u0928\u0947\u0915\u094B", 47, 1), Among(u"\u0926\u094B", -1, 1), Among(u"\u0907\u0926\u094B", 49, 1), Among(u"\u093F\u0926\u094B", 49, 1), Among(u"\u092F\u094B", -1, 1), Among(u"\u0907\u092F\u094B", 52, 1), Among(u"\u092D\u092F\u094B", 52, 1), Among(u"\u093F\u092F\u094B", 52, 1), Among(u"\u0925\u093F\u092F\u094B", 55, 1), Among(u"\u0926\u093F\u092F\u094B", 55, 1), Among(u"\u0925\u094D\u092F\u094B", 52, 1), Among(u"\u091B\u094C", -1, 1), Among(u"\u0907\u091B\u094C", 59, 1), Among(u"\u090F\u091B\u094C", 59, 1), Among(u"\u093F\u091B\u094C", 59, 1), Among(u"\u0947\u091B\u094C", 59, 1), Among(u"\u0928\u0947\u091B\u094C", 63, 1), Among(u"\u092F\u094C", -1, 1), Among(u"\u0925\u093F\u092F\u094C", 65, 1), Among(u"\u091B\u094D\u092F\u094C", 65, 1), Among(u"\u0925\u094D\u092F\u094C", 65, 1), Among(u"\u091B\u0928\u094D", -1, 1), Among(u"\u0907\u091B\u0928\u094D", 69, 1), Among(u"\u090F\u091B\u0928\u094D", 69, 1), Among(u"\u093F\u091B\u0928\u094D", 69, 1), Among(u"\u0947\u091B\u0928\u094D", 69, 1), Among(u"\u0928\u0947\u091B\u0928\u094D", 73, 1), Among(u"\u0932\u093E\u0928\u094D", -1, 1), Among(u"\u091B\u093F\u0928\u094D", -1, 1), Among(u"\u0925\u093F\u0928\u094D", -1, 1), Among(u"\u092A\u0930\u094D", -1, 1), Among(u"\u0907\u0938\u094D", -1, 1), Among(u"\u0925\u093F\u0907\u0938\u094D", 79, 1), Among(u"\u091B\u0938\u094D", -1, 1), Among(u"\u0907\u091B\u0938\u094D", 81, 1), Among(u"\u090F\u091B\u0938\u094D", 81, 1), Among(u"\u093F\u091B\u0938\u094D", 81, 1), Among(u"\u0947\u091B\u0938\u094D", 81, 1), Among(u"\u0928\u0947\u091B\u0938\u094D", 85, 1), Among(u"\u093F\u0938\u094D", -1, 1), Among(u"\u0925\u093F\u0938\u094D", 87, 1), Among(u"\u091B\u0947\u0938\u094D", -1, 1), Among(u"\u0939\u094B\u0938\u094D", -1, 1) ] def __r_remove_category_1(self): # (, line 53 # [, line 54 self.ket = self.cursor # substring, line 54 among_var = self.find_among_b(NepaliStemmer.a_0) if among_var == 0: return False # ], line 54 self.bra = self.cursor if among_var == 1: # (, line 58 # delete, line 58 if not self.slice_del(): return False elif among_var == 2: # (, line 59 # or, line 59 try: v_1 = self.limit - self.cursor try: # (, line 59 # or, line 59 try: v_2 = self.limit - self.cursor try: # literal, line 59 if not self.eq_s_b(u"\u090F"): raise lab3() raise lab2() except lab3: pass self.cursor = self.limit - v_2 # literal, line 59 if not self.eq_s_b(u"\u0947"): raise lab1() except lab2: pass # (, line 59 raise lab0() except lab1: pass self.cursor = self.limit - v_1 # delete, line 59 if not self.slice_del(): return False except lab0: pass return True def __r_check_category_2(self): # (, line 63 # [, line 64 self.ket = self.cursor # substring, line 64 if self.find_among_b(NepaliStemmer.a_1) == 0: return False # ], line 64 self.bra = self.cursor return True def __r_remove_category_2(self): # (, line 69 # [, line 70 self.ket = self.cursor # substring, line 70 among_var = self.find_among_b(NepaliStemmer.a_2) if among_var == 0: return False # ], line 70 self.bra = self.cursor if among_var == 1: # (, line 71 # or, line 71 try: v_1 = self.limit - self.cursor try: # literal, line 71 if not self.eq_s_b(u"\u092F\u094C"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # literal, line 71 if not self.eq_s_b(u"\u091B\u094C"): raise lab2() raise lab0() except lab2: pass self.cursor = self.limit - v_1 try: # literal, line 71 if not self.eq_s_b(u"\u0928\u094C"): raise lab3() raise lab0() except lab3: pass self.cursor = self.limit - v_1 # literal, line 71 if not self.eq_s_b(u"\u0925\u0947"): return False except lab0: pass # delete, line 71 if not self.slice_del(): return False elif among_var == 2: # (, line 72 # literal, line 72 if not self.eq_s_b(u"\u0924\u094D\u0930"): return False # delete, line 72 if not self.slice_del(): return False return True def __r_remove_category_3(self): # (, line 76 # [, line 77 self.ket = self.cursor # substring, line 77 if self.find_among_b(NepaliStemmer.a_3) == 0: return False # ], line 77 self.bra = self.cursor # (, line 79 # delete, line 79 if not self.slice_del(): return False return True def _stem(self): # (, line 85 # backwards, line 86 self.limit_backward = self.cursor self.cursor = self.limit # (, line 86 # do, line 87 v_1 = self.limit - self.cursor # call remove_category_1, line 87 self.__r_remove_category_1() self.cursor = self.limit - v_1 # do, line 88 v_2 = self.limit - self.cursor try: # (, line 88 # repeat, line 89 while True: v_3 = self.limit - self.cursor try: # (, line 89 # do, line 89 v_4 = self.limit - self.cursor try: # (, line 89 # and, line 89 v_5 = self.limit - self.cursor # call check_category_2, line 89 if not self.__r_check_category_2(): raise lab2() self.cursor = self.limit - v_5 # call remove_category_2, line 89 if not self.__r_remove_category_2(): raise lab2() except lab2: pass self.cursor = self.limit - v_4 # call remove_category_3, line 89 if not self.__r_remove_category_3(): raise lab1() continue except lab1: pass self.cursor = self.limit - v_3 break except lab0: pass self.cursor = self.limit - v_2 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/norwegian_stemmer.py0000644000175000017500000001533213545325430025705 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class NorwegianStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"a", -1, 1), Among(u"e", -1, 1), Among(u"ede", 1, 1), Among(u"ande", 1, 1), Among(u"ende", 1, 1), Among(u"ane", 1, 1), Among(u"ene", 1, 1), Among(u"hetene", 6, 1), Among(u"erte", 1, 3), Among(u"en", -1, 1), Among(u"heten", 9, 1), Among(u"ar", -1, 1), Among(u"er", -1, 1), Among(u"heter", 12, 1), Among(u"s", -1, 2), Among(u"as", 14, 1), Among(u"es", 14, 1), Among(u"edes", 16, 1), Among(u"endes", 16, 1), Among(u"enes", 16, 1), Among(u"hetenes", 19, 1), Among(u"ens", 14, 1), Among(u"hetens", 21, 1), Among(u"ers", 14, 1), Among(u"ets", 14, 1), Among(u"et", -1, 1), Among(u"het", 25, 1), Among(u"ert", -1, 3), Among(u"ast", -1, 1) ] a_1 = [ Among(u"dt", -1, -1), Among(u"vt", -1, -1) ] a_2 = [ Among(u"leg", -1, 1), Among(u"eleg", 0, 1), Among(u"ig", -1, 1), Among(u"eig", 2, 1), Among(u"lig", 2, 1), Among(u"elig", 4, 1), Among(u"els", -1, 1), Among(u"lov", -1, 1), Among(u"elov", 7, 1), Among(u"slov", 7, 1), Among(u"hetslov", 9, 1) ] g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128] g_s_ending = [119, 125, 149, 1] I_x = 0 I_p1 = 0 def __r_mark_regions(self): # (, line 26 self.I_p1 = self.limit # test, line 30 v_1 = self.cursor # (, line 30 # hop, line 30 c = self.cursor + 3 if 0 > c or c > self.limit: return False self.cursor = c # setmark x, line 30 self.I_x = self.cursor self.cursor = v_1 # goto grouping v, line 31 if not self.go_out_grouping(NorwegianStemmer.g_v, 97, 248): return False # gopast non v, line 31 if not self.go_in_grouping(NorwegianStemmer.g_v, 97, 248): return False self.cursor += 1 # setmark p1, line 31 self.I_p1 = self.cursor # try, line 32 try: # (, line 32 if not self.I_p1 < self.I_x: raise lab0() self.I_p1 = self.I_x except lab0: pass return True def __r_main_suffix(self): # (, line 37 # setlimit, line 38 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 38 # [, line 38 self.ket = self.cursor # substring, line 38 among_var = self.find_among_b(NorwegianStemmer.a_0) if among_var == 0: self.limit_backward = v_2 return False # ], line 38 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 44 # delete, line 44 if not self.slice_del(): return False elif among_var == 2: # (, line 46 # or, line 46 try: v_3 = self.limit - self.cursor try: if not self.in_grouping_b(NorwegianStemmer.g_s_ending, 98, 122): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_3 # (, line 46 # literal, line 46 if not self.eq_s_b(u"k"): return False if not self.out_grouping_b(NorwegianStemmer.g_v, 97, 248): return False except lab0: pass # delete, line 46 if not self.slice_del(): return False elif among_var == 3: # (, line 48 # <-, line 48 if not self.slice_from(u"er"): return False return True def __r_consonant_pair(self): # (, line 52 # test, line 53 v_1 = self.limit - self.cursor # (, line 53 # setlimit, line 54 if self.cursor < self.I_p1: return False v_3 = self.limit_backward self.limit_backward = self.I_p1 # (, line 54 # [, line 54 self.ket = self.cursor # substring, line 54 if self.find_among_b(NorwegianStemmer.a_1) == 0: self.limit_backward = v_3 return False # ], line 54 self.bra = self.cursor self.limit_backward = v_3 self.cursor = self.limit - v_1 # next, line 59 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # ], line 59 self.bra = self.cursor # delete, line 59 if not self.slice_del(): return False return True def __r_other_suffix(self): # (, line 62 # setlimit, line 63 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 63 # [, line 63 self.ket = self.cursor # substring, line 63 if self.find_among_b(NorwegianStemmer.a_2) == 0: self.limit_backward = v_2 return False # ], line 63 self.bra = self.cursor self.limit_backward = v_2 # (, line 67 # delete, line 67 if not self.slice_del(): return False return True def _stem(self): # (, line 72 # do, line 74 v_1 = self.cursor # call mark_regions, line 74 self.__r_mark_regions() self.cursor = v_1 # backwards, line 75 self.limit_backward = self.cursor self.cursor = self.limit # (, line 75 # do, line 76 v_2 = self.limit - self.cursor # call main_suffix, line 76 self.__r_main_suffix() self.cursor = self.limit - v_2 # do, line 77 v_3 = self.limit - self.cursor # call consonant_pair, line 77 self.__r_consonant_pair() self.cursor = self.limit - v_3 # do, line 78 v_4 = self.limit - self.cursor # call other_suffix, line 78 self.__r_other_suffix() self.cursor = self.limit - v_4 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/porter_stemmer.py0000644000175000017500000004700113545325430025225 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class PorterStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"s", -1, 3), Among(u"ies", 0, 2), Among(u"sses", 0, 1), Among(u"ss", 0, -1) ] a_1 = [ Among(u"", -1, 3), Among(u"bb", 0, 2), Among(u"dd", 0, 2), Among(u"ff", 0, 2), Among(u"gg", 0, 2), Among(u"bl", 0, 1), Among(u"mm", 0, 2), Among(u"nn", 0, 2), Among(u"pp", 0, 2), Among(u"rr", 0, 2), Among(u"at", 0, 1), Among(u"tt", 0, 2), Among(u"iz", 0, 1) ] a_2 = [ Among(u"ed", -1, 2), Among(u"eed", 0, 1), Among(u"ing", -1, 2) ] a_3 = [ Among(u"anci", -1, 3), Among(u"enci", -1, 2), Among(u"abli", -1, 4), Among(u"eli", -1, 6), Among(u"alli", -1, 9), Among(u"ousli", -1, 11), Among(u"entli", -1, 5), Among(u"aliti", -1, 9), Among(u"biliti", -1, 13), Among(u"iviti", -1, 12), Among(u"tional", -1, 1), Among(u"ational", 10, 8), Among(u"alism", -1, 9), Among(u"ation", -1, 8), Among(u"ization", 13, 7), Among(u"izer", -1, 7), Among(u"ator", -1, 8), Among(u"iveness", -1, 12), Among(u"fulness", -1, 10), Among(u"ousness", -1, 11) ] a_4 = [ Among(u"icate", -1, 2), Among(u"ative", -1, 3), Among(u"alize", -1, 1), Among(u"iciti", -1, 2), Among(u"ical", -1, 2), Among(u"ful", -1, 3), Among(u"ness", -1, 3) ] a_5 = [ Among(u"ic", -1, 1), Among(u"ance", -1, 1), Among(u"ence", -1, 1), Among(u"able", -1, 1), Among(u"ible", -1, 1), Among(u"ate", -1, 1), Among(u"ive", -1, 1), Among(u"ize", -1, 1), Among(u"iti", -1, 1), Among(u"al", -1, 1), Among(u"ism", -1, 1), Among(u"ion", -1, 2), Among(u"er", -1, 1), Among(u"ous", -1, 1), Among(u"ant", -1, 1), Among(u"ent", -1, 1), Among(u"ment", 15, 1), Among(u"ement", 16, 1), Among(u"ou", -1, 1) ] g_v = [17, 65, 16, 1] g_v_WXY = [1, 17, 65, 208, 1] B_Y_found = False I_p2 = 0 I_p1 = 0 def __r_shortv(self): # (, line 19 if not self.out_grouping_b(PorterStemmer.g_v_WXY, 89, 121): return False if not self.in_grouping_b(PorterStemmer.g_v, 97, 121): return False if not self.out_grouping_b(PorterStemmer.g_v, 97, 121): return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_Step_1a(self): # (, line 24 # [, line 25 self.ket = self.cursor # substring, line 25 among_var = self.find_among_b(PorterStemmer.a_0) if among_var == 0: return False # ], line 25 self.bra = self.cursor if among_var == 1: # (, line 26 # <-, line 26 if not self.slice_from(u"ss"): return False elif among_var == 2: # (, line 27 # <-, line 27 if not self.slice_from(u"i"): return False elif among_var == 3: # (, line 29 # delete, line 29 if not self.slice_del(): return False return True def __r_Step_1b(self): # (, line 33 # [, line 34 self.ket = self.cursor # substring, line 34 among_var = self.find_among_b(PorterStemmer.a_2) if among_var == 0: return False # ], line 34 self.bra = self.cursor if among_var == 1: # (, line 35 # call R1, line 35 if not self.__r_R1(): return False # <-, line 35 if not self.slice_from(u"ee"): return False elif among_var == 2: # (, line 37 # test, line 38 v_1 = self.limit - self.cursor # gopast grouping v, line 38 if not self.go_out_grouping_b(PorterStemmer.g_v, 97, 121): return False self.cursor -= 1 self.cursor = self.limit - v_1 # delete, line 38 if not self.slice_del(): return False # test, line 39 v_2 = self.limit - self.cursor # substring, line 39 among_var = self.find_among_b(PorterStemmer.a_1) if among_var == 0: return False self.cursor = self.limit - v_2 if among_var == 1: # (, line 41 # <+, line 41 c = self.cursor self.insert(self.cursor, self.cursor, u"e") self.cursor = c elif among_var == 2: # (, line 44 # [, line 44 self.ket = self.cursor # next, line 44 if self.cursor <= self.limit_backward: return False self.cursor -= 1 # ], line 44 self.bra = self.cursor # delete, line 44 if not self.slice_del(): return False elif among_var == 3: # (, line 45 # atmark, line 45 if self.cursor != self.I_p1: return False # test, line 45 v_3 = self.limit - self.cursor # call shortv, line 45 if not self.__r_shortv(): return False self.cursor = self.limit - v_3 # <+, line 45 c = self.cursor self.insert(self.cursor, self.cursor, u"e") self.cursor = c return True def __r_Step_1c(self): # (, line 51 # [, line 52 self.ket = self.cursor # or, line 52 try: v_1 = self.limit - self.cursor try: # literal, line 52 if not self.eq_s_b(u"y"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # literal, line 52 if not self.eq_s_b(u"Y"): return False except lab0: pass # ], line 52 self.bra = self.cursor # gopast grouping v, line 53 if not self.go_out_grouping_b(PorterStemmer.g_v, 97, 121): return False self.cursor -= 1 # <-, line 54 if not self.slice_from(u"i"): return False return True def __r_Step_2(self): # (, line 57 # [, line 58 self.ket = self.cursor # substring, line 58 among_var = self.find_among_b(PorterStemmer.a_3) if among_var == 0: return False # ], line 58 self.bra = self.cursor # call R1, line 58 if not self.__r_R1(): return False if among_var == 1: # (, line 59 # <-, line 59 if not self.slice_from(u"tion"): return False elif among_var == 2: # (, line 60 # <-, line 60 if not self.slice_from(u"ence"): return False elif among_var == 3: # (, line 61 # <-, line 61 if not self.slice_from(u"ance"): return False elif among_var == 4: # (, line 62 # <-, line 62 if not self.slice_from(u"able"): return False elif among_var == 5: # (, line 63 # <-, line 63 if not self.slice_from(u"ent"): return False elif among_var == 6: # (, line 64 # <-, line 64 if not self.slice_from(u"e"): return False elif among_var == 7: # (, line 66 # <-, line 66 if not self.slice_from(u"ize"): return False elif among_var == 8: # (, line 68 # <-, line 68 if not self.slice_from(u"ate"): return False elif among_var == 9: # (, line 69 # <-, line 69 if not self.slice_from(u"al"): return False elif among_var == 10: # (, line 72 # <-, line 72 if not self.slice_from(u"ful"): return False elif among_var == 11: # (, line 74 # <-, line 74 if not self.slice_from(u"ous"): return False elif among_var == 12: # (, line 76 # <-, line 76 if not self.slice_from(u"ive"): return False elif among_var == 13: # (, line 77 # <-, line 77 if not self.slice_from(u"ble"): return False return True def __r_Step_3(self): # (, line 81 # [, line 82 self.ket = self.cursor # substring, line 82 among_var = self.find_among_b(PorterStemmer.a_4) if among_var == 0: return False # ], line 82 self.bra = self.cursor # call R1, line 82 if not self.__r_R1(): return False if among_var == 1: # (, line 83 # <-, line 83 if not self.slice_from(u"al"): return False elif among_var == 2: # (, line 85 # <-, line 85 if not self.slice_from(u"ic"): return False elif among_var == 3: # (, line 87 # delete, line 87 if not self.slice_del(): return False return True def __r_Step_4(self): # (, line 91 # [, line 92 self.ket = self.cursor # substring, line 92 among_var = self.find_among_b(PorterStemmer.a_5) if among_var == 0: return False # ], line 92 self.bra = self.cursor # call R2, line 92 if not self.__r_R2(): return False if among_var == 1: # (, line 95 # delete, line 95 if not self.slice_del(): return False elif among_var == 2: # (, line 96 # or, line 96 try: v_1 = self.limit - self.cursor try: # literal, line 96 if not self.eq_s_b(u"s"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # literal, line 96 if not self.eq_s_b(u"t"): return False except lab0: pass # delete, line 96 if not self.slice_del(): return False return True def __r_Step_5a(self): # (, line 100 # [, line 101 self.ket = self.cursor # literal, line 101 if not self.eq_s_b(u"e"): return False # ], line 101 self.bra = self.cursor # or, line 102 try: v_1 = self.limit - self.cursor try: # call R2, line 102 if not self.__r_R2(): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 102 # call R1, line 102 if not self.__r_R1(): return False # not, line 102 v_2 = self.limit - self.cursor try: # call shortv, line 102 if not self.__r_shortv(): raise lab2() return False except lab2: pass self.cursor = self.limit - v_2 except lab0: pass # delete, line 103 if not self.slice_del(): return False return True def __r_Step_5b(self): # (, line 106 # [, line 107 self.ket = self.cursor # literal, line 107 if not self.eq_s_b(u"l"): return False # ], line 107 self.bra = self.cursor # call R2, line 108 if not self.__r_R2(): return False # literal, line 108 if not self.eq_s_b(u"l"): return False # delete, line 109 if not self.slice_del(): return False return True def _stem(self): # (, line 113 # unset Y_found, line 115 self.B_Y_found = False # do, line 116 v_1 = self.cursor try: # (, line 116 # [, line 116 self.bra = self.cursor # literal, line 116 if not self.eq_s(u"y"): raise lab0() # ], line 116 self.ket = self.cursor # <-, line 116 if not self.slice_from(u"Y"): return False # set Y_found, line 116 self.B_Y_found = True except lab0: pass self.cursor = v_1 # do, line 117 v_2 = self.cursor try: # repeat, line 117 while True: v_3 = self.cursor try: # (, line 117 # goto, line 117 try: while True: v_4 = self.cursor try: # (, line 117 if not self.in_grouping(PorterStemmer.g_v, 97, 121): raise lab4() # [, line 117 self.bra = self.cursor # literal, line 117 if not self.eq_s(u"y"): raise lab4() # ], line 117 self.ket = self.cursor self.cursor = v_4 raise lab3() except lab4: pass self.cursor = v_4 if self.cursor >= self.limit: raise lab2() self.cursor += 1 except lab3: pass # <-, line 117 if not self.slice_from(u"Y"): return False # set Y_found, line 117 self.B_Y_found = True continue except lab2: pass self.cursor = v_3 break except lab1: pass self.cursor = v_2 self.I_p1 = self.limit self.I_p2 = self.limit # do, line 121 v_5 = self.cursor try: # (, line 121 # gopast grouping v, line 122 if not self.go_out_grouping(PorterStemmer.g_v, 97, 121): raise lab5() self.cursor += 1 # gopast non v, line 122 if not self.go_in_grouping(PorterStemmer.g_v, 97, 121): raise lab5() self.cursor += 1 # setmark p1, line 122 self.I_p1 = self.cursor # gopast grouping v, line 123 if not self.go_out_grouping(PorterStemmer.g_v, 97, 121): raise lab5() self.cursor += 1 # gopast non v, line 123 if not self.go_in_grouping(PorterStemmer.g_v, 97, 121): raise lab5() self.cursor += 1 # setmark p2, line 123 self.I_p2 = self.cursor except lab5: pass self.cursor = v_5 # backwards, line 126 self.limit_backward = self.cursor self.cursor = self.limit # (, line 126 # do, line 127 v_6 = self.limit - self.cursor # call Step_1a, line 127 self.__r_Step_1a() self.cursor = self.limit - v_6 # do, line 128 v_7 = self.limit - self.cursor # call Step_1b, line 128 self.__r_Step_1b() self.cursor = self.limit - v_7 # do, line 129 v_8 = self.limit - self.cursor # call Step_1c, line 129 self.__r_Step_1c() self.cursor = self.limit - v_8 # do, line 130 v_9 = self.limit - self.cursor # call Step_2, line 130 self.__r_Step_2() self.cursor = self.limit - v_9 # do, line 131 v_10 = self.limit - self.cursor # call Step_3, line 131 self.__r_Step_3() self.cursor = self.limit - v_10 # do, line 132 v_11 = self.limit - self.cursor # call Step_4, line 132 self.__r_Step_4() self.cursor = self.limit - v_11 # do, line 133 v_12 = self.limit - self.cursor # call Step_5a, line 133 self.__r_Step_5a() self.cursor = self.limit - v_12 # do, line 134 v_13 = self.limit - self.cursor # call Step_5b, line 134 self.__r_Step_5b() self.cursor = self.limit - v_13 self.cursor = self.limit_backward # do, line 137 v_14 = self.cursor try: # (, line 137 # Boolean test Y_found, line 137 if not self.B_Y_found: raise lab6() # repeat, line 137 while True: v_15 = self.cursor try: # (, line 137 # goto, line 137 try: while True: v_16 = self.cursor try: # (, line 137 # [, line 137 self.bra = self.cursor # literal, line 137 if not self.eq_s(u"Y"): raise lab9() # ], line 137 self.ket = self.cursor self.cursor = v_16 raise lab8() except lab9: pass self.cursor = v_16 if self.cursor >= self.limit: raise lab7() self.cursor += 1 except lab8: pass # <-, line 137 if not self.slice_from(u"y"): return False continue except lab7: pass self.cursor = v_15 break except lab6: pass self.cursor = v_14 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass class lab9(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/portuguese_stemmer.py0000644000175000017500000006374513545325430026131 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class PortugueseStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 3), Among(u"\u00E3", 0, 1), Among(u"\u00F5", 0, 2) ] a_1 = [ Among(u"", -1, 3), Among(u"a~", 0, 1), Among(u"o~", 0, 2) ] a_2 = [ Among(u"ic", -1, -1), Among(u"ad", -1, -1), Among(u"os", -1, -1), Among(u"iv", -1, 1) ] a_3 = [ Among(u"ante", -1, 1), Among(u"avel", -1, 1), Among(u"\u00EDvel", -1, 1) ] a_4 = [ Among(u"ic", -1, 1), Among(u"abil", -1, 1), Among(u"iv", -1, 1) ] a_5 = [ Among(u"ica", -1, 1), Among(u"\u00E2ncia", -1, 1), Among(u"\u00EAncia", -1, 4), Among(u"logia", -1, 2), Among(u"ira", -1, 9), Among(u"adora", -1, 1), Among(u"osa", -1, 1), Among(u"ista", -1, 1), Among(u"iva", -1, 8), Among(u"eza", -1, 1), Among(u"idade", -1, 7), Among(u"ante", -1, 1), Among(u"mente", -1, 6), Among(u"amente", 12, 5), Among(u"\u00E1vel", -1, 1), Among(u"\u00EDvel", -1, 1), Among(u"ico", -1, 1), Among(u"ismo", -1, 1), Among(u"oso", -1, 1), Among(u"amento", -1, 1), Among(u"imento", -1, 1), Among(u"ivo", -1, 8), Among(u"a\u00E7a~o", -1, 1), Among(u"u\u00E7a~o", -1, 3), Among(u"ador", -1, 1), Among(u"icas", -1, 1), Among(u"\u00EAncias", -1, 4), Among(u"logias", -1, 2), Among(u"iras", -1, 9), Among(u"adoras", -1, 1), Among(u"osas", -1, 1), Among(u"istas", -1, 1), Among(u"ivas", -1, 8), Among(u"ezas", -1, 1), Among(u"idades", -1, 7), Among(u"adores", -1, 1), Among(u"antes", -1, 1), Among(u"a\u00E7o~es", -1, 1), Among(u"u\u00E7o~es", -1, 3), Among(u"icos", -1, 1), Among(u"ismos", -1, 1), Among(u"osos", -1, 1), Among(u"amentos", -1, 1), Among(u"imentos", -1, 1), Among(u"ivos", -1, 8) ] a_6 = [ Among(u"ada", -1, 1), Among(u"ida", -1, 1), Among(u"ia", -1, 1), Among(u"aria", 2, 1), Among(u"eria", 2, 1), Among(u"iria", 2, 1), Among(u"ara", -1, 1), Among(u"era", -1, 1), Among(u"ira", -1, 1), Among(u"ava", -1, 1), Among(u"asse", -1, 1), Among(u"esse", -1, 1), Among(u"isse", -1, 1), Among(u"aste", -1, 1), Among(u"este", -1, 1), Among(u"iste", -1, 1), Among(u"ei", -1, 1), Among(u"arei", 16, 1), Among(u"erei", 16, 1), Among(u"irei", 16, 1), Among(u"am", -1, 1), Among(u"iam", 20, 1), Among(u"ariam", 21, 1), Among(u"eriam", 21, 1), Among(u"iriam", 21, 1), Among(u"aram", 20, 1), Among(u"eram", 20, 1), Among(u"iram", 20, 1), Among(u"avam", 20, 1), Among(u"em", -1, 1), Among(u"arem", 29, 1), Among(u"erem", 29, 1), Among(u"irem", 29, 1), Among(u"assem", 29, 1), Among(u"essem", 29, 1), Among(u"issem", 29, 1), Among(u"ado", -1, 1), Among(u"ido", -1, 1), Among(u"ando", -1, 1), Among(u"endo", -1, 1), Among(u"indo", -1, 1), Among(u"ara~o", -1, 1), Among(u"era~o", -1, 1), Among(u"ira~o", -1, 1), Among(u"ar", -1, 1), Among(u"er", -1, 1), Among(u"ir", -1, 1), Among(u"as", -1, 1), Among(u"adas", 47, 1), Among(u"idas", 47, 1), Among(u"ias", 47, 1), Among(u"arias", 50, 1), Among(u"erias", 50, 1), Among(u"irias", 50, 1), Among(u"aras", 47, 1), Among(u"eras", 47, 1), Among(u"iras", 47, 1), Among(u"avas", 47, 1), Among(u"es", -1, 1), Among(u"ardes", 58, 1), Among(u"erdes", 58, 1), Among(u"irdes", 58, 1), Among(u"ares", 58, 1), Among(u"eres", 58, 1), Among(u"ires", 58, 1), Among(u"asses", 58, 1), Among(u"esses", 58, 1), Among(u"isses", 58, 1), Among(u"astes", 58, 1), Among(u"estes", 58, 1), Among(u"istes", 58, 1), Among(u"is", -1, 1), Among(u"ais", 71, 1), Among(u"eis", 71, 1), Among(u"areis", 73, 1), Among(u"ereis", 73, 1), Among(u"ireis", 73, 1), Among(u"\u00E1reis", 73, 1), Among(u"\u00E9reis", 73, 1), Among(u"\u00EDreis", 73, 1), Among(u"\u00E1sseis", 73, 1), Among(u"\u00E9sseis", 73, 1), Among(u"\u00EDsseis", 73, 1), Among(u"\u00E1veis", 73, 1), Among(u"\u00EDeis", 73, 1), Among(u"ar\u00EDeis", 84, 1), Among(u"er\u00EDeis", 84, 1), Among(u"ir\u00EDeis", 84, 1), Among(u"ados", -1, 1), Among(u"idos", -1, 1), Among(u"amos", -1, 1), Among(u"\u00E1ramos", 90, 1), Among(u"\u00E9ramos", 90, 1), Among(u"\u00EDramos", 90, 1), Among(u"\u00E1vamos", 90, 1), Among(u"\u00EDamos", 90, 1), Among(u"ar\u00EDamos", 95, 1), Among(u"er\u00EDamos", 95, 1), Among(u"ir\u00EDamos", 95, 1), Among(u"emos", -1, 1), Among(u"aremos", 99, 1), Among(u"eremos", 99, 1), Among(u"iremos", 99, 1), Among(u"\u00E1ssemos", 99, 1), Among(u"\u00EAssemos", 99, 1), Among(u"\u00EDssemos", 99, 1), Among(u"imos", -1, 1), Among(u"armos", -1, 1), Among(u"ermos", -1, 1), Among(u"irmos", -1, 1), Among(u"\u00E1mos", -1, 1), Among(u"ar\u00E1s", -1, 1), Among(u"er\u00E1s", -1, 1), Among(u"ir\u00E1s", -1, 1), Among(u"eu", -1, 1), Among(u"iu", -1, 1), Among(u"ou", -1, 1), Among(u"ar\u00E1", -1, 1), Among(u"er\u00E1", -1, 1), Among(u"ir\u00E1", -1, 1) ] a_7 = [ Among(u"a", -1, 1), Among(u"i", -1, 1), Among(u"o", -1, 1), Among(u"os", -1, 1), Among(u"\u00E1", -1, 1), Among(u"\u00ED", -1, 1), Among(u"\u00F3", -1, 1) ] a_8 = [ Among(u"e", -1, 1), Among(u"\u00E7", -1, 2), Among(u"\u00E9", -1, 1), Among(u"\u00EA", -1, 1) ] g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2] I_p2 = 0 I_p1 = 0 I_pV = 0 def __r_prelude(self): # repeat, line 36 while True: v_1 = self.cursor try: # (, line 36 # [, line 37 self.bra = self.cursor # substring, line 37 among_var = self.find_among(PortugueseStemmer.a_0) if among_var == 0: raise lab0() # ], line 37 self.ket = self.cursor if among_var == 1: # (, line 38 # <-, line 38 if not self.slice_from(u"a~"): return False elif among_var == 2: # (, line 39 # <-, line 39 if not self.slice_from(u"o~"): return False elif among_var == 3: # (, line 40 # next, line 40 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_mark_regions(self): # (, line 44 self.I_pV = self.limit self.I_p1 = self.limit self.I_p2 = self.limit # do, line 50 v_1 = self.cursor try: # (, line 50 # or, line 52 try: v_2 = self.cursor try: # (, line 51 if not self.in_grouping(PortugueseStemmer.g_v, 97, 250): raise lab2() # or, line 51 try: v_3 = self.cursor try: # (, line 51 if not self.out_grouping(PortugueseStemmer.g_v, 97, 250): raise lab4() # gopast grouping v, line 51 if not self.go_out_grouping(PortugueseStemmer.g_v, 97, 250): raise lab4() self.cursor += 1 raise lab3() except lab4: pass self.cursor = v_3 # (, line 51 if not self.in_grouping(PortugueseStemmer.g_v, 97, 250): raise lab2() # gopast non v, line 51 if not self.go_in_grouping(PortugueseStemmer.g_v, 97, 250): raise lab2() self.cursor += 1 except lab3: pass raise lab1() except lab2: pass self.cursor = v_2 # (, line 53 if not self.out_grouping(PortugueseStemmer.g_v, 97, 250): raise lab0() # or, line 53 try: v_4 = self.cursor try: # (, line 53 if not self.out_grouping(PortugueseStemmer.g_v, 97, 250): raise lab6() # gopast grouping v, line 53 if not self.go_out_grouping(PortugueseStemmer.g_v, 97, 250): raise lab6() self.cursor += 1 raise lab5() except lab6: pass self.cursor = v_4 # (, line 53 if not self.in_grouping(PortugueseStemmer.g_v, 97, 250): raise lab0() # next, line 53 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab5: pass except lab1: pass # setmark pV, line 54 self.I_pV = self.cursor except lab0: pass self.cursor = v_1 # do, line 56 v_5 = self.cursor try: # (, line 56 # gopast grouping v, line 57 if not self.go_out_grouping(PortugueseStemmer.g_v, 97, 250): raise lab7() self.cursor += 1 # gopast non v, line 57 if not self.go_in_grouping(PortugueseStemmer.g_v, 97, 250): raise lab7() self.cursor += 1 # setmark p1, line 57 self.I_p1 = self.cursor # gopast grouping v, line 58 if not self.go_out_grouping(PortugueseStemmer.g_v, 97, 250): raise lab7() self.cursor += 1 # gopast non v, line 58 if not self.go_in_grouping(PortugueseStemmer.g_v, 97, 250): raise lab7() self.cursor += 1 # setmark p2, line 58 self.I_p2 = self.cursor except lab7: pass self.cursor = v_5 return True def __r_postlude(self): # repeat, line 62 while True: v_1 = self.cursor try: # (, line 62 # [, line 63 self.bra = self.cursor # substring, line 63 among_var = self.find_among(PortugueseStemmer.a_1) if among_var == 0: raise lab0() # ], line 63 self.ket = self.cursor if among_var == 1: # (, line 64 # <-, line 64 if not self.slice_from(u"\u00E3"): return False elif among_var == 2: # (, line 65 # <-, line 65 if not self.slice_from(u"\u00F5"): return False elif among_var == 3: # (, line 66 # next, line 66 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_RV(self): if not self.I_pV <= self.cursor: return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_standard_suffix(self): # (, line 76 # [, line 77 self.ket = self.cursor # substring, line 77 among_var = self.find_among_b(PortugueseStemmer.a_5) if among_var == 0: return False # ], line 77 self.bra = self.cursor if among_var == 1: # (, line 92 # call R2, line 93 if not self.__r_R2(): return False # delete, line 93 if not self.slice_del(): return False elif among_var == 2: # (, line 97 # call R2, line 98 if not self.__r_R2(): return False # <-, line 98 if not self.slice_from(u"log"): return False elif among_var == 3: # (, line 101 # call R2, line 102 if not self.__r_R2(): return False # <-, line 102 if not self.slice_from(u"u"): return False elif among_var == 4: # (, line 105 # call R2, line 106 if not self.__r_R2(): return False # <-, line 106 if not self.slice_from(u"ente"): return False elif among_var == 5: # (, line 109 # call R1, line 110 if not self.__r_R1(): return False # delete, line 110 if not self.slice_del(): return False # try, line 111 v_1 = self.limit - self.cursor try: # (, line 111 # [, line 112 self.ket = self.cursor # substring, line 112 among_var = self.find_among_b(PortugueseStemmer.a_2) if among_var == 0: self.cursor = self.limit - v_1 raise lab0() # ], line 112 self.bra = self.cursor # call R2, line 112 if not self.__r_R2(): self.cursor = self.limit - v_1 raise lab0() # delete, line 112 if not self.slice_del(): return False if among_var == 1: # (, line 113 # [, line 113 self.ket = self.cursor # literal, line 113 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_1 raise lab0() # ], line 113 self.bra = self.cursor # call R2, line 113 if not self.__r_R2(): self.cursor = self.limit - v_1 raise lab0() # delete, line 113 if not self.slice_del(): return False except lab0: pass elif among_var == 6: # (, line 121 # call R2, line 122 if not self.__r_R2(): return False # delete, line 122 if not self.slice_del(): return False # try, line 123 v_2 = self.limit - self.cursor try: # (, line 123 # [, line 124 self.ket = self.cursor # substring, line 124 if self.find_among_b(PortugueseStemmer.a_3) == 0: self.cursor = self.limit - v_2 raise lab1() # ], line 124 self.bra = self.cursor # (, line 127 # call R2, line 127 if not self.__r_R2(): self.cursor = self.limit - v_2 raise lab1() # delete, line 127 if not self.slice_del(): return False except lab1: pass elif among_var == 7: # (, line 133 # call R2, line 134 if not self.__r_R2(): return False # delete, line 134 if not self.slice_del(): return False # try, line 135 v_3 = self.limit - self.cursor try: # (, line 135 # [, line 136 self.ket = self.cursor # substring, line 136 if self.find_among_b(PortugueseStemmer.a_4) == 0: self.cursor = self.limit - v_3 raise lab2() # ], line 136 self.bra = self.cursor # (, line 139 # call R2, line 139 if not self.__r_R2(): self.cursor = self.limit - v_3 raise lab2() # delete, line 139 if not self.slice_del(): return False except lab2: pass elif among_var == 8: # (, line 145 # call R2, line 146 if not self.__r_R2(): return False # delete, line 146 if not self.slice_del(): return False # try, line 147 v_4 = self.limit - self.cursor try: # (, line 147 # [, line 148 self.ket = self.cursor # literal, line 148 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_4 raise lab3() # ], line 148 self.bra = self.cursor # call R2, line 148 if not self.__r_R2(): self.cursor = self.limit - v_4 raise lab3() # delete, line 148 if not self.slice_del(): return False except lab3: pass elif among_var == 9: # (, line 152 # call RV, line 153 if not self.__r_RV(): return False # literal, line 153 if not self.eq_s_b(u"e"): return False # <-, line 154 if not self.slice_from(u"ir"): return False return True def __r_verb_suffix(self): # setlimit, line 159 if self.cursor < self.I_pV: return False v_2 = self.limit_backward self.limit_backward = self.I_pV # (, line 159 # [, line 160 self.ket = self.cursor # substring, line 160 if self.find_among_b(PortugueseStemmer.a_6) == 0: self.limit_backward = v_2 return False # ], line 160 self.bra = self.cursor # (, line 179 # delete, line 179 if not self.slice_del(): return False self.limit_backward = v_2 return True def __r_residual_suffix(self): # (, line 183 # [, line 184 self.ket = self.cursor # substring, line 184 if self.find_among_b(PortugueseStemmer.a_7) == 0: return False # ], line 184 self.bra = self.cursor # (, line 187 # call RV, line 187 if not self.__r_RV(): return False # delete, line 187 if not self.slice_del(): return False return True def __r_residual_form(self): # (, line 191 # [, line 192 self.ket = self.cursor # substring, line 192 among_var = self.find_among_b(PortugueseStemmer.a_8) if among_var == 0: return False # ], line 192 self.bra = self.cursor if among_var == 1: # (, line 194 # call RV, line 194 if not self.__r_RV(): return False # delete, line 194 if not self.slice_del(): return False # [, line 194 self.ket = self.cursor # or, line 194 try: v_1 = self.limit - self.cursor try: # (, line 194 # literal, line 194 if not self.eq_s_b(u"u"): raise lab1() # ], line 194 self.bra = self.cursor # test, line 194 v_2 = self.limit - self.cursor # literal, line 194 if not self.eq_s_b(u"g"): raise lab1() self.cursor = self.limit - v_2 raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 195 # literal, line 195 if not self.eq_s_b(u"i"): return False # ], line 195 self.bra = self.cursor # test, line 195 v_3 = self.limit - self.cursor # literal, line 195 if not self.eq_s_b(u"c"): return False self.cursor = self.limit - v_3 except lab0: pass # call RV, line 195 if not self.__r_RV(): return False # delete, line 195 if not self.slice_del(): return False elif among_var == 2: # (, line 196 # <-, line 196 if not self.slice_from(u"c"): return False return True def _stem(self): # (, line 201 # do, line 202 v_1 = self.cursor # call prelude, line 202 self.__r_prelude() self.cursor = v_1 # do, line 203 # call mark_regions, line 203 self.__r_mark_regions() # backwards, line 204 self.limit_backward = self.cursor self.cursor = self.limit # (, line 204 # do, line 205 v_3 = self.limit - self.cursor try: # (, line 205 # or, line 209 try: v_4 = self.limit - self.cursor try: # (, line 206 # and, line 207 v_5 = self.limit - self.cursor # (, line 206 # or, line 206 try: v_6 = self.limit - self.cursor try: # call standard_suffix, line 206 if not self.__r_standard_suffix(): raise lab4() raise lab3() except lab4: pass self.cursor = self.limit - v_6 # call verb_suffix, line 206 if not self.__r_verb_suffix(): raise lab2() except lab3: pass self.cursor = self.limit - v_5 # do, line 207 v_7 = self.limit - self.cursor try: # (, line 207 # [, line 207 self.ket = self.cursor # literal, line 207 if not self.eq_s_b(u"i"): raise lab5() # ], line 207 self.bra = self.cursor # test, line 207 v_8 = self.limit - self.cursor # literal, line 207 if not self.eq_s_b(u"c"): raise lab5() self.cursor = self.limit - v_8 # call RV, line 207 if not self.__r_RV(): raise lab5() # delete, line 207 if not self.slice_del(): return False except lab5: pass self.cursor = self.limit - v_7 raise lab1() except lab2: pass self.cursor = self.limit - v_4 # call residual_suffix, line 209 if not self.__r_residual_suffix(): raise lab0() except lab1: pass except lab0: pass self.cursor = self.limit - v_3 # do, line 211 v_9 = self.limit - self.cursor # call residual_form, line 211 self.__r_residual_form() self.cursor = self.limit - v_9 self.cursor = self.limit_backward # do, line 213 v_10 = self.cursor # call postlude, line 213 self.__r_postlude() self.cursor = v_10 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/romanian_stemmer.py0000644000175000017500000006065313545325430025526 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class RomanianStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 3), Among(u"I", 0, 1), Among(u"U", 0, 2) ] a_1 = [ Among(u"ea", -1, 3), Among(u"a\u0163ia", -1, 7), Among(u"aua", -1, 2), Among(u"iua", -1, 4), Among(u"a\u0163ie", -1, 7), Among(u"ele", -1, 3), Among(u"ile", -1, 5), Among(u"iile", 6, 4), Among(u"iei", -1, 4), Among(u"atei", -1, 6), Among(u"ii", -1, 4), Among(u"ului", -1, 1), Among(u"ul", -1, 1), Among(u"elor", -1, 3), Among(u"ilor", -1, 4), Among(u"iilor", 14, 4) ] a_2 = [ Among(u"icala", -1, 4), Among(u"iciva", -1, 4), Among(u"ativa", -1, 5), Among(u"itiva", -1, 6), Among(u"icale", -1, 4), Among(u"a\u0163iune", -1, 5), Among(u"i\u0163iune", -1, 6), Among(u"atoare", -1, 5), Among(u"itoare", -1, 6), Among(u"\u0103toare", -1, 5), Among(u"icitate", -1, 4), Among(u"abilitate", -1, 1), Among(u"ibilitate", -1, 2), Among(u"ivitate", -1, 3), Among(u"icive", -1, 4), Among(u"ative", -1, 5), Among(u"itive", -1, 6), Among(u"icali", -1, 4), Among(u"atori", -1, 5), Among(u"icatori", 18, 4), Among(u"itori", -1, 6), Among(u"\u0103tori", -1, 5), Among(u"icitati", -1, 4), Among(u"abilitati", -1, 1), Among(u"ivitati", -1, 3), Among(u"icivi", -1, 4), Among(u"ativi", -1, 5), Among(u"itivi", -1, 6), Among(u"icit\u0103i", -1, 4), Among(u"abilit\u0103i", -1, 1), Among(u"ivit\u0103i", -1, 3), Among(u"icit\u0103\u0163i", -1, 4), Among(u"abilit\u0103\u0163i", -1, 1), Among(u"ivit\u0103\u0163i", -1, 3), Among(u"ical", -1, 4), Among(u"ator", -1, 5), Among(u"icator", 35, 4), Among(u"itor", -1, 6), Among(u"\u0103tor", -1, 5), Among(u"iciv", -1, 4), Among(u"ativ", -1, 5), Among(u"itiv", -1, 6), Among(u"ical\u0103", -1, 4), Among(u"iciv\u0103", -1, 4), Among(u"ativ\u0103", -1, 5), Among(u"itiv\u0103", -1, 6) ] a_3 = [ Among(u"ica", -1, 1), Among(u"abila", -1, 1), Among(u"ibila", -1, 1), Among(u"oasa", -1, 1), Among(u"ata", -1, 1), Among(u"ita", -1, 1), Among(u"anta", -1, 1), Among(u"ista", -1, 3), Among(u"uta", -1, 1), Among(u"iva", -1, 1), Among(u"ic", -1, 1), Among(u"ice", -1, 1), Among(u"abile", -1, 1), Among(u"ibile", -1, 1), Among(u"isme", -1, 3), Among(u"iune", -1, 2), Among(u"oase", -1, 1), Among(u"ate", -1, 1), Among(u"itate", 17, 1), Among(u"ite", -1, 1), Among(u"ante", -1, 1), Among(u"iste", -1, 3), Among(u"ute", -1, 1), Among(u"ive", -1, 1), Among(u"ici", -1, 1), Among(u"abili", -1, 1), Among(u"ibili", -1, 1), Among(u"iuni", -1, 2), Among(u"atori", -1, 1), Among(u"osi", -1, 1), Among(u"ati", -1, 1), Among(u"itati", 30, 1), Among(u"iti", -1, 1), Among(u"anti", -1, 1), Among(u"isti", -1, 3), Among(u"uti", -1, 1), Among(u"i\u015Fti", -1, 3), Among(u"ivi", -1, 1), Among(u"it\u0103i", -1, 1), Among(u"o\u015Fi", -1, 1), Among(u"it\u0103\u0163i", -1, 1), Among(u"abil", -1, 1), Among(u"ibil", -1, 1), Among(u"ism", -1, 3), Among(u"ator", -1, 1), Among(u"os", -1, 1), Among(u"at", -1, 1), Among(u"it", -1, 1), Among(u"ant", -1, 1), Among(u"ist", -1, 3), Among(u"ut", -1, 1), Among(u"iv", -1, 1), Among(u"ic\u0103", -1, 1), Among(u"abil\u0103", -1, 1), Among(u"ibil\u0103", -1, 1), Among(u"oas\u0103", -1, 1), Among(u"at\u0103", -1, 1), Among(u"it\u0103", -1, 1), Among(u"ant\u0103", -1, 1), Among(u"ist\u0103", -1, 3), Among(u"ut\u0103", -1, 1), Among(u"iv\u0103", -1, 1) ] a_4 = [ Among(u"ea", -1, 1), Among(u"ia", -1, 1), Among(u"esc", -1, 1), Among(u"\u0103sc", -1, 1), Among(u"ind", -1, 1), Among(u"\u00E2nd", -1, 1), Among(u"are", -1, 1), Among(u"ere", -1, 1), Among(u"ire", -1, 1), Among(u"\u00E2re", -1, 1), Among(u"se", -1, 2), Among(u"ase", 10, 1), Among(u"sese", 10, 2), Among(u"ise", 10, 1), Among(u"use", 10, 1), Among(u"\u00E2se", 10, 1), Among(u"e\u015Fte", -1, 1), Among(u"\u0103\u015Fte", -1, 1), Among(u"eze", -1, 1), Among(u"ai", -1, 1), Among(u"eai", 19, 1), Among(u"iai", 19, 1), Among(u"sei", -1, 2), Among(u"e\u015Fti", -1, 1), Among(u"\u0103\u015Fti", -1, 1), Among(u"ui", -1, 1), Among(u"ezi", -1, 1), Among(u"\u00E2i", -1, 1), Among(u"a\u015Fi", -1, 1), Among(u"se\u015Fi", -1, 2), Among(u"ase\u015Fi", 29, 1), Among(u"sese\u015Fi", 29, 2), Among(u"ise\u015Fi", 29, 1), Among(u"use\u015Fi", 29, 1), Among(u"\u00E2se\u015Fi", 29, 1), Among(u"i\u015Fi", -1, 1), Among(u"u\u015Fi", -1, 1), Among(u"\u00E2\u015Fi", -1, 1), Among(u"a\u0163i", -1, 2), Among(u"ea\u0163i", 38, 1), Among(u"ia\u0163i", 38, 1), Among(u"e\u0163i", -1, 2), Among(u"i\u0163i", -1, 2), Among(u"\u00E2\u0163i", -1, 2), Among(u"ar\u0103\u0163i", -1, 1), Among(u"ser\u0103\u0163i", -1, 2), Among(u"aser\u0103\u0163i", 45, 1), Among(u"seser\u0103\u0163i", 45, 2), Among(u"iser\u0103\u0163i", 45, 1), Among(u"user\u0103\u0163i", 45, 1), Among(u"\u00E2ser\u0103\u0163i", 45, 1), Among(u"ir\u0103\u0163i", -1, 1), Among(u"ur\u0103\u0163i", -1, 1), Among(u"\u00E2r\u0103\u0163i", -1, 1), Among(u"am", -1, 1), Among(u"eam", 54, 1), Among(u"iam", 54, 1), Among(u"em", -1, 2), Among(u"asem", 57, 1), Among(u"sesem", 57, 2), Among(u"isem", 57, 1), Among(u"usem", 57, 1), Among(u"\u00E2sem", 57, 1), Among(u"im", -1, 2), Among(u"\u00E2m", -1, 2), Among(u"\u0103m", -1, 2), Among(u"ar\u0103m", 65, 1), Among(u"ser\u0103m", 65, 2), Among(u"aser\u0103m", 67, 1), Among(u"seser\u0103m", 67, 2), Among(u"iser\u0103m", 67, 1), Among(u"user\u0103m", 67, 1), Among(u"\u00E2ser\u0103m", 67, 1), Among(u"ir\u0103m", 65, 1), Among(u"ur\u0103m", 65, 1), Among(u"\u00E2r\u0103m", 65, 1), Among(u"au", -1, 1), Among(u"eau", 76, 1), Among(u"iau", 76, 1), Among(u"indu", -1, 1), Among(u"\u00E2ndu", -1, 1), Among(u"ez", -1, 1), Among(u"easc\u0103", -1, 1), Among(u"ar\u0103", -1, 1), Among(u"ser\u0103", -1, 2), Among(u"aser\u0103", 84, 1), Among(u"seser\u0103", 84, 2), Among(u"iser\u0103", 84, 1), Among(u"user\u0103", 84, 1), Among(u"\u00E2ser\u0103", 84, 1), Among(u"ir\u0103", -1, 1), Among(u"ur\u0103", -1, 1), Among(u"\u00E2r\u0103", -1, 1), Among(u"eaz\u0103", -1, 1) ] a_5 = [ Among(u"a", -1, 1), Among(u"e", -1, 1), Among(u"ie", 1, 1), Among(u"i", -1, 1), Among(u"\u0103", -1, 1) ] g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4] B_standard_suffix_removed = False I_p2 = 0 I_p1 = 0 I_pV = 0 def __r_prelude(self): # (, line 31 # repeat, line 32 while True: v_1 = self.cursor try: # goto, line 32 try: while True: v_2 = self.cursor try: # (, line 32 if not self.in_grouping(RomanianStemmer.g_v, 97, 259): raise lab2() # [, line 33 self.bra = self.cursor # or, line 33 try: v_3 = self.cursor try: # (, line 33 # literal, line 33 if not self.eq_s(u"u"): raise lab4() # ], line 33 self.ket = self.cursor if not self.in_grouping(RomanianStemmer.g_v, 97, 259): raise lab4() # <-, line 33 if not self.slice_from(u"U"): return False raise lab3() except lab4: pass self.cursor = v_3 # (, line 34 # literal, line 34 if not self.eq_s(u"i"): raise lab2() # ], line 34 self.ket = self.cursor if not self.in_grouping(RomanianStemmer.g_v, 97, 259): raise lab2() # <-, line 34 if not self.slice_from(u"I"): return False except lab3: pass self.cursor = v_2 raise lab1() except lab2: pass self.cursor = v_2 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab1: pass continue except lab0: pass self.cursor = v_1 break return True def __r_mark_regions(self): # (, line 38 self.I_pV = self.limit self.I_p1 = self.limit self.I_p2 = self.limit # do, line 44 v_1 = self.cursor try: # (, line 44 # or, line 46 try: v_2 = self.cursor try: # (, line 45 if not self.in_grouping(RomanianStemmer.g_v, 97, 259): raise lab2() # or, line 45 try: v_3 = self.cursor try: # (, line 45 if not self.out_grouping(RomanianStemmer.g_v, 97, 259): raise lab4() # gopast grouping v, line 45 if not self.go_out_grouping(RomanianStemmer.g_v, 97, 259): raise lab4() self.cursor += 1 raise lab3() except lab4: pass self.cursor = v_3 # (, line 45 if not self.in_grouping(RomanianStemmer.g_v, 97, 259): raise lab2() # gopast non v, line 45 if not self.go_in_grouping(RomanianStemmer.g_v, 97, 259): raise lab2() self.cursor += 1 except lab3: pass raise lab1() except lab2: pass self.cursor = v_2 # (, line 47 if not self.out_grouping(RomanianStemmer.g_v, 97, 259): raise lab0() # or, line 47 try: v_4 = self.cursor try: # (, line 47 if not self.out_grouping(RomanianStemmer.g_v, 97, 259): raise lab6() # gopast grouping v, line 47 if not self.go_out_grouping(RomanianStemmer.g_v, 97, 259): raise lab6() self.cursor += 1 raise lab5() except lab6: pass self.cursor = v_4 # (, line 47 if not self.in_grouping(RomanianStemmer.g_v, 97, 259): raise lab0() # next, line 47 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab5: pass except lab1: pass # setmark pV, line 48 self.I_pV = self.cursor except lab0: pass self.cursor = v_1 # do, line 50 v_5 = self.cursor try: # (, line 50 # gopast grouping v, line 51 if not self.go_out_grouping(RomanianStemmer.g_v, 97, 259): raise lab7() self.cursor += 1 # gopast non v, line 51 if not self.go_in_grouping(RomanianStemmer.g_v, 97, 259): raise lab7() self.cursor += 1 # setmark p1, line 51 self.I_p1 = self.cursor # gopast grouping v, line 52 if not self.go_out_grouping(RomanianStemmer.g_v, 97, 259): raise lab7() self.cursor += 1 # gopast non v, line 52 if not self.go_in_grouping(RomanianStemmer.g_v, 97, 259): raise lab7() self.cursor += 1 # setmark p2, line 52 self.I_p2 = self.cursor except lab7: pass self.cursor = v_5 return True def __r_postlude(self): # repeat, line 56 while True: v_1 = self.cursor try: # (, line 56 # [, line 58 self.bra = self.cursor # substring, line 58 among_var = self.find_among(RomanianStemmer.a_0) if among_var == 0: raise lab0() # ], line 58 self.ket = self.cursor if among_var == 1: # (, line 59 # <-, line 59 if not self.slice_from(u"i"): return False elif among_var == 2: # (, line 60 # <-, line 60 if not self.slice_from(u"u"): return False elif among_var == 3: # (, line 61 # next, line 61 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_RV(self): if not self.I_pV <= self.cursor: return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_step_0(self): # (, line 72 # [, line 73 self.ket = self.cursor # substring, line 73 among_var = self.find_among_b(RomanianStemmer.a_1) if among_var == 0: return False # ], line 73 self.bra = self.cursor # call R1, line 73 if not self.__r_R1(): return False if among_var == 1: # (, line 75 # delete, line 75 if not self.slice_del(): return False elif among_var == 2: # (, line 77 # <-, line 77 if not self.slice_from(u"a"): return False elif among_var == 3: # (, line 79 # <-, line 79 if not self.slice_from(u"e"): return False elif among_var == 4: # (, line 81 # <-, line 81 if not self.slice_from(u"i"): return False elif among_var == 5: # (, line 83 # not, line 83 v_1 = self.limit - self.cursor try: # literal, line 83 if not self.eq_s_b(u"ab"): raise lab0() return False except lab0: pass self.cursor = self.limit - v_1 # <-, line 83 if not self.slice_from(u"i"): return False elif among_var == 6: # (, line 85 # <-, line 85 if not self.slice_from(u"at"): return False elif among_var == 7: # (, line 87 # <-, line 87 if not self.slice_from(u"a\u0163i"): return False return True def __r_combo_suffix(self): # test, line 91 v_1 = self.limit - self.cursor # (, line 91 # [, line 92 self.ket = self.cursor # substring, line 92 among_var = self.find_among_b(RomanianStemmer.a_2) if among_var == 0: return False # ], line 92 self.bra = self.cursor # call R1, line 92 if not self.__r_R1(): return False # (, line 92 if among_var == 1: # (, line 100 # <-, line 101 if not self.slice_from(u"abil"): return False elif among_var == 2: # (, line 103 # <-, line 104 if not self.slice_from(u"ibil"): return False elif among_var == 3: # (, line 106 # <-, line 107 if not self.slice_from(u"iv"): return False elif among_var == 4: # (, line 112 # <-, line 113 if not self.slice_from(u"ic"): return False elif among_var == 5: # (, line 117 # <-, line 118 if not self.slice_from(u"at"): return False elif among_var == 6: # (, line 121 # <-, line 122 if not self.slice_from(u"it"): return False # set standard_suffix_removed, line 125 self.B_standard_suffix_removed = True self.cursor = self.limit - v_1 return True def __r_standard_suffix(self): # (, line 129 # unset standard_suffix_removed, line 130 self.B_standard_suffix_removed = False # repeat, line 131 while True: v_1 = self.limit - self.cursor try: # call combo_suffix, line 131 if not self.__r_combo_suffix(): raise lab0() continue except lab0: pass self.cursor = self.limit - v_1 break # [, line 132 self.ket = self.cursor # substring, line 132 among_var = self.find_among_b(RomanianStemmer.a_3) if among_var == 0: return False # ], line 132 self.bra = self.cursor # call R2, line 132 if not self.__r_R2(): return False # (, line 132 if among_var == 1: # (, line 148 # delete, line 149 if not self.slice_del(): return False elif among_var == 2: # (, line 151 # literal, line 152 if not self.eq_s_b(u"\u0163"): return False # ], line 152 self.bra = self.cursor # <-, line 152 if not self.slice_from(u"t"): return False elif among_var == 3: # (, line 155 # <-, line 156 if not self.slice_from(u"ist"): return False # set standard_suffix_removed, line 160 self.B_standard_suffix_removed = True return True def __r_verb_suffix(self): # setlimit, line 164 if self.cursor < self.I_pV: return False v_2 = self.limit_backward self.limit_backward = self.I_pV # (, line 164 # [, line 165 self.ket = self.cursor # substring, line 165 among_var = self.find_among_b(RomanianStemmer.a_4) if among_var == 0: self.limit_backward = v_2 return False # ], line 165 self.bra = self.cursor if among_var == 1: # (, line 200 # or, line 200 try: v_3 = self.limit - self.cursor try: if not self.out_grouping_b(RomanianStemmer.g_v, 97, 259): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_3 # literal, line 200 if not self.eq_s_b(u"u"): self.limit_backward = v_2 return False except lab0: pass # delete, line 200 if not self.slice_del(): return False elif among_var == 2: # (, line 214 # delete, line 214 if not self.slice_del(): return False self.limit_backward = v_2 return True def __r_vowel_suffix(self): # (, line 218 # [, line 219 self.ket = self.cursor # substring, line 219 if self.find_among_b(RomanianStemmer.a_5) == 0: return False # ], line 219 self.bra = self.cursor # call RV, line 219 if not self.__r_RV(): return False # (, line 220 # delete, line 220 if not self.slice_del(): return False return True def _stem(self): # (, line 225 # do, line 226 v_1 = self.cursor # call prelude, line 226 self.__r_prelude() self.cursor = v_1 # do, line 227 # call mark_regions, line 227 self.__r_mark_regions() # backwards, line 228 self.limit_backward = self.cursor self.cursor = self.limit # (, line 228 # do, line 229 v_3 = self.limit - self.cursor # call step_0, line 229 self.__r_step_0() self.cursor = self.limit - v_3 # do, line 230 v_4 = self.limit - self.cursor # call standard_suffix, line 230 self.__r_standard_suffix() self.cursor = self.limit - v_4 # do, line 231 v_5 = self.limit - self.cursor try: # (, line 231 # or, line 231 try: v_6 = self.limit - self.cursor try: # Boolean test standard_suffix_removed, line 231 if not self.B_standard_suffix_removed: raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_6 # call verb_suffix, line 231 if not self.__r_verb_suffix(): raise lab0() except lab1: pass except lab0: pass self.cursor = self.limit - v_5 # do, line 232 v_7 = self.limit - self.cursor # call vowel_suffix, line 232 self.__r_vowel_suffix() self.cursor = self.limit - v_7 self.cursor = self.limit_backward # do, line 234 v_8 = self.cursor # call postlude, line 234 self.__r_postlude() self.cursor = v_8 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/russian_stemmer.py0000644000175000017500000004476013545325430025407 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class RussianStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"\u0432", -1, 1), Among(u"\u0438\u0432", 0, 2), Among(u"\u044B\u0432", 0, 2), Among(u"\u0432\u0448\u0438", -1, 1), Among(u"\u0438\u0432\u0448\u0438", 3, 2), Among(u"\u044B\u0432\u0448\u0438", 3, 2), Among(u"\u0432\u0448\u0438\u0441\u044C", -1, 1), Among(u"\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2), Among(u"\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2) ] a_1 = [ Among(u"\u0435\u0435", -1, 1), Among(u"\u0438\u0435", -1, 1), Among(u"\u043E\u0435", -1, 1), Among(u"\u044B\u0435", -1, 1), Among(u"\u0438\u043C\u0438", -1, 1), Among(u"\u044B\u043C\u0438", -1, 1), Among(u"\u0435\u0439", -1, 1), Among(u"\u0438\u0439", -1, 1), Among(u"\u043E\u0439", -1, 1), Among(u"\u044B\u0439", -1, 1), Among(u"\u0435\u043C", -1, 1), Among(u"\u0438\u043C", -1, 1), Among(u"\u043E\u043C", -1, 1), Among(u"\u044B\u043C", -1, 1), Among(u"\u0435\u0433\u043E", -1, 1), Among(u"\u043E\u0433\u043E", -1, 1), Among(u"\u0435\u043C\u0443", -1, 1), Among(u"\u043E\u043C\u0443", -1, 1), Among(u"\u0438\u0445", -1, 1), Among(u"\u044B\u0445", -1, 1), Among(u"\u0435\u044E", -1, 1), Among(u"\u043E\u044E", -1, 1), Among(u"\u0443\u044E", -1, 1), Among(u"\u044E\u044E", -1, 1), Among(u"\u0430\u044F", -1, 1), Among(u"\u044F\u044F", -1, 1) ] a_2 = [ Among(u"\u0435\u043C", -1, 1), Among(u"\u043D\u043D", -1, 1), Among(u"\u0432\u0448", -1, 1), Among(u"\u0438\u0432\u0448", 2, 2), Among(u"\u044B\u0432\u0448", 2, 2), Among(u"\u0449", -1, 1), Among(u"\u044E\u0449", 5, 1), Among(u"\u0443\u044E\u0449", 6, 2) ] a_3 = [ Among(u"\u0441\u044C", -1, 1), Among(u"\u0441\u044F", -1, 1) ] a_4 = [ Among(u"\u043B\u0430", -1, 1), Among(u"\u0438\u043B\u0430", 0, 2), Among(u"\u044B\u043B\u0430", 0, 2), Among(u"\u043D\u0430", -1, 1), Among(u"\u0435\u043D\u0430", 3, 2), Among(u"\u0435\u0442\u0435", -1, 1), Among(u"\u0438\u0442\u0435", -1, 2), Among(u"\u0439\u0442\u0435", -1, 1), Among(u"\u0435\u0439\u0442\u0435", 7, 2), Among(u"\u0443\u0439\u0442\u0435", 7, 2), Among(u"\u043B\u0438", -1, 1), Among(u"\u0438\u043B\u0438", 10, 2), Among(u"\u044B\u043B\u0438", 10, 2), Among(u"\u0439", -1, 1), Among(u"\u0435\u0439", 13, 2), Among(u"\u0443\u0439", 13, 2), Among(u"\u043B", -1, 1), Among(u"\u0438\u043B", 16, 2), Among(u"\u044B\u043B", 16, 2), Among(u"\u0435\u043C", -1, 1), Among(u"\u0438\u043C", -1, 2), Among(u"\u044B\u043C", -1, 2), Among(u"\u043D", -1, 1), Among(u"\u0435\u043D", 22, 2), Among(u"\u043B\u043E", -1, 1), Among(u"\u0438\u043B\u043E", 24, 2), Among(u"\u044B\u043B\u043E", 24, 2), Among(u"\u043D\u043E", -1, 1), Among(u"\u0435\u043D\u043E", 27, 2), Among(u"\u043D\u043D\u043E", 27, 1), Among(u"\u0435\u0442", -1, 1), Among(u"\u0443\u0435\u0442", 30, 2), Among(u"\u0438\u0442", -1, 2), Among(u"\u044B\u0442", -1, 2), Among(u"\u044E\u0442", -1, 1), Among(u"\u0443\u044E\u0442", 34, 2), Among(u"\u044F\u0442", -1, 2), Among(u"\u043D\u044B", -1, 1), Among(u"\u0435\u043D\u044B", 37, 2), Among(u"\u0442\u044C", -1, 1), Among(u"\u0438\u0442\u044C", 39, 2), Among(u"\u044B\u0442\u044C", 39, 2), Among(u"\u0435\u0448\u044C", -1, 1), Among(u"\u0438\u0448\u044C", -1, 2), Among(u"\u044E", -1, 2), Among(u"\u0443\u044E", 44, 2) ] a_5 = [ Among(u"\u0430", -1, 1), Among(u"\u0435\u0432", -1, 1), Among(u"\u043E\u0432", -1, 1), Among(u"\u0435", -1, 1), Among(u"\u0438\u0435", 3, 1), Among(u"\u044C\u0435", 3, 1), Among(u"\u0438", -1, 1), Among(u"\u0435\u0438", 6, 1), Among(u"\u0438\u0438", 6, 1), Among(u"\u0430\u043C\u0438", 6, 1), Among(u"\u044F\u043C\u0438", 6, 1), Among(u"\u0438\u044F\u043C\u0438", 10, 1), Among(u"\u0439", -1, 1), Among(u"\u0435\u0439", 12, 1), Among(u"\u0438\u0435\u0439", 13, 1), Among(u"\u0438\u0439", 12, 1), Among(u"\u043E\u0439", 12, 1), Among(u"\u0430\u043C", -1, 1), Among(u"\u0435\u043C", -1, 1), Among(u"\u0438\u0435\u043C", 18, 1), Among(u"\u043E\u043C", -1, 1), Among(u"\u044F\u043C", -1, 1), Among(u"\u0438\u044F\u043C", 21, 1), Among(u"\u043E", -1, 1), Among(u"\u0443", -1, 1), Among(u"\u0430\u0445", -1, 1), Among(u"\u044F\u0445", -1, 1), Among(u"\u0438\u044F\u0445", 26, 1), Among(u"\u044B", -1, 1), Among(u"\u044C", -1, 1), Among(u"\u044E", -1, 1), Among(u"\u0438\u044E", 30, 1), Among(u"\u044C\u044E", 30, 1), Among(u"\u044F", -1, 1), Among(u"\u0438\u044F", 33, 1), Among(u"\u044C\u044F", 33, 1) ] a_6 = [ Among(u"\u043E\u0441\u0442", -1, 1), Among(u"\u043E\u0441\u0442\u044C", -1, 1) ] a_7 = [ Among(u"\u0435\u0439\u0448\u0435", -1, 1), Among(u"\u043D", -1, 2), Among(u"\u0435\u0439\u0448", -1, 1), Among(u"\u044C", -1, 3) ] g_v = [33, 65, 8, 232] I_p2 = 0 I_pV = 0 def __r_mark_regions(self): # (, line 59 self.I_pV = self.limit self.I_p2 = self.limit # do, line 63 v_1 = self.cursor try: # (, line 63 # gopast grouping v, line 64 if not self.go_out_grouping(RussianStemmer.g_v, 1072, 1103): raise lab0() self.cursor += 1 # setmark pV, line 64 self.I_pV = self.cursor # gopast non v, line 64 if not self.go_in_grouping(RussianStemmer.g_v, 1072, 1103): raise lab0() self.cursor += 1 # gopast grouping v, line 65 if not self.go_out_grouping(RussianStemmer.g_v, 1072, 1103): raise lab0() self.cursor += 1 # gopast non v, line 65 if not self.go_in_grouping(RussianStemmer.g_v, 1072, 1103): raise lab0() self.cursor += 1 # setmark p2, line 65 self.I_p2 = self.cursor except lab0: pass self.cursor = v_1 return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_perfective_gerund(self): # (, line 73 # [, line 74 self.ket = self.cursor # substring, line 74 among_var = self.find_among_b(RussianStemmer.a_0) if among_var == 0: return False # ], line 74 self.bra = self.cursor if among_var == 1: # (, line 78 # or, line 78 try: v_1 = self.limit - self.cursor try: # literal, line 78 if not self.eq_s_b(u"\u0430"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # literal, line 78 if not self.eq_s_b(u"\u044F"): return False except lab0: pass # delete, line 78 if not self.slice_del(): return False elif among_var == 2: # (, line 85 # delete, line 85 if not self.slice_del(): return False return True def __r_adjective(self): # (, line 89 # [, line 90 self.ket = self.cursor # substring, line 90 if self.find_among_b(RussianStemmer.a_1) == 0: return False # ], line 90 self.bra = self.cursor # (, line 99 # delete, line 99 if not self.slice_del(): return False return True def __r_adjectival(self): # (, line 103 # call adjective, line 104 if not self.__r_adjective(): return False # try, line 111 v_1 = self.limit - self.cursor try: # (, line 111 # [, line 112 self.ket = self.cursor # substring, line 112 among_var = self.find_among_b(RussianStemmer.a_2) if among_var == 0: self.cursor = self.limit - v_1 raise lab0() # ], line 112 self.bra = self.cursor if among_var == 1: # (, line 117 # or, line 117 try: v_2 = self.limit - self.cursor try: # literal, line 117 if not self.eq_s_b(u"\u0430"): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_2 # literal, line 117 if not self.eq_s_b(u"\u044F"): self.cursor = self.limit - v_1 raise lab0() except lab1: pass # delete, line 117 if not self.slice_del(): return False elif among_var == 2: # (, line 124 # delete, line 124 if not self.slice_del(): return False except lab0: pass return True def __r_reflexive(self): # (, line 130 # [, line 131 self.ket = self.cursor # substring, line 131 if self.find_among_b(RussianStemmer.a_3) == 0: return False # ], line 131 self.bra = self.cursor # (, line 134 # delete, line 134 if not self.slice_del(): return False return True def __r_verb(self): # (, line 138 # [, line 139 self.ket = self.cursor # substring, line 139 among_var = self.find_among_b(RussianStemmer.a_4) if among_var == 0: return False # ], line 139 self.bra = self.cursor if among_var == 1: # (, line 145 # or, line 145 try: v_1 = self.limit - self.cursor try: # literal, line 145 if not self.eq_s_b(u"\u0430"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_1 # literal, line 145 if not self.eq_s_b(u"\u044F"): return False except lab0: pass # delete, line 145 if not self.slice_del(): return False elif among_var == 2: # (, line 153 # delete, line 153 if not self.slice_del(): return False return True def __r_noun(self): # (, line 161 # [, line 162 self.ket = self.cursor # substring, line 162 if self.find_among_b(RussianStemmer.a_5) == 0: return False # ], line 162 self.bra = self.cursor # (, line 169 # delete, line 169 if not self.slice_del(): return False return True def __r_derivational(self): # (, line 177 # [, line 178 self.ket = self.cursor # substring, line 178 if self.find_among_b(RussianStemmer.a_6) == 0: return False # ], line 178 self.bra = self.cursor # call R2, line 178 if not self.__r_R2(): return False # (, line 181 # delete, line 181 if not self.slice_del(): return False return True def __r_tidy_up(self): # (, line 185 # [, line 186 self.ket = self.cursor # substring, line 186 among_var = self.find_among_b(RussianStemmer.a_7) if among_var == 0: return False # ], line 186 self.bra = self.cursor if among_var == 1: # (, line 190 # delete, line 190 if not self.slice_del(): return False # [, line 191 self.ket = self.cursor # literal, line 191 if not self.eq_s_b(u"\u043D"): return False # ], line 191 self.bra = self.cursor # literal, line 191 if not self.eq_s_b(u"\u043D"): return False # delete, line 191 if not self.slice_del(): return False elif among_var == 2: # (, line 194 # literal, line 194 if not self.eq_s_b(u"\u043D"): return False # delete, line 194 if not self.slice_del(): return False elif among_var == 3: # (, line 196 # delete, line 196 if not self.slice_del(): return False return True def _stem(self): # (, line 201 # do, line 205 v_1 = self.cursor try: # repeat, line 205 while True: v_2 = self.cursor try: # (, line 205 # goto, line 205 try: while True: v_3 = self.cursor try: # (, line 205 # [, line 205 self.bra = self.cursor # literal, line 205 if not self.eq_s(u"\u0451"): raise lab3() # ], line 205 self.ket = self.cursor self.cursor = v_3 raise lab2() except lab3: pass self.cursor = v_3 if self.cursor >= self.limit: raise lab1() self.cursor += 1 except lab2: pass # <-, line 205 if not self.slice_from(u"\u0435"): return False continue except lab1: pass self.cursor = v_2 break except lab0: pass self.cursor = v_1 # do, line 207 # call mark_regions, line 207 self.__r_mark_regions() # backwards, line 208 self.limit_backward = self.cursor self.cursor = self.limit # setlimit, line 208 if self.cursor < self.I_pV: return False v_6 = self.limit_backward self.limit_backward = self.I_pV # (, line 208 # do, line 209 v_7 = self.limit - self.cursor try: # (, line 209 # or, line 210 try: v_8 = self.limit - self.cursor try: # call perfective_gerund, line 210 if not self.__r_perfective_gerund(): raise lab6() raise lab5() except lab6: pass self.cursor = self.limit - v_8 # (, line 211 # try, line 211 v_9 = self.limit - self.cursor try: # call reflexive, line 211 if not self.__r_reflexive(): self.cursor = self.limit - v_9 raise lab7() except lab7: pass # or, line 212 try: v_10 = self.limit - self.cursor try: # call adjectival, line 212 if not self.__r_adjectival(): raise lab9() raise lab8() except lab9: pass self.cursor = self.limit - v_10 try: # call verb, line 212 if not self.__r_verb(): raise lab10() raise lab8() except lab10: pass self.cursor = self.limit - v_10 # call noun, line 212 if not self.__r_noun(): raise lab4() except lab8: pass except lab5: pass except lab4: pass self.cursor = self.limit - v_7 # try, line 215 v_11 = self.limit - self.cursor try: # (, line 215 # [, line 215 self.ket = self.cursor # literal, line 215 if not self.eq_s_b(u"\u0438"): self.cursor = self.limit - v_11 raise lab11() # ], line 215 self.bra = self.cursor # delete, line 215 if not self.slice_del(): return False except lab11: pass # do, line 218 v_12 = self.limit - self.cursor # call derivational, line 218 self.__r_derivational() self.cursor = self.limit - v_12 # do, line 219 v_13 = self.limit - self.cursor # call tidy_up, line 219 self.__r_tidy_up() self.cursor = self.limit - v_13 self.limit_backward = v_6 self.cursor = self.limit_backward return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass class lab9(BaseException): pass class lab10(BaseException): pass class lab11(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/spanish_stemmer.py0000644000175000017500000006707613545325430025375 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class SpanishStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"", -1, 6), Among(u"\u00E1", 0, 1), Among(u"\u00E9", 0, 2), Among(u"\u00ED", 0, 3), Among(u"\u00F3", 0, 4), Among(u"\u00FA", 0, 5) ] a_1 = [ Among(u"la", -1, -1), Among(u"sela", 0, -1), Among(u"le", -1, -1), Among(u"me", -1, -1), Among(u"se", -1, -1), Among(u"lo", -1, -1), Among(u"selo", 5, -1), Among(u"las", -1, -1), Among(u"selas", 7, -1), Among(u"les", -1, -1), Among(u"los", -1, -1), Among(u"selos", 10, -1), Among(u"nos", -1, -1) ] a_2 = [ Among(u"ando", -1, 6), Among(u"iendo", -1, 6), Among(u"yendo", -1, 7), Among(u"\u00E1ndo", -1, 2), Among(u"i\u00E9ndo", -1, 1), Among(u"ar", -1, 6), Among(u"er", -1, 6), Among(u"ir", -1, 6), Among(u"\u00E1r", -1, 3), Among(u"\u00E9r", -1, 4), Among(u"\u00EDr", -1, 5) ] a_3 = [ Among(u"ic", -1, -1), Among(u"ad", -1, -1), Among(u"os", -1, -1), Among(u"iv", -1, 1) ] a_4 = [ Among(u"able", -1, 1), Among(u"ible", -1, 1), Among(u"ante", -1, 1) ] a_5 = [ Among(u"ic", -1, 1), Among(u"abil", -1, 1), Among(u"iv", -1, 1) ] a_6 = [ Among(u"ica", -1, 1), Among(u"ancia", -1, 2), Among(u"encia", -1, 5), Among(u"adora", -1, 2), Among(u"osa", -1, 1), Among(u"ista", -1, 1), Among(u"iva", -1, 9), Among(u"anza", -1, 1), Among(u"log\u00EDa", -1, 3), Among(u"idad", -1, 8), Among(u"able", -1, 1), Among(u"ible", -1, 1), Among(u"ante", -1, 2), Among(u"mente", -1, 7), Among(u"amente", 13, 6), Among(u"aci\u00F3n", -1, 2), Among(u"uci\u00F3n", -1, 4), Among(u"ico", -1, 1), Among(u"ismo", -1, 1), Among(u"oso", -1, 1), Among(u"amiento", -1, 1), Among(u"imiento", -1, 1), Among(u"ivo", -1, 9), Among(u"ador", -1, 2), Among(u"icas", -1, 1), Among(u"ancias", -1, 2), Among(u"encias", -1, 5), Among(u"adoras", -1, 2), Among(u"osas", -1, 1), Among(u"istas", -1, 1), Among(u"ivas", -1, 9), Among(u"anzas", -1, 1), Among(u"log\u00EDas", -1, 3), Among(u"idades", -1, 8), Among(u"ables", -1, 1), Among(u"ibles", -1, 1), Among(u"aciones", -1, 2), Among(u"uciones", -1, 4), Among(u"adores", -1, 2), Among(u"antes", -1, 2), Among(u"icos", -1, 1), Among(u"ismos", -1, 1), Among(u"osos", -1, 1), Among(u"amientos", -1, 1), Among(u"imientos", -1, 1), Among(u"ivos", -1, 9) ] a_7 = [ Among(u"ya", -1, 1), Among(u"ye", -1, 1), Among(u"yan", -1, 1), Among(u"yen", -1, 1), Among(u"yeron", -1, 1), Among(u"yendo", -1, 1), Among(u"yo", -1, 1), Among(u"yas", -1, 1), Among(u"yes", -1, 1), Among(u"yais", -1, 1), Among(u"yamos", -1, 1), Among(u"y\u00F3", -1, 1) ] a_8 = [ Among(u"aba", -1, 2), Among(u"ada", -1, 2), Among(u"ida", -1, 2), Among(u"ara", -1, 2), Among(u"iera", -1, 2), Among(u"\u00EDa", -1, 2), Among(u"ar\u00EDa", 5, 2), Among(u"er\u00EDa", 5, 2), Among(u"ir\u00EDa", 5, 2), Among(u"ad", -1, 2), Among(u"ed", -1, 2), Among(u"id", -1, 2), Among(u"ase", -1, 2), Among(u"iese", -1, 2), Among(u"aste", -1, 2), Among(u"iste", -1, 2), Among(u"an", -1, 2), Among(u"aban", 16, 2), Among(u"aran", 16, 2), Among(u"ieran", 16, 2), Among(u"\u00EDan", 16, 2), Among(u"ar\u00EDan", 20, 2), Among(u"er\u00EDan", 20, 2), Among(u"ir\u00EDan", 20, 2), Among(u"en", -1, 1), Among(u"asen", 24, 2), Among(u"iesen", 24, 2), Among(u"aron", -1, 2), Among(u"ieron", -1, 2), Among(u"ar\u00E1n", -1, 2), Among(u"er\u00E1n", -1, 2), Among(u"ir\u00E1n", -1, 2), Among(u"ado", -1, 2), Among(u"ido", -1, 2), Among(u"ando", -1, 2), Among(u"iendo", -1, 2), Among(u"ar", -1, 2), Among(u"er", -1, 2), Among(u"ir", -1, 2), Among(u"as", -1, 2), Among(u"abas", 39, 2), Among(u"adas", 39, 2), Among(u"idas", 39, 2), Among(u"aras", 39, 2), Among(u"ieras", 39, 2), Among(u"\u00EDas", 39, 2), Among(u"ar\u00EDas", 45, 2), Among(u"er\u00EDas", 45, 2), Among(u"ir\u00EDas", 45, 2), Among(u"es", -1, 1), Among(u"ases", 49, 2), Among(u"ieses", 49, 2), Among(u"abais", -1, 2), Among(u"arais", -1, 2), Among(u"ierais", -1, 2), Among(u"\u00EDais", -1, 2), Among(u"ar\u00EDais", 55, 2), Among(u"er\u00EDais", 55, 2), Among(u"ir\u00EDais", 55, 2), Among(u"aseis", -1, 2), Among(u"ieseis", -1, 2), Among(u"asteis", -1, 2), Among(u"isteis", -1, 2), Among(u"\u00E1is", -1, 2), Among(u"\u00E9is", -1, 1), Among(u"ar\u00E9is", 64, 2), Among(u"er\u00E9is", 64, 2), Among(u"ir\u00E9is", 64, 2), Among(u"ados", -1, 2), Among(u"idos", -1, 2), Among(u"amos", -1, 2), Among(u"\u00E1bamos", 70, 2), Among(u"\u00E1ramos", 70, 2), Among(u"i\u00E9ramos", 70, 2), Among(u"\u00EDamos", 70, 2), Among(u"ar\u00EDamos", 74, 2), Among(u"er\u00EDamos", 74, 2), Among(u"ir\u00EDamos", 74, 2), Among(u"emos", -1, 1), Among(u"aremos", 78, 2), Among(u"eremos", 78, 2), Among(u"iremos", 78, 2), Among(u"\u00E1semos", 78, 2), Among(u"i\u00E9semos", 78, 2), Among(u"imos", -1, 2), Among(u"ar\u00E1s", -1, 2), Among(u"er\u00E1s", -1, 2), Among(u"ir\u00E1s", -1, 2), Among(u"\u00EDs", -1, 2), Among(u"ar\u00E1", -1, 2), Among(u"er\u00E1", -1, 2), Among(u"ir\u00E1", -1, 2), Among(u"ar\u00E9", -1, 2), Among(u"er\u00E9", -1, 2), Among(u"ir\u00E9", -1, 2), Among(u"i\u00F3", -1, 2) ] a_9 = [ Among(u"a", -1, 1), Among(u"e", -1, 2), Among(u"o", -1, 1), Among(u"os", -1, 1), Among(u"\u00E1", -1, 1), Among(u"\u00E9", -1, 2), Among(u"\u00ED", -1, 1), Among(u"\u00F3", -1, 1) ] g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10] I_p2 = 0 I_p1 = 0 I_pV = 0 def __r_mark_regions(self): # (, line 31 self.I_pV = self.limit self.I_p1 = self.limit self.I_p2 = self.limit # do, line 37 v_1 = self.cursor try: # (, line 37 # or, line 39 try: v_2 = self.cursor try: # (, line 38 if not self.in_grouping(SpanishStemmer.g_v, 97, 252): raise lab2() # or, line 38 try: v_3 = self.cursor try: # (, line 38 if not self.out_grouping(SpanishStemmer.g_v, 97, 252): raise lab4() # gopast grouping v, line 38 if not self.go_out_grouping(SpanishStemmer.g_v, 97, 252): raise lab4() self.cursor += 1 raise lab3() except lab4: pass self.cursor = v_3 # (, line 38 if not self.in_grouping(SpanishStemmer.g_v, 97, 252): raise lab2() # gopast non v, line 38 if not self.go_in_grouping(SpanishStemmer.g_v, 97, 252): raise lab2() self.cursor += 1 except lab3: pass raise lab1() except lab2: pass self.cursor = v_2 # (, line 40 if not self.out_grouping(SpanishStemmer.g_v, 97, 252): raise lab0() # or, line 40 try: v_4 = self.cursor try: # (, line 40 if not self.out_grouping(SpanishStemmer.g_v, 97, 252): raise lab6() # gopast grouping v, line 40 if not self.go_out_grouping(SpanishStemmer.g_v, 97, 252): raise lab6() self.cursor += 1 raise lab5() except lab6: pass self.cursor = v_4 # (, line 40 if not self.in_grouping(SpanishStemmer.g_v, 97, 252): raise lab0() # next, line 40 if self.cursor >= self.limit: raise lab0() self.cursor += 1 except lab5: pass except lab1: pass # setmark pV, line 41 self.I_pV = self.cursor except lab0: pass self.cursor = v_1 # do, line 43 v_5 = self.cursor try: # (, line 43 # gopast grouping v, line 44 if not self.go_out_grouping(SpanishStemmer.g_v, 97, 252): raise lab7() self.cursor += 1 # gopast non v, line 44 if not self.go_in_grouping(SpanishStemmer.g_v, 97, 252): raise lab7() self.cursor += 1 # setmark p1, line 44 self.I_p1 = self.cursor # gopast grouping v, line 45 if not self.go_out_grouping(SpanishStemmer.g_v, 97, 252): raise lab7() self.cursor += 1 # gopast non v, line 45 if not self.go_in_grouping(SpanishStemmer.g_v, 97, 252): raise lab7() self.cursor += 1 # setmark p2, line 45 self.I_p2 = self.cursor except lab7: pass self.cursor = v_5 return True def __r_postlude(self): # repeat, line 49 while True: v_1 = self.cursor try: # (, line 49 # [, line 50 self.bra = self.cursor # substring, line 50 among_var = self.find_among(SpanishStemmer.a_0) if among_var == 0: raise lab0() # ], line 50 self.ket = self.cursor if among_var == 1: # (, line 51 # <-, line 51 if not self.slice_from(u"a"): return False elif among_var == 2: # (, line 52 # <-, line 52 if not self.slice_from(u"e"): return False elif among_var == 3: # (, line 53 # <-, line 53 if not self.slice_from(u"i"): return False elif among_var == 4: # (, line 54 # <-, line 54 if not self.slice_from(u"o"): return False elif among_var == 5: # (, line 55 # <-, line 55 if not self.slice_from(u"u"): return False elif among_var == 6: # (, line 57 # next, line 57 if self.cursor >= self.limit: raise lab0() self.cursor += 1 continue except lab0: pass self.cursor = v_1 break return True def __r_RV(self): if not self.I_pV <= self.cursor: return False return True def __r_R1(self): if not self.I_p1 <= self.cursor: return False return True def __r_R2(self): if not self.I_p2 <= self.cursor: return False return True def __r_attached_pronoun(self): # (, line 67 # [, line 68 self.ket = self.cursor # substring, line 68 if self.find_among_b(SpanishStemmer.a_1) == 0: return False # ], line 68 self.bra = self.cursor # substring, line 72 among_var = self.find_among_b(SpanishStemmer.a_2) if among_var == 0: return False # call RV, line 72 if not self.__r_RV(): return False if among_var == 1: # (, line 73 # ], line 73 self.bra = self.cursor # <-, line 73 if not self.slice_from(u"iendo"): return False elif among_var == 2: # (, line 74 # ], line 74 self.bra = self.cursor # <-, line 74 if not self.slice_from(u"ando"): return False elif among_var == 3: # (, line 75 # ], line 75 self.bra = self.cursor # <-, line 75 if not self.slice_from(u"ar"): return False elif among_var == 4: # (, line 76 # ], line 76 self.bra = self.cursor # <-, line 76 if not self.slice_from(u"er"): return False elif among_var == 5: # (, line 77 # ], line 77 self.bra = self.cursor # <-, line 77 if not self.slice_from(u"ir"): return False elif among_var == 6: # (, line 81 # delete, line 81 if not self.slice_del(): return False elif among_var == 7: # (, line 82 # literal, line 82 if not self.eq_s_b(u"u"): return False # delete, line 82 if not self.slice_del(): return False return True def __r_standard_suffix(self): # (, line 86 # [, line 87 self.ket = self.cursor # substring, line 87 among_var = self.find_among_b(SpanishStemmer.a_6) if among_var == 0: return False # ], line 87 self.bra = self.cursor if among_var == 1: # (, line 98 # call R2, line 99 if not self.__r_R2(): return False # delete, line 99 if not self.slice_del(): return False elif among_var == 2: # (, line 104 # call R2, line 105 if not self.__r_R2(): return False # delete, line 105 if not self.slice_del(): return False # try, line 106 v_1 = self.limit - self.cursor try: # (, line 106 # [, line 106 self.ket = self.cursor # literal, line 106 if not self.eq_s_b(u"ic"): self.cursor = self.limit - v_1 raise lab0() # ], line 106 self.bra = self.cursor # call R2, line 106 if not self.__r_R2(): self.cursor = self.limit - v_1 raise lab0() # delete, line 106 if not self.slice_del(): return False except lab0: pass elif among_var == 3: # (, line 110 # call R2, line 111 if not self.__r_R2(): return False # <-, line 111 if not self.slice_from(u"log"): return False elif among_var == 4: # (, line 114 # call R2, line 115 if not self.__r_R2(): return False # <-, line 115 if not self.slice_from(u"u"): return False elif among_var == 5: # (, line 118 # call R2, line 119 if not self.__r_R2(): return False # <-, line 119 if not self.slice_from(u"ente"): return False elif among_var == 6: # (, line 122 # call R1, line 123 if not self.__r_R1(): return False # delete, line 123 if not self.slice_del(): return False # try, line 124 v_2 = self.limit - self.cursor try: # (, line 124 # [, line 125 self.ket = self.cursor # substring, line 125 among_var = self.find_among_b(SpanishStemmer.a_3) if among_var == 0: self.cursor = self.limit - v_2 raise lab1() # ], line 125 self.bra = self.cursor # call R2, line 125 if not self.__r_R2(): self.cursor = self.limit - v_2 raise lab1() # delete, line 125 if not self.slice_del(): return False if among_var == 1: # (, line 126 # [, line 126 self.ket = self.cursor # literal, line 126 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_2 raise lab1() # ], line 126 self.bra = self.cursor # call R2, line 126 if not self.__r_R2(): self.cursor = self.limit - v_2 raise lab1() # delete, line 126 if not self.slice_del(): return False except lab1: pass elif among_var == 7: # (, line 134 # call R2, line 135 if not self.__r_R2(): return False # delete, line 135 if not self.slice_del(): return False # try, line 136 v_3 = self.limit - self.cursor try: # (, line 136 # [, line 137 self.ket = self.cursor # substring, line 137 if self.find_among_b(SpanishStemmer.a_4) == 0: self.cursor = self.limit - v_3 raise lab2() # ], line 137 self.bra = self.cursor # (, line 140 # call R2, line 140 if not self.__r_R2(): self.cursor = self.limit - v_3 raise lab2() # delete, line 140 if not self.slice_del(): return False except lab2: pass elif among_var == 8: # (, line 146 # call R2, line 147 if not self.__r_R2(): return False # delete, line 147 if not self.slice_del(): return False # try, line 148 v_4 = self.limit - self.cursor try: # (, line 148 # [, line 149 self.ket = self.cursor # substring, line 149 if self.find_among_b(SpanishStemmer.a_5) == 0: self.cursor = self.limit - v_4 raise lab3() # ], line 149 self.bra = self.cursor # (, line 152 # call R2, line 152 if not self.__r_R2(): self.cursor = self.limit - v_4 raise lab3() # delete, line 152 if not self.slice_del(): return False except lab3: pass elif among_var == 9: # (, line 158 # call R2, line 159 if not self.__r_R2(): return False # delete, line 159 if not self.slice_del(): return False # try, line 160 v_5 = self.limit - self.cursor try: # (, line 160 # [, line 161 self.ket = self.cursor # literal, line 161 if not self.eq_s_b(u"at"): self.cursor = self.limit - v_5 raise lab4() # ], line 161 self.bra = self.cursor # call R2, line 161 if not self.__r_R2(): self.cursor = self.limit - v_5 raise lab4() # delete, line 161 if not self.slice_del(): return False except lab4: pass return True def __r_y_verb_suffix(self): # (, line 167 # setlimit, line 168 if self.cursor < self.I_pV: return False v_2 = self.limit_backward self.limit_backward = self.I_pV # (, line 168 # [, line 168 self.ket = self.cursor # substring, line 168 if self.find_among_b(SpanishStemmer.a_7) == 0: self.limit_backward = v_2 return False # ], line 168 self.bra = self.cursor self.limit_backward = v_2 # (, line 171 # literal, line 171 if not self.eq_s_b(u"u"): return False # delete, line 171 if not self.slice_del(): return False return True def __r_verb_suffix(self): # (, line 175 # setlimit, line 176 if self.cursor < self.I_pV: return False v_2 = self.limit_backward self.limit_backward = self.I_pV # (, line 176 # [, line 176 self.ket = self.cursor # substring, line 176 among_var = self.find_among_b(SpanishStemmer.a_8) if among_var == 0: self.limit_backward = v_2 return False # ], line 176 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 179 # try, line 179 v_3 = self.limit - self.cursor try: # (, line 179 # literal, line 179 if not self.eq_s_b(u"u"): self.cursor = self.limit - v_3 raise lab0() # test, line 179 v_4 = self.limit - self.cursor # literal, line 179 if not self.eq_s_b(u"g"): self.cursor = self.limit - v_3 raise lab0() self.cursor = self.limit - v_4 except lab0: pass # ], line 179 self.bra = self.cursor # delete, line 179 if not self.slice_del(): return False elif among_var == 2: # (, line 200 # delete, line 200 if not self.slice_del(): return False return True def __r_residual_suffix(self): # (, line 204 # [, line 205 self.ket = self.cursor # substring, line 205 among_var = self.find_among_b(SpanishStemmer.a_9) if among_var == 0: return False # ], line 205 self.bra = self.cursor if among_var == 1: # (, line 208 # call RV, line 208 if not self.__r_RV(): return False # delete, line 208 if not self.slice_del(): return False elif among_var == 2: # (, line 210 # call RV, line 210 if not self.__r_RV(): return False # delete, line 210 if not self.slice_del(): return False # try, line 210 v_1 = self.limit - self.cursor try: # (, line 210 # [, line 210 self.ket = self.cursor # literal, line 210 if not self.eq_s_b(u"u"): self.cursor = self.limit - v_1 raise lab0() # ], line 210 self.bra = self.cursor # test, line 210 v_2 = self.limit - self.cursor # literal, line 210 if not self.eq_s_b(u"g"): self.cursor = self.limit - v_1 raise lab0() self.cursor = self.limit - v_2 # call RV, line 210 if not self.__r_RV(): self.cursor = self.limit - v_1 raise lab0() # delete, line 210 if not self.slice_del(): return False except lab0: pass return True def _stem(self): # (, line 215 # do, line 216 # call mark_regions, line 216 self.__r_mark_regions() # backwards, line 217 self.limit_backward = self.cursor self.cursor = self.limit # (, line 217 # do, line 218 v_2 = self.limit - self.cursor # call attached_pronoun, line 218 self.__r_attached_pronoun() self.cursor = self.limit - v_2 # do, line 219 v_3 = self.limit - self.cursor try: # (, line 219 # or, line 219 try: v_4 = self.limit - self.cursor try: # call standard_suffix, line 219 if not self.__r_standard_suffix(): raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_4 try: # call y_verb_suffix, line 220 if not self.__r_y_verb_suffix(): raise lab3() raise lab1() except lab3: pass self.cursor = self.limit - v_4 # call verb_suffix, line 221 if not self.__r_verb_suffix(): raise lab0() except lab1: pass except lab0: pass self.cursor = self.limit - v_3 # do, line 223 v_5 = self.limit - self.cursor # call residual_suffix, line 223 self.__r_residual_suffix() self.cursor = self.limit - v_5 self.cursor = self.limit_backward # do, line 225 v_6 = self.cursor # call postlude, line 225 self.__r_postlude() self.cursor = v_6 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/swedish_stemmer.py0000644000175000017500000001505613545325430025365 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class SwedishStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"a", -1, 1), Among(u"arna", 0, 1), Among(u"erna", 0, 1), Among(u"heterna", 2, 1), Among(u"orna", 0, 1), Among(u"ad", -1, 1), Among(u"e", -1, 1), Among(u"ade", 6, 1), Among(u"ande", 6, 1), Among(u"arne", 6, 1), Among(u"are", 6, 1), Among(u"aste", 6, 1), Among(u"en", -1, 1), Among(u"anden", 12, 1), Among(u"aren", 12, 1), Among(u"heten", 12, 1), Among(u"ern", -1, 1), Among(u"ar", -1, 1), Among(u"er", -1, 1), Among(u"heter", 18, 1), Among(u"or", -1, 1), Among(u"s", -1, 2), Among(u"as", 21, 1), Among(u"arnas", 22, 1), Among(u"ernas", 22, 1), Among(u"ornas", 22, 1), Among(u"es", 21, 1), Among(u"ades", 26, 1), Among(u"andes", 26, 1), Among(u"ens", 21, 1), Among(u"arens", 29, 1), Among(u"hetens", 29, 1), Among(u"erns", 21, 1), Among(u"at", -1, 1), Among(u"andet", -1, 1), Among(u"het", -1, 1), Among(u"ast", -1, 1) ] a_1 = [ Among(u"dd", -1, -1), Among(u"gd", -1, -1), Among(u"nn", -1, -1), Among(u"dt", -1, -1), Among(u"gt", -1, -1), Among(u"kt", -1, -1), Among(u"tt", -1, -1) ] a_2 = [ Among(u"ig", -1, 1), Among(u"lig", 0, 1), Among(u"els", -1, 1), Among(u"fullt", -1, 3), Among(u"l\u00F6st", -1, 2) ] g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32] g_s_ending = [119, 127, 149] I_x = 0 I_p1 = 0 def __r_mark_regions(self): # (, line 26 self.I_p1 = self.limit # test, line 29 v_1 = self.cursor # (, line 29 # hop, line 29 c = self.cursor + 3 if 0 > c or c > self.limit: return False self.cursor = c # setmark x, line 29 self.I_x = self.cursor self.cursor = v_1 # goto grouping v, line 30 if not self.go_out_grouping(SwedishStemmer.g_v, 97, 246): return False # gopast non v, line 30 if not self.go_in_grouping(SwedishStemmer.g_v, 97, 246): return False self.cursor += 1 # setmark p1, line 30 self.I_p1 = self.cursor # try, line 31 try: # (, line 31 if not self.I_p1 < self.I_x: raise lab0() self.I_p1 = self.I_x except lab0: pass return True def __r_main_suffix(self): # (, line 36 # setlimit, line 37 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 37 # [, line 37 self.ket = self.cursor # substring, line 37 among_var = self.find_among_b(SwedishStemmer.a_0) if among_var == 0: self.limit_backward = v_2 return False # ], line 37 self.bra = self.cursor self.limit_backward = v_2 if among_var == 1: # (, line 44 # delete, line 44 if not self.slice_del(): return False elif among_var == 2: # (, line 46 if not self.in_grouping_b(SwedishStemmer.g_s_ending, 98, 121): return False # delete, line 46 if not self.slice_del(): return False return True def __r_consonant_pair(self): # setlimit, line 50 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 50 # and, line 52 v_3 = self.limit - self.cursor # among, line 51 if self.find_among_b(SwedishStemmer.a_1) == 0: self.limit_backward = v_2 return False self.cursor = self.limit - v_3 # (, line 52 # [, line 52 self.ket = self.cursor # next, line 52 if self.cursor <= self.limit_backward: self.limit_backward = v_2 return False self.cursor -= 1 # ], line 52 self.bra = self.cursor # delete, line 52 if not self.slice_del(): return False self.limit_backward = v_2 return True def __r_other_suffix(self): # setlimit, line 55 if self.cursor < self.I_p1: return False v_2 = self.limit_backward self.limit_backward = self.I_p1 # (, line 55 # [, line 56 self.ket = self.cursor # substring, line 56 among_var = self.find_among_b(SwedishStemmer.a_2) if among_var == 0: self.limit_backward = v_2 return False # ], line 56 self.bra = self.cursor if among_var == 1: # (, line 57 # delete, line 57 if not self.slice_del(): return False elif among_var == 2: # (, line 58 # <-, line 58 if not self.slice_from(u"l\u00F6s"): return False elif among_var == 3: # (, line 59 # <-, line 59 if not self.slice_from(u"full"): return False self.limit_backward = v_2 return True def _stem(self): # (, line 64 # do, line 66 v_1 = self.cursor # call mark_regions, line 66 self.__r_mark_regions() self.cursor = v_1 # backwards, line 67 self.limit_backward = self.cursor self.cursor = self.limit # (, line 67 # do, line 68 v_2 = self.limit - self.cursor # call main_suffix, line 68 self.__r_main_suffix() self.cursor = self.limit - v_2 # do, line 69 v_3 = self.limit - self.cursor # call consonant_pair, line 69 self.__r_consonant_pair() self.cursor = self.limit - v_3 # do, line 70 v_4 = self.limit - self.cursor # call other_suffix, line 70 self.__r_other_suffix() self.cursor = self.limit - v_4 self.cursor = self.limit_backward return True class lab0(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/tamil_stemmer.py0000644000175000017500000024061513545325430025026 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class TamilStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B99", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9E", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BA8", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BAE", -1, -1), Among(u"\u0BAF", -1, -1), Among(u"\u0BB5", -1, -1) ] a_1 = [ Among(u"\u0BA8\u0BCD\u0BA4", -1, -1), Among(u"\u0BA8\u0BCD\u0BA4\u0BCD", -1, -1), Among(u"\u0BA8\u0BCD", -1, -1) ] a_2 = [ Among(u"\u0BBF", -1, -1), Among(u"\u0BC0", -1, -1), Among(u"\u0BC8", -1, -1) ] a_3 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9F", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BB1", -1, -1) ] a_4 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9F", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BB1", -1, -1) ] a_5 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9F", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BB1", -1, -1) ] a_6 = [ Among(u"\u0BAF", -1, -1), Among(u"\u0BB0", -1, -1), Among(u"\u0BB2", -1, -1), Among(u"\u0BB3", -1, -1), Among(u"\u0BB4", -1, -1), Among(u"\u0BB5", -1, -1) ] a_7 = [ Among(u"\u0B99", -1, -1), Among(u"\u0B9E", -1, -1), Among(u"\u0BA3", -1, -1), Among(u"\u0BA8", -1, -1), Among(u"\u0BA9", -1, -1), Among(u"\u0BAE", -1, -1) ] a_8 = [ Among(u"\u0BAF", -1, -1), Among(u"\u0BB5", -1, -1), Among(u"\u0BB5\u0BCD", -1, -1) ] a_9 = [ Among(u"\u0BBE", -1, -1), Among(u"\u0BBF", -1, -1), Among(u"\u0BC0", -1, -1), Among(u"\u0BC1", -1, -1), Among(u"\u0BC2", -1, -1), Among(u"\u0BC6", -1, -1), Among(u"\u0BC7", -1, -1), Among(u"\u0BC8", -1, -1) ] a_10 = [ Among(u"\u0BBE", -1, -1), Among(u"\u0BBF", -1, -1), Among(u"\u0BC0", -1, -1), Among(u"\u0BC1", -1, -1), Among(u"\u0BC2", -1, -1), Among(u"\u0BC6", -1, -1), Among(u"\u0BC7", -1, -1), Among(u"\u0BC8", -1, -1) ] a_11 = [ Among(u"\u0B85", -1, -1), Among(u"\u0B87", -1, -1), Among(u"\u0B89", -1, -1) ] a_12 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B99", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9E", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BA8", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BAE", -1, -1), Among(u"\u0BAF", -1, -1), Among(u"\u0BB5", -1, -1) ] a_13 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9F", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BB1", -1, -1) ] a_14 = [ Among(u"\u0BBE", -1, -1), Among(u"\u0BC7", -1, -1), Among(u"\u0BCB", -1, -1) ] a_15 = [ Among(u"\u0BAA\u0BBF", -1, -1), Among(u"\u0BB5\u0BBF", -1, -1) ] a_16 = [ Among(u"\u0BBE", -1, -1), Among(u"\u0BBF", -1, -1), Among(u"\u0BC0", -1, -1), Among(u"\u0BC1", -1, -1), Among(u"\u0BC2", -1, -1), Among(u"\u0BC6", -1, -1), Among(u"\u0BC7", -1, -1), Among(u"\u0BC8", -1, -1) ] a_17 = [ Among(u"\u0BAA\u0B9F\u0BCD\u0B9F", -1, -1), Among(u"\u0BAA\u0B9F\u0BCD\u0B9F\u0BA3", -1, -1), Among(u"\u0BA4\u0BBE\u0BA9", -1, -1), Among(u"\u0BAA\u0B9F\u0BBF\u0BA4\u0BBE\u0BA9", 2, -1), Among(u"\u0B95\u0BC1\u0BB0\u0BBF\u0BAF", -1, -1), Among(u"\u0BAA\u0B9F\u0BBF", -1, -1), Among(u"\u0BAA\u0BB1\u0BCD\u0BB1\u0BBF", -1, -1), Among(u"\u0BAA\u0B9F\u0BC1", -1, -1), Among(u"\u0BB5\u0BBF\u0B9F\u0BC1", -1, -1), Among(u"\u0BAA\u0B9F\u0BCD\u0B9F\u0BC1", -1, -1), Among(u"\u0BB5\u0BBF\u0B9F\u0BCD\u0B9F\u0BC1", -1, -1), Among(u"\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1", -1, -1), Among(u"\u0BC6\u0BB2\u0BCD\u0BB2\u0BBE\u0BAE\u0BCD", -1, -1) ] a_18 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9F", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BB1", -1, -1) ] a_19 = [ Among(u"\u0B95", -1, -1), Among(u"\u0B9A", -1, -1), Among(u"\u0B9F", -1, -1), Among(u"\u0BA4", -1, -1), Among(u"\u0BAA", -1, -1), Among(u"\u0BB1", -1, -1) ] a_20 = [ Among(u"\u0BBE", -1, -1), Among(u"\u0BBF", -1, -1), Among(u"\u0BC0", -1, -1), Among(u"\u0BC1", -1, -1), Among(u"\u0BC2", -1, -1), Among(u"\u0BC6", -1, -1), Among(u"\u0BC7", -1, -1), Among(u"\u0BC8", -1, -1) ] a_21 = [ Among(u"\u0BBE", -1, -1), Among(u"\u0BBF", -1, -1), Among(u"\u0BC0", -1, -1), Among(u"\u0BC1", -1, -1), Among(u"\u0BC2", -1, -1), Among(u"\u0BC6", -1, -1), Among(u"\u0BC7", -1, -1), Among(u"\u0BC8", -1, -1) ] a_22 = [ Among(u"\u0BAA\u0B9F\u0BC1", -1, -1), Among(u"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BCD", -1, -1) ] a_23 = [ Among(u"\u0B85", -1, -1), Among(u"\u0B86", -1, -1), Among(u"\u0B87", -1, -1), Among(u"\u0B88", -1, -1), Among(u"\u0B89", -1, -1), Among(u"\u0B8A", -1, -1), Among(u"\u0B8E", -1, -1), Among(u"\u0B8F", -1, -1), Among(u"\u0B90", -1, -1), Among(u"\u0B92", -1, -1), Among(u"\u0B93", -1, -1), Among(u"\u0B94", -1, -1) ] a_24 = [ Among(u"\u0BBE", -1, -1), Among(u"\u0BBF", -1, -1), Among(u"\u0BC0", -1, -1), Among(u"\u0BC1", -1, -1), Among(u"\u0BC2", -1, -1), Among(u"\u0BC6", -1, -1), Among(u"\u0BC7", -1, -1), Among(u"\u0BC8", -1, -1) ] a_25 = [ Among(u"\u0B95\u0BBF\u0BB1", -1, -1), Among(u"\u0B95\u0BBF\u0BA9\u0BCD\u0BB1", -1, -1), Among(u"\u0BBE\u0BA8\u0BBF\u0BA9\u0BCD\u0BB1", -1, -1), Among(u"\u0B95\u0BBF\u0BB1\u0BCD", -1, -1), Among(u"\u0B95\u0BBF\u0BA9\u0BCD\u0BB1\u0BCD", -1, -1), Among(u"\u0BBE\u0BA8\u0BBF\u0BA9\u0BCD\u0BB1\u0BCD", -1, -1) ] B_found_vetrumai_urupu = False B_found_a_match = False def __r_has_min_length(self): # (, line 99 if not len(self.current) > 4: return False return True def __r_fix_va_start(self): # (, line 103 # or, line 104 try: v_1 = self.cursor try: # (, line 104 # and, line 104 v_2 = self.cursor # try, line 104 v_3 = self.cursor try: # literal, line 104 if not self.eq_s(u"\u0BB5\u0BCB"): self.cursor = v_3 raise lab2() except lab2: pass self.cursor = v_2 # [, line 104 self.bra = self.cursor # literal, line 104 if not self.eq_s(u"\u0BB5\u0BCB"): raise lab1() # ], line 104 self.ket = self.cursor # <-, line 104 if not self.slice_from(u"\u0B93"): return False raise lab0() except lab1: pass self.cursor = v_1 try: # (, line 105 # and, line 105 v_4 = self.cursor # try, line 105 v_5 = self.cursor try: # literal, line 105 if not self.eq_s(u"\u0BB5\u0BCA"): self.cursor = v_5 raise lab4() except lab4: pass self.cursor = v_4 # [, line 105 self.bra = self.cursor # literal, line 105 if not self.eq_s(u"\u0BB5\u0BCA"): raise lab3() # ], line 105 self.ket = self.cursor # <-, line 105 if not self.slice_from(u"\u0B92"): return False raise lab0() except lab3: pass self.cursor = v_1 try: # (, line 106 # and, line 106 v_6 = self.cursor # try, line 106 v_7 = self.cursor try: # literal, line 106 if not self.eq_s(u"\u0BB5\u0BC1"): self.cursor = v_7 raise lab6() except lab6: pass self.cursor = v_6 # [, line 106 self.bra = self.cursor # literal, line 106 if not self.eq_s(u"\u0BB5\u0BC1"): raise lab5() # ], line 106 self.ket = self.cursor # <-, line 106 if not self.slice_from(u"\u0B89"): return False raise lab0() except lab5: pass self.cursor = v_1 # (, line 107 # and, line 107 v_8 = self.cursor # try, line 107 v_9 = self.cursor try: # literal, line 107 if not self.eq_s(u"\u0BB5\u0BC2"): self.cursor = v_9 raise lab7() except lab7: pass self.cursor = v_8 # [, line 107 self.bra = self.cursor # literal, line 107 if not self.eq_s(u"\u0BB5\u0BC2"): return False # ], line 107 self.ket = self.cursor # <-, line 107 if not self.slice_from(u"\u0B8A"): return False except lab0: pass return True def __r_fix_endings(self): # (, line 110 # do, line 111 v_1 = self.cursor try: # repeat, line 111 while True: v_2 = self.cursor try: # call fix_ending, line 111 if not self.__r_fix_ending(): raise lab1() continue except lab1: pass self.cursor = v_2 break except lab0: pass self.cursor = v_1 return True def __r_remove_question_prefixes(self): # (, line 114 # [, line 115 self.bra = self.cursor # (, line 115 # literal, line 115 if not self.eq_s(u"\u0B8E"): return False # among, line 115 if self.find_among(TamilStemmer.a_0) == 0: return False # literal, line 115 if not self.eq_s(u"\u0BCD"): return False # ], line 115 self.ket = self.cursor # delete, line 115 if not self.slice_del(): return False # do, line 116 v_1 = self.cursor # call fix_va_start, line 116 self.__r_fix_va_start() self.cursor = v_1 return True def __r_fix_ending(self): # (, line 120 if not len(self.current) > 3: return False # backwards, line 122 self.limit_backward = self.cursor self.cursor = self.limit # (, line 122 # or, line 124 try: v_1 = self.limit - self.cursor try: # (, line 123 # [, line 123 self.ket = self.cursor # among, line 123 if self.find_among_b(TamilStemmer.a_1) == 0: raise lab1() # ], line 123 self.bra = self.cursor # delete, line 123 if not self.slice_del(): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 125 # [, line 125 self.ket = self.cursor # literal, line 125 if not self.eq_s_b(u"\u0BAF\u0BCD"): raise lab2() # test, line 125 v_2 = self.limit - self.cursor # among, line 125 if self.find_among_b(TamilStemmer.a_2) == 0: raise lab2() self.cursor = self.limit - v_2 # ], line 125 self.bra = self.cursor # delete, line 125 if not self.slice_del(): return False raise lab0() except lab2: pass self.cursor = self.limit - v_1 try: # (, line 127 # [, line 127 self.ket = self.cursor # or, line 127 try: v_3 = self.limit - self.cursor try: # literal, line 127 if not self.eq_s_b(u"\u0B9F\u0BCD\u0BAA\u0BCD"): raise lab5() raise lab4() except lab5: pass self.cursor = self.limit - v_3 # literal, line 127 if not self.eq_s_b(u"\u0B9F\u0BCD\u0B95\u0BCD"): raise lab3() except lab4: pass # ], line 127 self.bra = self.cursor # <-, line 127 if not self.slice_from(u"\u0BB3\u0BCD"): return False raise lab0() except lab3: pass self.cursor = self.limit - v_1 try: # (, line 129 # [, line 129 self.ket = self.cursor # literal, line 129 if not self.eq_s_b(u"\u0BA9\u0BCD\u0BB1\u0BCD"): raise lab6() # ], line 129 self.bra = self.cursor # <-, line 129 if not self.slice_from(u"\u0BB2\u0BCD"): return False raise lab0() except lab6: pass self.cursor = self.limit - v_1 try: # (, line 132 # [, line 132 self.ket = self.cursor # literal, line 132 if not self.eq_s_b(u"\u0BB1\u0BCD\u0B95\u0BCD"): raise lab7() # ], line 132 self.bra = self.cursor # <-, line 132 if not self.slice_from(u"\u0BB2\u0BCD"): return False raise lab0() except lab7: pass self.cursor = self.limit - v_1 try: # (, line 134 # [, line 134 self.ket = self.cursor # literal, line 134 if not self.eq_s_b(u"\u0B9F\u0BCD\u0B9F\u0BCD"): raise lab8() # ], line 134 self.bra = self.cursor # <-, line 134 if not self.slice_from(u"\u0B9F\u0BC1"): return False raise lab0() except lab8: pass self.cursor = self.limit - v_1 try: # (, line 136 # Boolean test found_vetrumai_urupu, line 136 if not self.B_found_vetrumai_urupu: raise lab9() # [, line 136 self.ket = self.cursor # literal, line 136 if not self.eq_s_b(u"\u0BA4\u0BCD\u0BA4\u0BCD"): raise lab9() # (, line 136 # test, line 136 v_4 = self.limit - self.cursor # not, line 136 v_5 = self.limit - self.cursor try: # literal, line 136 if not self.eq_s_b(u"\u0BC8"): raise lab10() raise lab9() except lab10: pass self.cursor = self.limit - v_5 self.cursor = self.limit - v_4 # ], line 136 self.bra = self.cursor # <-, line 136 if not self.slice_from(u"\u0BAE\u0BCD"): return False # ], line 136 self.bra = self.cursor raise lab0() except lab9: pass self.cursor = self.limit - v_1 try: # (, line 138 # [, line 138 self.ket = self.cursor # or, line 138 try: v_6 = self.limit - self.cursor try: # literal, line 138 if not self.eq_s_b(u"\u0BC1\u0B95\u0BCD"): raise lab13() raise lab12() except lab13: pass self.cursor = self.limit - v_6 # literal, line 138 if not self.eq_s_b(u"\u0BC1\u0B95\u0BCD\u0B95\u0BCD"): raise lab11() except lab12: pass # ], line 138 self.bra = self.cursor # <-, line 138 if not self.slice_from(u"\u0BCD"): return False raise lab0() except lab11: pass self.cursor = self.limit - v_1 try: # (, line 140 # [, line 140 self.ket = self.cursor # literal, line 140 if not self.eq_s_b(u"\u0BCD"): raise lab14() # among, line 140 if self.find_among_b(TamilStemmer.a_3) == 0: raise lab14() # literal, line 140 if not self.eq_s_b(u"\u0BCD"): raise lab14() # among, line 140 if self.find_among_b(TamilStemmer.a_4) == 0: raise lab14() # ], line 140 self.bra = self.cursor # delete, line 140 if not self.slice_del(): return False raise lab0() except lab14: pass self.cursor = self.limit - v_1 try: # (, line 142 # [, line 142 self.ket = self.cursor # literal, line 142 if not self.eq_s_b(u"\u0BC1\u0B95\u0BCD"): raise lab15() # ], line 142 self.bra = self.cursor # <-, line 142 if not self.slice_from(u"\u0BCD"): return False raise lab0() except lab15: pass self.cursor = self.limit - v_1 try: # (, line 144 # [, line 144 self.ket = self.cursor # literal, line 144 if not self.eq_s_b(u"\u0BCD"): raise lab16() # among, line 144 if self.find_among_b(TamilStemmer.a_5) == 0: raise lab16() # ], line 144 self.bra = self.cursor # delete, line 144 if not self.slice_del(): return False raise lab0() except lab16: pass self.cursor = self.limit - v_1 try: # (, line 146 # [, line 146 self.ket = self.cursor # literal, line 146 if not self.eq_s_b(u"\u0BCD"): raise lab17() # (, line 146 # or, line 146 try: v_7 = self.limit - self.cursor try: # among, line 146 if self.find_among_b(TamilStemmer.a_6) == 0: raise lab19() raise lab18() except lab19: pass self.cursor = self.limit - v_7 # among, line 146 if self.find_among_b(TamilStemmer.a_7) == 0: raise lab17() except lab18: pass # literal, line 146 if not self.eq_s_b(u"\u0BCD"): raise lab17() # ], line 146 self.bra = self.cursor # <-, line 146 if not self.slice_from(u"\u0BCD"): return False raise lab0() except lab17: pass self.cursor = self.limit - v_1 try: # (, line 148 # [, line 148 self.ket = self.cursor # among, line 148 if self.find_among_b(TamilStemmer.a_8) == 0: raise lab20() # ], line 148 self.bra = self.cursor # delete, line 148 if not self.slice_del(): return False raise lab0() except lab20: pass self.cursor = self.limit - v_1 try: # (, line 150 # [, line 150 self.ket = self.cursor # literal, line 150 if not self.eq_s_b(u"\u0BA9\u0BC1"): raise lab21() # (, line 150 # test, line 150 v_8 = self.limit - self.cursor # not, line 150 v_9 = self.limit - self.cursor try: # among, line 150 if self.find_among_b(TamilStemmer.a_9) == 0: raise lab22() raise lab21() except lab22: pass self.cursor = self.limit - v_9 self.cursor = self.limit - v_8 # ], line 150 self.bra = self.cursor # delete, line 150 if not self.slice_del(): return False raise lab0() except lab21: pass self.cursor = self.limit - v_1 try: # (, line 152 # [, line 152 self.ket = self.cursor # literal, line 152 if not self.eq_s_b(u"\u0B99\u0BCD"): raise lab23() # (, line 152 # test, line 152 v_10 = self.limit - self.cursor # not, line 152 v_11 = self.limit - self.cursor try: # literal, line 152 if not self.eq_s_b(u"\u0BC8"): raise lab24() raise lab23() except lab24: pass self.cursor = self.limit - v_11 self.cursor = self.limit - v_10 # ], line 152 self.bra = self.cursor # <-, line 152 if not self.slice_from(u"\u0BAE\u0BCD"): return False raise lab0() except lab23: pass self.cursor = self.limit - v_1 try: # (, line 154 # [, line 154 self.ket = self.cursor # literal, line 154 if not self.eq_s_b(u"\u0B99\u0BCD"): raise lab25() # ], line 154 self.bra = self.cursor # delete, line 154 if not self.slice_del(): return False raise lab0() except lab25: pass self.cursor = self.limit - v_1 # (, line 156 # [, line 156 self.ket = self.cursor # literal, line 156 if not self.eq_s_b(u"\u0BCD"): return False # (, line 156 # test, line 156 v_12 = self.limit - self.cursor # (, line 156 # or, line 156 try: v_13 = self.limit - self.cursor try: # among, line 156 if self.find_among_b(TamilStemmer.a_10) == 0: raise lab27() raise lab26() except lab27: pass self.cursor = self.limit - v_13 # literal, line 156 if not self.eq_s_b(u"\u0BCD"): return False except lab26: pass self.cursor = self.limit - v_12 # ], line 156 self.bra = self.cursor # delete, line 156 if not self.slice_del(): return False except lab0: pass self.cursor = self.limit_backward return True def __r_remove_pronoun_prefixes(self): # (, line 160 # unset found_a_match, line 161 self.B_found_a_match = False # [, line 162 self.bra = self.cursor # among, line 162 if self.find_among(TamilStemmer.a_11) == 0: return False # among, line 162 if self.find_among(TamilStemmer.a_12) == 0: return False # literal, line 162 if not self.eq_s(u"\u0BCD"): return False # ], line 162 self.ket = self.cursor # delete, line 162 if not self.slice_del(): return False # (, line 163 # set found_a_match, line 163 self.B_found_a_match = True # do, line 164 v_1 = self.cursor # call fix_va_start, line 164 self.__r_fix_va_start() self.cursor = v_1 return True def __r_remove_plural_suffix(self): # (, line 167 # unset found_a_match, line 168 self.B_found_a_match = False # backwards, line 169 self.limit_backward = self.cursor self.cursor = self.limit # (, line 169 # or, line 170 try: v_1 = self.limit - self.cursor try: # (, line 170 # [, line 170 self.ket = self.cursor # literal, line 170 if not self.eq_s_b(u"\u0BC1\u0B99\u0BCD\u0B95\u0BB3\u0BCD"): raise lab1() # (, line 170 # test, line 170 v_2 = self.limit - self.cursor # not, line 170 v_3 = self.limit - self.cursor try: # among, line 170 if self.find_among_b(TamilStemmer.a_13) == 0: raise lab2() raise lab1() except lab2: pass self.cursor = self.limit - v_3 self.cursor = self.limit - v_2 # ], line 170 self.bra = self.cursor # <-, line 170 if not self.slice_from(u"\u0BCD"): return False raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 171 # [, line 171 self.ket = self.cursor # literal, line 171 if not self.eq_s_b(u"\u0BB1\u0BCD\u0B95\u0BB3\u0BCD"): raise lab3() # ], line 171 self.bra = self.cursor # <-, line 171 if not self.slice_from(u"\u0BB2\u0BCD"): return False raise lab0() except lab3: pass self.cursor = self.limit - v_1 try: # (, line 172 # [, line 172 self.ket = self.cursor # literal, line 172 if not self.eq_s_b(u"\u0B9F\u0BCD\u0B95\u0BB3\u0BCD"): raise lab4() # ], line 172 self.bra = self.cursor # <-, line 172 if not self.slice_from(u"\u0BB3\u0BCD"): return False raise lab0() except lab4: pass self.cursor = self.limit - v_1 # (, line 173 # [, line 173 self.ket = self.cursor # literal, line 173 if not self.eq_s_b(u"\u0B95\u0BB3\u0BCD"): return False # ], line 173 self.bra = self.cursor # delete, line 173 if not self.slice_del(): return False except lab0: pass # (, line 174 # set found_a_match, line 174 self.B_found_a_match = True self.cursor = self.limit_backward return True def __r_remove_question_suffixes(self): # (, line 178 # call has_min_length, line 179 if not self.__r_has_min_length(): return False # unset found_a_match, line 180 self.B_found_a_match = False # backwards, line 181 self.limit_backward = self.cursor self.cursor = self.limit # (, line 181 # do, line 182 v_1 = self.limit - self.cursor try: # (, line 182 # [, line 183 self.ket = self.cursor # among, line 183 if self.find_among_b(TamilStemmer.a_14) == 0: raise lab0() # ], line 183 self.bra = self.cursor # <-, line 183 if not self.slice_from(u"\u0BCD"): return False # (, line 184 # set found_a_match, line 184 self.B_found_a_match = True except lab0: pass self.cursor = self.limit - v_1 self.cursor = self.limit_backward # do, line 187 # call fix_endings, line 187 self.__r_fix_endings() return True def __r_remove_command_suffixes(self): # (, line 190 # call has_min_length, line 191 if not self.__r_has_min_length(): return False # unset found_a_match, line 192 self.B_found_a_match = False # backwards, line 193 self.limit_backward = self.cursor self.cursor = self.limit # (, line 193 # [, line 194 self.ket = self.cursor # among, line 194 if self.find_among_b(TamilStemmer.a_15) == 0: return False # ], line 194 self.bra = self.cursor # delete, line 194 if not self.slice_del(): return False # (, line 195 # set found_a_match, line 195 self.B_found_a_match = True self.cursor = self.limit_backward return True def __r_remove_um(self): # (, line 199 # unset found_a_match, line 200 self.B_found_a_match = False # call has_min_length, line 201 if not self.__r_has_min_length(): return False # backwards, line 202 self.limit_backward = self.cursor self.cursor = self.limit # (, line 202 # [, line 202 self.ket = self.cursor # literal, line 202 if not self.eq_s_b(u"\u0BC1\u0BAE\u0BCD"): return False # ], line 202 self.bra = self.cursor # <-, line 202 if not self.slice_from(u"\u0BCD"): return False # (, line 203 # set found_a_match, line 203 self.B_found_a_match = True self.cursor = self.limit_backward # do, line 205 v_1 = self.cursor # call fix_ending, line 205 self.__r_fix_ending() self.cursor = v_1 return True def __r_remove_common_word_endings(self): # (, line 208 # unset found_a_match, line 212 self.B_found_a_match = False # call has_min_length, line 213 if not self.__r_has_min_length(): return False # backwards, line 214 self.limit_backward = self.cursor self.cursor = self.limit # (, line 214 # or, line 231 try: v_1 = self.limit - self.cursor try: # test, line 215 v_2 = self.limit - self.cursor # (, line 215 # [, line 215 self.ket = self.cursor # or, line 215 try: v_3 = self.limit - self.cursor try: # literal, line 215 if not self.eq_s_b(u"\u0BC1\u0B9F\u0BA9\u0BCD"): raise lab3() raise lab2() except lab3: pass self.cursor = self.limit - v_3 try: # literal, line 216 if not self.eq_s_b(u"\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8"): raise lab4() raise lab2() except lab4: pass self.cursor = self.limit - v_3 try: # literal, line 217 if not self.eq_s_b(u"\u0BBF\u0B9F\u0BAE\u0BCD"): raise lab5() raise lab2() except lab5: pass self.cursor = self.limit - v_3 try: # literal, line 218 if not self.eq_s_b(u"\u0BBF\u0BA9\u0BCD\u0BB1\u0BBF"): raise lab6() raise lab2() except lab6: pass self.cursor = self.limit - v_3 try: # literal, line 219 if not self.eq_s_b(u"\u0BBE\u0B95\u0BBF"): raise lab7() raise lab2() except lab7: pass self.cursor = self.limit - v_3 try: # literal, line 220 if not self.eq_s_b(u"\u0BBE\u0B95\u0BBF\u0BAF"): raise lab8() raise lab2() except lab8: pass self.cursor = self.limit - v_3 try: # literal, line 221 if not self.eq_s_b(u"\u0BC6\u0BA9\u0BCD\u0BB1\u0BC1"): raise lab9() raise lab2() except lab9: pass self.cursor = self.limit - v_3 try: # literal, line 222 if not self.eq_s_b(u"\u0BC1\u0BB3\u0BCD\u0BB3"): raise lab10() raise lab2() except lab10: pass self.cursor = self.limit - v_3 try: # literal, line 223 if not self.eq_s_b(u"\u0BC1\u0B9F\u0BC8\u0BAF"): raise lab11() raise lab2() except lab11: pass self.cursor = self.limit - v_3 try: # literal, line 224 if not self.eq_s_b(u"\u0BC1\u0B9F\u0BC8"): raise lab12() raise lab2() except lab12: pass self.cursor = self.limit - v_3 try: # literal, line 225 if not self.eq_s_b(u"\u0BC6\u0BA9\u0BC1\u0BAE\u0BCD"): raise lab13() raise lab2() except lab13: pass self.cursor = self.limit - v_3 try: # (, line 226 # literal, line 226 if not self.eq_s_b(u"\u0BB2\u0BCD\u0BB2"): raise lab14() # test, line 226 v_4 = self.limit - self.cursor # (, line 226 # not, line 226 v_5 = self.limit - self.cursor try: # among, line 226 if self.find_among_b(TamilStemmer.a_16) == 0: raise lab15() raise lab14() except lab15: pass self.cursor = self.limit - v_5 self.cursor = self.limit - v_4 raise lab2() except lab14: pass self.cursor = self.limit - v_3 try: # literal, line 227 if not self.eq_s_b(u"\u0BC6\u0BA9"): raise lab16() raise lab2() except lab16: pass self.cursor = self.limit - v_3 # literal, line 228 if not self.eq_s_b(u"\u0BBE\u0B95\u0BBF"): raise lab1() except lab2: pass # ], line 228 self.bra = self.cursor # <-, line 228 if not self.slice_from(u"\u0BCD"): return False # (, line 229 # set found_a_match, line 229 self.B_found_a_match = True self.cursor = self.limit - v_2 raise lab0() except lab1: pass self.cursor = self.limit - v_1 # test, line 232 v_6 = self.limit - self.cursor # (, line 232 # [, line 232 self.ket = self.cursor # among, line 232 if self.find_among_b(TamilStemmer.a_17) == 0: return False # ], line 245 self.bra = self.cursor # delete, line 245 if not self.slice_del(): return False # (, line 246 # set found_a_match, line 246 self.B_found_a_match = True self.cursor = self.limit - v_6 except lab0: pass self.cursor = self.limit_backward # do, line 249 # call fix_endings, line 249 self.__r_fix_endings() return True def __r_remove_vetrumai_urupukal(self): # (, line 252 # unset found_a_match, line 253 self.B_found_a_match = False # unset found_vetrumai_urupu, line 254 self.B_found_vetrumai_urupu = False # call has_min_length, line 255 if not self.__r_has_min_length(): return False # backwards, line 256 self.limit_backward = self.cursor self.cursor = self.limit # (, line 256 # (, line 257 # or, line 259 try: v_1 = self.limit - self.cursor try: # test, line 258 v_2 = self.limit - self.cursor # (, line 258 # [, line 258 self.ket = self.cursor # literal, line 258 if not self.eq_s_b(u"\u0BA9\u0BC8"): raise lab1() # ], line 258 self.bra = self.cursor # delete, line 258 if not self.slice_del(): return False self.cursor = self.limit - v_2 raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # test, line 260 v_3 = self.limit - self.cursor # (, line 260 # [, line 260 self.ket = self.cursor # or, line 261 try: v_4 = self.limit - self.cursor try: # (, line 260 # or, line 260 try: v_5 = self.limit - self.cursor try: # literal, line 260 if not self.eq_s_b(u"\u0BBF\u0BA9\u0BC8"): raise lab6() raise lab5() except lab6: pass self.cursor = self.limit - v_5 # literal, line 261 if not self.eq_s_b(u"\u0BC8"): raise lab4() except lab5: pass # (, line 261 # test, line 261 v_6 = self.limit - self.cursor # not, line 261 v_7 = self.limit - self.cursor try: # among, line 261 if self.find_among_b(TamilStemmer.a_18) == 0: raise lab7() raise lab4() except lab7: pass self.cursor = self.limit - v_7 self.cursor = self.limit - v_6 raise lab3() except lab4: pass self.cursor = self.limit - v_4 # (, line 262 # literal, line 262 if not self.eq_s_b(u"\u0BC8"): raise lab2() # (, line 262 # test, line 262 v_8 = self.limit - self.cursor # (, line 262 # among, line 262 if self.find_among_b(TamilStemmer.a_19) == 0: raise lab2() # literal, line 262 if not self.eq_s_b(u"\u0BCD"): raise lab2() self.cursor = self.limit - v_8 except lab3: pass # ], line 263 self.bra = self.cursor # <-, line 263 if not self.slice_from(u"\u0BCD"): return False self.cursor = self.limit - v_3 raise lab0() except lab2: pass self.cursor = self.limit - v_1 try: # test, line 266 v_9 = self.limit - self.cursor # (, line 266 # [, line 266 self.ket = self.cursor # or, line 267 try: v_10 = self.limit - self.cursor try: # literal, line 267 if not self.eq_s_b(u"\u0BCA\u0B9F\u0BC1"): raise lab10() raise lab9() except lab10: pass self.cursor = self.limit - v_10 try: # literal, line 268 if not self.eq_s_b(u"\u0BCB\u0B9F\u0BC1"): raise lab11() raise lab9() except lab11: pass self.cursor = self.limit - v_10 try: # literal, line 269 if not self.eq_s_b(u"\u0BBF\u0BB2\u0BCD"): raise lab12() raise lab9() except lab12: pass self.cursor = self.limit - v_10 try: # literal, line 270 if not self.eq_s_b(u"\u0BBF\u0BB1\u0BCD"): raise lab13() raise lab9() except lab13: pass self.cursor = self.limit - v_10 try: # (, line 271 # literal, line 271 if not self.eq_s_b(u"\u0BBF\u0BA9\u0BCD"): raise lab14() # (, line 271 # test, line 271 v_11 = self.limit - self.cursor # not, line 271 v_12 = self.limit - self.cursor try: # literal, line 271 if not self.eq_s_b(u"\u0BAE"): raise lab15() raise lab14() except lab15: pass self.cursor = self.limit - v_12 self.cursor = self.limit - v_11 raise lab9() except lab14: pass self.cursor = self.limit - v_10 try: # literal, line 272 if not self.eq_s_b(u"\u0BBF\u0BA9\u0BCD\u0BB1\u0BC1"): raise lab16() raise lab9() except lab16: pass self.cursor = self.limit - v_10 try: # literal, line 273 if not self.eq_s_b(u"\u0BBF\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4\u0BC1"): raise lab17() raise lab9() except lab17: pass self.cursor = self.limit - v_10 try: # literal, line 274 if not self.eq_s_b(u"\u0BB5\u0BBF\u0B9F"): raise lab18() raise lab9() except lab18: pass self.cursor = self.limit - v_10 try: # (, line 275 if not len(self.current) >= 7: raise lab19() # literal, line 275 if not self.eq_s_b(u"\u0BBF\u0B9F\u0BAE\u0BCD"): raise lab19() raise lab9() except lab19: pass self.cursor = self.limit - v_10 try: # literal, line 276 if not self.eq_s_b(u"\u0BBE\u0BB2\u0BCD"): raise lab20() raise lab9() except lab20: pass self.cursor = self.limit - v_10 try: # literal, line 277 if not self.eq_s_b(u"\u0BC1\u0B9F\u0BC8"): raise lab21() raise lab9() except lab21: pass self.cursor = self.limit - v_10 try: # literal, line 278 if not self.eq_s_b(u"\u0BBE\u0BAE\u0BB2\u0BCD"): raise lab22() raise lab9() except lab22: pass self.cursor = self.limit - v_10 try: # (, line 279 # literal, line 279 if not self.eq_s_b(u"\u0BB2\u0BCD"): raise lab23() # (, line 279 # test, line 279 v_13 = self.limit - self.cursor # not, line 279 v_14 = self.limit - self.cursor try: # among, line 279 if self.find_among_b(TamilStemmer.a_20) == 0: raise lab24() raise lab23() except lab24: pass self.cursor = self.limit - v_14 self.cursor = self.limit - v_13 raise lab9() except lab23: pass self.cursor = self.limit - v_10 # literal, line 280 if not self.eq_s_b(u"\u0BC1\u0BB3\u0BCD"): raise lab8() except lab9: pass # ], line 281 self.bra = self.cursor # <-, line 281 if not self.slice_from(u"\u0BCD"): return False self.cursor = self.limit - v_9 raise lab0() except lab8: pass self.cursor = self.limit - v_1 try: # test, line 284 v_15 = self.limit - self.cursor # (, line 284 # [, line 284 self.ket = self.cursor # or, line 285 try: v_16 = self.limit - self.cursor try: # literal, line 285 if not self.eq_s_b(u"\u0B95\u0BA3\u0BCD"): raise lab27() raise lab26() except lab27: pass self.cursor = self.limit - v_16 try: # literal, line 286 if not self.eq_s_b(u"\u0BAE\u0BC1\u0BA9\u0BCD"): raise lab28() raise lab26() except lab28: pass self.cursor = self.limit - v_16 try: # literal, line 287 if not self.eq_s_b(u"\u0BAE\u0BC7\u0BB2\u0BCD"): raise lab29() raise lab26() except lab29: pass self.cursor = self.limit - v_16 try: # literal, line 288 if not self.eq_s_b(u"\u0BAE\u0BC7\u0BB1\u0BCD"): raise lab30() raise lab26() except lab30: pass self.cursor = self.limit - v_16 try: # literal, line 289 if not self.eq_s_b(u"\u0B95\u0BC0\u0BB4\u0BCD"): raise lab31() raise lab26() except lab31: pass self.cursor = self.limit - v_16 try: # literal, line 290 if not self.eq_s_b(u"\u0BAA\u0BBF\u0BA9\u0BCD"): raise lab32() raise lab26() except lab32: pass self.cursor = self.limit - v_16 # (, line 291 # literal, line 291 if not self.eq_s_b(u"\u0BA4\u0BC1"): raise lab25() # (, line 291 # test, line 291 v_17 = self.limit - self.cursor # not, line 291 v_18 = self.limit - self.cursor try: # among, line 291 if self.find_among_b(TamilStemmer.a_21) == 0: raise lab33() raise lab25() except lab33: pass self.cursor = self.limit - v_18 self.cursor = self.limit - v_17 except lab26: pass # ], line 292 self.bra = self.cursor # delete, line 292 if not self.slice_del(): return False self.cursor = self.limit - v_15 raise lab0() except lab25: pass self.cursor = self.limit - v_1 # test, line 295 v_19 = self.limit - self.cursor # (, line 295 # [, line 295 self.ket = self.cursor # literal, line 295 if not self.eq_s_b(u"\u0BC0"): return False # ], line 295 self.bra = self.cursor # <-, line 295 if not self.slice_from(u"\u0BBF"): return False self.cursor = self.limit - v_19 except lab0: pass # (, line 297 # set found_a_match, line 297 self.B_found_a_match = True # (, line 298 # set found_vetrumai_urupu, line 298 self.B_found_vetrumai_urupu = True # do, line 299 v_20 = self.limit - self.cursor try: # (, line 299 # [, line 299 self.ket = self.cursor # literal, line 299 if not self.eq_s_b(u"\u0BBF\u0BA9\u0BCD"): raise lab34() # ], line 299 self.bra = self.cursor # <-, line 299 if not self.slice_from(u"\u0BCD"): return False except lab34: pass self.cursor = self.limit - v_20 self.cursor = self.limit_backward # do, line 301 # call fix_endings, line 301 self.__r_fix_endings() return True def __r_remove_tense_suffixes(self): # (, line 304 # set found_a_match, line 305 self.B_found_a_match = True # repeat, line 306 while True: v_1 = self.cursor try: # (, line 306 # Boolean test found_a_match, line 306 if not self.B_found_a_match: raise lab0() # (, line 306 # do, line 306 v_2 = self.cursor # call remove_tense_suffix, line 306 self.__r_remove_tense_suffix() self.cursor = v_2 continue except lab0: pass self.cursor = v_1 break return True def __r_remove_tense_suffix(self): # (, line 309 # unset found_a_match, line 310 self.B_found_a_match = False # call has_min_length, line 311 if not self.__r_has_min_length(): return False # backwards, line 312 self.limit_backward = self.cursor self.cursor = self.limit # (, line 312 # do, line 313 v_1 = self.limit - self.cursor try: # (, line 313 # or, line 320 try: v_2 = self.limit - self.cursor try: # test, line 314 v_3 = self.limit - self.cursor # (, line 314 # [, line 314 self.ket = self.cursor # among, line 314 if self.find_among_b(TamilStemmer.a_22) == 0: raise lab2() # ], line 317 self.bra = self.cursor # delete, line 317 if not self.slice_del(): return False # (, line 318 # set found_a_match, line 318 self.B_found_a_match = True self.cursor = self.limit - v_3 raise lab1() except lab2: pass self.cursor = self.limit - v_2 try: # test, line 321 v_4 = self.limit - self.cursor # (, line 321 # [, line 321 self.ket = self.cursor # or, line 322 try: v_5 = self.limit - self.cursor try: # literal, line 322 if not self.eq_s_b(u"\u0BAE\u0BBE\u0BB0\u0BCD"): raise lab5() raise lab4() except lab5: pass self.cursor = self.limit - v_5 try: # literal, line 323 if not self.eq_s_b(u"\u0BAE\u0BBF\u0BA9\u0BCD"): raise lab6() raise lab4() except lab6: pass self.cursor = self.limit - v_5 try: # literal, line 324 if not self.eq_s_b(u"\u0BA9\u0BA9\u0BCD"): raise lab7() raise lab4() except lab7: pass self.cursor = self.limit - v_5 try: # literal, line 325 if not self.eq_s_b(u"\u0BA9\u0BBE\u0BA9\u0BCD"): raise lab8() raise lab4() except lab8: pass self.cursor = self.limit - v_5 try: # literal, line 326 if not self.eq_s_b(u"\u0BA9\u0BBE\u0BB3\u0BCD"): raise lab9() raise lab4() except lab9: pass self.cursor = self.limit - v_5 try: # literal, line 327 if not self.eq_s_b(u"\u0BA9\u0BBE\u0BB0\u0BCD"): raise lab10() raise lab4() except lab10: pass self.cursor = self.limit - v_5 try: # (, line 328 # literal, line 328 if not self.eq_s_b(u"\u0BB5\u0BA9\u0BCD"): raise lab11() # test, line 328 v_6 = self.limit - self.cursor # (, line 328 # not, line 328 v_7 = self.limit - self.cursor try: # among, line 328 if self.find_among_b(TamilStemmer.a_23) == 0: raise lab12() raise lab11() except lab12: pass self.cursor = self.limit - v_7 self.cursor = self.limit - v_6 raise lab4() except lab11: pass self.cursor = self.limit - v_5 try: # literal, line 329 if not self.eq_s_b(u"\u0BA9\u0BB3\u0BCD"): raise lab13() raise lab4() except lab13: pass self.cursor = self.limit - v_5 try: # literal, line 330 if not self.eq_s_b(u"\u0BB5\u0BB3\u0BCD"): raise lab14() raise lab4() except lab14: pass self.cursor = self.limit - v_5 try: # literal, line 331 if not self.eq_s_b(u"\u0BA9\u0BB0\u0BCD"): raise lab15() raise lab4() except lab15: pass self.cursor = self.limit - v_5 try: # literal, line 332 if not self.eq_s_b(u"\u0BB5\u0BB0\u0BCD"): raise lab16() raise lab4() except lab16: pass self.cursor = self.limit - v_5 try: # literal, line 333 if not self.eq_s_b(u"\u0BA9"): raise lab17() raise lab4() except lab17: pass self.cursor = self.limit - v_5 try: # literal, line 333 if not self.eq_s_b(u"\u0BAA"): raise lab18() raise lab4() except lab18: pass self.cursor = self.limit - v_5 try: # literal, line 333 if not self.eq_s_b(u"\u0B95"): raise lab19() raise lab4() except lab19: pass self.cursor = self.limit - v_5 try: # literal, line 333 if not self.eq_s_b(u"\u0BA4"): raise lab20() raise lab4() except lab20: pass self.cursor = self.limit - v_5 try: # literal, line 333 if not self.eq_s_b(u"\u0BAF"): raise lab21() raise lab4() except lab21: pass self.cursor = self.limit - v_5 try: # literal, line 334 if not self.eq_s_b(u"\u0BAA\u0BA9\u0BCD"): raise lab22() raise lab4() except lab22: pass self.cursor = self.limit - v_5 try: # literal, line 335 if not self.eq_s_b(u"\u0BAA\u0BB3\u0BCD"): raise lab23() raise lab4() except lab23: pass self.cursor = self.limit - v_5 try: # literal, line 336 if not self.eq_s_b(u"\u0BAA\u0BB0\u0BCD"): raise lab24() raise lab4() except lab24: pass self.cursor = self.limit - v_5 try: # (, line 337 # literal, line 337 if not self.eq_s_b(u"\u0BA4\u0BC1"): raise lab25() # (, line 337 # test, line 337 v_8 = self.limit - self.cursor # not, line 337 v_9 = self.limit - self.cursor try: # among, line 337 if self.find_among_b(TamilStemmer.a_24) == 0: raise lab26() raise lab25() except lab26: pass self.cursor = self.limit - v_9 self.cursor = self.limit - v_8 raise lab4() except lab25: pass self.cursor = self.limit - v_5 try: # literal, line 338 if not self.eq_s_b(u"\u0BBF\u0BB1\u0BCD\u0BB1\u0BC1"): raise lab27() raise lab4() except lab27: pass self.cursor = self.limit - v_5 try: # literal, line 339 if not self.eq_s_b(u"\u0BAA\u0BAE\u0BCD"): raise lab28() raise lab4() except lab28: pass self.cursor = self.limit - v_5 try: # literal, line 340 if not self.eq_s_b(u"\u0BA9\u0BAE\u0BCD"): raise lab29() raise lab4() except lab29: pass self.cursor = self.limit - v_5 try: # literal, line 341 if not self.eq_s_b(u"\u0BA4\u0BC1\u0BAE\u0BCD"): raise lab30() raise lab4() except lab30: pass self.cursor = self.limit - v_5 try: # literal, line 342 if not self.eq_s_b(u"\u0BB1\u0BC1\u0BAE\u0BCD"): raise lab31() raise lab4() except lab31: pass self.cursor = self.limit - v_5 try: # literal, line 343 if not self.eq_s_b(u"\u0B95\u0BC1\u0BAE\u0BCD"): raise lab32() raise lab4() except lab32: pass self.cursor = self.limit - v_5 try: # literal, line 344 if not self.eq_s_b(u"\u0BA9\u0BC6\u0BA9\u0BCD"): raise lab33() raise lab4() except lab33: pass self.cursor = self.limit - v_5 try: # literal, line 345 if not self.eq_s_b(u"\u0BA9\u0BC8"): raise lab34() raise lab4() except lab34: pass self.cursor = self.limit - v_5 # literal, line 346 if not self.eq_s_b(u"\u0BB5\u0BC8"): raise lab3() except lab4: pass # ], line 347 self.bra = self.cursor # delete, line 347 if not self.slice_del(): return False # (, line 348 # set found_a_match, line 348 self.B_found_a_match = True self.cursor = self.limit - v_4 raise lab1() except lab3: pass self.cursor = self.limit - v_2 try: # test, line 351 v_10 = self.limit - self.cursor # (, line 351 # [, line 351 self.ket = self.cursor # or, line 352 try: v_11 = self.limit - self.cursor try: # (, line 352 # literal, line 352 if not self.eq_s_b(u"\u0BBE\u0BA9\u0BCD"): raise lab37() # test, line 352 v_12 = self.limit - self.cursor # (, line 352 # not, line 352 v_13 = self.limit - self.cursor try: # literal, line 352 if not self.eq_s_b(u"\u0B9A"): raise lab38() raise lab37() except lab38: pass self.cursor = self.limit - v_13 self.cursor = self.limit - v_12 raise lab36() except lab37: pass self.cursor = self.limit - v_11 try: # literal, line 353 if not self.eq_s_b(u"\u0BBE\u0BB3\u0BCD"): raise lab39() raise lab36() except lab39: pass self.cursor = self.limit - v_11 try: # literal, line 354 if not self.eq_s_b(u"\u0BBE\u0BB0\u0BCD"): raise lab40() raise lab36() except lab40: pass self.cursor = self.limit - v_11 try: # literal, line 355 if not self.eq_s_b(u"\u0BC7\u0BA9\u0BCD"): raise lab41() raise lab36() except lab41: pass self.cursor = self.limit - v_11 try: # literal, line 356 if not self.eq_s_b(u"\u0BBE"): raise lab42() raise lab36() except lab42: pass self.cursor = self.limit - v_11 try: # literal, line 357 if not self.eq_s_b(u"\u0BBE\u0BAE\u0BCD"): raise lab43() raise lab36() except lab43: pass self.cursor = self.limit - v_11 try: # literal, line 358 if not self.eq_s_b(u"\u0BC6\u0BAE\u0BCD"): raise lab44() raise lab36() except lab44: pass self.cursor = self.limit - v_11 try: # literal, line 359 if not self.eq_s_b(u"\u0BC7\u0BAE\u0BCD"): raise lab45() raise lab36() except lab45: pass self.cursor = self.limit - v_11 try: # literal, line 360 if not self.eq_s_b(u"\u0BCB\u0BAE\u0BCD"): raise lab46() raise lab36() except lab46: pass self.cursor = self.limit - v_11 try: # literal, line 361 if not self.eq_s_b(u"\u0B95\u0BC1\u0BAE\u0BCD"): raise lab47() raise lab36() except lab47: pass self.cursor = self.limit - v_11 try: # literal, line 362 if not self.eq_s_b(u"\u0BA4\u0BC1\u0BAE\u0BCD"): raise lab48() raise lab36() except lab48: pass self.cursor = self.limit - v_11 try: # literal, line 363 if not self.eq_s_b(u"\u0B9F\u0BC1\u0BAE\u0BCD"): raise lab49() raise lab36() except lab49: pass self.cursor = self.limit - v_11 try: # literal, line 364 if not self.eq_s_b(u"\u0BB1\u0BC1\u0BAE\u0BCD"): raise lab50() raise lab36() except lab50: pass self.cursor = self.limit - v_11 try: # literal, line 365 if not self.eq_s_b(u"\u0BBE\u0BAF\u0BCD"): raise lab51() raise lab36() except lab51: pass self.cursor = self.limit - v_11 try: # literal, line 366 if not self.eq_s_b(u"\u0BA9\u0BC6\u0BA9\u0BCD"): raise lab52() raise lab36() except lab52: pass self.cursor = self.limit - v_11 try: # literal, line 367 if not self.eq_s_b(u"\u0BA9\u0BBF\u0BB0\u0BCD"): raise lab53() raise lab36() except lab53: pass self.cursor = self.limit - v_11 try: # literal, line 368 if not self.eq_s_b(u"\u0BC0\u0BB0\u0BCD"): raise lab54() raise lab36() except lab54: pass self.cursor = self.limit - v_11 # literal, line 369 if not self.eq_s_b(u"\u0BC0\u0BAF\u0BB0\u0BCD"): raise lab35() except lab36: pass # ], line 370 self.bra = self.cursor # <-, line 370 if not self.slice_from(u"\u0BCD"): return False # (, line 371 # set found_a_match, line 371 self.B_found_a_match = True self.cursor = self.limit - v_10 raise lab1() except lab35: pass self.cursor = self.limit - v_2 # test, line 374 v_14 = self.limit - self.cursor # (, line 374 # (, line 374 # [, line 374 self.ket = self.cursor # or, line 374 try: v_15 = self.limit - self.cursor try: # literal, line 374 if not self.eq_s_b(u"\u0B95\u0BC1"): raise lab56() raise lab55() except lab56: pass self.cursor = self.limit - v_15 # literal, line 374 if not self.eq_s_b(u"\u0BA4\u0BC1"): raise lab0() except lab55: pass # (, line 374 # test, line 374 v_16 = self.limit - self.cursor # literal, line 374 if not self.eq_s_b(u"\u0BCD"): raise lab0() self.cursor = self.limit - v_16 # ], line 374 self.bra = self.cursor # delete, line 374 if not self.slice_del(): return False # (, line 375 # set found_a_match, line 375 self.B_found_a_match = True self.cursor = self.limit - v_14 except lab1: pass except lab0: pass self.cursor = self.limit - v_1 # do, line 378 v_17 = self.limit - self.cursor try: # (, line 378 # [, line 378 self.ket = self.cursor # among, line 378 if self.find_among_b(TamilStemmer.a_25) == 0: raise lab57() # ], line 385 self.bra = self.cursor # delete, line 385 if not self.slice_del(): return False # (, line 386 # set found_a_match, line 386 self.B_found_a_match = True except lab57: pass self.cursor = self.limit - v_17 self.cursor = self.limit_backward # do, line 389 # call fix_endings, line 389 self.__r_fix_endings() return True def _stem(self): # (, line 392 # unset found_vetrumai_urupu, line 393 self.B_found_vetrumai_urupu = False # do, line 394 v_1 = self.cursor # call fix_ending, line 394 self.__r_fix_ending() self.cursor = v_1 # call has_min_length, line 395 if not self.__r_has_min_length(): return False # do, line 396 v_2 = self.cursor # call remove_question_prefixes, line 396 self.__r_remove_question_prefixes() self.cursor = v_2 # do, line 397 v_3 = self.cursor # call remove_pronoun_prefixes, line 397 self.__r_remove_pronoun_prefixes() self.cursor = v_3 # do, line 398 v_4 = self.cursor # call remove_question_suffixes, line 398 self.__r_remove_question_suffixes() self.cursor = v_4 # do, line 399 v_5 = self.cursor # call remove_um, line 399 self.__r_remove_um() self.cursor = v_5 # do, line 400 v_6 = self.cursor # call remove_common_word_endings, line 400 self.__r_remove_common_word_endings() self.cursor = v_6 # do, line 401 v_7 = self.cursor # call remove_vetrumai_urupukal, line 401 self.__r_remove_vetrumai_urupukal() self.cursor = v_7 # do, line 402 v_8 = self.cursor # call remove_plural_suffix, line 402 self.__r_remove_plural_suffix() self.cursor = v_8 # do, line 403 v_9 = self.cursor # call remove_command_suffixes, line 403 self.__r_remove_command_suffixes() self.cursor = v_9 # do, line 404 v_10 = self.cursor # call remove_tense_suffixes, line 404 self.__r_remove_tense_suffixes() self.cursor = v_10 return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass class lab9(BaseException): pass class lab10(BaseException): pass class lab11(BaseException): pass class lab12(BaseException): pass class lab13(BaseException): pass class lab14(BaseException): pass class lab15(BaseException): pass class lab16(BaseException): pass class lab17(BaseException): pass class lab18(BaseException): pass class lab19(BaseException): pass class lab20(BaseException): pass class lab21(BaseException): pass class lab22(BaseException): pass class lab23(BaseException): pass class lab24(BaseException): pass class lab25(BaseException): pass class lab26(BaseException): pass class lab27(BaseException): pass class lab28(BaseException): pass class lab29(BaseException): pass class lab30(BaseException): pass class lab31(BaseException): pass class lab32(BaseException): pass class lab33(BaseException): pass class lab34(BaseException): pass class lab35(BaseException): pass class lab36(BaseException): pass class lab37(BaseException): pass class lab38(BaseException): pass class lab39(BaseException): pass class lab40(BaseException): pass class lab41(BaseException): pass class lab42(BaseException): pass class lab43(BaseException): pass class lab44(BaseException): pass class lab45(BaseException): pass class lab46(BaseException): pass class lab47(BaseException): pass class lab48(BaseException): pass class lab49(BaseException): pass class lab50(BaseException): pass class lab51(BaseException): pass class lab52(BaseException): pass class lab53(BaseException): pass class lab54(BaseException): pass class lab55(BaseException): pass class lab56(BaseException): pass class lab57(BaseException): pass snowballstemmer-2.0.0/src/snowballstemmer/turkish_stemmer.py0000644000175000017500000024505513545325430025414 0ustar dmitrydmitry00000000000000# Generated by Snowball 2.0.0 - https://snowballstem.org/ from .basestemmer import BaseStemmer from .among import Among class TurkishStemmer(BaseStemmer): ''' This class implements the stemming algorithm defined by a snowball script. Generated by Snowball 2.0.0 - https://snowballstem.org/ ''' a_0 = [ Among(u"m", -1, -1), Among(u"n", -1, -1), Among(u"miz", -1, -1), Among(u"niz", -1, -1), Among(u"muz", -1, -1), Among(u"nuz", -1, -1), Among(u"m\u00FCz", -1, -1), Among(u"n\u00FCz", -1, -1), Among(u"m\u0131z", -1, -1), Among(u"n\u0131z", -1, -1) ] a_1 = [ Among(u"leri", -1, -1), Among(u"lar\u0131", -1, -1) ] a_2 = [ Among(u"ni", -1, -1), Among(u"nu", -1, -1), Among(u"n\u00FC", -1, -1), Among(u"n\u0131", -1, -1) ] a_3 = [ Among(u"in", -1, -1), Among(u"un", -1, -1), Among(u"\u00FCn", -1, -1), Among(u"\u0131n", -1, -1) ] a_4 = [ Among(u"a", -1, -1), Among(u"e", -1, -1) ] a_5 = [ Among(u"na", -1, -1), Among(u"ne", -1, -1) ] a_6 = [ Among(u"da", -1, -1), Among(u"ta", -1, -1), Among(u"de", -1, -1), Among(u"te", -1, -1) ] a_7 = [ Among(u"nda", -1, -1), Among(u"nde", -1, -1) ] a_8 = [ Among(u"dan", -1, -1), Among(u"tan", -1, -1), Among(u"den", -1, -1), Among(u"ten", -1, -1) ] a_9 = [ Among(u"ndan", -1, -1), Among(u"nden", -1, -1) ] a_10 = [ Among(u"la", -1, -1), Among(u"le", -1, -1) ] a_11 = [ Among(u"ca", -1, -1), Among(u"ce", -1, -1) ] a_12 = [ Among(u"im", -1, -1), Among(u"um", -1, -1), Among(u"\u00FCm", -1, -1), Among(u"\u0131m", -1, -1) ] a_13 = [ Among(u"sin", -1, -1), Among(u"sun", -1, -1), Among(u"s\u00FCn", -1, -1), Among(u"s\u0131n", -1, -1) ] a_14 = [ Among(u"iz", -1, -1), Among(u"uz", -1, -1), Among(u"\u00FCz", -1, -1), Among(u"\u0131z", -1, -1) ] a_15 = [ Among(u"siniz", -1, -1), Among(u"sunuz", -1, -1), Among(u"s\u00FCn\u00FCz", -1, -1), Among(u"s\u0131n\u0131z", -1, -1) ] a_16 = [ Among(u"lar", -1, -1), Among(u"ler", -1, -1) ] a_17 = [ Among(u"niz", -1, -1), Among(u"nuz", -1, -1), Among(u"n\u00FCz", -1, -1), Among(u"n\u0131z", -1, -1) ] a_18 = [ Among(u"dir", -1, -1), Among(u"tir", -1, -1), Among(u"dur", -1, -1), Among(u"tur", -1, -1), Among(u"d\u00FCr", -1, -1), Among(u"t\u00FCr", -1, -1), Among(u"d\u0131r", -1, -1), Among(u"t\u0131r", -1, -1) ] a_19 = [ Among(u"cas\u0131na", -1, -1), Among(u"cesine", -1, -1) ] a_20 = [ Among(u"di", -1, -1), Among(u"ti", -1, -1), Among(u"dik", -1, -1), Among(u"tik", -1, -1), Among(u"duk", -1, -1), Among(u"tuk", -1, -1), Among(u"d\u00FCk", -1, -1), Among(u"t\u00FCk", -1, -1), Among(u"d\u0131k", -1, -1), Among(u"t\u0131k", -1, -1), Among(u"dim", -1, -1), Among(u"tim", -1, -1), Among(u"dum", -1, -1), Among(u"tum", -1, -1), Among(u"d\u00FCm", -1, -1), Among(u"t\u00FCm", -1, -1), Among(u"d\u0131m", -1, -1), Among(u"t\u0131m", -1, -1), Among(u"din", -1, -1), Among(u"tin", -1, -1), Among(u"dun", -1, -1), Among(u"tun", -1, -1), Among(u"d\u00FCn", -1, -1), Among(u"t\u00FCn", -1, -1), Among(u"d\u0131n", -1, -1), Among(u"t\u0131n", -1, -1), Among(u"du", -1, -1), Among(u"tu", -1, -1), Among(u"d\u00FC", -1, -1), Among(u"t\u00FC", -1, -1), Among(u"d\u0131", -1, -1), Among(u"t\u0131", -1, -1) ] a_21 = [ Among(u"sa", -1, -1), Among(u"se", -1, -1), Among(u"sak", -1, -1), Among(u"sek", -1, -1), Among(u"sam", -1, -1), Among(u"sem", -1, -1), Among(u"san", -1, -1), Among(u"sen", -1, -1) ] a_22 = [ Among(u"mi\u015F", -1, -1), Among(u"mu\u015F", -1, -1), Among(u"m\u00FC\u015F", -1, -1), Among(u"m\u0131\u015F", -1, -1) ] a_23 = [ Among(u"b", -1, 1), Among(u"c", -1, 2), Among(u"d", -1, 3), Among(u"\u011F", -1, 4) ] g_vowel = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1] g_U = [1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1] g_vowel1 = [1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] g_vowel2 = [17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130] g_vowel3 = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] g_vowel4 = [17] g_vowel5 = [65] g_vowel6 = [65] B_continue_stemming_noun_suffixes = False def __r_check_vowel_harmony(self): # (, line 109 # test, line 110 v_1 = self.limit - self.cursor # (, line 111 # (, line 112 # goto grouping vowel, line 112 if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305): return False # (, line 113 # or, line 114 try: v_2 = self.limit - self.cursor try: # (, line 114 # literal, line 114 if not self.eq_s_b(u"a"): raise lab1() # goto grouping vowel1, line 114 if not self.go_out_grouping_b(TurkishStemmer.g_vowel1, 97, 305): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_2 try: # (, line 115 # literal, line 115 if not self.eq_s_b(u"e"): raise lab2() # goto grouping vowel2, line 115 if not self.go_out_grouping_b(TurkishStemmer.g_vowel2, 101, 252): raise lab2() raise lab0() except lab2: pass self.cursor = self.limit - v_2 try: # (, line 116 # literal, line 116 if not self.eq_s_b(u"\u0131"): raise lab3() # goto grouping vowel3, line 116 if not self.go_out_grouping_b(TurkishStemmer.g_vowel3, 97, 305): raise lab3() raise lab0() except lab3: pass self.cursor = self.limit - v_2 try: # (, line 117 # literal, line 117 if not self.eq_s_b(u"i"): raise lab4() # goto grouping vowel4, line 117 if not self.go_out_grouping_b(TurkishStemmer.g_vowel4, 101, 105): raise lab4() raise lab0() except lab4: pass self.cursor = self.limit - v_2 try: # (, line 118 # literal, line 118 if not self.eq_s_b(u"o"): raise lab5() # goto grouping vowel5, line 118 if not self.go_out_grouping_b(TurkishStemmer.g_vowel5, 111, 117): raise lab5() raise lab0() except lab5: pass self.cursor = self.limit - v_2 try: # (, line 119 # literal, line 119 if not self.eq_s_b(u"\u00F6"): raise lab6() # goto grouping vowel6, line 119 if not self.go_out_grouping_b(TurkishStemmer.g_vowel6, 246, 252): raise lab6() raise lab0() except lab6: pass self.cursor = self.limit - v_2 try: # (, line 120 # literal, line 120 if not self.eq_s_b(u"u"): raise lab7() # goto grouping vowel5, line 120 if not self.go_out_grouping_b(TurkishStemmer.g_vowel5, 111, 117): raise lab7() raise lab0() except lab7: pass self.cursor = self.limit - v_2 # (, line 121 # literal, line 121 if not self.eq_s_b(u"\u00FC"): return False # goto grouping vowel6, line 121 if not self.go_out_grouping_b(TurkishStemmer.g_vowel6, 246, 252): return False except lab0: pass self.cursor = self.limit - v_1 return True def __r_mark_suffix_with_optional_n_consonant(self): # (, line 130 # or, line 132 try: v_1 = self.limit - self.cursor try: # (, line 131 # literal, line 131 if not self.eq_s_b(u"n"): raise lab1() # (, line 131 # test, line 131 v_2 = self.limit - self.cursor if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305): raise lab1() self.cursor = self.limit - v_2 raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 133 # (, line 133 # not, line 133 v_3 = self.limit - self.cursor try: # (, line 133 # test, line 133 v_4 = self.limit - self.cursor # literal, line 133 if not self.eq_s_b(u"n"): raise lab2() self.cursor = self.limit - v_4 return False except lab2: pass self.cursor = self.limit - v_3 # test, line 133 v_5 = self.limit - self.cursor # (, line 133 # next, line 133 if self.cursor <= self.limit_backward: return False self.cursor -= 1 if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305): return False self.cursor = self.limit - v_5 except lab0: pass return True def __r_mark_suffix_with_optional_s_consonant(self): # (, line 141 # or, line 143 try: v_1 = self.limit - self.cursor try: # (, line 142 # literal, line 142 if not self.eq_s_b(u"s"): raise lab1() # (, line 142 # test, line 142 v_2 = self.limit - self.cursor if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305): raise lab1() self.cursor = self.limit - v_2 raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 144 # (, line 144 # not, line 144 v_3 = self.limit - self.cursor try: # (, line 144 # test, line 144 v_4 = self.limit - self.cursor # literal, line 144 if not self.eq_s_b(u"s"): raise lab2() self.cursor = self.limit - v_4 return False except lab2: pass self.cursor = self.limit - v_3 # test, line 144 v_5 = self.limit - self.cursor # (, line 144 # next, line 144 if self.cursor <= self.limit_backward: return False self.cursor -= 1 if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305): return False self.cursor = self.limit - v_5 except lab0: pass return True def __r_mark_suffix_with_optional_y_consonant(self): # (, line 151 # or, line 153 try: v_1 = self.limit - self.cursor try: # (, line 152 # literal, line 152 if not self.eq_s_b(u"y"): raise lab1() # (, line 152 # test, line 152 v_2 = self.limit - self.cursor if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305): raise lab1() self.cursor = self.limit - v_2 raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 154 # (, line 154 # not, line 154 v_3 = self.limit - self.cursor try: # (, line 154 # test, line 154 v_4 = self.limit - self.cursor # literal, line 154 if not self.eq_s_b(u"y"): raise lab2() self.cursor = self.limit - v_4 return False except lab2: pass self.cursor = self.limit - v_3 # test, line 154 v_5 = self.limit - self.cursor # (, line 154 # next, line 154 if self.cursor <= self.limit_backward: return False self.cursor -= 1 if not self.in_grouping_b(TurkishStemmer.g_vowel, 97, 305): return False self.cursor = self.limit - v_5 except lab0: pass return True def __r_mark_suffix_with_optional_U_vowel(self): # (, line 157 # or, line 159 try: v_1 = self.limit - self.cursor try: # (, line 158 if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305): raise lab1() # (, line 158 # test, line 158 v_2 = self.limit - self.cursor if not self.out_grouping_b(TurkishStemmer.g_vowel, 97, 305): raise lab1() self.cursor = self.limit - v_2 raise lab0() except lab1: pass self.cursor = self.limit - v_1 # (, line 160 # (, line 160 # not, line 160 v_3 = self.limit - self.cursor try: # (, line 160 # test, line 160 v_4 = self.limit - self.cursor if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305): raise lab2() self.cursor = self.limit - v_4 return False except lab2: pass self.cursor = self.limit - v_3 # test, line 160 v_5 = self.limit - self.cursor # (, line 160 # next, line 160 if self.cursor <= self.limit_backward: return False self.cursor -= 1 if not self.out_grouping_b(TurkishStemmer.g_vowel, 97, 305): return False self.cursor = self.limit - v_5 except lab0: pass return True def __r_mark_possessives(self): # (, line 164 # among, line 165 if self.find_among_b(TurkishStemmer.a_0) == 0: return False # (, line 167 # call mark_suffix_with_optional_U_vowel, line 167 if not self.__r_mark_suffix_with_optional_U_vowel(): return False return True def __r_mark_sU(self): # (, line 170 # call check_vowel_harmony, line 171 if not self.__r_check_vowel_harmony(): return False if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305): return False # (, line 173 # call mark_suffix_with_optional_s_consonant, line 173 if not self.__r_mark_suffix_with_optional_s_consonant(): return False return True def __r_mark_lArI(self): # (, line 176 # among, line 177 if self.find_among_b(TurkishStemmer.a_1) == 0: return False return True def __r_mark_yU(self): # (, line 180 # call check_vowel_harmony, line 181 if not self.__r_check_vowel_harmony(): return False if not self.in_grouping_b(TurkishStemmer.g_U, 105, 305): return False # (, line 183 # call mark_suffix_with_optional_y_consonant, line 183 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_nU(self): # (, line 186 # call check_vowel_harmony, line 187 if not self.__r_check_vowel_harmony(): return False # among, line 188 if self.find_among_b(TurkishStemmer.a_2) == 0: return False return True def __r_mark_nUn(self): # (, line 191 # call check_vowel_harmony, line 192 if not self.__r_check_vowel_harmony(): return False # among, line 193 if self.find_among_b(TurkishStemmer.a_3) == 0: return False # (, line 194 # call mark_suffix_with_optional_n_consonant, line 194 if not self.__r_mark_suffix_with_optional_n_consonant(): return False return True def __r_mark_yA(self): # (, line 197 # call check_vowel_harmony, line 198 if not self.__r_check_vowel_harmony(): return False # among, line 199 if self.find_among_b(TurkishStemmer.a_4) == 0: return False # (, line 200 # call mark_suffix_with_optional_y_consonant, line 200 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_nA(self): # (, line 203 # call check_vowel_harmony, line 204 if not self.__r_check_vowel_harmony(): return False # among, line 205 if self.find_among_b(TurkishStemmer.a_5) == 0: return False return True def __r_mark_DA(self): # (, line 208 # call check_vowel_harmony, line 209 if not self.__r_check_vowel_harmony(): return False # among, line 210 if self.find_among_b(TurkishStemmer.a_6) == 0: return False return True def __r_mark_ndA(self): # (, line 213 # call check_vowel_harmony, line 214 if not self.__r_check_vowel_harmony(): return False # among, line 215 if self.find_among_b(TurkishStemmer.a_7) == 0: return False return True def __r_mark_DAn(self): # (, line 218 # call check_vowel_harmony, line 219 if not self.__r_check_vowel_harmony(): return False # among, line 220 if self.find_among_b(TurkishStemmer.a_8) == 0: return False return True def __r_mark_ndAn(self): # (, line 223 # call check_vowel_harmony, line 224 if not self.__r_check_vowel_harmony(): return False # among, line 225 if self.find_among_b(TurkishStemmer.a_9) == 0: return False return True def __r_mark_ylA(self): # (, line 228 # call check_vowel_harmony, line 229 if not self.__r_check_vowel_harmony(): return False # among, line 230 if self.find_among_b(TurkishStemmer.a_10) == 0: return False # (, line 231 # call mark_suffix_with_optional_y_consonant, line 231 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_ki(self): # (, line 234 # literal, line 235 if not self.eq_s_b(u"ki"): return False return True def __r_mark_ncA(self): # (, line 238 # call check_vowel_harmony, line 239 if not self.__r_check_vowel_harmony(): return False # among, line 240 if self.find_among_b(TurkishStemmer.a_11) == 0: return False # (, line 241 # call mark_suffix_with_optional_n_consonant, line 241 if not self.__r_mark_suffix_with_optional_n_consonant(): return False return True def __r_mark_yUm(self): # (, line 244 # call check_vowel_harmony, line 245 if not self.__r_check_vowel_harmony(): return False # among, line 246 if self.find_among_b(TurkishStemmer.a_12) == 0: return False # (, line 247 # call mark_suffix_with_optional_y_consonant, line 247 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_sUn(self): # (, line 250 # call check_vowel_harmony, line 251 if not self.__r_check_vowel_harmony(): return False # among, line 252 if self.find_among_b(TurkishStemmer.a_13) == 0: return False return True def __r_mark_yUz(self): # (, line 255 # call check_vowel_harmony, line 256 if not self.__r_check_vowel_harmony(): return False # among, line 257 if self.find_among_b(TurkishStemmer.a_14) == 0: return False # (, line 258 # call mark_suffix_with_optional_y_consonant, line 258 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_sUnUz(self): # (, line 261 # among, line 262 if self.find_among_b(TurkishStemmer.a_15) == 0: return False return True def __r_mark_lAr(self): # (, line 265 # call check_vowel_harmony, line 266 if not self.__r_check_vowel_harmony(): return False # among, line 267 if self.find_among_b(TurkishStemmer.a_16) == 0: return False return True def __r_mark_nUz(self): # (, line 270 # call check_vowel_harmony, line 271 if not self.__r_check_vowel_harmony(): return False # among, line 272 if self.find_among_b(TurkishStemmer.a_17) == 0: return False return True def __r_mark_DUr(self): # (, line 275 # call check_vowel_harmony, line 276 if not self.__r_check_vowel_harmony(): return False # among, line 277 if self.find_among_b(TurkishStemmer.a_18) == 0: return False return True def __r_mark_cAsInA(self): # (, line 280 # among, line 281 if self.find_among_b(TurkishStemmer.a_19) == 0: return False return True def __r_mark_yDU(self): # (, line 284 # call check_vowel_harmony, line 285 if not self.__r_check_vowel_harmony(): return False # among, line 286 if self.find_among_b(TurkishStemmer.a_20) == 0: return False # (, line 290 # call mark_suffix_with_optional_y_consonant, line 290 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_ysA(self): # (, line 294 # among, line 295 if self.find_among_b(TurkishStemmer.a_21) == 0: return False # (, line 296 # call mark_suffix_with_optional_y_consonant, line 296 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_ymUs_(self): # (, line 299 # call check_vowel_harmony, line 300 if not self.__r_check_vowel_harmony(): return False # among, line 301 if self.find_among_b(TurkishStemmer.a_22) == 0: return False # (, line 302 # call mark_suffix_with_optional_y_consonant, line 302 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_mark_yken(self): # (, line 305 # literal, line 306 if not self.eq_s_b(u"ken"): return False # (, line 306 # call mark_suffix_with_optional_y_consonant, line 306 if not self.__r_mark_suffix_with_optional_y_consonant(): return False return True def __r_stem_nominal_verb_suffixes(self): # (, line 309 # [, line 310 self.ket = self.cursor # set continue_stemming_noun_suffixes, line 311 self.B_continue_stemming_noun_suffixes = True # or, line 313 try: v_1 = self.limit - self.cursor try: # (, line 312 # or, line 312 try: v_2 = self.limit - self.cursor try: # call mark_ymUs_, line 312 if not self.__r_mark_ymUs_(): raise lab3() raise lab2() except lab3: pass self.cursor = self.limit - v_2 try: # call mark_yDU, line 312 if not self.__r_mark_yDU(): raise lab4() raise lab2() except lab4: pass self.cursor = self.limit - v_2 try: # call mark_ysA, line 312 if not self.__r_mark_ysA(): raise lab5() raise lab2() except lab5: pass self.cursor = self.limit - v_2 # call mark_yken, line 312 if not self.__r_mark_yken(): raise lab1() except lab2: pass raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 314 # call mark_cAsInA, line 314 if not self.__r_mark_cAsInA(): raise lab6() # (, line 314 # or, line 314 try: v_3 = self.limit - self.cursor try: # call mark_sUnUz, line 314 if not self.__r_mark_sUnUz(): raise lab8() raise lab7() except lab8: pass self.cursor = self.limit - v_3 try: # call mark_lAr, line 314 if not self.__r_mark_lAr(): raise lab9() raise lab7() except lab9: pass self.cursor = self.limit - v_3 try: # call mark_yUm, line 314 if not self.__r_mark_yUm(): raise lab10() raise lab7() except lab10: pass self.cursor = self.limit - v_3 try: # call mark_sUn, line 314 if not self.__r_mark_sUn(): raise lab11() raise lab7() except lab11: pass self.cursor = self.limit - v_3 try: # call mark_yUz, line 314 if not self.__r_mark_yUz(): raise lab12() raise lab7() except lab12: pass self.cursor = self.limit - v_3 except lab7: pass # call mark_ymUs_, line 314 if not self.__r_mark_ymUs_(): raise lab6() raise lab0() except lab6: pass self.cursor = self.limit - v_1 try: # (, line 316 # call mark_lAr, line 317 if not self.__r_mark_lAr(): raise lab13() # ], line 317 self.bra = self.cursor # delete, line 317 if not self.slice_del(): return False # try, line 317 v_4 = self.limit - self.cursor try: # (, line 317 # [, line 317 self.ket = self.cursor # (, line 317 # or, line 317 try: v_5 = self.limit - self.cursor try: # call mark_DUr, line 317 if not self.__r_mark_DUr(): raise lab16() raise lab15() except lab16: pass self.cursor = self.limit - v_5 try: # call mark_yDU, line 317 if not self.__r_mark_yDU(): raise lab17() raise lab15() except lab17: pass self.cursor = self.limit - v_5 try: # call mark_ysA, line 317 if not self.__r_mark_ysA(): raise lab18() raise lab15() except lab18: pass self.cursor = self.limit - v_5 # call mark_ymUs_, line 317 if not self.__r_mark_ymUs_(): self.cursor = self.limit - v_4 raise lab14() except lab15: pass except lab14: pass # unset continue_stemming_noun_suffixes, line 318 self.B_continue_stemming_noun_suffixes = False raise lab0() except lab13: pass self.cursor = self.limit - v_1 try: # (, line 321 # call mark_nUz, line 321 if not self.__r_mark_nUz(): raise lab19() # (, line 321 # or, line 321 try: v_6 = self.limit - self.cursor try: # call mark_yDU, line 321 if not self.__r_mark_yDU(): raise lab21() raise lab20() except lab21: pass self.cursor = self.limit - v_6 # call mark_ysA, line 321 if not self.__r_mark_ysA(): raise lab19() except lab20: pass raise lab0() except lab19: pass self.cursor = self.limit - v_1 try: # (, line 323 # (, line 323 # or, line 323 try: v_7 = self.limit - self.cursor try: # call mark_sUnUz, line 323 if not self.__r_mark_sUnUz(): raise lab24() raise lab23() except lab24: pass self.cursor = self.limit - v_7 try: # call mark_yUz, line 323 if not self.__r_mark_yUz(): raise lab25() raise lab23() except lab25: pass self.cursor = self.limit - v_7 try: # call mark_sUn, line 323 if not self.__r_mark_sUn(): raise lab26() raise lab23() except lab26: pass self.cursor = self.limit - v_7 # call mark_yUm, line 323 if not self.__r_mark_yUm(): raise lab22() except lab23: pass # ], line 323 self.bra = self.cursor # delete, line 323 if not self.slice_del(): return False # try, line 323 v_8 = self.limit - self.cursor try: # (, line 323 # [, line 323 self.ket = self.cursor # call mark_ymUs_, line 323 if not self.__r_mark_ymUs_(): self.cursor = self.limit - v_8 raise lab27() except lab27: pass raise lab0() except lab22: pass self.cursor = self.limit - v_1 # (, line 325 # call mark_DUr, line 325 if not self.__r_mark_DUr(): return False # ], line 325 self.bra = self.cursor # delete, line 325 if not self.slice_del(): return False # try, line 325 v_9 = self.limit - self.cursor try: # (, line 325 # [, line 325 self.ket = self.cursor # (, line 325 # or, line 325 try: v_10 = self.limit - self.cursor try: # call mark_sUnUz, line 325 if not self.__r_mark_sUnUz(): raise lab30() raise lab29() except lab30: pass self.cursor = self.limit - v_10 try: # call mark_lAr, line 325 if not self.__r_mark_lAr(): raise lab31() raise lab29() except lab31: pass self.cursor = self.limit - v_10 try: # call mark_yUm, line 325 if not self.__r_mark_yUm(): raise lab32() raise lab29() except lab32: pass self.cursor = self.limit - v_10 try: # call mark_sUn, line 325 if not self.__r_mark_sUn(): raise lab33() raise lab29() except lab33: pass self.cursor = self.limit - v_10 try: # call mark_yUz, line 325 if not self.__r_mark_yUz(): raise lab34() raise lab29() except lab34: pass self.cursor = self.limit - v_10 except lab29: pass # call mark_ymUs_, line 325 if not self.__r_mark_ymUs_(): self.cursor = self.limit - v_9 raise lab28() except lab28: pass except lab0: pass # ], line 326 self.bra = self.cursor # delete, line 326 if not self.slice_del(): return False return True def __r_stem_suffix_chain_before_ki(self): # (, line 330 # [, line 331 self.ket = self.cursor # call mark_ki, line 332 if not self.__r_mark_ki(): return False # (, line 333 # or, line 340 try: v_1 = self.limit - self.cursor try: # (, line 334 # call mark_DA, line 334 if not self.__r_mark_DA(): raise lab1() # ], line 334 self.bra = self.cursor # delete, line 334 if not self.slice_del(): return False # try, line 334 v_2 = self.limit - self.cursor try: # (, line 334 # [, line 334 self.ket = self.cursor # or, line 336 try: v_3 = self.limit - self.cursor try: # (, line 335 # call mark_lAr, line 335 if not self.__r_mark_lAr(): raise lab4() # ], line 335 self.bra = self.cursor # delete, line 335 if not self.slice_del(): return False # try, line 335 v_4 = self.limit - self.cursor try: # (, line 335 # call stem_suffix_chain_before_ki, line 335 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_4 raise lab5() except lab5: pass raise lab3() except lab4: pass self.cursor = self.limit - v_3 # (, line 337 # call mark_possessives, line 337 if not self.__r_mark_possessives(): self.cursor = self.limit - v_2 raise lab2() # ], line 337 self.bra = self.cursor # delete, line 337 if not self.slice_del(): return False # try, line 337 v_5 = self.limit - self.cursor try: # (, line 337 # [, line 337 self.ket = self.cursor # call mark_lAr, line 337 if not self.__r_mark_lAr(): self.cursor = self.limit - v_5 raise lab6() # ], line 337 self.bra = self.cursor # delete, line 337 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 337 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_5 raise lab6() except lab6: pass except lab3: pass except lab2: pass raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 341 # call mark_nUn, line 341 if not self.__r_mark_nUn(): raise lab7() # ], line 341 self.bra = self.cursor # delete, line 341 if not self.slice_del(): return False # try, line 341 v_6 = self.limit - self.cursor try: # (, line 341 # [, line 341 self.ket = self.cursor # or, line 343 try: v_7 = self.limit - self.cursor try: # (, line 342 # call mark_lArI, line 342 if not self.__r_mark_lArI(): raise lab10() # ], line 342 self.bra = self.cursor # delete, line 342 if not self.slice_del(): return False raise lab9() except lab10: pass self.cursor = self.limit - v_7 try: # (, line 344 # [, line 344 self.ket = self.cursor # or, line 344 try: v_8 = self.limit - self.cursor try: # call mark_possessives, line 344 if not self.__r_mark_possessives(): raise lab13() raise lab12() except lab13: pass self.cursor = self.limit - v_8 # call mark_sU, line 344 if not self.__r_mark_sU(): raise lab11() except lab12: pass # ], line 344 self.bra = self.cursor # delete, line 344 if not self.slice_del(): return False # try, line 344 v_9 = self.limit - self.cursor try: # (, line 344 # [, line 344 self.ket = self.cursor # call mark_lAr, line 344 if not self.__r_mark_lAr(): self.cursor = self.limit - v_9 raise lab14() # ], line 344 self.bra = self.cursor # delete, line 344 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 344 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_9 raise lab14() except lab14: pass raise lab9() except lab11: pass self.cursor = self.limit - v_7 # (, line 346 # call stem_suffix_chain_before_ki, line 346 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_6 raise lab8() except lab9: pass except lab8: pass raise lab0() except lab7: pass self.cursor = self.limit - v_1 # (, line 349 # call mark_ndA, line 349 if not self.__r_mark_ndA(): return False # (, line 349 # or, line 351 try: v_10 = self.limit - self.cursor try: # (, line 350 # call mark_lArI, line 350 if not self.__r_mark_lArI(): raise lab16() # ], line 350 self.bra = self.cursor # delete, line 350 if not self.slice_del(): return False raise lab15() except lab16: pass self.cursor = self.limit - v_10 try: # (, line 352 # (, line 352 # call mark_sU, line 352 if not self.__r_mark_sU(): raise lab17() # ], line 352 self.bra = self.cursor # delete, line 352 if not self.slice_del(): return False # try, line 352 v_11 = self.limit - self.cursor try: # (, line 352 # [, line 352 self.ket = self.cursor # call mark_lAr, line 352 if not self.__r_mark_lAr(): self.cursor = self.limit - v_11 raise lab18() # ], line 352 self.bra = self.cursor # delete, line 352 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 352 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_11 raise lab18() except lab18: pass raise lab15() except lab17: pass self.cursor = self.limit - v_10 # (, line 354 # call stem_suffix_chain_before_ki, line 354 if not self.__r_stem_suffix_chain_before_ki(): return False except lab15: pass except lab0: pass return True def __r_stem_noun_suffixes(self): # (, line 359 # or, line 361 try: v_1 = self.limit - self.cursor try: # (, line 360 # [, line 360 self.ket = self.cursor # call mark_lAr, line 360 if not self.__r_mark_lAr(): raise lab1() # ], line 360 self.bra = self.cursor # delete, line 360 if not self.slice_del(): return False # try, line 360 v_2 = self.limit - self.cursor try: # (, line 360 # call stem_suffix_chain_before_ki, line 360 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_2 raise lab2() except lab2: pass raise lab0() except lab1: pass self.cursor = self.limit - v_1 try: # (, line 362 # [, line 362 self.ket = self.cursor # call mark_ncA, line 362 if not self.__r_mark_ncA(): raise lab3() # ], line 362 self.bra = self.cursor # delete, line 362 if not self.slice_del(): return False # try, line 363 v_3 = self.limit - self.cursor try: # (, line 363 # or, line 365 try: v_4 = self.limit - self.cursor try: # (, line 364 # [, line 364 self.ket = self.cursor # call mark_lArI, line 364 if not self.__r_mark_lArI(): raise lab6() # ], line 364 self.bra = self.cursor # delete, line 364 if not self.slice_del(): return False raise lab5() except lab6: pass self.cursor = self.limit - v_4 try: # (, line 366 # [, line 366 self.ket = self.cursor # or, line 366 try: v_5 = self.limit - self.cursor try: # call mark_possessives, line 366 if not self.__r_mark_possessives(): raise lab9() raise lab8() except lab9: pass self.cursor = self.limit - v_5 # call mark_sU, line 366 if not self.__r_mark_sU(): raise lab7() except lab8: pass # ], line 366 self.bra = self.cursor # delete, line 366 if not self.slice_del(): return False # try, line 366 v_6 = self.limit - self.cursor try: # (, line 366 # [, line 366 self.ket = self.cursor # call mark_lAr, line 366 if not self.__r_mark_lAr(): self.cursor = self.limit - v_6 raise lab10() # ], line 366 self.bra = self.cursor # delete, line 366 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 366 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_6 raise lab10() except lab10: pass raise lab5() except lab7: pass self.cursor = self.limit - v_4 # (, line 368 # [, line 368 self.ket = self.cursor # call mark_lAr, line 368 if not self.__r_mark_lAr(): self.cursor = self.limit - v_3 raise lab4() # ], line 368 self.bra = self.cursor # delete, line 368 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 368 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_3 raise lab4() except lab5: pass except lab4: pass raise lab0() except lab3: pass self.cursor = self.limit - v_1 try: # (, line 372 # [, line 372 self.ket = self.cursor # (, line 372 # or, line 372 try: v_7 = self.limit - self.cursor try: # call mark_ndA, line 372 if not self.__r_mark_ndA(): raise lab13() raise lab12() except lab13: pass self.cursor = self.limit - v_7 # call mark_nA, line 372 if not self.__r_mark_nA(): raise lab11() except lab12: pass # (, line 373 # or, line 375 try: v_8 = self.limit - self.cursor try: # (, line 374 # call mark_lArI, line 374 if not self.__r_mark_lArI(): raise lab15() # ], line 374 self.bra = self.cursor # delete, line 374 if not self.slice_del(): return False raise lab14() except lab15: pass self.cursor = self.limit - v_8 try: # (, line 376 # call mark_sU, line 376 if not self.__r_mark_sU(): raise lab16() # ], line 376 self.bra = self.cursor # delete, line 376 if not self.slice_del(): return False # try, line 376 v_9 = self.limit - self.cursor try: # (, line 376 # [, line 376 self.ket = self.cursor # call mark_lAr, line 376 if not self.__r_mark_lAr(): self.cursor = self.limit - v_9 raise lab17() # ], line 376 self.bra = self.cursor # delete, line 376 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 376 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_9 raise lab17() except lab17: pass raise lab14() except lab16: pass self.cursor = self.limit - v_8 # (, line 378 # call stem_suffix_chain_before_ki, line 378 if not self.__r_stem_suffix_chain_before_ki(): raise lab11() except lab14: pass raise lab0() except lab11: pass self.cursor = self.limit - v_1 try: # (, line 382 # [, line 382 self.ket = self.cursor # (, line 382 # or, line 382 try: v_10 = self.limit - self.cursor try: # call mark_ndAn, line 382 if not self.__r_mark_ndAn(): raise lab20() raise lab19() except lab20: pass self.cursor = self.limit - v_10 # call mark_nU, line 382 if not self.__r_mark_nU(): raise lab18() except lab19: pass # (, line 382 # or, line 382 try: v_11 = self.limit - self.cursor try: # (, line 382 # call mark_sU, line 382 if not self.__r_mark_sU(): raise lab22() # ], line 382 self.bra = self.cursor # delete, line 382 if not self.slice_del(): return False # try, line 382 v_12 = self.limit - self.cursor try: # (, line 382 # [, line 382 self.ket = self.cursor # call mark_lAr, line 382 if not self.__r_mark_lAr(): self.cursor = self.limit - v_12 raise lab23() # ], line 382 self.bra = self.cursor # delete, line 382 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 382 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_12 raise lab23() except lab23: pass raise lab21() except lab22: pass self.cursor = self.limit - v_11 # (, line 382 # call mark_lArI, line 382 if not self.__r_mark_lArI(): raise lab18() except lab21: pass raise lab0() except lab18: pass self.cursor = self.limit - v_1 try: # (, line 384 # [, line 384 self.ket = self.cursor # call mark_DAn, line 384 if not self.__r_mark_DAn(): raise lab24() # ], line 384 self.bra = self.cursor # delete, line 384 if not self.slice_del(): return False # try, line 384 v_13 = self.limit - self.cursor try: # (, line 384 # [, line 384 self.ket = self.cursor # (, line 385 # or, line 387 try: v_14 = self.limit - self.cursor try: # (, line 386 # call mark_possessives, line 386 if not self.__r_mark_possessives(): raise lab27() # ], line 386 self.bra = self.cursor # delete, line 386 if not self.slice_del(): return False # try, line 386 v_15 = self.limit - self.cursor try: # (, line 386 # [, line 386 self.ket = self.cursor # call mark_lAr, line 386 if not self.__r_mark_lAr(): self.cursor = self.limit - v_15 raise lab28() # ], line 386 self.bra = self.cursor # delete, line 386 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 386 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_15 raise lab28() except lab28: pass raise lab26() except lab27: pass self.cursor = self.limit - v_14 try: # (, line 388 # call mark_lAr, line 388 if not self.__r_mark_lAr(): raise lab29() # ], line 388 self.bra = self.cursor # delete, line 388 if not self.slice_del(): return False # try, line 388 v_16 = self.limit - self.cursor try: # (, line 388 # call stem_suffix_chain_before_ki, line 388 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_16 raise lab30() except lab30: pass raise lab26() except lab29: pass self.cursor = self.limit - v_14 # (, line 390 # call stem_suffix_chain_before_ki, line 390 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_13 raise lab25() except lab26: pass except lab25: pass raise lab0() except lab24: pass self.cursor = self.limit - v_1 try: # (, line 394 # [, line 394 self.ket = self.cursor # or, line 394 try: v_17 = self.limit - self.cursor try: # call mark_nUn, line 394 if not self.__r_mark_nUn(): raise lab33() raise lab32() except lab33: pass self.cursor = self.limit - v_17 # call mark_ylA, line 394 if not self.__r_mark_ylA(): raise lab31() except lab32: pass # ], line 394 self.bra = self.cursor # delete, line 394 if not self.slice_del(): return False # try, line 395 v_18 = self.limit - self.cursor try: # (, line 395 # or, line 397 try: v_19 = self.limit - self.cursor try: # (, line 396 # [, line 396 self.ket = self.cursor # call mark_lAr, line 396 if not self.__r_mark_lAr(): raise lab36() # ], line 396 self.bra = self.cursor # delete, line 396 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 396 if not self.__r_stem_suffix_chain_before_ki(): raise lab36() raise lab35() except lab36: pass self.cursor = self.limit - v_19 try: # (, line 398 # [, line 398 self.ket = self.cursor # or, line 398 try: v_20 = self.limit - self.cursor try: # call mark_possessives, line 398 if not self.__r_mark_possessives(): raise lab39() raise lab38() except lab39: pass self.cursor = self.limit - v_20 # call mark_sU, line 398 if not self.__r_mark_sU(): raise lab37() except lab38: pass # ], line 398 self.bra = self.cursor # delete, line 398 if not self.slice_del(): return False # try, line 398 v_21 = self.limit - self.cursor try: # (, line 398 # [, line 398 self.ket = self.cursor # call mark_lAr, line 398 if not self.__r_mark_lAr(): self.cursor = self.limit - v_21 raise lab40() # ], line 398 self.bra = self.cursor # delete, line 398 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 398 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_21 raise lab40() except lab40: pass raise lab35() except lab37: pass self.cursor = self.limit - v_19 # call stem_suffix_chain_before_ki, line 400 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_18 raise lab34() except lab35: pass except lab34: pass raise lab0() except lab31: pass self.cursor = self.limit - v_1 try: # (, line 404 # [, line 404 self.ket = self.cursor # call mark_lArI, line 404 if not self.__r_mark_lArI(): raise lab41() # ], line 404 self.bra = self.cursor # delete, line 404 if not self.slice_del(): return False raise lab0() except lab41: pass self.cursor = self.limit - v_1 try: # (, line 406 # call stem_suffix_chain_before_ki, line 406 if not self.__r_stem_suffix_chain_before_ki(): raise lab42() raise lab0() except lab42: pass self.cursor = self.limit - v_1 try: # (, line 408 # [, line 408 self.ket = self.cursor # or, line 408 try: v_22 = self.limit - self.cursor try: # call mark_DA, line 408 if not self.__r_mark_DA(): raise lab45() raise lab44() except lab45: pass self.cursor = self.limit - v_22 try: # call mark_yU, line 408 if not self.__r_mark_yU(): raise lab46() raise lab44() except lab46: pass self.cursor = self.limit - v_22 # call mark_yA, line 408 if not self.__r_mark_yA(): raise lab43() except lab44: pass # ], line 408 self.bra = self.cursor # delete, line 408 if not self.slice_del(): return False # try, line 408 v_23 = self.limit - self.cursor try: # (, line 408 # [, line 408 self.ket = self.cursor # (, line 408 # or, line 408 try: v_24 = self.limit - self.cursor try: # (, line 408 # call mark_possessives, line 408 if not self.__r_mark_possessives(): raise lab49() # ], line 408 self.bra = self.cursor # delete, line 408 if not self.slice_del(): return False # try, line 408 v_25 = self.limit - self.cursor try: # (, line 408 # [, line 408 self.ket = self.cursor # call mark_lAr, line 408 if not self.__r_mark_lAr(): self.cursor = self.limit - v_25 raise lab50() except lab50: pass raise lab48() except lab49: pass self.cursor = self.limit - v_24 # call mark_lAr, line 408 if not self.__r_mark_lAr(): self.cursor = self.limit - v_23 raise lab47() except lab48: pass # ], line 408 self.bra = self.cursor # delete, line 408 if not self.slice_del(): return False # [, line 408 self.ket = self.cursor # call stem_suffix_chain_before_ki, line 408 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_23 raise lab47() except lab47: pass raise lab0() except lab43: pass self.cursor = self.limit - v_1 # (, line 410 # [, line 410 self.ket = self.cursor # or, line 410 try: v_26 = self.limit - self.cursor try: # call mark_possessives, line 410 if not self.__r_mark_possessives(): raise lab52() raise lab51() except lab52: pass self.cursor = self.limit - v_26 # call mark_sU, line 410 if not self.__r_mark_sU(): return False except lab51: pass # ], line 410 self.bra = self.cursor # delete, line 410 if not self.slice_del(): return False # try, line 410 v_27 = self.limit - self.cursor try: # (, line 410 # [, line 410 self.ket = self.cursor # call mark_lAr, line 410 if not self.__r_mark_lAr(): self.cursor = self.limit - v_27 raise lab53() # ], line 410 self.bra = self.cursor # delete, line 410 if not self.slice_del(): return False # call stem_suffix_chain_before_ki, line 410 if not self.__r_stem_suffix_chain_before_ki(): self.cursor = self.limit - v_27 raise lab53() except lab53: pass except lab0: pass return True def __r_post_process_last_consonants(self): # (, line 413 # [, line 414 self.ket = self.cursor # substring, line 414 among_var = self.find_among_b(TurkishStemmer.a_23) if among_var == 0: return False # ], line 414 self.bra = self.cursor if among_var == 1: # (, line 415 # <-, line 415 if not self.slice_from(u"p"): return False elif among_var == 2: # (, line 416 # <-, line 416 if not self.slice_from(u"\u00E7"): return False elif among_var == 3: # (, line 417 # <-, line 417 if not self.slice_from(u"t"): return False elif among_var == 4: # (, line 418 # <-, line 418 if not self.slice_from(u"k"): return False return True def __r_append_U_to_stems_ending_with_d_or_g(self): # (, line 428 # test, line 429 v_1 = self.limit - self.cursor # (, line 429 # or, line 429 try: v_2 = self.limit - self.cursor try: # literal, line 429 if not self.eq_s_b(u"d"): raise lab1() raise lab0() except lab1: pass self.cursor = self.limit - v_2 # literal, line 429 if not self.eq_s_b(u"g"): return False except lab0: pass self.cursor = self.limit - v_1 # or, line 431 try: v_3 = self.limit - self.cursor try: # (, line 430 # test, line 430 v_4 = self.limit - self.cursor # (, line 430 # (, line 430 # goto grouping vowel, line 430 if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305): raise lab3() # or, line 430 try: v_5 = self.limit - self.cursor try: # literal, line 430 if not self.eq_s_b(u"a"): raise lab5() raise lab4() except lab5: pass self.cursor = self.limit - v_5 # literal, line 430 if not self.eq_s_b(u"\u0131"): raise lab3() except lab4: pass self.cursor = self.limit - v_4 # <+, line 430 c = self.cursor self.insert(self.cursor, self.cursor, u"\u0131") self.cursor = c raise lab2() except lab3: pass self.cursor = self.limit - v_3 try: # (, line 432 # test, line 432 v_6 = self.limit - self.cursor # (, line 432 # (, line 432 # goto grouping vowel, line 432 if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305): raise lab6() # or, line 432 try: v_7 = self.limit - self.cursor try: # literal, line 432 if not self.eq_s_b(u"e"): raise lab8() raise lab7() except lab8: pass self.cursor = self.limit - v_7 # literal, line 432 if not self.eq_s_b(u"i"): raise lab6() except lab7: pass self.cursor = self.limit - v_6 # <+, line 432 c = self.cursor self.insert(self.cursor, self.cursor, u"i") self.cursor = c raise lab2() except lab6: pass self.cursor = self.limit - v_3 try: # (, line 434 # test, line 434 v_8 = self.limit - self.cursor # (, line 434 # (, line 434 # goto grouping vowel, line 434 if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305): raise lab9() # or, line 434 try: v_9 = self.limit - self.cursor try: # literal, line 434 if not self.eq_s_b(u"o"): raise lab11() raise lab10() except lab11: pass self.cursor = self.limit - v_9 # literal, line 434 if not self.eq_s_b(u"u"): raise lab9() except lab10: pass self.cursor = self.limit - v_8 # <+, line 434 c = self.cursor self.insert(self.cursor, self.cursor, u"u") self.cursor = c raise lab2() except lab9: pass self.cursor = self.limit - v_3 # (, line 436 # test, line 436 v_10 = self.limit - self.cursor # (, line 436 # (, line 436 # goto grouping vowel, line 436 if not self.go_out_grouping_b(TurkishStemmer.g_vowel, 97, 305): return False # or, line 436 try: v_11 = self.limit - self.cursor try: # literal, line 436 if not self.eq_s_b(u"\u00F6"): raise lab13() raise lab12() except lab13: pass self.cursor = self.limit - v_11 # literal, line 436 if not self.eq_s_b(u"\u00FC"): return False except lab12: pass self.cursor = self.limit - v_10 # <+, line 436 c = self.cursor self.insert(self.cursor, self.cursor, u"\u00FC") self.cursor = c except lab2: pass return True def __r_is_reserved_word(self): # (, line 439 # literal, line 440 if not self.eq_s_b(u"ad"): return False # try, line 440 v_1 = self.limit - self.cursor try: # literal, line 440 if not self.eq_s_b(u"soy"): self.cursor = self.limit - v_1 raise lab0() except lab0: pass # atlimit, line 440 if self.cursor > self.limit_backward: return False return True def __r_more_than_one_syllable_word(self): # (, line 446 # test, line 447 v_1 = self.cursor # (, line 447 # atleast, line 447 v_2 = 2 while True: v_3 = self.cursor try: # (, line 447 # gopast grouping vowel, line 447 if not self.go_out_grouping(TurkishStemmer.g_vowel, 97, 305): raise lab0() self.cursor += 1 v_2 -= 1 continue except lab0: pass self.cursor = v_3 break if v_2 > 0: return False self.cursor = v_1 return True def __r_postlude(self): # (, line 450 # backwards, line 451 self.limit_backward = self.cursor self.cursor = self.limit # (, line 451 # not, line 452 v_1 = self.limit - self.cursor try: # (, line 452 # call is_reserved_word, line 452 if not self.__r_is_reserved_word(): raise lab0() return False except lab0: pass self.cursor = self.limit - v_1 # do, line 453 v_2 = self.limit - self.cursor # call append_U_to_stems_ending_with_d_or_g, line 453 self.__r_append_U_to_stems_ending_with_d_or_g() self.cursor = self.limit - v_2 # do, line 454 v_3 = self.limit - self.cursor # call post_process_last_consonants, line 454 self.__r_post_process_last_consonants() self.cursor = self.limit - v_3 self.cursor = self.limit_backward return True def _stem(self): # (, line 459 # (, line 460 # call more_than_one_syllable_word, line 460 if not self.__r_more_than_one_syllable_word(): return False # (, line 461 # backwards, line 462 self.limit_backward = self.cursor self.cursor = self.limit # (, line 462 # do, line 463 v_1 = self.limit - self.cursor # call stem_nominal_verb_suffixes, line 463 self.__r_stem_nominal_verb_suffixes() self.cursor = self.limit - v_1 # Boolean test continue_stemming_noun_suffixes, line 464 if not self.B_continue_stemming_noun_suffixes: return False # do, line 465 v_2 = self.limit - self.cursor # call stem_noun_suffixes, line 465 self.__r_stem_noun_suffixes() self.cursor = self.limit - v_2 self.cursor = self.limit_backward # call postlude, line 468 if not self.__r_postlude(): return False return True class lab0(BaseException): pass class lab1(BaseException): pass class lab2(BaseException): pass class lab3(BaseException): pass class lab4(BaseException): pass class lab5(BaseException): pass class lab6(BaseException): pass class lab7(BaseException): pass class lab8(BaseException): pass class lab9(BaseException): pass class lab10(BaseException): pass class lab11(BaseException): pass class lab12(BaseException): pass class lab13(BaseException): pass class lab14(BaseException): pass class lab15(BaseException): pass class lab16(BaseException): pass class lab17(BaseException): pass class lab18(BaseException): pass class lab19(BaseException): pass class lab20(BaseException): pass class lab21(BaseException): pass class lab22(BaseException): pass class lab23(BaseException): pass class lab24(BaseException): pass class lab25(BaseException): pass class lab26(BaseException): pass class lab27(BaseException): pass class lab28(BaseException): pass class lab29(BaseException): pass class lab30(BaseException): pass class lab31(BaseException): pass class lab32(BaseException): pass class lab33(BaseException): pass class lab34(BaseException): pass class lab35(BaseException): pass class lab36(BaseException): pass class lab37(BaseException): pass class lab38(BaseException): pass class lab39(BaseException): pass class lab40(BaseException): pass class lab41(BaseException): pass class lab42(BaseException): pass class lab43(BaseException): pass class lab44(BaseException): pass class lab45(BaseException): pass class lab46(BaseException): pass class lab47(BaseException): pass class lab48(BaseException): pass class lab49(BaseException): pass class lab50(BaseException): pass class lab51(BaseException): pass class lab52(BaseException): pass class lab53(BaseException): pass