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 |
|