rehanafzal commited on
Commit
bf8d8c7
·
verified ·
1 Parent(s): 9724a91

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -0
app.py ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Import necessary libraries
2
+ import streamlit as st
3
+ from transformers import MarianMTModel, MarianTokenizer
4
+ import torch
5
+
6
+ # Function to load the tokenizer and model for a given pair of languages
7
+ def load_model(src_lang, tgt_lang):
8
+ model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}"
9
+ tokenizer = MarianTokenizer.from_pretrained(model_name)
10
+ model = MarianMTModel.from_pretrained(model_name)
11
+ return tokenizer, model
12
+
13
+ # Function to translate text
14
+ def translate_text(tokenizer, model, text):
15
+ inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512)
16
+ with torch.no_grad():
17
+ translated = model.generate(**inputs)
18
+ result = tokenizer.decode(translated[0], skip_special_tokens=True)
19
+ return result
20
+
21
+ # Streamlit UI
22
+ st.title("\U0001F310 Multilingual Translation App")
23
+ st.write("Translate text between multiple languages using open-source models!")
24
+
25
+ # Extended Language options
26
+ language_pairs = {
27
+ "English to French": ("en", "fr"),
28
+ "French to English": ("fr", "en"),
29
+ "English to Spanish": ("en", "es"),
30
+ "Spanish to English": ("es", "en"),
31
+ "English to German": ("en", "de"),
32
+ "German to English": ("de", "en"),
33
+ "English to Italian": ("en", "it"),
34
+ "Italian to English": ("it", "en"),
35
+ "English to Portuguese": ("en", "pt"),
36
+ "Portuguese to English": ("pt", "en"),
37
+ "English to Russian": ("en", "ru"),
38
+ "Russian to English": ("ru", "en"),
39
+ "English to Chinese": ("en", "zh"),
40
+ "Chinese to English": ("zh", "en"),
41
+ "English to Japanese": ("en", "ja"),
42
+ "Japanese to English": ("ja", "en"),
43
+ "English to Dutch": ("en", "nl"),
44
+ "Dutch to English": ("nl", "en"),
45
+ "English to Arabic": ("en", "ar"),
46
+ "Arabic to English": ("ar", "en"),
47
+ "English to Hindi": ("en", "hi"),
48
+ "Hindi to English": ("hi", "en"),
49
+ "English to Korean": ("en", "ko"),
50
+ "Korean to English": ("ko", "en")
51
+ }
52
+
53
+ # Select the language pair
54
+ language_choice = st.selectbox("Select Language Pair", list(language_pairs.keys()))
55
+ src_lang, tgt_lang = language_pairs[language_choice]
56
+
57
+ # User input
58
+ text_input = st.text_area("Enter text to translate:")
59
+
60
+ # Translate button
61
+ if st.button("Translate"):
62
+ if text_input:
63
+ st.info("Translating... Please wait!")
64
+ try:
65
+ tokenizer, model = load_model(src_lang, tgt_lang)
66
+ translated_text = translate_text(tokenizer, model, text_input)
67
+ st.success("Translated Text:")
68
+ st.write(translated_text)
69
+ except Exception as e:
70
+ st.error(f"Error: {e}. Please ensure the model exists for the selected pair.")
71
+ else:
72
+ st.warning("Please enter some text to translate.")
73
+
74
+ # Footer
75
+ st.markdown("---")
76
+ st.markdown("Developed with ❤️ using Helsinki-NLP models and Streamlit.")