mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-31 16:07:41 +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}
 |