diff --git a/spacy/lang/lt/__init__.py b/spacy/lang/lt/__init__.py index 7919a4858..1dfe932ee 100644 --- a/spacy/lang/lt/__init__.py +++ b/spacy/lang/lt/__init__.py @@ -1,6 +1,7 @@ # coding: utf8 from __future__ import unicode_literals +from .punctuation import TOKENIZER_INFIXES, TOKENIZER_SUFFIXES from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS from .stop_words import STOP_WORDS from .lex_attrs import LEX_ATTRS @@ -26,7 +27,11 @@ class LithuanianDefaults(Language.Defaults): ) lex_attr_getters.update(LEX_ATTRS) - tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS) + infixes = TOKENIZER_INFIXES + suffixes = TOKENIZER_SUFFIXES + mod_base_exceptions = {exc: val for exc, val in BASE_EXCEPTIONS.items() if not exc.endswith(".")} + del mod_base_exceptions["8)"] + tokenizer_exceptions = update_exc(mod_base_exceptions, TOKENIZER_EXCEPTIONS) stop_words = STOP_WORDS tag_map = TAG_MAP morph_rules = MORPH_RULES diff --git a/spacy/lang/lt/punctuation.py b/spacy/lang/lt/punctuation.py new file mode 100644 index 000000000..5eedc8116 --- /dev/null +++ b/spacy/lang/lt/punctuation.py @@ -0,0 +1,29 @@ +# coding: utf8 +from __future__ import unicode_literals + +from ..char_classes import LIST_ICONS, LIST_ELLIPSES +from ..char_classes import CONCAT_QUOTES, ALPHA_LOWER, ALPHA_UPPER, ALPHA +from ..char_classes import HYPHENS +from ..punctuation import TOKENIZER_SUFFIXES + + +_infixes = ( + LIST_ELLIPSES + + LIST_ICONS + + [ + r"(?<=[0-9])[+\*^](?=[0-9-])", + r"(?<=[{al}{q}])\.(?=[{au}{q}])".format( + al=ALPHA_LOWER, au=ALPHA_UPPER, q=CONCAT_QUOTES + ), + r"(?<=[{a}]),(?=[{a}])".format(a=ALPHA), + r"(?<=[{a}])(?:{h})(?=[{a}])".format(a=ALPHA, h=HYPHENS), + r"(?<=[{a}0-9])[:<>=/](?=[{a}])".format(a=ALPHA), + ] +) + + +_suffixes = ["\."] + list(TOKENIZER_SUFFIXES) + + +TOKENIZER_INFIXES = _infixes +TOKENIZER_SUFFIXES = _suffixes diff --git a/spacy/lang/lt/tokenizer_exceptions.py b/spacy/lang/lt/tokenizer_exceptions.py index fcf807278..f8e11156d 100644 --- a/spacy/lang/lt/tokenizer_exceptions.py +++ b/spacy/lang/lt/tokenizer_exceptions.py @@ -6,262 +6,264 @@ from ...symbols import ORTH _exc = {} for orth in [ - "G.", - "J. E.", - "J. Em.", - "J.E.", - "J.Em.", - "K.", - "N.", - "V.", - "Vt.", - "a.", - "a.k.", - "a.s.", - "adv.", - "akad.", - "aklg.", - "akt.", - "al.", - "ang.", - "angl.", - "aps.", - "apskr.", - "apyg.", - "arbat.", - "asist.", - "asm.", - "asm.k.", - "asmv.", - "atk.", - "atsak.", - "atsisk.", - "atsisk.sąsk.", - "atv.", - "aut.", - "avd.", - "b.k.", - "baud.", - "biol.", - "bkl.", - "bot.", - "bt.", - "buv.", - "ch.", - "chem.", - "corp.", - "d.", - "dab.", - "dail.", - "dek.", - "deš.", - "dir.", - "dirig.", - "doc.", - "dol.", - "dr.", - "drp.", - "dvit.", - "dėst.", - "dš.", - "dž.", - "e.b.", - "e.bankas", - "e.p.", - "e.parašas", - "e.paštas", - "e.v.", - "e.valdžia", - "egz.", - "eil.", - "ekon.", - "el.", - "el.bankas", - "el.p.", - "el.parašas", - "el.paštas", - "el.valdžia", - "etc.", - "ež.", - "fak.", - "faks.", - "feat.", - "filol.", - "filos.", - "g.", - "gen.", - "geol.", - "gerb.", - "gim.", - "gr.", - "gv.", - "gyd.", - "gyv.", - "habil.", - "inc.", - "insp.", - "inž.", - "ir pan.", - "ir t. t.", - "isp.", - "istor.", - "it.", - "just.", - "k.", - "k. a.", - "k.a.", - "kab.", - "kand.", - "kart.", - "kat.", - "ketv.", - "kh.", - "kl.", - "kln.", - "km.", - "kn.", - "koresp.", - "kpt.", - "kr.", - "kt.", - "kub.", - "kun.", - "kv.", - "kyš.", - "l. e. p.", - "l.e.p.", - "lenk.", - "liet.", - "lot.", - "lt.", - "ltd.", - "ltn.", - "m.", - "m.e..", - "m.m.", - "mat.", - "med.", - "mgnt.", - "mgr.", - "min.", - "mjr.", - "ml.", - "mln.", - "mlrd.", - "mob.", - "mok.", - "moksl.", - "mokyt.", - "mot.", - "mr.", - "mst.", - "mstl.", - "mėn.", - "nkt.", - "no.", - "nr.", - "ntk.", - "nuotr.", - "op.", - "org.", - "orig.", - "p.", - "p.d.", - "p.m.e.", - "p.s.", - "pab.", - "pan.", - "past.", - "pav.", - "pavad.", - "per.", - "perd.", - "pirm.", - "pl.", - "plg.", - "plk.", - "pr.", - "pr.Kr.", - "pranc.", - "proc.", - "prof.", - "prom.", - "prot.", - "psl.", - "pss.", - "pvz.", - "pšt.", - "r.", - "raj.", - "red.", - "rez.", - "rež.", - "rus.", - "rš.", - "s.", - "sav.", - "saviv.", - "sek.", - "sekr.", - "sen.", - "sh.", - "sk.", - "skg.", - "skv.", - "skyr.", - "sp.", - "spec.", - "sr.", - "st.", - "str.", - "stud.", - "sąs.", - "t.", - "t. p.", - "t. y.", - "t.p.", - "t.t.", - "t.y.", - "techn.", - "tel.", - "teol.", - "th.", - "tir.", - "trit.", - "trln.", - "tšk.", - "tūks.", - "tūkst.", - "up.", - "upl.", - "v.s.", - "vad.", - "val.", - "valg.", - "ved.", - "vert.", - "vet.", - "vid.", - "virš.", - "vlsč.", - "vnt.", - "vok.", - "vs.", - "vtv.", - "vv.", - "vyr.", - "vyresn.", - "zool.", - "Įn", - "įl.", - "š.m.", - "šnek.", - "šv.", - "švč.", - "ž.ū.", - "žin.", - "žml.", - "žr.", + "n-tosios", + "?!", +# "G.", +# "J. E.", +# "J. Em.", +# "J.E.", +# "J.Em.", +# "K.", +# "N.", +# "V.", +# "Vt.", +# "a.", +# "a.k.", +# "a.s.", +# "adv.", +# "akad.", +# "aklg.", +# "akt.", +# "al.", +# "ang.", +# "angl.", +# "aps.", +# "apskr.", +# "apyg.", +# "arbat.", +# "asist.", +# "asm.", +# "asm.k.", +# "asmv.", +# "atk.", +# "atsak.", +# "atsisk.", +# "atsisk.sąsk.", +# "atv.", +# "aut.", +# "avd.", +# "b.k.", +# "baud.", +# "biol.", +# "bkl.", +# "bot.", +# "bt.", +# "buv.", +# "ch.", +# "chem.", +# "corp.", +# "d.", +# "dab.", +# "dail.", +# "dek.", +# "deš.", +# "dir.", +# "dirig.", +# "doc.", +# "dol.", +# "dr.", +# "drp.", +# "dvit.", +# "dėst.", +# "dš.", +# "dž.", +# "e.b.", +# "e.bankas", +# "e.p.", +# "e.parašas", +# "e.paštas", +# "e.v.", +# "e.valdžia", +# "egz.", +# "eil.", +# "ekon.", +# "el.", +# "el.bankas", +# "el.p.", +# "el.parašas", +# "el.paštas", +# "el.valdžia", +# "etc.", +# "ež.", +# "fak.", +# "faks.", +# "feat.", +# "filol.", +# "filos.", +# "g.", +# "gen.", +# "geol.", +# "gerb.", +# "gim.", +# "gr.", +# "gv.", +# "gyd.", +# "gyv.", +# "habil.", +# "inc.", +# "insp.", +# "inž.", +# "ir pan.", +# "ir t. t.", +# "isp.", +# "istor.", +# "it.", +# "just.", +# "k.", +# "k. a.", +# "k.a.", +# "kab.", +# "kand.", +# "kart.", +# "kat.", +# "ketv.", +# "kh.", +# "kl.", +# "kln.", +# "km.", +# "kn.", +# "koresp.", +# "kpt.", +# "kr.", +# "kt.", +# "kub.", +# "kun.", +# "kv.", +# "kyš.", +# "l. e. p.", +# "l.e.p.", +# "lenk.", +# "liet.", +# "lot.", +# "lt.", +# "ltd.", +# "ltn.", +# "m.", +# "m.e..", +# "m.m.", +# "mat.", +# "med.", +# "mgnt.", +# "mgr.", +# "min.", +# "mjr.", +# "ml.", +# "mln.", +# "mlrd.", +# "mob.", +# "mok.", +# "moksl.", +# "mokyt.", +# "mot.", +# "mr.", +# "mst.", +# "mstl.", +# "mėn.", +# "nkt.", +# "no.", +# "nr.", +# "ntk.", +# "nuotr.", +# "op.", +# "org.", +# "orig.", +# "p.", +# "p.d.", +# "p.m.e.", +# "p.s.", +# "pab.", +# "pan.", +# "past.", +# "pav.", +# "pavad.", +# "per.", +# "perd.", +# "pirm.", +# "pl.", +# "plg.", +# "plk.", +# "pr.", +# "pr.Kr.", +# "pranc.", +# "proc.", +# "prof.", +# "prom.", +# "prot.", +# "psl.", +# "pss.", +# "pvz.", +# "pšt.", +# "r.", +# "raj.", +# "red.", +# "rez.", +# "rež.", +# "rus.", +# "rš.", +# "s.", +# "sav.", +# "saviv.", +# "sek.", +# "sekr.", +# "sen.", +# "sh.", +# "sk.", +# "skg.", +# "skv.", +# "skyr.", +# "sp.", +# "spec.", +# "sr.", +# "st.", +# "str.", +# "stud.", +# "sąs.", +# "t.", +# "t. p.", +# "t. y.", +# "t.p.", +# "t.t.", +# "t.y.", +# "techn.", +# "tel.", +# "teol.", +# "th.", +# "tir.", +# "trit.", +# "trln.", +# "tšk.", +# "tūks.", +# "tūkst.", +# "up.", +# "upl.", +# "v.s.", +# "vad.", +# "val.", +# "valg.", +# "ved.", +# "vert.", +# "vet.", +# "vid.", +# "virš.", +# "vlsč.", +# "vnt.", +# "vok.", +# "vs.", +# "vtv.", +# "vv.", +# "vyr.", +# "vyresn.", +# "zool.", +# "Įn", +# "įl.", +# "š.m.", +# "šnek.", +# "šv.", +# "švč.", +# "ž.ū.", +# "žin.", +# "žml.", +# "žr.", ]: _exc[orth] = [{ORTH: orth}] diff --git a/spacy/tests/lang/lt/test_text.py b/spacy/tests/lang/lt/test_text.py index cac32aa4d..bb9c75383 100644 --- a/spacy/tests/lang/lt/test_text.py +++ b/spacy/tests/lang/lt/test_text.py @@ -15,11 +15,11 @@ def test_lt_tokenizer_handles_long_text(lt_tokenizer): [ ( "177R Parodų rūmai–Ozo g. nuo vasario 18 d. bus skelbiamas interneto tinklalapyje.", - 15, + 17, ), ( "ISM universiteto doc. dr. Ieva Augutytė-Kvedaravičienė pastebi, kad tyrimais nustatyti elgesio pokyčiai.", - 16, + 18, ), ], ) @@ -31,7 +31,7 @@ def test_lt_tokenizer_handles_punct_abbrev(lt_tokenizer, text, length): @pytest.mark.parametrize("text", ["km.", "pvz.", "biol."]) def test_lt_tokenizer_abbrev_exceptions(lt_tokenizer, text): tokens = lt_tokenizer(text) - assert len(tokens) == 1 + assert len(tokens) == 2 @pytest.mark.parametrize(