Spaces:
Sleeping
Sleeping
File size: 1,289 Bytes
0a4e172 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import re
NO_LETTERS = "Unknown / No letters found"
def detect_language(text: str) -> str:
cleaned_text = re.sub(r'[\s\d\W_]+', '', text)
if not cleaned_text:
return NO_LETTERS
persian_pattern = re.compile(r'[\u0600-\u06FF\u0750-\u077F\uFB50-\uFDFF\uFE70-\uFEFF]')
english_pattern = re.compile(r'[a-zA-Z]')
persian_count = len(persian_pattern.findall(cleaned_text))
english_count = len(english_pattern.findall(cleaned_text))
if persian_count > english_count:
return "fa"
elif english_count > persian_count:
return "en"
else:
return "mixed"
def detect_digit_language(text: str):
"""Guesses the language from the digits alone: Persian digits -> "fa",
ASCII digits -> "en", no digits -> None. Used when a text has no letters."""
if re.search(r'[\u06F0-\u06F9\u0660-\u0669]', text):
return "fa"
if re.search(r'[0-9]', text):
return "en"
return None
def convert_fa_num_to_en(text:str) -> str:
fa_to_en = {
'۰':'0',
'۱':'1',
'۲':'2',
'۳':'3',
'۴':'4',
'۵':'5',
'۶':'6',
'۷':'7',
'۸':'8',
'۹':'9',
}
for k, v in fa_to_en.items():
text = text.replace(k, v)
return text |