File size: 3,164 Bytes
a5b0d33 8289ab0 2c9474d a5b0d33 2c9474d a5b0d33 29e3aa5 a5b0d33 2c9474d a5b0d33 8289ab0 a5b0d33 2c9474d a35ce19 8289ab0 a5b0d33 8289ab0 a5b0d33 1f758c0 a5b0d33 8289ab0 a5b0d33 2c9474d a5b0d33 2c9474d a5b0d33 2c9474d a5b0d33 a8fe3e5 a5b0d33 2c9474d a5b0d33 8289ab0 2c9474d 1f758c0 2c9474d a8fe3e5 a5b0d33 |
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 |
"""Prep gradio API."""
# pylint: diable=invalid-name
from typing import List, Optional, Union
import gradio as gr
from easynmt import EasyNMT
from logzero import logger
translate = EasyNMT("opus-mt").translate
def opusmt(
text: str,
from_lang: Optional[str] = None,
to_lang: str = "zh",
) -> Union[str, List[str]]:
"""Translate via easyntm-opus-mt."""
logger.debug("%s, %s, %s", text[:100], from_lang, to_lang)
if to_lang in ["auto"]:
if from_lang in ["zh"]:
to_lang = "en"
else:
to_lang = "zh"
if from_lang in ["auto"]:
from_lang = None
try:
res = translate(
text,
target_lang=to_lang,
source_lang=from_lang,
)
except Exception as e:
logger.error(e)
res = f"errors: {e}"
return res
inputs = [
gr.Textbox(
label="text to translate",
value="",
lines=7,
max_lines=200,
),
gr.Textbox(label="from-lang", value="auto"),
gr.Textbox(label="to-lang", value="zh"),
]
outputs = [
gr.Textbox(
label="translated",
lines=7,
max_lines=200,
),
]
description = """Supported languages: aav, aed, af, alv, am, ar, art, ase, az, bat, bcl, be, bem, ber, bg, bi, bn, bnt, bzs, ca, cau, ccs, ceb, cel, chk, cpf, crs, cs, csg, csn, cus, cy, da, de, dra, ee, efi, el, en, eo, es, et, eu, euq, fi, fj, fr, fse, ga, gaa, gil, gl, grk, guw, gv, ha, he, hi, hil, ho, hr, ht, hu, hy, id, ig, ilo, is, iso, it, ja, jap, ka, kab, kg, kj, kl, ko, kqn, kwn, kwy, lg, ln, loz, lt, lu, lua, lue, lun, luo, lus, lv, map, mfe, mfs, mg, mh, mk, mkh, ml, mos, mr, ms, mt, mul, ng, nic, niu, nl, no, nso, ny, nyk, om, pa, pag, pap, phi, pis, pl, pon, poz, pqe, pqw, prl, pt, rn, rnd, ro, roa, ru, run, rw, sal, sg, sh, sit, sk, sl, sm, sn, sq, srn, ss, ssp, st, sv, sw, swc, taw, tdt, th, ti, tiv, tl, tll, tn, to, toi, tpi, tr, trk, ts, tum, tut, tvl, tw, ty, tzo, uk, umb, ur, ve, vi, vsl, wa, wal, war, wls, xh, yap, yo, yua, zai, zh, zne. Refer to [https://github.com/UKPLab/EasyNMT](https://github.com/UKPLab/EasyNMT) for details. Estimated speed 6-60 sents/sec.
"""
_ = """
iface = gr.Interface(
fn=opusmt,
inputs=inputs,
outputs=outputs,
title="opus mt",
description=description,
examples=[
["This is a test.", "en", "zh"],
["This is a test.", "en", "de"],
],
allow_flagging="never",
cache_examples=False,
)
# """
with gr.Blocks() as iface:
with gr.Row():
text = gr.Textbox(
label="text to translate",
value="",
lines=7,
max_lines=200,
)
out = gr.Textbox(
label="translated",
lines=7,
max_lines=200,
)
with gr.Row():
from_lang = gr.Textbox(label="from-lang", value="auto")
to_lang = gr.Textbox(label="to-lang", value="zh")
btn = gr.Button("Translate")
btn.click(
fn=opusmt,
inputs=[text, from_lang, to_lang],
outputs=out,
api_name="opusmt",
)
gr.Markdown(f"{description}")
iface.launch(enable_queue=True)
|