Spaces:
Build error
Build error
File size: 3,976 Bytes
b605eca ace9aa6 379a274 ace9aa6 b605eca ace9aa6 b605eca ace9aa6 5e78dce ace9aa6 b605eca ace9aa6 25e3777 b605eca ace9aa6 b605eca ace9aa6 379a274 ace9aa6 b605eca ace9aa6 b51f7b9 61463dd ace9aa6 fa5e9aa ace9aa6 b605eca 2c732ad 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 |
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'}
#List of available languages I worked on.
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 repo yet 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 f'There was an issue loading the translation model for {source_language} -> {target_language}. Try another pair please'
return pred[0] if source_file==None else pred
title = "Interact with Masakhane Benchmark Models"
description = "This enables you to interact with some of the Masakhane Benchmark Models and keep up with their improvement. Some of these models undergo finetuning on a regular basis. This way, you can easily use the best with no hassles."
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()
|