jsjang0104 Claude Sonnet 4.6 commited on
Commit
6cdfa08
·
1 Parent(s): a61cb67

fix: 언어 감지 정확도 개선 — 하이브리드 방식 적용

Browse files

한글/움라우트/독일어 고빈도 단어 우선 체크 후 lingua fallback으로
짧은 제목에서 고유명사에 흔들리는 문제 보완

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. app.py +18 -0
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import csv
2
  import hashlib
3
  import io
 
4
  import tempfile
5
 
6
  import gradio as gr
@@ -55,7 +56,24 @@ _LINGUA_MAP = {
55
 
56
  _lang_detector = LanguageDetectorBuilder.from_languages(*_LINGUA_MAP.keys()).build()
57
 
 
 
 
 
 
 
58
  def detect_language(text: str) -> str:
 
 
 
 
 
 
 
 
 
 
 
59
  result = _lang_detector.detect_language_of(text)
60
  return _LINGUA_MAP.get(result, "ETC")
61
 
 
1
  import csv
2
  import hashlib
3
  import io
4
+ import re
5
  import tempfile
6
 
7
  import gradio as gr
 
56
 
57
  _lang_detector = LanguageDetectorBuilder.from_languages(*_LINGUA_MAP.keys()).build()
58
 
59
+ _DE_MARKERS = {
60
+ "und", "der", "die", "das", "von", "zu", "im", "mit",
61
+ "auf", "über", "nach", "vor", "bei", "aus", "wer", "wie",
62
+ "was", "ein", "eine", "des", "dem", "den", "zum", "zur",
63
+ }
64
+
65
  def detect_language(text: str) -> str:
66
+ # 한글 포함 시 KR
67
+ if re.search(r"[가-힣]", text):
68
+ return "KR"
69
+ # 움라우트/에스체트 포함 시 DE
70
+ if re.search(r"[äöüßÄÖÜ]", text):
71
+ return "DE"
72
+ # 독일어 고빈도 단어 포함 시 DE
73
+ words = set(re.findall(r"[a-zA-Z]+", text.lower()))
74
+ if words & _DE_MARKERS:
75
+ return "DE"
76
+ # fallback: lingua
77
  result = _lang_detector.detect_language_of(text)
78
  return _LINGUA_MAP.get(result, "ETC")
79