コード例 #1
0
ファイル: main.py プロジェクト: sirex/gramtool
def main():
    data_dir = pres.resource_filename('gramtool', 'data')

    parser = argparse.ArgumentParser()
    parser.add_argument('word',
                        type=str,
                        help="A lexeme from morphology database.")
    parser.add_argument('-d',
                        '--data-dir',
                        type=str,
                        default=data_dir,
                        help="Data directory.")
    parser.add_argument('-l',
                        '--lang',
                        type=str,
                        default='lt',
                        help="Two letter language code [default: lt].")
    parser.add_argument('-f',
                        '--forms',
                        action='store_true',
                        default=False,
                        help="Print all <word> forms.")
    parser.add_argument('--debug',
                        action='store_true',
                        default=False,
                        help="Print debug information.")

    parser.add_argument('--case',
                        type=str,
                        default=None,
                        help="Change case of given <word>.")

    args = parser.parse_args()

    if args.debug:
        logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s",
                            level=logging.DEBUG)
    else:
        logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s",
                            level=logging.INFO)

    try:
        gt = gramtool.GramTool(pathlib.Path(args.data_dir), args.lang)
    except UserSideError as e:
        print(e)
        return 1

    change_form_kwargs = {
        'case': args.case,
    }
    change_form_kwargs = {k: v for k, v in change_form_kwargs.items() if v}

    if change_form_kwargs:
        print(gramtool.change_form(args.word, **change_form_kwargs))
    else:
        print_forms(gt.grammar, args.word)
        if args.forms:
            print_all_forms(gt.grammar, args.word)
コード例 #2
0
ファイル: test_data.py プロジェクト: alexeymorgunov/gramtool
 def test_change_form(self):
     self.assertEqual(gramtool.change_form('Vilnius', case='genitive'), 'Vilniaus')
     self.assertEqual(gramtool.change_form('žmogus', case='locative'), 'žmoguje')
     self.assertEqual(gramtool.change_form('medis', case='accusative', number='plural'), 'medžius')
     self.assertEqual(gramtool.change_form('kairėje', case='nominative'), 'kairė')
     self.assertEqual(gramtool.change_form('šuo', case='accusative'), 'šunį')
     self.assertEqual(gramtool.change_form('pelėse', case='accusative'), 'peles')
     self.assertEqual(gramtool.change_form('krūmai', case='locative'), 'krūmuose')
コード例 #3
0
ファイル: main.py プロジェクト: sirex/gramtool
def main():
    data_dir = pres.resource_filename('gramtool', 'data')

    parser = argparse.ArgumentParser()
    parser.add_argument('word', type=str, help="A lexeme from morphology database.")
    parser.add_argument('-d', '--data-dir', type=str, default=data_dir, help="Data directory.")
    parser.add_argument('-l', '--lang', type=str, default='lt', help="Two letter language code [default: lt].")
    parser.add_argument('-f', '--forms', action='store_true', default=False, help="Print all <word> forms.")
    parser.add_argument('--debug', action='store_true', default=False, help="Print debug information.")

    parser.add_argument('--case', type=str, default=None, help="Change case of given <word>.")

    args = parser.parse_args()

    if args.debug:
        logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=logging.DEBUG)
    else:
        logging.basicConfig(format="%(asctime)s %(levelname)s: %(message)s", level=logging.INFO)

    try:
        gt = gramtool.GramTool(pathlib.Path(args.data_dir), args.lang)
    except UserSideError as e:
        print(e)
        return 1

    change_form_kwargs = {
        'case': args.case,
    }
    change_form_kwargs = {k: v for k, v in change_form_kwargs.items() if v}

    if change_form_kwargs:
        print(gramtool.change_form(args.word, **change_form_kwargs))
    else:
        print_forms(gt.grammar, args.word)
        if args.forms:
            print_all_forms(gt.grammar, args.word)
コード例 #4
0
ファイル: indexfinder.py プロジェクト: sirex/databot-bots
import collections
import argparse
import itertools
import gramtool

from databot.commands import CommandsManager, Command
from botlib.compositions import compositions, strjoin

pattern_re = re.compile(r'({[^}]+})', re.UNICODE)
norm_re = re.compile(r'\W+', re.UNICODE)


FLAGS = {
    'title': str.title,
    'lemma': lambda v: (gramtool.get_lemma(v) or v),
    'genitive': lambda v: (gramtool.change_form(v, case='genitive') or v),
}


def norm(value):
    return norm_re.sub(' ', value).strip().lower()


class IndexFinder(object):

    def __init__(self, index, debug_info=None):
        self.index = index
        self.index = self.create_index(index)
        self.aliases, self.patterns = self.create_aliases(index, debug_info)

    def create_index(self, index):
コード例 #5
0
ファイル: test_data.py プロジェクト: sirex/gramtool
def test_change_form():
    gramtool.change_form('Vilnius', case='genitive') == 'Vilniaus'
    gramtool.change_form('žmogus', case='locative') == 'žmoguje'
    gramtool.change_form('medis', case='accusative', number='plural') == 'medžius'
    gramtool.change_form('kairėje', case='nominative') == 'kairė'
    gramtool.change_form('šuo', case='accusative') == 'šunį'
    gramtool.change_form('pelėse', case='accusative') == 'peles'
    gramtool.change_form('krūmai', case='locative') == 'krūmuose'