Example #1
0
    'сравн': 'comp',
    'прев': 'supr',
    'пвл': 'imper',
}

GRAMINFO_MAP = dict(
    itertools.chain(
        GENDERS.items(),
        CASES.items(),
        NUMBERS.items(),
        PERSONS.items(),
        TENSES.items(),
        VOICES.items(),
        EXTRA.items(),
    ))
GRAMINFO_MAP_INV = invert_mapping(GRAMINFO_MAP)


def from_aot(aot_tag):
    pos, info = aot.split_tag(aot_tag)
    extra_info = set()
    if pos in ['ПРИЧАСТИЕ', 'КР_ПРИЧАСТИЕ']:
        extra_info.add('partcp')
    else:
        info.discard('дст')
        info.discard('стр')

    if pos == 'ИНФИНИТИВ':
        extra_info.add('inf')
    elif pos == 'ДЕЕПРИЧАСТИЕ':
        extra_info.add('ger')
    ['106', 'V-ie', '*ие', 'отчество через -ие-', '—', None],
    ['107', 'V-bi', '*ьи', 'форма на -ьи', '—', None],
    ['108', 'Fimp', '*несов', 'деепричастие от глагола несовершенного вида', '—', None], # fixme: aot
    ['109', 'Prdx', 'предк?', 'может выступать в роли предикатива', '—', None], # fixme: aot
    ['110', 'Coun', 'счетн', 'счётная форма', '—', None],
    ['111', 'Coll', 'собир', 'собирательное числительное', '—', None],
    ['112', 'V-sh', '*ши', 'деепричастие на -ши', '—', None],
    ['113', 'Af-p', '*предл', 'форма после предлога', '—', None],
    ['114', 'Inmx', 'неодуш?', 'может использоваться как неодушевлённое', '—', None],
    ['115', 'Vpre', 'в_предл', 'Вариант предлога ( со, подо, ...)',	'—', None],
    ['116', 'Anph', 'Анаф', 'Анафорическое (местоимение)', '-', None],
    ['117', 'Init', 'иниц', 'Инициал', '-', None],
]

INTERNAL_TO_EXTERNAL = dict((item[1], item[2]) for item in GRAM_TABLE)
EXTERNAL_TO_INTERNAL = invert_mapping(INTERNAL_TO_EXTERNAL)

EXTERNAL_TO_AOT = dict((item[2], item[5]) for item in GRAM_TABLE
                        if item[5] is not None)

def _translate_comma_separated(tag_part, mapping):
    return ",".join([mapping.get(tok, tok).strip() for tok in tag_part.split(',')])

def _translate_tag(tag, mapping):
    return " ".join([
        _translate_comma_separated(part, mapping)
        for part in tag.split()
    ])


def external_to_internal(external_tag):
Example #3
0
GENDERS = {"мр": "m", "жр": "f", "ср": "n", "мр-жр": ""}  # FIXME: ?

CASES = {"им": "nom", "рд": "gen", "дт": "dat", "вн": "acc", "тв": "ins", "пр": "loc", "зв": "voc"}

NUMBERS = {"ед": "sg", "мн": "pl"}
PERSONS = {"1л": "1p", "2л": "2p", "3л": "3p"}
VOICES = {"дст": "act", "стр": "pass"}
TENSES = {"нст": "pres", "прш": "past", "буд": "pres"}
EXTRA = {"сравн": "comp", "прев": "supr", "пвл": "imper"}

GRAMINFO_MAP = dict(
    itertools.chain(
        GENDERS.items(), CASES.items(), NUMBERS.items(), PERSONS.items(), TENSES.items(), VOICES.items(), EXTRA.items()
    )
)
GRAMINFO_MAP_INV = invert_mapping(GRAMINFO_MAP)


def from_aot(aot_tag):
    pos, info = aot.split_tag(aot_tag)
    extra_info = set()
    if pos in ["ПРИЧАСТИЕ", "КР_ПРИЧАСТИЕ"]:
        extra_info.add("partcp")
    else:
        info.discard("дст")
        info.discard("стр")

    if pos == "ИНФИНИТИВ":
        extra_info.add("inf")
    elif pos == "ДЕЕПРИЧАСТИЕ":
        extra_info.add("ger")
     None],  # fixme: aot
    ['110', 'Coun', 'счетн', 'счётная форма', '—', None],
    ['111', 'Coll', 'собир', 'собирательное числительное', '—', None],
    ['112', 'V-sh', '*ши', 'деепричастие на -ши', '—', None],
    ['113', 'Af-p', '*предл', 'форма после предлога', '—', None],
    [
        '114', 'Inmx', 'неодуш?', 'может использоваться как неодушевлённое',
        '—', None
    ],
    ['115', 'Vpre', 'в_предл', 'Вариант предлога ( со, подо, ...)', '—', None],
    ['116', 'Anph', 'Анаф', 'Анафорическое (местоимение)', '-', None],
    ['117', 'Init', 'иниц', 'Инициал', '-', None],
]

INTERNAL_TO_EXTERNAL = dict((item[1], item[2]) for item in GRAM_TABLE)
EXTERNAL_TO_INTERNAL = invert_mapping(INTERNAL_TO_EXTERNAL)

EXTERNAL_TO_AOT = dict(
    (item[2], item[5]) for item in GRAM_TABLE if item[5] is not None)


def _translate_comma_separated(tag_part, mapping):
    return ",".join(
        [mapping.get(tok, tok).strip() for tok in tag_part.split(',')])


def _translate_tag(tag, mapping):
    return " ".join(
        [_translate_comma_separated(part, mapping) for part in tag.split()])

Example #5
0
    'D': 'Н',

    'R': 'ПРЕДЛ',
    'RF': 'ФРАЗ',
    'J': 'СОЮЗ',
    'I': 'МЕЖД',
    'T': 'ЧАСТ',
    'Z': 'ЗНАК', # non-standard
}

TENSES = {
    'нст': 'P',
    'прш': 'R',
    'буд': 'F',
}
TENSES_INV = invert_mapping(TENSES)

CASES = {
    'им': '1',
    'рд': '2',
    'дт': '3',
    'вн': '4',
    'тв': '7',
    'пр': '6',
}
CASES_INV = invert_mapping(CASES)

GENDERS = {
    'мр': 'M',
    'жр': 'F',
    'ср': 'N',