cointegrated's picture
separate the backend and the frontend
6b701ed
import gradio as gr
from translation import Translator, LANGUAGES
LANGUAGES_LIST = list(LANGUAGES.keys())
def translate_wrapper(text, src, trg, by_sentence=True, preprocess=True, random=False, num_beams=4):
src_lang = LANGUAGES.get(src)
tgt_lang = LANGUAGES.get(trg)
# if src == trg:
# return 'Please choose two different languages'
result = translator.translate(
text=text,
src_lang=src_lang,
tgt_lang=tgt_lang,
do_sample=random,
num_beams=int(num_beams),
by_sentence=by_sentence,
preprocess=preprocess,
)
return result
article = """
This is a NLLB-200-600M model fine-tuned for translation between Russian and Tyvan (Tuvan) languages,
using the data from https://tyvan.ru/.
This model is described in https://cointegrated.medium.com/a37fc706b865.
If you want to host in on your own backend, consider running this dockerized app: https://github.com/slone-nlp/nllb-docker-demo.
"""
interface = gr.Interface(
translate_wrapper,
[
gr.Textbox(label="Text", lines=2, placeholder='text to translate '),
gr.Dropdown(LANGUAGES_LIST, type="value", label='source language', value=LANGUAGES_LIST[0]),
gr.Dropdown(LANGUAGES_LIST, type="value", label='target language', value=LANGUAGES_LIST[1]),
gr.Checkbox(label="by sentence", value=True),
gr.Checkbox(label="text preprocesing", value=True),
gr.Checkbox(label="randomize", value=False),
gr.Dropdown([1, 2, 3, 4, 5], label="number of beams", value=4),
],
"text",
title='Tyvan-Russian translaton',
article=article,
)
if __name__ == '__main__':
translator = Translator()
interface.launch()