mirror of
https://github.com/explosion/spaCy.git
synced 2025-01-12 02:06:31 +03:00
Improve Lithuanian tokenization (#5205)
* Improve Lithuanian tokenization Modify Lithuanian tokenization to improve performance for UD_Lithuanian-ALKSNIS. * Update Lithuanian tokenizer tests
This commit is contained in:
parent
1a944e5976
commit
86c43e55fa
|
@ -1,6 +1,7 @@
|
||||||
# coding: utf8
|
# coding: utf8
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from .punctuation import TOKENIZER_INFIXES, TOKENIZER_SUFFIXES
|
||||||
from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS
|
from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS
|
||||||
from .stop_words import STOP_WORDS
|
from .stop_words import STOP_WORDS
|
||||||
from .lex_attrs import LEX_ATTRS
|
from .lex_attrs import LEX_ATTRS
|
||||||
|
@ -26,7 +27,11 @@ class LithuanianDefaults(Language.Defaults):
|
||||||
)
|
)
|
||||||
lex_attr_getters.update(LEX_ATTRS)
|
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
|
stop_words = STOP_WORDS
|
||||||
tag_map = TAG_MAP
|
tag_map = TAG_MAP
|
||||||
morph_rules = MORPH_RULES
|
morph_rules = MORPH_RULES
|
||||||
|
|
29
spacy/lang/lt/punctuation.py
Normal file
29
spacy/lang/lt/punctuation.py
Normal file
|
@ -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
|
|
@ -6,262 +6,264 @@ from ...symbols import ORTH
|
||||||
_exc = {}
|
_exc = {}
|
||||||
|
|
||||||
for orth in [
|
for orth in [
|
||||||
"G.",
|
"n-tosios",
|
||||||
"J. E.",
|
"?!",
|
||||||
"J. Em.",
|
# "G.",
|
||||||
"J.E.",
|
# "J. E.",
|
||||||
"J.Em.",
|
# "J. Em.",
|
||||||
"K.",
|
# "J.E.",
|
||||||
"N.",
|
# "J.Em.",
|
||||||
"V.",
|
# "K.",
|
||||||
"Vt.",
|
# "N.",
|
||||||
"a.",
|
# "V.",
|
||||||
"a.k.",
|
# "Vt.",
|
||||||
"a.s.",
|
# "a.",
|
||||||
"adv.",
|
# "a.k.",
|
||||||
"akad.",
|
# "a.s.",
|
||||||
"aklg.",
|
# "adv.",
|
||||||
"akt.",
|
# "akad.",
|
||||||
"al.",
|
# "aklg.",
|
||||||
"ang.",
|
# "akt.",
|
||||||
"angl.",
|
# "al.",
|
||||||
"aps.",
|
# "ang.",
|
||||||
"apskr.",
|
# "angl.",
|
||||||
"apyg.",
|
# "aps.",
|
||||||
"arbat.",
|
# "apskr.",
|
||||||
"asist.",
|
# "apyg.",
|
||||||
"asm.",
|
# "arbat.",
|
||||||
"asm.k.",
|
# "asist.",
|
||||||
"asmv.",
|
# "asm.",
|
||||||
"atk.",
|
# "asm.k.",
|
||||||
"atsak.",
|
# "asmv.",
|
||||||
"atsisk.",
|
# "atk.",
|
||||||
"atsisk.sąsk.",
|
# "atsak.",
|
||||||
"atv.",
|
# "atsisk.",
|
||||||
"aut.",
|
# "atsisk.sąsk.",
|
||||||
"avd.",
|
# "atv.",
|
||||||
"b.k.",
|
# "aut.",
|
||||||
"baud.",
|
# "avd.",
|
||||||
"biol.",
|
# "b.k.",
|
||||||
"bkl.",
|
# "baud.",
|
||||||
"bot.",
|
# "biol.",
|
||||||
"bt.",
|
# "bkl.",
|
||||||
"buv.",
|
# "bot.",
|
||||||
"ch.",
|
# "bt.",
|
||||||
"chem.",
|
# "buv.",
|
||||||
"corp.",
|
# "ch.",
|
||||||
"d.",
|
# "chem.",
|
||||||
"dab.",
|
# "corp.",
|
||||||
"dail.",
|
# "d.",
|
||||||
"dek.",
|
# "dab.",
|
||||||
"deš.",
|
# "dail.",
|
||||||
"dir.",
|
# "dek.",
|
||||||
"dirig.",
|
# "deš.",
|
||||||
"doc.",
|
# "dir.",
|
||||||
"dol.",
|
# "dirig.",
|
||||||
"dr.",
|
# "doc.",
|
||||||
"drp.",
|
# "dol.",
|
||||||
"dvit.",
|
# "dr.",
|
||||||
"dėst.",
|
# "drp.",
|
||||||
"dš.",
|
# "dvit.",
|
||||||
"dž.",
|
# "dėst.",
|
||||||
"e.b.",
|
# "dš.",
|
||||||
"e.bankas",
|
# "dž.",
|
||||||
"e.p.",
|
# "e.b.",
|
||||||
"e.parašas",
|
# "e.bankas",
|
||||||
"e.paštas",
|
# "e.p.",
|
||||||
"e.v.",
|
# "e.parašas",
|
||||||
"e.valdžia",
|
# "e.paštas",
|
||||||
"egz.",
|
# "e.v.",
|
||||||
"eil.",
|
# "e.valdžia",
|
||||||
"ekon.",
|
# "egz.",
|
||||||
"el.",
|
# "eil.",
|
||||||
"el.bankas",
|
# "ekon.",
|
||||||
"el.p.",
|
# "el.",
|
||||||
"el.parašas",
|
# "el.bankas",
|
||||||
"el.paštas",
|
# "el.p.",
|
||||||
"el.valdžia",
|
# "el.parašas",
|
||||||
"etc.",
|
# "el.paštas",
|
||||||
"ež.",
|
# "el.valdžia",
|
||||||
"fak.",
|
# "etc.",
|
||||||
"faks.",
|
# "ež.",
|
||||||
"feat.",
|
# "fak.",
|
||||||
"filol.",
|
# "faks.",
|
||||||
"filos.",
|
# "feat.",
|
||||||
"g.",
|
# "filol.",
|
||||||
"gen.",
|
# "filos.",
|
||||||
"geol.",
|
# "g.",
|
||||||
"gerb.",
|
# "gen.",
|
||||||
"gim.",
|
# "geol.",
|
||||||
"gr.",
|
# "gerb.",
|
||||||
"gv.",
|
# "gim.",
|
||||||
"gyd.",
|
# "gr.",
|
||||||
"gyv.",
|
# "gv.",
|
||||||
"habil.",
|
# "gyd.",
|
||||||
"inc.",
|
# "gyv.",
|
||||||
"insp.",
|
# "habil.",
|
||||||
"inž.",
|
# "inc.",
|
||||||
"ir pan.",
|
# "insp.",
|
||||||
"ir t. t.",
|
# "inž.",
|
||||||
"isp.",
|
# "ir pan.",
|
||||||
"istor.",
|
# "ir t. t.",
|
||||||
"it.",
|
# "isp.",
|
||||||
"just.",
|
# "istor.",
|
||||||
"k.",
|
# "it.",
|
||||||
"k. a.",
|
# "just.",
|
||||||
"k.a.",
|
# "k.",
|
||||||
"kab.",
|
# "k. a.",
|
||||||
"kand.",
|
# "k.a.",
|
||||||
"kart.",
|
# "kab.",
|
||||||
"kat.",
|
# "kand.",
|
||||||
"ketv.",
|
# "kart.",
|
||||||
"kh.",
|
# "kat.",
|
||||||
"kl.",
|
# "ketv.",
|
||||||
"kln.",
|
# "kh.",
|
||||||
"km.",
|
# "kl.",
|
||||||
"kn.",
|
# "kln.",
|
||||||
"koresp.",
|
# "km.",
|
||||||
"kpt.",
|
# "kn.",
|
||||||
"kr.",
|
# "koresp.",
|
||||||
"kt.",
|
# "kpt.",
|
||||||
"kub.",
|
# "kr.",
|
||||||
"kun.",
|
# "kt.",
|
||||||
"kv.",
|
# "kub.",
|
||||||
"kyš.",
|
# "kun.",
|
||||||
"l. e. p.",
|
# "kv.",
|
||||||
"l.e.p.",
|
# "kyš.",
|
||||||
"lenk.",
|
# "l. e. p.",
|
||||||
"liet.",
|
# "l.e.p.",
|
||||||
"lot.",
|
# "lenk.",
|
||||||
"lt.",
|
# "liet.",
|
||||||
"ltd.",
|
# "lot.",
|
||||||
"ltn.",
|
# "lt.",
|
||||||
"m.",
|
# "ltd.",
|
||||||
"m.e..",
|
# "ltn.",
|
||||||
"m.m.",
|
# "m.",
|
||||||
"mat.",
|
# "m.e..",
|
||||||
"med.",
|
# "m.m.",
|
||||||
"mgnt.",
|
# "mat.",
|
||||||
"mgr.",
|
# "med.",
|
||||||
"min.",
|
# "mgnt.",
|
||||||
"mjr.",
|
# "mgr.",
|
||||||
"ml.",
|
# "min.",
|
||||||
"mln.",
|
# "mjr.",
|
||||||
"mlrd.",
|
# "ml.",
|
||||||
"mob.",
|
# "mln.",
|
||||||
"mok.",
|
# "mlrd.",
|
||||||
"moksl.",
|
# "mob.",
|
||||||
"mokyt.",
|
# "mok.",
|
||||||
"mot.",
|
# "moksl.",
|
||||||
"mr.",
|
# "mokyt.",
|
||||||
"mst.",
|
# "mot.",
|
||||||
"mstl.",
|
# "mr.",
|
||||||
"mėn.",
|
# "mst.",
|
||||||
"nkt.",
|
# "mstl.",
|
||||||
"no.",
|
# "mėn.",
|
||||||
"nr.",
|
# "nkt.",
|
||||||
"ntk.",
|
# "no.",
|
||||||
"nuotr.",
|
# "nr.",
|
||||||
"op.",
|
# "ntk.",
|
||||||
"org.",
|
# "nuotr.",
|
||||||
"orig.",
|
# "op.",
|
||||||
"p.",
|
# "org.",
|
||||||
"p.d.",
|
# "orig.",
|
||||||
"p.m.e.",
|
# "p.",
|
||||||
"p.s.",
|
# "p.d.",
|
||||||
"pab.",
|
# "p.m.e.",
|
||||||
"pan.",
|
# "p.s.",
|
||||||
"past.",
|
# "pab.",
|
||||||
"pav.",
|
# "pan.",
|
||||||
"pavad.",
|
# "past.",
|
||||||
"per.",
|
# "pav.",
|
||||||
"perd.",
|
# "pavad.",
|
||||||
"pirm.",
|
# "per.",
|
||||||
"pl.",
|
# "perd.",
|
||||||
"plg.",
|
# "pirm.",
|
||||||
"plk.",
|
# "pl.",
|
||||||
"pr.",
|
# "plg.",
|
||||||
"pr.Kr.",
|
# "plk.",
|
||||||
"pranc.",
|
# "pr.",
|
||||||
"proc.",
|
# "pr.Kr.",
|
||||||
"prof.",
|
# "pranc.",
|
||||||
"prom.",
|
# "proc.",
|
||||||
"prot.",
|
# "prof.",
|
||||||
"psl.",
|
# "prom.",
|
||||||
"pss.",
|
# "prot.",
|
||||||
"pvz.",
|
# "psl.",
|
||||||
"pšt.",
|
# "pss.",
|
||||||
"r.",
|
# "pvz.",
|
||||||
"raj.",
|
# "pšt.",
|
||||||
"red.",
|
# "r.",
|
||||||
"rez.",
|
# "raj.",
|
||||||
"rež.",
|
# "red.",
|
||||||
"rus.",
|
# "rez.",
|
||||||
"rš.",
|
# "rež.",
|
||||||
"s.",
|
# "rus.",
|
||||||
"sav.",
|
# "rš.",
|
||||||
"saviv.",
|
# "s.",
|
||||||
"sek.",
|
# "sav.",
|
||||||
"sekr.",
|
# "saviv.",
|
||||||
"sen.",
|
# "sek.",
|
||||||
"sh.",
|
# "sekr.",
|
||||||
"sk.",
|
# "sen.",
|
||||||
"skg.",
|
# "sh.",
|
||||||
"skv.",
|
# "sk.",
|
||||||
"skyr.",
|
# "skg.",
|
||||||
"sp.",
|
# "skv.",
|
||||||
"spec.",
|
# "skyr.",
|
||||||
"sr.",
|
# "sp.",
|
||||||
"st.",
|
# "spec.",
|
||||||
"str.",
|
# "sr.",
|
||||||
"stud.",
|
# "st.",
|
||||||
"sąs.",
|
# "str.",
|
||||||
"t.",
|
# "stud.",
|
||||||
"t. p.",
|
# "sąs.",
|
||||||
"t. y.",
|
# "t.",
|
||||||
"t.p.",
|
# "t. p.",
|
||||||
"t.t.",
|
# "t. y.",
|
||||||
"t.y.",
|
# "t.p.",
|
||||||
"techn.",
|
# "t.t.",
|
||||||
"tel.",
|
# "t.y.",
|
||||||
"teol.",
|
# "techn.",
|
||||||
"th.",
|
# "tel.",
|
||||||
"tir.",
|
# "teol.",
|
||||||
"trit.",
|
# "th.",
|
||||||
"trln.",
|
# "tir.",
|
||||||
"tšk.",
|
# "trit.",
|
||||||
"tūks.",
|
# "trln.",
|
||||||
"tūkst.",
|
# "tšk.",
|
||||||
"up.",
|
# "tūks.",
|
||||||
"upl.",
|
# "tūkst.",
|
||||||
"v.s.",
|
# "up.",
|
||||||
"vad.",
|
# "upl.",
|
||||||
"val.",
|
# "v.s.",
|
||||||
"valg.",
|
# "vad.",
|
||||||
"ved.",
|
# "val.",
|
||||||
"vert.",
|
# "valg.",
|
||||||
"vet.",
|
# "ved.",
|
||||||
"vid.",
|
# "vert.",
|
||||||
"virš.",
|
# "vet.",
|
||||||
"vlsč.",
|
# "vid.",
|
||||||
"vnt.",
|
# "virš.",
|
||||||
"vok.",
|
# "vlsč.",
|
||||||
"vs.",
|
# "vnt.",
|
||||||
"vtv.",
|
# "vok.",
|
||||||
"vv.",
|
# "vs.",
|
||||||
"vyr.",
|
# "vtv.",
|
||||||
"vyresn.",
|
# "vv.",
|
||||||
"zool.",
|
# "vyr.",
|
||||||
"Įn",
|
# "vyresn.",
|
||||||
"įl.",
|
# "zool.",
|
||||||
"š.m.",
|
# "Įn",
|
||||||
"šnek.",
|
# "įl.",
|
||||||
"šv.",
|
# "š.m.",
|
||||||
"švč.",
|
# "šnek.",
|
||||||
"ž.ū.",
|
# "šv.",
|
||||||
"žin.",
|
# "švč.",
|
||||||
"žml.",
|
# "ž.ū.",
|
||||||
"žr.",
|
# "žin.",
|
||||||
|
# "žml.",
|
||||||
|
# "žr.",
|
||||||
]:
|
]:
|
||||||
_exc[orth] = [{ORTH: orth}]
|
_exc[orth] = [{ORTH: orth}]
|
||||||
|
|
||||||
|
|
|
@ -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.",
|
"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.",
|
"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."])
|
@pytest.mark.parametrize("text", ["km.", "pvz.", "biol."])
|
||||||
def test_lt_tokenizer_abbrev_exceptions(lt_tokenizer, text):
|
def test_lt_tokenizer_abbrev_exceptions(lt_tokenizer, text):
|
||||||
tokens = lt_tokenizer(text)
|
tokens = lt_tokenizer(text)
|
||||||
assert len(tokens) == 1
|
assert len(tokens) == 2
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user