spaCy/spacy/lang/dsb/lex_attrs.py

78 lines
1.7 KiB
Python
Raw Normal View History

from ...attrs import LIKE_NUM
_num_words = [
"nul",
"jaden", "jadna", "jadno",
"dwa", "dwě",
"tśi", "tśo",
"styri", "styrjo",
"pěś", "pěśo",
"šesć", "šesćo",
"sedym", "sedymjo",
"wósym", "wósymjo",
"źewjeś", "źewjeśo",
"źaseś", "źaseśo",
"jadnassćo",
"dwanassćo",
"tśinasćo",
"styrnasćo",
"pěśnasćo",
"šesnasćo",
"sedymnasćo",
"wósymnasćo",
"źewjeśnasćo",
"dwanasćo", "dwaźasća",
"tśiźasća",
"styrźasća",
"pěśźaset",
"šesćźaset",
"sedymźaset",
"wósymźaset",
"źewjeśźaset",
"sto",
"tysac",
"milion",
"miliarda",
"bilion",
"biliarda",
"trilion",
"triliarda",
]
_ordinal_words = [
"prědny", "prědna", "prědne",
"drugi", "druga", "druge",
"tśeśi", "tśeśa", "tśeśe",
"stwórty", "stwórta", "stwórte",
"pêty", "pěta", "pête",
"šesty", "šesta", "šeste",
"sedymy", "sedyma", "sedyme",
"wósymy", "wósyma", "wósyme",
"źewjety", "źewjeta", "źewjete",
"źasety", "źaseta", "źasete",
"jadnasty", "jadnasta", "jadnaste",
"dwanasty", "dwanasta", "dwanaste"
]
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}