junaid17 commited on
Commit
e04d7f7
Β·
verified Β·
1 Parent(s): 14bab3c

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +62 -61
main.py CHANGED
@@ -1,61 +1,62 @@
1
- import streamlit as st
2
- from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
3
- from transformers import pipeline
4
- from peft import PeftModel
5
-
6
- st.set_page_config(page_title="Kurdish Translator", layout="centered")
7
- st.title("Kurdish ↔ English Translator (NLLB + LoRA)")
8
-
9
- # Model paths
10
- BASE_MODEL = "facebook/nllb-200-distilled-600M"
11
- ADAPTER_PATH = "./nllb_kurdish_lora_adapter"
12
-
13
-
14
- @st.cache_resource
15
- def load_translation_pipeline(direction):
16
- tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
17
-
18
- # Load base model
19
- base_model = AutoModelForSeq2SeqLM.from_pretrained(BASE_MODEL)
20
-
21
- # Load LoRA adapter
22
- model = PeftModel.from_pretrained(base_model, ADAPTER_PATH)
23
-
24
- if direction == "English β†’ Kurdish":
25
- src = "eng_Latn"
26
- tgt = "ckb_Arab"
27
- else: # Kurdish β†’ English
28
- src = "ckb_Arab"
29
- tgt = "eng_Latn"
30
-
31
- # Build translation pipeline
32
- translator = pipeline(
33
- "translation",
34
- model=model,
35
- tokenizer=tokenizer,
36
- src_lang=src,
37
- tgt_lang=tgt,
38
- max_length=256
39
- )
40
-
41
- return translator
42
-
43
-
44
- # UI: Translation direction
45
- direction = st.selectbox(
46
- "Select Translation Direction",
47
- ["English β†’ Kurdish", "Kurdish β†’ English"]
48
- )
49
-
50
- # Text input box
51
- text = st.text_area("Enter text below:", height=180)
52
-
53
- # Translate Button
54
- if st.button("Translate"):
55
- if text.strip():
56
- translator = load_translation_pipeline(direction)
57
- output = translator(text)[0]["translation_text"]
58
- st.subheader("Translation:")
59
- st.success(output)
60
- else:
61
- st.warning("Please enter some text to translate.")
 
 
1
+ import streamlit as st
2
+ from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
3
+ from peft import PeftModel
4
+
5
+ st.set_page_config(page_title="Kurdish Translator", layout="centered")
6
+ st.title("Kurdish ↔ English Translator (NLLB + LoRA)")
7
+
8
+ # HuggingFace model repos
9
+ BASE_MODEL = "facebook/nllb-200-distilled-600M"
10
+ LORA_REPO = "junaid17/nllb-kurdish-lora" # <-- use HF model repo, NOT local folder
11
+
12
+
13
+ @st.cache_resource
14
+ def load_translation_pipeline(direction):
15
+ # Load tokenizer
16
+ tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
17
+
18
+ # Load base NLLB model
19
+ base_model = AutoModelForSeq2SeqLM.from_pretrained(BASE_MODEL)
20
+
21
+ # Load LoRA adapter from HuggingFace Hub
22
+ model = PeftModel.from_pretrained(base_model, LORA_REPO)
23
+
24
+ # Language codes for NLLB
25
+ if direction == "English β†’ Kurdish":
26
+ src = "eng_Latn"
27
+ tgt = "ckb_Arab"
28
+ else:
29
+ src = "ckb_Arab"
30
+ tgt = "eng_Latn"
31
+
32
+ # Build translation pipeline
33
+ translator = pipeline(
34
+ "translation",
35
+ model=model,
36
+ tokenizer=tokenizer,
37
+ src_lang=src,
38
+ tgt_lang=tgt,
39
+ max_length=256,
40
+ )
41
+
42
+ return translator
43
+
44
+
45
+ # UI
46
+ direction = st.selectbox(
47
+ "Select Translation Direction",
48
+ ["English β†’ Kurdish", "Kurdish β†’ English"]
49
+ )
50
+
51
+ text = st.text_area("Enter your text:", height=180)
52
+
53
+ if st.button("Translate"):
54
+ if not text.strip():
55
+ st.warning("Please enter some text.")
56
+ else:
57
+ with st.spinner("Translating..."):
58
+ translator = load_translation_pipeline(direction)
59
+ result = translator(text)[0]["translation_text"]
60
+
61
+ st.subheader("Translation:")
62
+ st.success(result)