コード例 #1
0
def tag_map_multiple_tags():
    return TagMap(("+A", ("+B", "+C"), 1), ("+X", "+Y", 2))
コード例 #2
0
def simple_tag_map():
    return TagMap(("+A", "abc+", 1))
コード例 #3
0
def tag_map_with_both_plusses_on_left_side():
    return TagMap(("+A", "+B", 1), ("+C", "+X", 2))
コード例 #4
0
def tag_map_with_default():
    return TagMap(("+A", TagMap.COPY_TAG_NAME, 1), (TagMap.DEFAULT, "+B", 1))
コード例 #5
0
def test_can_supply_multiple_defaults():
    with pytest.raises(
        Exception,
        match=re.escape("multiple defaults supplied for precedence 1: +A, +B"),
    ):
        TagMap((TagMap.DEFAULT, "+A", 1), (TagMap.DEFAULT, "+B", 1))
コード例 #6
0
def tag_map_wth_multi_map():
    return TagMap(
        (("+A", "+B"), "abc+", 1),
        ("+A", TagMap.COPY_TAG_NAME, 2),
        ("+B", TagMap.COPY_TAG_NAME, 3),
    )
コード例 #7
0
def tag_map_with_multiples():
    return TagMap(
        ("+A", TagMap.COPY_TAG_NAME, 1),
        ("+A2", "A+", 1),
        ("+B", TagMap.COPY_TAG_NAME, 2),
    )
コード例 #8
0
def tag_map_with_precedence():
    return TagMap(("+A", "abc+", 1), ("+B", TagMap.COPY_TAG_NAME, 2), ("+C", None, 0))
コード例 #9
0

verb_tag_map = TagMap(
    # Tense
    ("+Prt", ("PV/ki+", "+Ind"), 1),  # Preterite aka simple past
    ("+Cond", ("+Fut", "+Cond"), 1),  # Future conditional
    ("+Imm", ("+Imp", "+Imm"), 1),  # Immediate imperative
    ("+Del", ("+Imp", "+Del"), 1),  # Delayed imperative
    ("+Fut", ("PV/wi+", "+Ind"), 1),  # Future
    # TODO: also handle ("+Fut", "PV/wi+", 1)  # Also accept PV/wi without independent as future?
    # Note that these crk features as disjoint, but both are needed for the eng feature
    ("+Def", ("PV/ka+", "+Ind"), 1),
    ("+Inf", ("PV/ka+", "+Cnj"), 1),
    (TagMap.DEFAULT, "+Ind", 1),
    # Person - see https://github.com/UAlbertaALTLab/morphodict/issues/891
    ("+0Sg", "+3Sg", 2),
    (
        "+21Pl",
        "+12Pl",
        2,
    ),  # see https://github.com/UAlbertaALTLab/morphodict/issues/1005
    # Person - object
    ("+0SgO", (), 3),
    (
        "+21PlO",
        "+12PlO",
        3,
    ),  # see https://github.com/UAlbertaALTLab/morphodict/issues/1005
    # TODO: also handle "+Inf": ("PV/ta+", "+Cnj")  # future definite?
    *passthrough_tags_to_tuples(verb_passthrough_tags))

noun_tag_map = TagMap(("+Dim", "+Der/Dim", 2), ("+Px21Pl", "+Px12Pl", 2),
コード例 #10
0
COPY_TAG_NAME = TagMap.COPY_TAG_NAME

noun_wordform_to_phrase = TagMap(
    ("+N", None, 0),
    ("+A", None, 0),
    ("+I", None, 0),
    ("+D", None, 0),
    # Number
    ("+Sg", COPY_TAG_NAME, 1),
    ("+Pl", COPY_TAG_NAME, 1),
    ("+Obv", COPY_TAG_NAME, 1),
    ("+Loc", COPY_TAG_NAME, 1),
    ("+Distr", COPY_TAG_NAME, 1),
    # Diminutive
    ("+Dim", COPY_TAG_NAME, 2),
    ("+Der/Dim", "Dim+", 2),
    # Possessives
    ("+Px1Sg", COPY_TAG_NAME, 3),
    ("+Px2Sg", COPY_TAG_NAME, 3),
    ("+Px3Sg", COPY_TAG_NAME, 3),
    ("+Px1Pl", COPY_TAG_NAME, 3),
    ("+Px2Pl", COPY_TAG_NAME, 3),
    ("+Px12Pl", COPY_TAG_NAME, 3),  # Maybe needs to be recoded with 12 -> 21
    ("+Px3Pl", COPY_TAG_NAME, 3),
    ("+Px4Sg/Pl", COPY_TAG_NAME, 3),
    ("+PxX", COPY_TAG_NAME, 3),
)

# Normally having a preverb tag excludes a wordform from auto-translation; this
# list specifies exceptions to that rule for grammatical preverbs.