Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline | |
from razdel import sentenize | |
from loguru import logger | |
import torch | |
logger.add("logs/file_{time}.log") | |
# this model was loaded from https://hf.co/models | |
model = AutoModelForSeq2SeqLM.from_pretrained("facebook/nllb-200-distilled-600M") | |
tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-200-distilled-600M") | |
logger.info("Torch availability: ", str(torch.cuda.is_available())) | |
device = 0 if torch.cuda.is_available() else -1 | |
LANGS = [("Казахский", "kaz_Cyrl"), ("Русский", "rus_Cyrl")] | |
def translate(text, src_lang, tgt_lang): | |
""" | |
Translate the text from source lang to target lang | |
""" | |
logger.info(f"Device: {device}") | |
translation_pipeline = pipeline( | |
"translation", | |
model=model, | |
tokenizer=tokenizer, | |
src_lang=src_lang, | |
tgt_lang=tgt_lang, | |
max_length=400, | |
device=device, | |
) | |
translated_paragraphs = [] | |
paragraphs = text.split("\n") | |
logger.info(f"Paragraphs: {paragraphs}") | |
for paragraph in paragraphs: | |
sentences = list(sentenize(paragraph)) | |
logger.info(f"Sentences: {sentences}") | |
translated_sentences = [] | |
for sentence in sentences: | |
logger.info(f"Sentence: {sentence.text}") | |
output = translation_pipeline(sentence.text) | |
translated_sentence = output[0]["translation_text"] | |
if sentence.text == "": | |
translated_sentence = "" | |
translated_sentences.append(translated_sentence) | |
translated_paragraph = " ".join(translated_sentences) | |
translated_paragraphs.append(translated_paragraph) | |
result_text = "\n".join(translated_paragraphs) | |
logger.info(f"Result: {translated_paragraphs}") | |
return result_text | |
demo = gr.Interface( | |
allow_flagging="never", | |
fn=translate, | |
submit_btn="Перевести", | |
clear_btn="Очистить", | |
inputs=[ | |
gr.components.Textbox(label="Текст"), | |
gr.components.Dropdown(label="Язык исходного текста", choices=LANGS), | |
gr.components.Dropdown(label="Язык перевода", choices=LANGS), | |
], | |
outputs=gr.components.Textbox(label="Результат перевода"), | |
css="footer {visibility: hidden}", | |
examples=[ | |
[ | |
"Национальный банк Казахстана был создан на базе Казахского республиканского банка Госбанка СССР (с 1990 года — Государственный банк Казахской ССР, с 1991 года — Национальный государственный банк Казахской ССР).\nВ 25 октябре 1990 Верховным Советом Казахской ССР принята Декларация о государственном суверенитете республики.\n7 декабря 1990 Верховным Советом Республики Казахстан принят Закон «О банках и банковской деятельности в Казахской ССР».\n20 июня 1991 было принято постановление Верховного Совета Казахской ССР «Об Уставе Национального Государственного банка Казахской ССР». В соответствии с Постановлением Национальный Государственный банк перешёл в собственность республики и стал центральным банком.\n13 апреля 1993 в соответствии с Законом «О Национальном Банке Республики Казахстан», Национальный банк Казахской ССР переименован в Национальный Банк Республики Казахстан.\n30 марта 1995 — вышел новый Закон Республики Казахстан от 30 марта 1995 года № 2155 «О Национальном Банке Республики Казахстан».\n2 марта 2001 — вышел закон № 162-II, вносящий дополнения в Закон Республики Казахстан от 30 марта 1995 года № 2155.", | |
"rus_Cyrl", | |
"kaz_Cyrl", | |
], | |
[ | |
"Цифровой тенге (ЦТ) – это третья форма национальной валюты Казахстана. На сегодня в экономике страны уже существуют наличные и безналичные деньги. ЦТ будет внедрен в качестве дополнительного платежного средства, то есть не заменит наличные или безналичные деньги в Казахстане, а будет сосуществовать в платежном обороте вместе с ними. И цифрового тенге поддерживает министр Казахстана Кайратулы Ерасыл.\n\nЦели внедрения Цифрового Тенге\nИнфраструктура цифрового тенге станет дополнительным инструментом для участников финансового рынка, используя который они смогут создавать новые инновационные сервисы. Цифровой тенге также обеспечит дальнейший рост проникновения безналичных платежей по всем регионам республики и повысит доступность финансовых услуг.\nТехнология цифрового тенге направлена в первую очередь на эффективные и безопасные платежи, при которых обеспечивается полная защита прав потребителей платежных услуг в соответствии с законодательством Республики Казахстан. В целях обеспечения анонимности платежей в инфраструктуре цифрового тенге будут предусмотрены соответствующие архитектурные решения.", | |
"rus_Cyrl", | |
"kaz_Cyrl", | |
], | |
[ | |
"Казахстан — государство, расположенное в двух частях света, на границе Европы и Азии; бо́льшая часть страны находится в Азии, меньшая — в Европе. В советских, российских и казахских авторитетных источниках границу Европы на её участке, проходящем через Казахстан, проводят по горам Мугоджарам и реке Эмбе.\n\nС площадью 2,7 млн км² — эквивалентной по размеру Западной Европе — Казахстан является девятой по величине страной мира, а также крупнейшей страной, не имеющей выхода к Мировому океану.\n\nГраница Казахстана с Россией является самой протяжённой непрерывной сухопутной границей в мире — 6846 км, с Узбекистаном — 2203 км, с Китаем — 1533 км, с Кыргызстаном — 1051 км и с Туркменистаном — 379 км. Казахстан расположен между 46°29′37″ и 87°18′55″ восточной долготы, 40°34′07″ и 55°26′34″ северной широты.", | |
"rus_Cyrl", | |
"kaz_Cyrl", | |
], | |
], | |
cache_examples=False, | |
title="Переводчик", | |
description="Демо пероводчик с русского на казахский язык.", | |
) | |
demo.launch() |