mirror of
https://github.com/explosion/spaCy.git
synced 2024-11-14 13:47:13 +03:00
90 lines
1.7 KiB
Python
90 lines
1.7 KiB
Python
|
from ...attrs import LIKE_NUM
|
|||
|
|
|||
|
|
|||
|
# Eleven, twelve etc. are written separate: on bir, on iki
|
|||
|
|
|||
|
_num_words = [
|
|||
|
"bir",
|
|||
|
"iki",
|
|||
|
"üç",
|
|||
|
"dörd",
|
|||
|
"beş",
|
|||
|
"altı",
|
|||
|
"yeddi",
|
|||
|
"səkkiz",
|
|||
|
"doqquz",
|
|||
|
"on",
|
|||
|
"iyirmi",
|
|||
|
"otuz",
|
|||
|
"qırx",
|
|||
|
"əlli",
|
|||
|
"altmış",
|
|||
|
"yetmiş",
|
|||
|
"səksən",
|
|||
|
"doxsan",
|
|||
|
"yüz",
|
|||
|
"min",
|
|||
|
"milyon",
|
|||
|
"milyard",
|
|||
|
"trilyon",
|
|||
|
"kvadrilyon",
|
|||
|
"kentilyon",
|
|||
|
]
|
|||
|
|
|||
|
|
|||
|
_ordinal_words = [
|
|||
|
"birinci",
|
|||
|
"ikinci",
|
|||
|
"üçüncü",
|
|||
|
"dördüncü",
|
|||
|
"beşinci",
|
|||
|
"altıncı",
|
|||
|
"yedinci",
|
|||
|
"səkkizinci",
|
|||
|
"doqquzuncu",
|
|||
|
"onuncu",
|
|||
|
"iyirminci",
|
|||
|
"otuzuncu",
|
|||
|
"qırxıncı",
|
|||
|
"əllinci",
|
|||
|
"altmışıncı",
|
|||
|
"yetmişinci",
|
|||
|
"səksəninci",
|
|||
|
"doxsanıncı",
|
|||
|
"yüzüncü",
|
|||
|
"mininci",
|
|||
|
"milyonuncu",
|
|||
|
"milyardıncı",
|
|||
|
"trilyonuncu",
|
|||
|
"kvadrilyonuncu",
|
|||
|
"kentilyonuncu",
|
|||
|
]
|
|||
|
|
|||
|
_ordinal_endings = ("inci", "ıncı", "nci", "ncı", "uncu", "üncü")
|
|||
|
|
|||
|
|
|||
|
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()
|
|||
|
# Check cardinal number
|
|||
|
if text_lower in _num_words:
|
|||
|
return True
|
|||
|
# Check ordinal number
|
|||
|
if text_lower in _ordinal_words:
|
|||
|
return True
|
|||
|
if text_lower.endswith(_ordinal_endings):
|
|||
|
if text_lower[:-3].isdigit() or text_lower[:-4].isdigit():
|
|||
|
return True
|
|||
|
return False
|
|||
|
|
|||
|
|
|||
|
LEX_ATTRS = {LIKE_NUM: like_num}
|