mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-25 05:01:02 +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}
 |