mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-11-04 01:48:04 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from ...attrs import LIKE_NUM
 | 
						||
 | 
						||
 | 
						||
# Thirteen, fifteen etc. are written separate: on üç
 | 
						||
 | 
						||
_num_words = [
 | 
						||
    "bir",
 | 
						||
    "iki",
 | 
						||
    "üç",
 | 
						||
    "dört",
 | 
						||
    "beş",
 | 
						||
    "altı",
 | 
						||
    "yedi",
 | 
						||
    "sekiz",
 | 
						||
    "dokuz",
 | 
						||
    "on",
 | 
						||
    "yirmi",
 | 
						||
    "otuz",
 | 
						||
    "kırk",
 | 
						||
    "elli",
 | 
						||
    "altmış",
 | 
						||
    "yetmiş",
 | 
						||
    "seksen",
 | 
						||
    "doksan",
 | 
						||
    "yüz",
 | 
						||
    "bin",
 | 
						||
    "milyon",
 | 
						||
    "milyar",
 | 
						||
    "trilyon",
 | 
						||
    "katrilyon",
 | 
						||
    "kentilyon",
 | 
						||
]
 | 
						||
 | 
						||
 | 
						||
_ordinal_words = [
 | 
						||
    "birinci",
 | 
						||
    "ikinci",
 | 
						||
    "üçüncü",
 | 
						||
    "dördüncü",
 | 
						||
    "beşinci",
 | 
						||
    "altıncı",
 | 
						||
    "yedinci",
 | 
						||
    "sekizinci",
 | 
						||
    "dokuzuncu",
 | 
						||
    "onuncu",
 | 
						||
    "yirminci",
 | 
						||
    "otuzuncu",
 | 
						||
    "kırkıncı",
 | 
						||
    "ellinci",
 | 
						||
    "altmışıncı",
 | 
						||
    "yetmişinci",
 | 
						||
    "sekseninci",
 | 
						||
    "doksanıncı",
 | 
						||
    "yüzüncü",
 | 
						||
    "bininci",
 | 
						||
    "mliyonuncu",
 | 
						||
    "milyarıncı",
 | 
						||
    "trilyonuncu",
 | 
						||
    "katrilyonuncu",
 | 
						||
    "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}
 |