mirror of https://github.com/explosion/spaCy.git
78 lines
1.6 KiB
Python
78 lines
1.6 KiB
Python
|
from ...attrs import LIKE_NUM
|
||
|
|
||
|
_num_words = [
|
||
|
"nul",
|
||
|
"jedyn", "jedna", "jedne",
|
||
|
"dwaj", "dwě",
|
||
|
"tři", "třo",
|
||
|
"štyri", "štyrjo",
|
||
|
"pjeć",
|
||
|
"šěsć",
|
||
|
"sydom",
|
||
|
"wosom",
|
||
|
"dźewjeć",
|
||
|
"dźesać",
|
||
|
"jědnaće",
|
||
|
"dwanaće",
|
||
|
"třinaće",
|
||
|
"štyrnaće",
|
||
|
"pjatnaće",
|
||
|
"šěsnaće",
|
||
|
"sydomnaće",
|
||
|
"wosomnaće",
|
||
|
"dźewjatnaće",
|
||
|
"dwaceći"
|
||
|
"třiceći",
|
||
|
"štyrceći",
|
||
|
"pjećdźesat",
|
||
|
"šěsćdźesat",
|
||
|
"sydomdźesat",
|
||
|
"wosomdźesat",
|
||
|
"dźewjećdźesat",
|
||
|
"sto",
|
||
|
"tysac",
|
||
|
"milion",
|
||
|
"miliarda",
|
||
|
"bilion",
|
||
|
"biliarda",
|
||
|
"trilion",
|
||
|
"triliarda",
|
||
|
]
|
||
|
|
||
|
_ordinal_words = [
|
||
|
"prěni", "prěnja", "prěnje",
|
||
|
"druhi", "druha", "druhe",
|
||
|
"třeći", "třeća", "třeće",
|
||
|
"štwórty", "štwórta", "štwórte",
|
||
|
"pjaty", "pjata", "pjate",
|
||
|
"šěsty", "šěsta", "šěste",
|
||
|
"sydmy", "sydma", "sydme",
|
||
|
"wosmy", "wosma", "wosme",
|
||
|
"dźewjaty", "dźewjata", "dźewjate",
|
||
|
"dźesaty", "dźesata", "dźesate",
|
||
|
"jědnaty", "jědnata", "jědnate",
|
||
|
"dwanaty", "dwanata", "dwanate"
|
||
|
]
|
||
|
|
||
|
|
||
|
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
|
||
|
text_lower = text.lower()
|
||
|
if text_lower in _num_words:
|
||
|
return True
|
||
|
# Check ordinal number
|
||
|
if text_lower in _ordinal_words:
|
||
|
return True
|
||
|
return False
|
||
|
|
||
|
|
||
|
LEX_ATTRS = {LIKE_NUM: like_num}
|