snowballstemmer-2.0.0/ 0000755 0001750 0001750 00000000000 13545325431 015576 5 ustar dmitry dmitry 0000000 0000000 snowballstemmer-2.0.0/CHANGES.rst 0000644 0001750 0001750 00000001436 13545325317 017407 0 ustar dmitry dmitry 0000000 0000000 snowballstemmer 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/COPYING 0000644 0001750 0001750 00000003024 13320340226 016616 0 ustar dmitry dmitry 0000000 0000000 Copyright (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.in 0000644 0001750 0001750 00000000161 13521101740 017317 0 ustar dmitry dmitry 0000000 0000000 include *.rst
include modules.txt
include setup.*
recursive-include src *.py
include MANIFEST.in
include COPYING
snowballstemmer-2.0.0/PKG-INFO 0000644 0001750 0001750 00000005465 13545325431 016705 0 ustar dmitry dmitry 0000000 0000000 Metadata-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.rst 0000644 0001750 0001750 00000010426 13545325430 017267 0 ustar dmitry dmitry 0000000 0000000 Snowball 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.txt 0000644 0001750 0001750 00000006045 13545325430 020013 0 ustar dmitry dmitry 0000000 0000000 # 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.cfg 0000644 0001750 0001750 00000000103 13545325431 017411 0 ustar dmitry dmitry 0000000 0000000 [bdist_wheel]
universal = 1
[egg_info]
tag_build =
tag_date = 0
snowballstemmer-2.0.0/setup.py 0000644 0001750 0001750 00000005736 13545142362 017323 0 ustar dmitry dmitry 0000000 0000000 #!/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/ 0000755 0001750 0001750 00000000000 13545325431 022506 5 ustar dmitry dmitry 0000000 0000000 snowballstemmer-2.0.0/snowballstemmer.egg-info/PKG-INFO 0000644 0001750 0001750 00000005465 13545325431 023615 0 ustar dmitry dmitry 0000000 0000000 Metadata-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.txt 0000644 0001750 0001750 00000002546 13545325431 024401 0 ustar dmitry dmitry 0000000 0000000 CHANGES.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.py snowballstemmer-2.0.0/snowballstemmer.egg-info/dependency_links.txt 0000644 0001750 0001750 00000000001 13545325431 026554 0 ustar dmitry dmitry 0000000 0000000
snowballstemmer-2.0.0/snowballstemmer.egg-info/top_level.txt 0000644 0001750 0001750 00000000020 13545325431 025230 0 ustar dmitry dmitry 0000000 0000000 snowballstemmer
snowballstemmer-2.0.0/src/ 0000755 0001750 0001750 00000000000 13545325431 016365 5 ustar dmitry dmitry 0000000 0000000 snowballstemmer-2.0.0/src/sample/ 0000755 0001750 0001750 00000000000 13545325431 017646 5 ustar dmitry dmitry 0000000 0000000 snowballstemmer-2.0.0/src/sample/stemwords.py 0000644 0001750 0001750 00000006555 13511307175 022260 0 ustar dmitry dmitry 0000000 0000000 import 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.py 0000644 0001750 0001750 00000001201 13320340226 021660 0 ustar dmitry dmitry 0000000 0000000 import 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/ 0000755 0001750 0001750 00000000000 13545325431 021603 5 ustar dmitry dmitry 0000000 0000000 snowballstemmer-2.0.0/src/snowballstemmer/__init__.py 0000644 0001750 0001750 00000004617 13545325430 023723 0 ustar dmitry dmitry 0000000 0000000 __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.py 0000644 0001750 0001750 00000000624 13320340226 023246 0 ustar dmitry dmitry 0000000 0000000
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.py 0000644 0001750 0001750 00000153602 13545325430 025140 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000022312 13542377226 024472 0 ustar dmitry dmitry 0000000 0000000 class 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.py 0000644 0001750 0001750 00000055553 13545325430 025205 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000065211 13545325430 025320 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000020005 13545325430 025153 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000046254 13545325430 025032 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000072161 13545325430 025350 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000051113 13545325430 025347 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000124745 13545325430 025172 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000042206 13545325430 025165 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000324515 13545325430 025017 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000017744 13545325430 025020 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000044243 13545325430 025673 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000027134 13545325430 026046 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000024560 13545325430 025035 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000070472 13545325430 025343 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000040644 13545325430 026054 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000026311 13545325430 025163 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000015332 13545325430 025705 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000047001 13545325430 025225 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000063745 13545325430 026131 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000060653 13545325430 025526 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000044760 13545325430 025407 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000067076 13545325430 025375 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000015056 13545325430 025365 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000240615 13545325430 025026 0 ustar dmitry dmitry 0000000 0000000 # 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.py 0000644 0001750 0001750 00000245055 13545325430 025414 0 ustar dmitry dmitry 0000000 0000000 # 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