Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -49,11 +49,12 @@ def apply_name_tags(text: str, names: list, start_index: int = 100) -> tuple[str
|
|
| 49 |
|
| 50 |
|
| 51 |
|
| 52 |
-
|
|
|
|
| 53 |
|
| 54 |
import re
|
| 55 |
|
| 56 |
-
#
|
| 57 |
COMMON_SUFFIXES = [
|
| 58 |
# 📁 가정/관계 기반
|
| 59 |
'어머니', '아버지', '엄마', '아빠', '형', '누나', '언니', '오빠', '동생',
|
|
@@ -74,34 +75,34 @@ COMMON_SUFFIXES = [
|
|
| 74 |
'의사', '간호사', '간병인', '기사님', '어르신', '님', '씨'
|
| 75 |
]
|
| 76 |
|
|
|
|
| 77 |
COMMON_JOSA = [
|
| 78 |
-
#
|
| 79 |
'이', '가', '을', '를', '은', '는', '의', '도',
|
| 80 |
|
| 81 |
-
#
|
| 82 |
-
'에', '에서', '에게', '으로', '로', '부터', '까지', '한테',
|
| 83 |
|
| 84 |
-
#
|
| 85 |
-
'보다', '마저', '조차', '
|
|
|
|
| 86 |
|
| 87 |
-
#
|
| 88 |
-
'이며', '이나', '이거나', '
|
| 89 |
|
| 90 |
-
#
|
| 91 |
'이기도', '이었던', '이었지만', '이어서', '이었다면', '인', '일', '임', '이란', '이라는',
|
| 92 |
|
| 93 |
-
#
|
| 94 |
'같은', '같아서', '까지는', '뿐만 아니라', '와는', '와도', '하고도', '으로서', '으로써'
|
| 95 |
]
|
| 96 |
|
| 97 |
-
|
| 98 |
def expand_variation_patterns(text: str, mapping: dict) -> str:
|
| 99 |
"""
|
| 100 |
👓 태그된 텍스트에서 성+이름+호칭+조사 형태를 다시 태깅
|
| 101 |
-
예: '고은비학생이' → 'N100이'
|
| 102 |
"""
|
| 103 |
for tag, base in mapping.items():
|
| 104 |
-
prefix = r'[\s\(\["'
|
| 105 |
suffix = f"(?:{'|'.join(COMMON_SUFFIXES)})?"
|
| 106 |
josa = f"(?:{'|'.join(COMMON_JOSA)})?"
|
| 107 |
pattern = re.compile(rf'{prefix}{re.escape(base)}{suffix}{josa}', re.IGNORECASE)
|
|
@@ -111,7 +112,6 @@ def expand_variation_patterns(text: str, mapping: dict) -> str:
|
|
| 111 |
def boost_mapping_from_context(text: str, mapping: dict) -> dict:
|
| 112 |
"""
|
| 113 |
📌 태깅된 텍스트에서 각 태그의 실제 확장된 표현 감지해 mapping 보정
|
| 114 |
-
예: '고은비학생이' → 'N100', 매핑: N100 → '고은비학생이'
|
| 115 |
"""
|
| 116 |
updated = {}
|
| 117 |
for tag, base in mapping.items():
|
|
|
|
| 49 |
|
| 50 |
|
| 51 |
|
| 52 |
+
|
| 53 |
+
# 📦 PART 2 (Extended & Fixed): 호칭/조사 확장기 + 태그 매핑 보정기 - 특수문자 오류 수정판
|
| 54 |
|
| 55 |
import re
|
| 56 |
|
| 57 |
+
# ✅ 확장된 호칭 리스트
|
| 58 |
COMMON_SUFFIXES = [
|
| 59 |
# 📁 가정/관계 기반
|
| 60 |
'어머니', '아버지', '엄마', '아빠', '형', '누나', '언니', '오빠', '동생',
|
|
|
|
| 75 |
'의사', '간호사', '간병인', '기사님', '어르신', '님', '씨'
|
| 76 |
]
|
| 77 |
|
| 78 |
+
# ✅ 실전급 조사 리스트
|
| 79 |
COMMON_JOSA = [
|
| 80 |
+
# ✅ 기본 조사
|
| 81 |
'이', '가', '을', '를', '은', '는', '의', '도',
|
| 82 |
|
| 83 |
+
# ✅ 처소/방향/대상
|
| 84 |
+
'에', '에서', '에게', '께서', '으로', '로', '부터', '까지', '한테',
|
| 85 |
|
| 86 |
+
# ✅ 강조/대조/비교
|
| 87 |
+
'보다', '보다도', '마저', '조차', '조차도', '까지도', '밖에', '만큼', '만큼은',
|
| 88 |
+
'이라도', '이든지', '이나마', '이건', '이란', '이라서', '이지만',
|
| 89 |
|
| 90 |
+
# ✅ 연결형 조사
|
| 91 |
+
'이며', '이나', '이거나', '이니까', '이라면', '처럼', '대로', '하고', '그리고', '와', '과',
|
| 92 |
|
| 93 |
+
# ✅ 보조/종결형 어미
|
| 94 |
'이기도', '이었던', '이었지만', '이어서', '이었다면', '인', '일', '임', '이란', '이라는',
|
| 95 |
|
| 96 |
+
# ✅ 특수형 조사/조합형
|
| 97 |
'같은', '같아서', '까지는', '뿐만 아니라', '와는', '와도', '하고도', '으로서', '으로써'
|
| 98 |
]
|
| 99 |
|
|
|
|
| 100 |
def expand_variation_patterns(text: str, mapping: dict) -> str:
|
| 101 |
"""
|
| 102 |
👓 태그된 텍스트에서 성+이름+호칭+조사 형태를 다시 태깅
|
|
|
|
| 103 |
"""
|
| 104 |
for tag, base in mapping.items():
|
| 105 |
+
prefix = r'[\s\(\["\']*' # ← 유니코드 특수문자 제거한 정식 표현
|
| 106 |
suffix = f"(?:{'|'.join(COMMON_SUFFIXES)})?"
|
| 107 |
josa = f"(?:{'|'.join(COMMON_JOSA)})?"
|
| 108 |
pattern = re.compile(rf'{prefix}{re.escape(base)}{suffix}{josa}', re.IGNORECASE)
|
|
|
|
| 112 |
def boost_mapping_from_context(text: str, mapping: dict) -> dict:
|
| 113 |
"""
|
| 114 |
📌 태깅된 텍스트에서 각 태그의 실제 확장된 표현 감지해 mapping 보정
|
|
|
|
| 115 |
"""
|
| 116 |
updated = {}
|
| 117 |
for tag, base in mapping.items():
|