File size: 2,172 Bytes
d60a3d5
a03a333
d60a3d5
2189552
 
 
 
 
 
 
 
 
 
 
 
 
 
a03a333
 
ff6eafd
d60a3d5
2189552
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a03a333
d60a3d5
 
2189552
 
 
 
d60a3d5
2189552
a03a333
 
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
import gradio as gr
from transformers import MarianMTModel, MarianTokenizer

# Function to dynamically load the model and tokenizer based on selected languages
def translate_text(text, source_language, target_language):
    # Construct model name based on selected languages
    model_name = f"Helsinki-NLP/opus-mt-{source_language}-{target_language}"

    # Load tokenizer and model
    try:
        tokenizer = MarianTokenizer.from_pretrained(model_name)
        model = MarianMTModel.from_pretrained(model_name)
    except Exception as e:
        return f"Failed to load model for {source_language} to {target_language}: {str(e)}"

    # Translate text
    translated = model.generate(**tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512))
    translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
    
    return translated_text

# Define language options (ISO 639-1 codes and names)
# Note: This is a simplified subset for demonstration. Expand based on available models.
language_options = [
    ('en', 'English'),
    ('es', 'Spanish'),
    ('fr', 'French'),
    ('de', 'German'),
    ('zh', 'Chinese'),
    ('ru', 'Russian'),
    ('ar', 'Arabic'),
    ('it', 'Italian'),
    ('pt', 'Portuguese'),
    ('nl', 'Dutch'),
    # Add more languages as needed
]

# Convert language options to the format expected by the dropdown
language_dropdown_options = [(code, f"{name} ({code})") for code, name in language_options]

# Create dropdowns for source and target languages
source_language_dropdown = gr.inputs.Dropdown(choices=language_dropdown_options, label="Source Language")
target_language_dropdown = gr.inputs.Dropdown(choices=language_dropdown_options, label="Target Language")

# Define the interface
iface = gr.Interface(
    fn=translate_text,
    inputs=[gr.inputs.Textbox(lines=2, placeholder="Enter text to translate..."), source_language_dropdown, target_language_dropdown],
    outputs=gr.outputs.Textbox(),
    title="Text Translator with Dynamic Helsinki NLP Models",
    description="Select source and target languages to translate text using Helsinki NLP models."
)

# Launch the app
iface.launch()