Spaces:
Running
Running
Yurii Paniv
commited on
Commit
•
e5a3778
1
Parent(s):
f99f689
Improve number handling in complex words
Browse files- formatter.py +19 -12
formatter.py
CHANGED
@@ -15,15 +15,20 @@ def preprocess_text(text, autostress=False):
|
|
15 |
|
16 |
def detect_num_and_convert(word):
|
17 |
numbers = "0123456789,."
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
26 |
|
|
|
27 |
text = " ".join([detect_num_and_convert(word) for word in text.split(" ")])
|
28 |
|
29 |
# fallback numbers
|
@@ -78,7 +83,9 @@ def preprocess_text(text, autostress=False):
|
|
78 |
|
79 |
|
80 |
if __name__ == "__main__":
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
|
15 |
|
16 |
def detect_num_and_convert(word):
|
17 |
numbers = "0123456789,."
|
18 |
+
result = []
|
19 |
+
parts = word.split("-") # for handling complex words
|
20 |
+
for part in parts:
|
21 |
+
is_number = all(map(lambda x: x in numbers, part))
|
22 |
+
if is_number:
|
23 |
+
try:
|
24 |
+
result.append(num2words.num2words(part, lang="uk"))
|
25 |
+
except:
|
26 |
+
result.append(part)
|
27 |
+
else:
|
28 |
+
result.append(part)
|
29 |
+
return "-".join(result)
|
30 |
|
31 |
+
#print([detect_num_and_convert(word) for word in text.split(" ")])
|
32 |
text = " ".join([detect_num_and_convert(word) for word in text.split(" ")])
|
33 |
|
34 |
# fallback numbers
|
|
|
83 |
|
84 |
|
85 |
if __name__ == "__main__":
|
86 |
+
assert preprocess_text("Quality of life update") == "КВюаліті оф ліфе юпдате"
|
87 |
+
assert preprocess_text("Він украв 20000000 $") == "Він украв двадцять мільйонів долар"
|
88 |
+
assert preprocess_text("111 000 000 000 доларів державного боргу.") == "сто одинадцять мільярдів доларів державного боргу."
|
89 |
+
assert preprocess_text("11100000001 доларів державного боргу.") == "одинадцять мільярдів сто мільйонів одна доларів державного боргу."
|
90 |
+
assert preprocess_text("це 19-річне вино.") == "це дев'ятнадцять-річне вино."
|
91 |
+
assert preprocess_text("10-30-40-50-5-9-5") == "десять-тридцять-сорок-п'ятдесят-п'ять-дев'ять-п'ять"
|