import re from ..tokenizer_exceptions import BASE_EXCEPTIONS from ..punctuation import ALPHA_LOWER, CURRENCY from ...symbols import ORTH from ...util import update_exc _exc = {} for orth in [ "-e", "A.", "AG.", "AkH.", "Aö.", "B.", "B.CS.", "B.S.", "B.Sc.", "B.ú.é.k.", "BE.", "BEK.", "BSC.", "BSc.", "BTK.", "Bat.", "Be.", "Bek.", "Bfok.", "Bk.", "Bp.", "Bros.", "Bt.", "Btk.", "Btke.", "Btét.", "C.", "CSC.", "Cal.", "Cg.", "Cgf.", "Cgt.", "Cia.", "Co.", "Colo.", "Comp.", "Copr.", "Corp.", "Cos.", "Cs.", "Csc.", "Csop.", "Cstv.", "Ctv.", "Ctvr.", "D.", "DR.", "Dipl.", "Dr.", "Dsz.", "Dzs.", "E.", "EK.", "EU.", "F.", "Fla.", "Folyt.", "Fpk.", "Főszerk.", "G.", "GK.", "GM.", "Gfv.", "Gmk.", "Gr.", "Group.", "Gt.", "Gy.", "H.", "HKsz.", "Hmvh.", "I.", "Ifj.", "Inc.", "Inform.", "Int.", "J.", "Jr.", "Jv.", "K.", "K.m.f.", "KB.", "KER.", "KFT.", "KRT.", "Kb.", "Ker.", "Kft.", "Kg.", "Kht.", "Kkt.", "Kong.", "Korm.", "Kr.", "Kr.e.", "Kr.u.", "Krt.", "L.", "LB.", "Llc.", "Ltd.", "M.", "M.A.", "M.S.", "M.SC.", "M.Sc.", "MA.", "MH.", "MSC.", "MSc.", "Mass.", "Max.", "Mlle.", "Mme.", "Mo.", "Mr.", "Mrs.", "Ms.", "Mt.", "N.", "N.N.", "NB.", "NBr.", "Nat.", "No.", "Nr.", "Ny.", "Nyh.", "Nyr.", "Nyrt.", "O.", "OJ.", "Op.", "P.", "P.H.", "P.S.", "PH.D.", "PHD.", "PROF.", "Pf.", "Ph.D", "PhD.", "Pk.", "Pl.", "Plc.", "Pp.", "Proc.", "Prof.", "Ptk.", "R.", "RT.", "Rer.", "Rt.", "S.", "S.B.", "SZOLG.", "Salg.", "Sch.", "Spa.", "St.", "Sz.", "SzRt.", "Szerk.", "Szfv.", "Szjt.", "Szolg.", "Szt.", "Sztv.", "Szvt.", "Számv.", "T.", "TEL.", "Tel.", "Ty.", "Tyr.", "U.", "Ui.", "Ut.", "V.", "VB.", "Vcs.", "Vhr.", "Vht.", "Várm.", "W.", "X.", "X.Y.", "Y.", "Z.", "Zrt.", "Zs.", "a.C.", "ac.", "adj.", "adm.", "ag.", "agit.", "alez.", "alk.", "all.", "altbgy.", "an.", "ang.", "arch.", "at.", "atc.", "aug.", "b.a.", "b.s.", "b.sc.", "bek.", "belker.", "berend.", "biz.", "bizt.", "bo.", "bp.", "br.", "bsc.", "bt.", "btk.", "ca.", "cc.", "cca.", "cf.", "cif.", "co.", "corp.", "cos.", "cs.", "csc.", "csüt.", "cső.", "ctv.", "dbj.", "dd.", "ddr.", "de.", "dec.", "dikt.", "dipl.", "dj.", "dk.", "dl.", "dny.", "dolg.", "dr.", "du.", "dzs.", "ea.", "ed.", "eff.", "egyh.", "ell.", "elv.", "elvt.", "em.", "eng.", "eny.", "et.", "etc.", "ev.", "ezr.", "eü.", "f.h.", "f.é.", "fam.", "fb.", "febr.", "fej.", "felv.", "felügy.", "ff.", "ffi.", "fhdgy.", "fil.", "fiz.", "fm.", "foglalk.", "ford.", "fp.", "fr.", "frsz.", "fszla.", "fszt.", "ft.", "fuv.", "főig.", "főisk.", "főtörm.", "főv.", "gazd.", "gimn.", "gk.", "gkv.", "gmk.", "gondn.", "gr.", "grav.", "gy.", "gyak.", "gyártm.", "gör.", "hads.", "hallg.", "hdm.", "hdp.", "hds.", "hg.", "hiv.", "hk.", "hm.", "ho.", "honv.", "hp.", "hr.", "hrsz.", "hsz.", "ht.", "htb.", "hv.", "hőm.", "i.e.", "i.sz.", "id.", "ie.", "ifj.", "ig.", "igh.", "ill.", "imp.", "inc.", "ind.", "inform.", "inic.", "int.", "io.", "ip.", "ir.", "irod.", "irod.", "isk.", "ism.", "izr.", "iá.", "jan.", "jav.", "jegyz.", "jgmk.", "jjv.", "jkv.", "jogh.", "jogt.", "jr.", "jvb.", "júl.", "jún.", "karb.", "kat.", "kath.", "kb.", "kcs.", "kd.", "ker.", "kf.", "kft.", "kht.", "kir.", "kirend.", "kisip.", "kiv.", "kk.", "kkt.", "klin.", "km.", "korm.", "kp.", "krt.", "kt.", "ktsg.", "kult.", "kv.", "kve.", "képv.", "kísérl.", "kóth.", "könyvt.", "körz.", "köv.", "közj.", "közl.", "közp.", "közt.", "kü.", "lat.", "ld.", "legs.", "lg.", "lgv.", "loc.", "lt.", "ltd.", "ltp.", "luth.", "m.a.", "m.s.", "m.sc.", "ma.", "mat.", "max.", "mb.", "med.", "megh.", "met.", "mf.", "mfszt.", "min.", "miss.", "mjr.", "mjv.", "mk.", "mlle.", "mme.", "mn.", "mozg.", "mr.", "mrs.", "ms.", "msc.", "má.", "máj.", "márc.", "mé.", "mélt.", "mü.", "műh.", "műsz.", "műv.", "művez.", "nagyker.", "nagys.", "nat.", "nb.", "neg.", "nk.", "no.", "nov.", "nu.", "ny.", "nyilv.", "nyrt.", "nyug.", "obj.", "okl.", "okt.", "old.", "olv.", "orsz.", "ort.", "ov.", "ovh.", "pf.", "pg.", "ph.d", "ph.d.", "phd.", "phil.", "pjt.", "pk.", "pl.", "plb.", "plc.", "pld.", "plur.", "pol.", "polg.", "poz.", "pp.", "proc.", "prof.", "prot.", "pság.", "ptk.", "pu.", "pü.", "r.k.", "rac.", "rad.", "red.", "ref.", "reg.", "rer.", "rev.", "rf.", "rkp.", "rkt.", "rt.", "rtg.", "röv.", "s.b.", "s.k.", "sa.", "sb.", "sel.", "sgt.", "sm.", "st.", "stat.", "stb.", "strat.", "stud.", "sz.", "szakm.", "szaksz.", "szakszerv.", "szd.", "szds.", "szept.", "szerk.", "szf.", "szimf.", "szjt.", "szkv.", "szla.", "szn.", "szolg.", "szt.", "szubj.", "szöv.", "szül.", "tanm.", "tb.", "tbk.", "tc.", "techn.", "tek.", "tel.", "tf.", "tgk.", "ti.", "tip.", "tisztv.", "titks.", "tk.", "tkp.", "tny.", "tp.", "tszf.", "tszk.", "tszkv.", "tv.", "tvr.", "ty.", "törv.", "tü.", "ua.", "ui.", "unit.", "uo.", "uv.", "vas.", "vb.", "vegy.", "vh.", "vhol.", "vhr.", "vill.", "vizsg.", "vk.", "vkf.", "vkny.", "vm.", "vol.", "vs.", "vsz.", "vv.", "vál.", "várm.", "vízv.", "vö.", "zrt.", "zs.", "Á.", "Áe.", "Áht.", "É.", "Épt.", "Ész.", "Új-Z.", "ÚjZ.", "Ún.", "á.", "ált.", "ápr.", "ásv.", "é.", "ék.", "ény.", "érk.", "évf.", "í.", "ó.", "össz.", "ötk.", "özv.", "ú.", "ú.n.", "úm.", "ún.", "út.", "üag.", "üd.", "üdv.", "üe.", "ümk.", "ütk.", "üv.", "ű.", "őrgy.", "őrpk.", "őrv.", ]: _exc[orth] = [{ORTH: orth}] _ord_num_or_date = r"([A-Z0-9]+[./-])*(\d+\.?)" _num = r"[+\-]?\d+([,.]\d+)*" _ops = r"[=<>+\-\*/^()÷%²]" _suffixes = r"-[{al}]+".format(al=ALPHA_LOWER) _numeric_exp = r"({n})(({o})({n}))*[%]?".format(n=_num, o=_ops) _time_exp = r"\d+(:\d+)*(\.\d+)?" _nums = r"(({ne})|({t})|({on})|({c}))({s})?".format( ne=_numeric_exp, t=_time_exp, on=_ord_num_or_date, c=CURRENCY, s=_suffixes ) for u in "cfkCFK": _exc[f"°{u}"] = [{ORTH: f"°{u}"}] _exc[f"°{u}."] = [{ORTH: f"°{u}"}, {ORTH: "."}] TOKENIZER_EXCEPTIONS = update_exc(BASE_EXCEPTIONS, _exc) TOKEN_MATCH = re.compile(r"^{n}$".format(n=_nums)).match