AI_Menu_Search / scripts /fix_keyword_stuffing.py
Juhaha
HF Spaces 데모 배포 (Streamlit + Qdrant 임베디드, 색인 빌드타임 생성)
fbd1091
Raw
History Blame Contribute Delete
3.62 kB
"""
embedding_text 품질 수정.
SCR_2042 청산내역: 잔고 관련 keyword stuffing 제거 (유지)
SCR_1300 국내잔고: 구어체 문장 하드코딩 제거 → 원래 좋은 내용으로 원복
원칙: embedding_text는 메뉴 설명이어야 함. 특정 쿼리를 하드코딩하면 다른 쿼리가 망가짐.
시스템 수준(Weighted RRF + use_reranker=True)으로 해결.
"""
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.path.insert(0, '.')
import json
from pathlib import Path
from config import GENERATED_DIR
JSONL_PATH = GENERATED_DIR / "menu_descriptions.jsonl"
FIXES = {
# ── SCR_2042 청산내역: 잔고 반복 제거 → CFD 청산 특화 키워드로 교체 ──
"SCR_2042": (
"사용자는 국내CFD 계좌에서 거래를 마친 후 청산된 내역과 실현 손익을 정확히 "
"확인하고자 할 때 이 메뉴를 찾습니다. 특히 매입가, 청산가, 수수료, 세금 등 "
"거래별 상세 정보를 조회하거나 예약매매 후 청산 내역과 미체결 주문 내역의 "
"차이를 파악하려는 상황에서 필요합니다. 청산내역 메뉴는 국내CFD 계좌에서 "
"이미 청산된 거래 기록과 실현 손익을 조회할 수 있습니다. "
"국내CFD 청산내역 청산가 매입가 실현손익 수수료 세금 체결내역 주문내역 "
"거래내역 예약매매 미체결 CFD포지션 CFD거래 CFD계좌 CFD청산"
),
# ── SCR_1300 국내잔고: 구어체 하드코딩 제거 → 원래 내용으로 원복 ──
# 원칙: embedding_text는 메뉴 설명이어야 함.
# 특정 쿼리를 하드코딩하면 다른 쿼리에서 노이즈가 됨.
# "잔고 확인하러 왔어" 매칭은 use_reranker=True + Weighted RRF로 해결.
"SCR_1300": (
"사용자가 국내주식 계좌 내 보유 주식의 실시간 잔고와 수익 현황을 확인하고자 "
"할 때 이 메뉴를 찾습니다. 특히 키움 잔고와 타사 잔고를 비교하거나 "
"국내주식잔고조회, 국내주식실시간잔고를 통해 정확한 정보를 얻으려는 상황입니다. "
"국내잔고 메뉴는 국내주식의 실시간 잔고와 수익 정보를 제공하며, 사용자가 "
"자신의 계좌 상태를 빠르고 편리하게 확인할 수 있도록 설계되어 있습니다. "
"키움 잔고 타사 잔고 국내주식잔고조회 국내주식실시간잔고 수익 잔고 조회 "
"국내주식 잔고 주식잔고 계좌잔고 실시간 잔고 수익률 평가손익 지정가 시장가 "
"체결 미체결 잔고 수익률 평가손익 계좌잔고 주문내역 예약매매 "
"등의 키워드가 포함되어 다양한 검색 의도를 포괄합니다."
),
}
def main():
lines = JSONL_PATH.read_text(encoding="utf-8").splitlines()
updated = 0
new_lines = []
for line in lines:
if not line.strip():
new_lines.append(line)
continue
obj = json.loads(line)
mid = obj.get("menu_id", "")
if mid in FIXES:
obj["embedding_text"] = FIXES[mid]
new_lines.append(json.dumps(obj, ensure_ascii=False))
print(f"[수정] {mid}: {obj.get('menu_name','')}")
updated += 1
else:
new_lines.append(line)
JSONL_PATH.write_text("\n".join(new_lines), encoding="utf-8")
print(f"\n[완료] {updated}개 수정됨 → {JSONL_PATH}")
if __name__ == "__main__":
main()