Spaces:
Build error
Build error
Commit
·
cd1f2cb
1
Parent(s):
c0a0850
pre-loading models
Browse files
app.py
CHANGED
@@ -10,7 +10,7 @@ language_map = {'English':'en','Swahili':'sw','Fon':'fon','Igbo':'ig',
|
|
10 |
'Efik':'efi','Twi':'twi','Afrikaans':'af','Yoruba':'yo'}
|
11 |
|
12 |
#List of available languages I worked on.
|
13 |
-
|
14 |
|
15 |
|
16 |
def load_config(path="configs/default.yaml") -> dict:
|
@@ -27,8 +27,8 @@ def load_config(path="configs/default.yaml") -> dict:
|
|
27 |
return cfg
|
28 |
|
29 |
def load_model(source_language_,target_language_):
|
30 |
-
source_language = language_map[source_language_]
|
31 |
-
target_language = language_map[target_language_]
|
32 |
|
33 |
#source_language = 'en'
|
34 |
#target_language = 'sw'
|
@@ -50,11 +50,23 @@ def load_model(source_language_,target_language_):
|
|
50 |
params = load_params_for_prediction(parsed_yaml_file,best_ckpt)
|
51 |
return params
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
def get_translation(source_language,target_language,source_sentence=None,source_file=None):
|
54 |
'''
|
55 |
This takes a sentence and gets the translation.
|
56 |
type_=2 tells joeynmt translate that it should expect a sentence.
|
57 |
'''
|
|
|
|
|
|
|
|
|
|
|
58 |
source = source_sentence
|
59 |
type_=2
|
60 |
if source_file!=None:
|
@@ -62,13 +74,14 @@ def get_translation(source_language,target_language,source_sentence=None,source_
|
|
62 |
source = source_file.name
|
63 |
try:
|
64 |
|
65 |
-
params = load_model(source_language,target_language)
|
|
|
66 |
pred = translate(params,source,type_)
|
67 |
except Exception:
|
68 |
return f'There was an issue loading the translation model for {source_language} -> {target_language}. Try another pair please'
|
69 |
|
70 |
return pred[0] if source_file==None else pred
|
71 |
-
|
72 |
|
73 |
|
74 |
|
|
|
10 |
'Efik':'efi','Twi':'twi','Afrikaans':'af','Yoruba':'yo'}
|
11 |
|
12 |
#List of available languages I worked on.
|
13 |
+
available_language_pairs =['en-sw','en-af','en-ar','efi-en','en-ha','en-ig','en-fon','en-twi','sn-en','sw-en','yo-en']
|
14 |
|
15 |
|
16 |
def load_config(path="configs/default.yaml") -> dict:
|
|
|
27 |
return cfg
|
28 |
|
29 |
def load_model(source_language_,target_language_):
|
30 |
+
#source_language = language_map[source_language_]
|
31 |
+
#target_language = language_map[target_language_]
|
32 |
|
33 |
#source_language = 'en'
|
34 |
#target_language = 'sw'
|
|
|
50 |
params = load_params_for_prediction(parsed_yaml_file,best_ckpt)
|
51 |
return params
|
52 |
|
53 |
+
#Load models of all available language pairs
|
54 |
+
model_mapping = {}
|
55 |
+
for availabe_lang in available_language_pairs:
|
56 |
+
model_mapping.update({availabe_lang:load_model(availabe_lang.split('-')[0],availabe_lang.split('-')[1])})
|
57 |
+
|
58 |
+
|
59 |
+
|
60 |
def get_translation(source_language,target_language,source_sentence=None,source_file=None):
|
61 |
'''
|
62 |
This takes a sentence and gets the translation.
|
63 |
type_=2 tells joeynmt translate that it should expect a sentence.
|
64 |
'''
|
65 |
+
|
66 |
+
source_language_ = language_map[source_language]
|
67 |
+
target_language_ = language_map[target_language]
|
68 |
+
params =
|
69 |
+
|
70 |
source = source_sentence
|
71 |
type_=2
|
72 |
if source_file!=None:
|
|
|
74 |
source = source_file.name
|
75 |
try:
|
76 |
|
77 |
+
#params = load_model(source_language,target_language)
|
78 |
+
params = model_mapping[f'{source_language_}-{target_language_}']
|
79 |
pred = translate(params,source,type_)
|
80 |
except Exception:
|
81 |
return f'There was an issue loading the translation model for {source_language} -> {target_language}. Try another pair please'
|
82 |
|
83 |
return pred[0] if source_file==None else pred
|
84 |
+
|
85 |
|
86 |
|
87 |
|