import gradio as gr import yaml from joeynmt.prediction import load_params_for_prediction,translate from huggingface_hub import hf_hub_download def load_config(path="configs/default.yaml") -> dict: """ 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 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) def get_translation(source_sentence,type_=2): ''' This takes a sentence and gets the translation. type_=2 tells joeynmt translate that it should expect a sentence. ''' pred = translate(params,source_language,2) return pred title = "Interact with Masakhane Benchmark Models" description = "Interact with Masakhane Benchmark Models" iface = gr.Interface(fn=get_translation, inputs=[gr.inputs.Textbox(label="sentence"), gr.inputs.Textbox(label="translation")], outputs='text', title=title, description=description, examples=[["God is great that he sent Jesus to help us", "Mungu ni mkuu kwamba alimtuma Yesu atusaidie"]], enable_queue=True) iface.launch()