Spaces:
Build error
Build error
File size: 4,026 Bytes
b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 5e78dce ace9aa6 b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 b51f7b9 2f54e99 b51f7b9 ace9aa6 b605eca ace9aa6 b51f7b9 8804405 ace9aa6 b605eca ace9aa6 b605eca ace9aa6 4e441f5 7da89d6 b605eca ace9aa6 d76e7c4 2153e72 b605eca 2153e72 8804405 |
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
import gradio as gr
import yaml
from joeynmt.prediction import load_params_for_prediction,translate
from huggingface_hub import hf_hub_download
language_map = {'English':'en','Swahili':'sw','Fon':'fon','Igbo':'ig',
'Arabic':'ar','Shona':'sn','Ẹ̀dó':'bin','Hausa':'ha',
'Efik':'efi','Twi':'twi','Afrikaans':'af','Yoruba':'yo'}
available_languages =list(language_map.keys())
def load_config(path="configs/default.yaml") -> dict:
"""
CODE ADAPTED FROM: https://github.com/joeynmt/joeynmt
Loads and parses a YAML configuration file.
:param path: path to YAML configuration file
:return: configuration dictionary
"""
with open(path, 'r', encoding="utf-8") as ymlfile:
cfg = yaml.safe_load(ymlfile)
return cfg
def load_model(source_language_,target_language_):
source_language = language_map[source_language_]
target_language = language_map[target_language_]
#source_language = 'en'
#target_language = 'sw'
translation_dir = 'main'
try:
file_yaml = hf_hub_download("chrisjay/masakhane_benchmarks", filename=f"{source_language}-{target_language}/{translation_dir}/config.yaml",force_filename='config.yaml')
src_vocab = hf_hub_download("chrisjay/masakhane_benchmarks", filename=f"{source_language}-{target_language}/{translation_dir}/src_vocab.txt")
trg_vocab = hf_hub_download("chrisjay/masakhane_benchmarks", filename=f"{source_language}-{target_language}/{translation_dir}/trg_vocab.txt")
best_ckpt = hf_hub_download("chrisjay/masakhane_benchmarks", filename=f"{source_language}-{target_language}/{translation_dir}/best.ckpt")
except Exception:
raise Exception(f'It seems we do not have a working configuration yet repo for {source_language} -> {target_language}. \n You could help us by creating it here: https://huggingface.co/chrisjay/masakhane_benchmarks/tree/main')
parsed_yaml_file = load_config(file_yaml)
parsed_yaml_file['data']['src_vocab']=src_vocab
parsed_yaml_file['data']['trg_vocab']=trg_vocab
params = load_params_for_prediction(parsed_yaml_file,best_ckpt)
return params
'''
#Using global params for English and Swahili (default pairs for this demo) to save time taken to load them.
params=None
params = load_model('English','Swahili')
'''
def get_translation(source_language,target_language,source_sentence=None,source_file=None):
'''
This takes a sentence and gets the translation.
type_=2 tells joeynmt translate that it should expect a sentence.
'''
source = source_sentence
type_=2
if source_file!=None:
type_=1
source = source_file.name
try:
params = load_model(source_language,target_language) #Uncomment when not Using global params for English and Swahili to save time taken to load them
pred = translate(params,source,type_)
except Exception:
return 'There was an issue loading the translation model for this language pair.'
return pred[0] if source_file==None else pred
title = "Interact with Masakhane Benchmark Models"
description = "This is a demo to enable you interact with some of the Masakhane Benchmark Models"
iface = gr.Interface(fn=get_translation,
inputs=[gr.inputs.Dropdown(choices = available_languages,default='English'),
gr.inputs.Dropdown(choices = available_languages,default='Swahili'),
gr.inputs.Textbox(label="Input"),
gr.inputs.File(file_count="single", type="file", label='File with sentences', optional=True)],
outputs=gr.outputs.Textbox(type="auto", label='Translation'),
title=title,
description=description,
examples=[
['English','Swahili'],
['English','Afrikaans'],['English','Arabic'],['Efik','English'],['English','Hausa'],
['English','Igbo'],['English','Fon'],['English','Twi'],['Shona','English'],['Swahili','English'],
['Yoruba','English']],
enable_queue=True,
theme='huggingface')
iface.launch()
|