feliksius commited on
Commit
57cd6dc
·
verified ·
1 Parent(s): 7dbeb90

Update app.py

Browse files

Tambah china tradisional dan vietnam

Files changed (1) hide show
  1. app.py +21 -2
app.py CHANGED
@@ -3,6 +3,7 @@ from transformers import pipeline
3
  import langdetect
4
  import logging
5
  import os
 
6
 
7
  # Atur direktori cache
8
  os.environ["HF_HOME"] = "/app/cache"
@@ -20,7 +21,9 @@ MODEL_MAP = {
20
  "fr": "Helsinki-NLP/opus-mt-fr-en", # Prancis ke Inggris
21
  "es": "Helsinki-NLP/opus-mt-es-en", # Spanyol ke Inggris
22
  "ja": "Helsinki-NLP/opus-mt-ja-en", # Jepang ke Inggris
23
- "zh": "Helsinki-NLP/opus-mt-zh-en", # Mandarin ke Inggris
 
 
24
  }
25
 
26
  # Inisialisasi pipeline untuk setiap model
@@ -34,10 +37,21 @@ except Exception as e:
34
  logger.error(f"Model initialization failed: {str(e)}")
35
  raise Exception(f"Model initialization failed: {str(e)}")
36
 
 
 
 
 
 
 
 
 
37
  def detect_language(text: str) -> str:
38
  """Deteksi bahasa dari teks menggunakan langdetect."""
39
  try:
40
  lang = langdetect.detect(text)
 
 
 
41
  return lang if lang in MODEL_MAP else "en" # Default ke Inggris jika tidak didukung
42
  except Exception as e:
43
  logger.warning(f"Language detection failed: {str(e)}, defaulting to English")
@@ -54,11 +68,16 @@ async def translate(text: str):
54
  # Jika sudah Inggris atau bahasa tidak didukung, kembalikan teks asli
55
  if source_lang == "en":
56
  return {"translated_text": text}
 
 
 
 
 
57
  # Terjemahkan ke Inggris
58
  translator = translators.get(source_lang)
59
  if not translator:
60
  raise HTTPException(status_code=400, detail=f"Translation not supported for language: {source_lang}")
61
- result = translator(text)
62
  return {"translated_text": result[0]["translation_text"]}
63
  except Exception as e:
64
  logger.error(f"Processing failed: {str(e)}")
 
3
  import langdetect
4
  import logging
5
  import os
6
+ import opencc # Untuk konversi Mandarin Sederhana/Tradisional
7
 
8
  # Atur direktori cache
9
  os.environ["HF_HOME"] = "/app/cache"
 
21
  "fr": "Helsinki-NLP/opus-mt-fr-en", # Prancis ke Inggris
22
  "es": "Helsinki-NLP/opus-mt-es-en", # Spanyol ke Inggris
23
  "ja": "Helsinki-NLP/opus-mt-ja-en", # Jepang ke Inggris
24
+ "zh-CN": "Helsinki-NLP/opus-mt-zh-en", # Mandarin Sederhana ke Inggris
25
+ "zh-TW": "Helsinki-NLP/opus-mt-zh-en", # Mandarin Tradisional ke Inggris
26
+ "vi": "Helsinki-NLP/opus-mt-vi-en", # Vietnam ke Inggris
27
  }
28
 
29
  # Inisialisasi pipeline untuk setiap model
 
37
  logger.error(f"Model initialization failed: {str(e)}")
38
  raise Exception(f"Model initialization failed: {str(e)}")
39
 
40
+ # Inisialisasi konverter OpenCC untuk Mandarin Tradisional ke Sederhana
41
+ converter = opencc.OpenCC('t2s') # Tradisional ke Sederhana
42
+
43
+ def is_traditional_chinese(text: str) -> bool:
44
+ """Cek apakah teks menggunakan karakter Mandarin Tradisional."""
45
+ traditional_chars = set('繁體字') # Contoh karakter Tradisional
46
+ return any(char in traditional_chars for char in text)
47
+
48
  def detect_language(text: str) -> str:
49
  """Deteksi bahasa dari teks menggunakan langdetect."""
50
  try:
51
  lang = langdetect.detect(text)
52
+ # Jika terdeteksi sebagai Mandarin (zh), cek apakah Tradisional atau Sederhana
53
+ if lang == "zh":
54
+ return "zh-TW" if is_traditional_chinese(text) else "zh-CN"
55
  return lang if lang in MODEL_MAP else "en" # Default ke Inggris jika tidak didukung
56
  except Exception as e:
57
  logger.warning(f"Language detection failed: {str(e)}, defaulting to English")
 
68
  # Jika sudah Inggris atau bahasa tidak didukung, kembalikan teks asli
69
  if source_lang == "en":
70
  return {"translated_text": text}
71
+ # Jika Mandarin Tradisional, konversi ke Sederhana
72
+ input_text = text
73
+ if source_lang == "zh-TW":
74
+ input_text = converter.convert(text)
75
+ logger.info("Converted Traditional Chinese to Simplified Chinese")
76
  # Terjemahkan ke Inggris
77
  translator = translators.get(source_lang)
78
  if not translator:
79
  raise HTTPException(status_code=400, detail=f"Translation not supported for language: {source_lang}")
80
+ result = translator(input_text)
81
  return {"translated_text": result[0]["translation_text"]}
82
  except Exception as e:
83
  logger.error(f"Processing failed: {str(e)}")