Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -352,17 +352,37 @@ def expand_synonyms(keywords: List[str]) -> List[List[str]]:
|
|
| 352 |
|
| 353 |
def _dedup_keywords_preserve_order(keywords: List[str]) -> List[str]:
|
| 354 |
"""
|
| 355 |
-
의미 중복 제거:
|
| 356 |
-
-
|
|
|
|
|
|
|
| 357 |
- 순서 유지
|
| 358 |
"""
|
| 359 |
-
|
| 360 |
-
|
| 361 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 362 |
continue
|
| 363 |
-
|
| 364 |
-
|
| 365 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 366 |
|
| 367 |
|
| 368 |
def build_queries(
|
|
|
|
| 352 |
|
| 353 |
def _dedup_keywords_preserve_order(keywords: List[str]) -> List[str]:
|
| 354 |
"""
|
| 355 |
+
검색어 정규화 + 의미 중복 제거:
|
| 356 |
+
- 양끝 공백 제거, 내부 연속 공백 1개로 축소
|
| 357 |
+
- 동일(정규화 기준) 중복 제거
|
| 358 |
+
- 짧은 토큰이 긴 토큰(정규화 기준)에 포함되면 제거
|
| 359 |
- 순서 유지
|
| 360 |
"""
|
| 361 |
+
def norm(s: str) -> str:
|
| 362 |
+
s = (s or "").strip()
|
| 363 |
+
s = re.sub(r"\s+", " ", s) # 연속 공백 정리
|
| 364 |
+
return s
|
| 365 |
+
|
| 366 |
+
# 1) 정규화 + 동일 중복 제거(순서 유지)
|
| 367 |
+
out: List[str] = []
|
| 368 |
+
seen = set()
|
| 369 |
+
normalized = [norm(k) for k in keywords if norm(k)]
|
| 370 |
+
|
| 371 |
+
for k in normalized:
|
| 372 |
+
if k in seen:
|
| 373 |
continue
|
| 374 |
+
seen.add(k)
|
| 375 |
+
out.append(k)
|
| 376 |
+
|
| 377 |
+
# 2) 포함관계 제거(짧은 토큰이 긴 토큰에 포함되면 제거)
|
| 378 |
+
final: List[str] = []
|
| 379 |
+
for k in out:
|
| 380 |
+
if any(k != x and k in x for x in out):
|
| 381 |
+
continue
|
| 382 |
+
final.append(k)
|
| 383 |
+
|
| 384 |
+
return final
|
| 385 |
+
|
| 386 |
|
| 387 |
|
| 388 |
def build_queries(
|