File size: 3,570 Bytes
a5b0d33 8289ab0 2c9474d a5b0d33 2c9474d a5b0d33 29e3aa5 a5b0d33 2c9474d a5b0d33 8289ab0 a5b0d33 2c9474d 30e9d58 30153bc a35ce19 8289ab0 a5b0d33 8289ab0 a5b0d33 30153bc a5b0d33 1f758c0 a5b0d33 8289ab0 a5b0d33 2c9474d a5b0d33 2c9474d a5b0d33 30153bc 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
"""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."""
try:
from_lang = str(from_lang).strip()
except Exception:
from_lang = "auto"
try:
to_lang = str(to_lang).strip()
except Exception:
to_lang = "auto"
# if empty, set to auto
if not from_lang:
from_lang = "auto"
if not to_lang:
to_lang = "auto"
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)
if "Helsinki" in str(e):
res = "errors occur"
else:
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)
|