Adding support for Czech language (#5826)

* Create lex_attrs.py

Hello,

I am missing a CZECH language in SpaCy. So I would like to help to push it a little. This file is base on others lex_attrs.py files just with translation to Czech.

* Update __init__.py

Updated for use with new Czech Lex_attrs file

* Update stop_words.py

* Create test_text.py

Co-authored-by: Vladimír Holubec <vholubec@arcdata.cz>
This commit is contained in:
holubvl3 2020-08-21 16:17:53 +02:00 committed by GitHub
parent 99d2a25687
commit a341b4ef09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 176 additions and 8 deletions

View File

@ -4,10 +4,12 @@ from __future__ import unicode_literals
from .stop_words import STOP_WORDS from .stop_words import STOP_WORDS
from ...language import Language from ...language import Language
from ...attrs import LANG from ...attrs import LANG
from .lex_attrs import LEX_ATTRS
class CzechDefaults(Language.Defaults): class CzechDefaults(Language.Defaults):
lex_attr_getters = dict(Language.Defaults.lex_attr_getters) lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
lex_attr_getters.update(LEX_ATTRS)
lex_attr_getters[LANG] = lambda text: "cs" lex_attr_getters[LANG] = lambda text: "cs"
stop_words = STOP_WORDS stop_words = STOP_WORDS

View File

@ -0,0 +1,64 @@
# coding: utf8
from __future__ import unicode_literals
from ...attrs import LIKE_NUM
_num_words = [
"nula",
"jedna",
"dva",
"tři",
"čtyři",
"pět",
"šest",
"sedm",
"osm",
"devět",
"deset",
"jedenáct",
"dvanáct",
"třináct",
"čtrnáct",
"patnáct",
"šestnáct",
"sedmnáct",
"osmnáct",
"devatenáct",
"dvacet",
"třicet",
"čtyřicet",
"padesát",
"šedesát",
"sedmdesát",
"osmdesát",
"devadesát",
"sto",
"tisíc",
"milion",
"miliarda",
"bilion",
"biliarda",
"trilion",
"triliarda",
"kvadrilion",
"kvadriliarda",
"kvintilion",
]
def like_num(text):
if text.startswith(("+", "-", "±", "~")):
text = text[1:]
text = text.replace(",", "").replace(".", "")
if text.isdigit():
return True
if text.count("/") == 1:
num, denom = text.split("/")
if num.isdigit() and denom.isdigit():
return True
if text.lower() in _num_words:
return True
return False
LEX_ATTRS = {LIKE_NUM: like_num}

View File

@ -1,18 +1,26 @@
# coding: utf8 # coding: utf8
from __future__ import unicode_literals from __future__ import unicode_literals
# Source: https://github.com/Alir3z4/stop-words # Source: https://github.com/Alir3z4/stop-words
# Source: https://github.com/stopwords-iso/stopwords-cs/blob/master/stopwords-cs.txt
STOP_WORDS = set( STOP_WORDS = set(
""" """
ačkoli a
aby
ahoj ahoj
ačkoli
ale ale
alespoň
anebo anebo
ani
aniž
ano ano
atd.
atp.
asi asi
aspoň aspoň
během během
bez bez
beze beze
@ -25,12 +33,14 @@ budeš
budete budete
budou budou
budu budu
by
byl byl
byla byla
byli byli
bylo bylo
byly byly
bys bys
být
čau čau
chce chce
chceme chceme
@ -39,14 +49,21 @@ chcete
chci chci
chtějí chtějí
chtít chtít
chut' chuť
chuti chuti
co co
což
cz
či
článek
článku
články
čtrnáct čtrnáct
čtyři čtyři
dál dál
dále dále
daleko daleko
další
děkovat děkovat
děkujeme děkujeme
děkuji děkuji
@ -54,6 +71,7 @@ den
deset deset
devatenáct devatenáct
devět devět
dnes
do do
dobrý dobrý
docela docela
@ -61,9 +79,15 @@ dva
dvacet dvacet
dvanáct dvanáct
dvě dvě
email
ho
hodně hodně
i
jak jak
jakmile
jako
jakož
jde jde
je je
jeden jeden
@ -73,25 +97,39 @@ jedno
jednou jednou
jedou jedou
jeho jeho
jehož
jej
její její
jejich jejich
jejichž
jehož
jelikož
jemu jemu
jen jen
jenom jenom
jenž
jež
ještě ještě
jestli jestli
jestliže jestliže
ještě
ji
jich jich
jím jím
jim
jimi jimi
jinak jinak
jsem jiné
již
jsi jsi
jsme jsme
jsem
jsou jsou
jste jste
k
kam kam
každý
kde kde
kdo kdo
kdy kdy
@ -100,10 +138,13 @@ ke
kolik kolik
kromě kromě
která která
kterak
kterou
které které
kteří kteří
který který
kvůli kvůli
ku
mají mají
málo málo
@ -114,8 +155,10 @@ máte
mezi mezi
mi
mít mít
mne
mně mně
mnou mnou
moc moc
@ -138,6 +181,7 @@ nás
náš náš
naše naše
naši naši
načež
ne ne
nebo nebo
@ -145,6 +189,7 @@ nebyl
nebyla nebyla
nebyli nebyli
nebyly nebyly
nechť
něco něco
nedělá nedělá
nedělají nedělají
@ -154,6 +199,7 @@ neděláš
neděláte neděláte
nějak nějak
nejsi nejsi
nejsou
někde někde
někdo někdo
nemají nemají
@ -161,15 +207,22 @@ nemáme
nemáte nemáte
neměl neměl
němu němu
němuž
není není
nestačí nestačí
nevadí nevadí
nové
nový
noví
než než
nic nic
nich nich
ním ním
nimi nimi
nula nula
o
od od
ode ode
on on
@ -183,22 +236,37 @@ pak
patnáct patnáct
pět pět
po po
pod
pokud
pořád pořád
pouze
potom potom
pozdě pozdě
pravé
před před
přede
přes přes
přese přece
pro pro
proč proč
prosím prosím
prostě prostě
proto
proti proti
první
právě
protože protože
při
přičemž
rovně rovně
s
se se
sedm sedm
sedmnáct sedmnáct
si
sice
skoro
sic
šest šest
šestnáct šestnáct
skoro skoro
@ -207,41 +275,69 @@ smí
snad snad
spolu spolu
sta sta
svůj
své
svá
svých
svým
svými
svůj
sté sté
sto sto
strana
ta ta
tady tady
tak tak
takhle takhle
taky taky
také
takže
tam tam
tamhle támhle
tamhleto támhleto
tamto tamto
tebe tebe
tebou tebou
ted' teď
tedy tedy
ten ten
tento
této
ti ti
tím
tímto
tisíc tisíc
tisíce tisíce
to to
tobě tobě
tohle tohle
tohoto
tom
tomto
tomu
tomuto
toto toto
třeba třeba
tři tři
třináct třináct
trošku trošku
trochu
tu
tuto
tvá tvá
tvé tvé
tvoje tvoje
tvůj tvůj
ty ty
tyto
těm
těma
těmi
u
určitě určitě
v
vám vám
vámi vámi
vás vás
@ -251,13 +347,19 @@ vaši
ve ve
večer večer
vedle vedle
více
vlastně vlastně
však
všechen
všechno všechno
všichni všichni
vůbec vůbec
vy vy
vždy vždy
z
zda
za za
zde
zač zač
zatímco zatímco
ze ze

View File