MinAA commited on
Commit
3832d6e
·
1 Parent(s): 498810e
Files changed (1) hide show
  1. app.py +43 -3
app.py CHANGED
@@ -187,11 +187,19 @@ def summarizer(text, max_length, min_length, model_name):
187
  return f"Ошибка: {str(e)}"
188
 
189
  @measure_time_and_save("Переводчик")
190
- def translator(text, model_name):
191
  """Перевод текста"""
192
  try:
193
  translator_pipe = get_pipeline("translation", model_name)
194
- result = translator_pipe(text)
 
 
 
 
 
 
 
 
195
  if isinstance(result, list):
196
  result = result[0]
197
  return result['translation_text']
@@ -685,12 +693,44 @@ with gr.Blocks(title="Трансформеры Hugging Face", theme=gr.themes.So
685
  value="Helsinki-NLP/opus-mt-en-ru",
686
  label="Выберите модель"
687
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
688
  translator_btn = gr.Button("Перевести", variant="primary")
689
  with gr.Column():
690
  translator_output = gr.Textbox(label="Перевод", lines=3)
 
 
 
 
 
 
 
 
 
 
 
 
691
  translator_btn.click(
692
  translator,
693
- inputs=[translator_input, translator_model],
694
  outputs=translator_output
695
  )
696
 
 
187
  return f"Ошибка: {str(e)}"
188
 
189
  @measure_time_and_save("Переводчик")
190
+ def translator(text, model_name, src_lang=None, tgt_lang=None):
191
  """Перевод текста"""
192
  try:
193
  translator_pipe = get_pipeline("translation", model_name)
194
+
195
+ # Для mBART моделей требуются src_lang и tgt_lang
196
+ if "mbart" in model_name.lower():
197
+ if not src_lang or not tgt_lang:
198
+ return "Ошибка: Для модели mBART необходимо указать исходный и целевой языки"
199
+ result = translator_pipe(text, src_lang=src_lang, tgt_lang=tgt_lang)
200
+ else:
201
+ result = translator_pipe(text)
202
+
203
  if isinstance(result, list):
204
  result = result[0]
205
  return result['translation_text']
 
693
  value="Helsinki-NLP/opus-mt-en-ru",
694
  label="Выберите модель"
695
  )
696
+ translator_src_lang = gr.Dropdown(
697
+ choices=[
698
+ "en_XX", "ru_RU", "de_DE", "fr_XX", "es_XX",
699
+ "it_IT", "pt_XX", "ja_XX", "ko_KR", "zh_CN",
700
+ "ar_AR", "hi_IN", "tr_TR", "vi_VN", "th_TH"
701
+ ],
702
+ value="en_XX",
703
+ label="Исходный язык (для mBART)",
704
+ visible=False
705
+ )
706
+ translator_tgt_lang = gr.Dropdown(
707
+ choices=[
708
+ "en_XX", "ru_RU", "de_DE", "fr_XX", "es_XX",
709
+ "it_IT", "pt_XX", "ja_XX", "ko_KR", "zh_CN",
710
+ "ar_AR", "hi_IN", "tr_TR", "vi_VN", "th_TH"
711
+ ],
712
+ value="ru_RU",
713
+ label="Целевой язык (для mBART)",
714
+ visible=False
715
+ )
716
  translator_btn = gr.Button("Перевести", variant="primary")
717
  with gr.Column():
718
  translator_output = gr.Textbox(label="Перевод", lines=3)
719
+
720
+ def update_lang_visibility(model_name):
721
+ """Показывает/скрывает поля языков в зависимости от модели"""
722
+ is_mbart = "mbart" in model_name.lower()
723
+ return gr.update(visible=is_mbart), gr.update(visible=is_mbart)
724
+
725
+ translator_model.change(
726
+ fn=update_lang_visibility,
727
+ inputs=translator_model,
728
+ outputs=[translator_src_lang, translator_tgt_lang]
729
+ )
730
+
731
  translator_btn.click(
732
  translator,
733
+ inputs=[translator_input, translator_model, translator_src_lang, translator_tgt_lang],
734
  outputs=translator_output
735
  )
736