mirror of https://github.com/explosion/spaCy.git
649 lines
3.8 KiB
Python
649 lines
3.8 KiB
Python
# coding: utf8
|
|
from __future__ import unicode_literals
|
|
|
|
import regex as re
|
|
|
|
from spacy.language_data.punctuation import ALPHA_LOWER, CURRENCY
|
|
from ..language_data.tokenizer_exceptions import _URL_PATTERN
|
|
|
|
ABBREVIATIONS = """
|
|
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.
|
|
""".strip().split()
|
|
|
|
OTHER_EXC = """
|
|
-e
|
|
""".strip().split()
|
|
|
|
ORD_NUM_OR_DATE = "([A-Z0-9]+[./-])*(\d+\.?)"
|
|
_NUM = "[+\-]?\d+([,.]\d+)*"
|
|
_OPS = "[=<>+\-\*/^()÷%²]"
|
|
_SUFFIXES = "-[{a}]+".format(a=ALPHA_LOWER)
|
|
NUMERIC_EXP = "({n})(({o})({n}))*[%]?".format(n=_NUM, o=_OPS)
|
|
TIME_EXP = "\d+(:\d+)*(\.\d+)?"
|
|
|
|
NUMS = "(({ne})|({t})|({on})|({c}))({s})?".format(
|
|
ne=NUMERIC_EXP, t=TIME_EXP, on=ORD_NUM_OR_DATE,
|
|
c=CURRENCY, s=_SUFFIXES
|
|
)
|
|
|
|
TOKEN_MATCH = re.compile("^({u})|({n})$".format(u=_URL_PATTERN, n=NUMS)).match
|