KevSun commited on
Commit
9725557
·
verified ·
1 Parent(s): 665eefd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -14
app.py CHANGED
@@ -4,7 +4,6 @@ from bert_score import score as bert_score
4
  import jieba
5
  import traceback
6
 
7
- # Function definitions remain the same
8
  def calculate_bleu(translations, references):
9
  return sacrebleu.corpus_bleu(translations, [references]).score
10
 
@@ -18,30 +17,44 @@ def calculate_bertscore(translations, references, lang):
18
  P, R, F1 = bert_score(translations, references, lang=lang)
19
  return F1.mean().item()
20
 
21
- # Streamlit app
 
 
 
 
 
 
22
  st.title("Machine Translation Quality Evaluation")
23
  st.write("Input the translated text and the reference translation to compute BLEU, TER, CHRF, and BERTScore metrics.")
24
 
25
- # Language selection and input fields remain the same
26
- # ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- # Evaluate button
29
  if st.button("Evaluate"):
30
  if translation_input and reference_input:
31
  try:
32
- translations = [translation_input.strip()]
33
- references = [reference_input.strip()]
34
 
35
- st.write("Debug: Inputs received")
36
  st.write(f"Translation: {translations}")
37
  st.write(f"Reference: {references}")
38
 
39
- # Handle tokenization if necessary (e.g., for Chinese)
40
- if source_lang_code == "zh" or target_lang_code == "zh":
41
- translations = [' '.join(jieba.cut(text)) for text in translations]
42
- references = [' '.join(jieba.cut(text)) for text in references]
43
- st.write("Debug: Chinese tokenization applied")
44
-
45
  st.write("Debug: Calculating scores...")
46
 
47
  bleu_score = calculate_bleu(translations, references)
 
4
  import jieba
5
  import traceback
6
 
 
7
  def calculate_bleu(translations, references):
8
  return sacrebleu.corpus_bleu(translations, [references]).score
9
 
 
17
  P, R, F1 = bert_score(translations, references, lang=lang)
18
  return F1.mean().item()
19
 
20
+ def tokenize_text(text, lang_code):
21
+ if lang_code == "zh":
22
+ return ' '.join(jieba.cut(text))
23
+ # For other languages, we'll use a simple space-based tokenization
24
+ # This might not be ideal for all languages, but it's a start
25
+ return ' '.join(text.split())
26
+
27
  st.title("Machine Translation Quality Evaluation")
28
  st.write("Input the translated text and the reference translation to compute BLEU, TER, CHRF, and BERTScore metrics.")
29
 
30
+ languages = {
31
+ "English": "en", "Chinese": "zh", "French": "fr", "German": "de", "Spanish": "es",
32
+ "Russian": "ru", "Japanese": "ja", "Korean": "ko", "Arabic": "ar", "Italian": "it",
33
+ "Dutch": "nl", "Portuguese": "pt", "Turkish": "tr", "Polish": "pl", "Czech": "cs",
34
+ "Swedish": "sv", "Danish": "da", "Finnish": "fi", "Greek": "el", "Hungarian": "hu",
35
+ "Indonesian": "id", "Norwegian": "no", "Romanian": "ro", "Thai": "th", "Vietnamese": "vi",
36
+ "Hebrew": "he", "Hindi": "hi", "Bengali": "bn", "Tamil": "ta", "Urdu": "ur", "Other": "other"
37
+ }
38
+
39
+ source_lang = st.selectbox("Select Source Language", list(languages.keys()))
40
+ target_lang = st.selectbox("Select Target Language", list(languages.keys()))
41
+
42
+ source_lang_code = st.text_input("Enter Source Language Code (ISO 639-1):", value=languages[source_lang]) if source_lang == "Other" else languages[source_lang]
43
+ target_lang_code = st.text_input("Enter Target Language Code (ISO 639-1):", value=languages[target_lang]) if target_lang == "Other" else languages[target_lang]
44
+
45
+ translation_input = st.text_area("Translated Text", height=200)
46
+ reference_input = st.text_area("Reference Translation", height=200)
47
 
 
48
  if st.button("Evaluate"):
49
  if translation_input and reference_input:
50
  try:
51
+ translations = [tokenize_text(translation_input.strip(), target_lang_code)]
52
+ references = [tokenize_text(reference_input.strip(), target_lang_code)]
53
 
54
+ st.write("Debug: Inputs received and tokenized")
55
  st.write(f"Translation: {translations}")
56
  st.write(f"Reference: {references}")
57
 
 
 
 
 
 
 
58
  st.write("Debug: Calculating scores...")
59
 
60
  bleu_score = calculate_bleu(translations, references)