Became able to read fractions.

#1
Files changed (1) hide show
  1. app.py +24 -2
app.py CHANGED
@@ -26,6 +26,7 @@ units = ["", "нэгэн", "хоёрон", "гурван", "дөрвөн", "та
26
  tens = ["", "араван", "хорь", "гуч", "дөч", "тавь", "жар", "дал", "ная", "ер"]
27
  hundreds = ["", "нэг зуун", "хоёр зуун", "гурав зуун", "дөрөв зуун",
28
  "тав зуун", "зургаа зуун", "долоо зуун", "найм зуун", "ес зуун"]
 
29
 
30
  def number_to_words(n):
31
  if n == 0:
@@ -51,7 +52,27 @@ def number_to_words(n):
51
  return " ".join(parts)
52
 
53
  def replace_numbers(text):
54
- return re.sub(r'\d+', lambda m: number_to_words(int(m.group())), text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
 
56
  def preprocess_mongolian(text):
57
  text = text.lower()
@@ -231,7 +252,8 @@ examples = [
231
  ["Хиймэл оюун ухааны салбарт ажиллаж буй залуу", "Bataa", 0.01, 0.95, 1.6, 1500],
232
  ["Иргэдийн хувьд төлөвлөгөөт хязгаарлалтад бухимдалтай байгаагаас гадна хязгаарлалт нь урьдчилсан мэдэгдсэн цагаас өөр байгаа зэргээс шалтгаалан урьдчилан бэлтгэл хангах боломжгүй!!!", "Bataa", 0.1, 0.95, 1.6, 1500],
233
  ["Тэрээр мэргэжлийн сүмогийн түүхэнд хамгийн олон удаа нэг ч өнжилгүй дараалан барилдсан бөхөөр тодорч, ийнхүү дэлхийн дээд амжилтын эзэн болсон байна.", "Bataa", 0.01, 0.95, 1.6, 1500],
234
- ["Үүний улмаас ид ажлын үе болох зургаа, долоодугаар сард тусгай зөвшөөрлөө авч чадаагүй, уулын ажлын төлөвлөгөөгөө батлуулж амжаагүй тохиолдлууд гарч байсан.", "Bataa", 0.01, 0.95, 1.6, 1500]
 
235
  ]
236
 
237
  VOICES = ["Bataa"]
 
26
  tens = ["", "араван", "хорь", "гуч", "дөч", "тавь", "жар", "дал", "ная", "ер"]
27
  hundreds = ["", "нэг зуун", "хоёр зуун", "гурав зуун", "дөрөв зуун",
28
  "тав зуун", "зургаа зуун", "долоо зуун", "найм зуун", "ес зуун"]
29
+ decimals = ["арваны", "зууны", "мянганы"]
30
 
31
  def number_to_words(n):
32
  if n == 0:
 
52
  return " ".join(parts)
53
 
54
  def replace_numbers(text):
55
+ def convert_numbers(match):
56
+ num_str = match.group()
57
+ if '.' in num_str:
58
+ parts = num_str.split('.')
59
+ before_decimal = parts[0]
60
+ after_decimal = parts[1] if len(parts) > 1 else ""
61
+
62
+ before_words = number_to_words(int(before_decimal))
63
+
64
+ after_words = ""
65
+ if after_decimal and not all(digit == '0' for digit in after_decimal):
66
+ decimals_words = decimals[len(after_decimal) -1]
67
+ after_words = number_to_words(int(after_decimal))
68
+
69
+ return f"{before_words} {decimals_words} {after_words}"
70
+ else:
71
+ return before_words
72
+ else:
73
+ return number_to_words(int(num_str))
74
+
75
+ return re.sub(r'\d+\.?\d*', convert_numbers, text)
76
 
77
  def preprocess_mongolian(text):
78
  text = text.lower()
 
252
  ["Хиймэл оюун ухааны салбарт ажиллаж буй залуу", "Bataa", 0.01, 0.95, 1.6, 1500],
253
  ["Иргэдийн хувьд төлөвлөгөөт хязгаарлалтад бухимдалтай байгаагаас гадна хязгаарлалт нь урьдчилсан мэдэгдсэн цагаас өөр байгаа зэргээс шалтгаалан урьдчилан бэлтгэл хангах боломжгүй!!!", "Bataa", 0.1, 0.95, 1.6, 1500],
254
  ["Тэрээр мэргэжлийн сүмогийн түүхэнд хамгийн олон удаа нэг ч өнжилгүй дараалан барилдсан бөхөөр тодорч, ийнхүү дэлхийн дээд амжилтын эзэн болсон байна.", "Bataa", 0.01, 0.95, 1.6, 1500],
255
+ ["Үүний улмаас ид ажлын үе болох зургаа, долоодугаар сард тусгай зөвшөөрлөө авч чадаагүй, уулын ажлын төлөвлөгөөгөө батлуулж амжаагүй тохиолдлууд гарч байсан.", "Bataa", 0.01, 0.95, 1.6, 1500],
256
+ ["Өөрөөр хэлбэл, жижиг, дунд бизнесүүдийг дэмжих, татварын суурийг тэлэх зорилгоор 90 хувийн татварыг хөнгөлж 1 хувийн орлогын татвар төлдөг босго 1.5 тэрбум байгааг 2.5 тэрбум болгон нэмэгдүүлнэ.", 0.01, 0.95, 1.6, 1500]
257
  ]
258
 
259
  VOICES = ["Bataa"]