mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 09:57:26 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from ...attrs import LIKE_NUM
 | 
						||
 | 
						||
_num_words = [
 | 
						||
    "нула",
 | 
						||
    "еден",
 | 
						||
    "една",
 | 
						||
    "едно",
 | 
						||
    "два",
 | 
						||
    "две",
 | 
						||
    "три",
 | 
						||
    "четири",
 | 
						||
    "пет",
 | 
						||
    "шест",
 | 
						||
    "седум",
 | 
						||
    "осум",
 | 
						||
    "девет",
 | 
						||
    "десет",
 | 
						||
    "единаесет",
 | 
						||
    "дванаесет",
 | 
						||
    "тринаесет",
 | 
						||
    "четиринаесет",
 | 
						||
    "петнаесет",
 | 
						||
    "шеснаесет",
 | 
						||
    "седумнаесет",
 | 
						||
    "осумнаесет",
 | 
						||
    "деветнаесет",
 | 
						||
    "дваесет",
 | 
						||
    "триесет",
 | 
						||
    "четириесет",
 | 
						||
    "педесет",
 | 
						||
    "шеесет",
 | 
						||
    "седумдесет",
 | 
						||
    "осумдесет",
 | 
						||
    "деведесет",
 | 
						||
    "сто",
 | 
						||
    "двесте",
 | 
						||
    "триста",
 | 
						||
    "четиристотини",
 | 
						||
    "петстотини",
 | 
						||
    "шестотини",
 | 
						||
    "седумстотини",
 | 
						||
    "осумстотини",
 | 
						||
    "деветстотини",
 | 
						||
    "илјада",
 | 
						||
    "илјади",
 | 
						||
    "милион",
 | 
						||
    "милиони",
 | 
						||
    "милијарда",
 | 
						||
    "милијарди",
 | 
						||
    "билион",
 | 
						||
    "билиони",
 | 
						||
    "двајца",
 | 
						||
    "тројца",
 | 
						||
    "четворица",
 | 
						||
    "петмина",
 | 
						||
    "шестмина",
 | 
						||
    "седуммина",
 | 
						||
    "осуммина",
 | 
						||
    "деветмина",
 | 
						||
    "обата",
 | 
						||
    "обајцата",
 | 
						||
    "прв",
 | 
						||
    "втор",
 | 
						||
    "трет",
 | 
						||
    "четврт",
 | 
						||
    "седм",
 | 
						||
    "осм",
 | 
						||
    "двестоти",
 | 
						||
    "два-три",
 | 
						||
    "два-триесет",
 | 
						||
    "два-триесетмина",
 | 
						||
    "два-тринаесет",
 | 
						||
    "два-тројца",
 | 
						||
    "две-три",
 | 
						||
    "две-тристотини",
 | 
						||
    "пет-шеесет",
 | 
						||
    "пет-шеесетмина",
 | 
						||
    "пет-шеснаесетмина",
 | 
						||
    "пет-шест",
 | 
						||
    "пет-шестмина",
 | 
						||
    "пет-шестотини",
 | 
						||
    "петина",
 | 
						||
    "осмина",
 | 
						||
    "седум-осум",
 | 
						||
    "седум-осумдесет",
 | 
						||
    "седум-осуммина",
 | 
						||
    "седум-осумнаесет",
 | 
						||
    "седум-осумнаесетмина",
 | 
						||
    "три-четириесет",
 | 
						||
    "три-четиринаесет",
 | 
						||
    "шеесет",
 | 
						||
    "шеесетина",
 | 
						||
    "шеесетмина",
 | 
						||
    "шеснаесет",
 | 
						||
    "шеснаесетмина",
 | 
						||
    "шест-седум",
 | 
						||
    "шест-седумдесет",
 | 
						||
    "шест-седумнаесет",
 | 
						||
    "шест-седумстотини",
 | 
						||
    "шестоти",
 | 
						||
    "шестотини",
 | 
						||
]
 | 
						||
 | 
						||
 | 
						||
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
 | 
						||
 | 
						||
    if text_lower.endswith(("а", "о", "и")):
 | 
						||
        if text_lower[:-1] in _num_words:
 | 
						||
            return True
 | 
						||
 | 
						||
    if text_lower.endswith(("ти", "та", "то", "на")):
 | 
						||
        if text_lower[:-2] in _num_words:
 | 
						||
            return True
 | 
						||
 | 
						||
    if text_lower.endswith(("ата", "иот", "ите", "ина", "чки")):
 | 
						||
        if text_lower[:-3] in _num_words:
 | 
						||
            return True
 | 
						||
 | 
						||
    if text_lower.endswith(("мина", "тина")):
 | 
						||
        if text_lower[:-4] in _num_words:
 | 
						||
            return True
 | 
						||
    return False
 | 
						||
 | 
						||
 | 
						||
LEX_ATTRS = {LIKE_NUM: like_num}
 |