datbkpro commited on
Commit
99c5f5a
·
verified ·
1 Parent(s): 03b74b8

Update core/multilingual_manager.py

Browse files
Files changed (1) hide show
  1. core/multilingual_manager.py +38 -5
core/multilingual_manager.py CHANGED
@@ -146,7 +146,8 @@
146
  import re
147
  from typing import Dict, Tuple, Optional
148
  from sentence_transformers import SentenceTransformer
149
- from langdetect import detect, detect_langs, LangDetectError
 
150
  from config.settings import settings
151
 
152
  class MultilingualManager:
@@ -222,7 +223,7 @@ class MultilingualManager:
222
  print(f"🔍 Phát hiện ngôn ngữ: {detected_lang} (độ tin cậy: {confidence:.2f})")
223
  return detected_lang
224
 
225
- except LangDetectError as e:
226
  print(f"⚠️ LangDetect lỗi, sử dụng fallback: {e}")
227
  return self._fallback_language_detection(text) if fallback_method else 'vi'
228
  except Exception as e:
@@ -238,12 +239,14 @@ class MultilingualManager:
238
  # Vietnamese detection với các từ đặc trưng
239
  vietnamese_indicators = [
240
  'của', 'và', 'là', 'có', 'được', 'trong', 'cho', 'với', 'như', 'tôi',
241
- 'bạn', 'ông', 'bà', 'anh', 'chị', 'em', 'này', 'kia', 'đó', 'đây'
 
242
  ]
243
 
244
  english_indicators = [
245
  'the', 'and', 'is', 'are', 'for', 'with', 'this', 'that', 'you', 'they',
246
- 'what', 'where', 'when', 'why', 'how', 'which', 'who', 'their', 'have', 'has'
 
247
  ]
248
 
249
  # Đếm số từ chỉ định
@@ -307,10 +310,36 @@ class MultilingualManager:
307
 
308
  return detected_lang, confidence_score
309
 
 
 
 
310
  except Exception as e:
311
  print(f"⚠️ Lỗi phát hiện ngôn ngữ với confidence: {e}")
312
  return 'vi', 0.5
313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  def get_embedding_model(self, language: str = None) -> Optional[SentenceTransformer]:
315
  """Lấy mô hình embedding dựa trên ngôn ngữ đã phát hiện"""
316
  if language and language in settings.SUPPORTED_LANGUAGES:
@@ -372,4 +401,8 @@ class MultilingualManager:
372
  'ja': '日本語',
373
  'ko': '한국어',
374
  'zh': '中文'
375
- }
 
 
 
 
 
146
  import re
147
  from typing import Dict, Tuple, Optional
148
  from sentence_transformers import SentenceTransformer
149
+ from langdetect import detect, detect_langs
150
+ from langdetect.lang_detect_exception import LangDetectException
151
  from config.settings import settings
152
 
153
  class MultilingualManager:
 
223
  print(f"🔍 Phát hiện ngôn ngữ: {detected_lang} (độ tin cậy: {confidence:.2f})")
224
  return detected_lang
225
 
226
+ except LangDetectException as e:
227
  print(f"⚠️ LangDetect lỗi, sử dụng fallback: {e}")
228
  return self._fallback_language_detection(text) if fallback_method else 'vi'
229
  except Exception as e:
 
239
  # Vietnamese detection với các từ đặc trưng
240
  vietnamese_indicators = [
241
  'của', 'và', 'là', 'có', 'được', 'trong', 'cho', 'với', 'như', 'tôi',
242
+ 'bạn', 'ông', 'bà', 'anh', 'chị', 'em', 'này', 'kia', 'đó', 'đây',
243
+ 'không', 'có', 'phải', 'rất', 'nhất', 'các', 'những', 'một', 'hai', 'ba'
244
  ]
245
 
246
  english_indicators = [
247
  'the', 'and', 'is', 'are', 'for', 'with', 'this', 'that', 'you', 'they',
248
+ 'what', 'where', 'when', 'why', 'how', 'which', 'who', 'their', 'have', 'has',
249
+ 'from', 'your', 'will', 'would', 'could', 'should', 'about', 'into', 'through'
250
  ]
251
 
252
  # Đếm số từ chỉ định
 
310
 
311
  return detected_lang, confidence_score
312
 
313
+ except LangDetectException as e:
314
+ print(f"⚠️ Lỗi phát hiện ngôn ngữ với confidence: {e}")
315
+ return 'vi', 0.5
316
  except Exception as e:
317
  print(f"⚠️ Lỗi phát hiện ngôn ngữ với confidence: {e}")
318
  return 'vi', 0.5
319
 
320
+ def detect_language_simple(self, text: str) -> str:
321
+ """
322
+ Phát hiện ngôn ngữ đơn giản (nhanh hơn, ít chính xác hơn)
323
+ """
324
+ if not text or len(text.strip()) < 3:
325
+ return 'vi'
326
+
327
+ try:
328
+ # Sử dụng detect đơn giản thay vì detect_langs
329
+ lang_code = detect(text)
330
+
331
+ lang_map = {
332
+ 'vi': 'vi', 'en': 'en', 'fr': 'fr', 'es': 'es',
333
+ 'de': 'de', 'ja': 'ja', 'ko': 'ko', 'zh-cn': 'zh', 'zh-tw': 'zh'
334
+ }
335
+
336
+ return lang_map.get(lang_code, 'en')
337
+
338
+ except LangDetectException:
339
+ return self._fallback_language_detection(text)
340
+ except Exception:
341
+ return 'vi'
342
+
343
  def get_embedding_model(self, language: str = None) -> Optional[SentenceTransformer]:
344
  """Lấy mô hình embedding dựa trên ngôn ngữ đã phát hiện"""
345
  if language and language in settings.SUPPORTED_LANGUAGES:
 
401
  'ja': '日本語',
402
  'ko': '한국어',
403
  'zh': '中文'
404
+ }
405
+
406
+ def is_language_supported(self, language: str) -> bool:
407
+ """Kiểm tra xem ngôn ngữ có được hỗ trợ không"""
408
+ return language in self.get_supported_languages()