Spaces:
Build error
Build error
File size: 4,506 Bytes
b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 5e78dce ace9aa6 b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 b605eca ace9aa6 4e441f5 7da89d6 b605eca ace9aa6 d76e7c4 2153e72 b605eca 2153e72 |
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 102 103 104 105 106 107 108 109 110 |
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
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)
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()
iface2 = 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')
iface2.launch()
|