← 목록으로
📌 PINNED 기타 2026.03.12 ✍️ 허영현

키워드 추출&매핑 알고리즘 설계 전략

상담 고객의 입력 텍스트(문장/단어)에서 비즈니스 키워드를 정확하게 추출하고 매핑하기 위한 3단계(Stage 1~3) 하이브리드 알고리즘 파이프라인의 설계

키워드 추출&매핑 알고리즘 설계 전략

1. 개요 및 핵심 설계 의도

고객의 상담 텍스트(문장/단어)에서 비즈니스 키워드를 추출하는 파이프라인입니다. 단순히 무거운 NLP 모델(LLM 등)에 전적으로 의존하는 대신, 속도(Performance)와 정확도(Accuracy)를 모두 잡기 위해 3단계(Stage 1~3) 하이브리드 캐스케이드(Cascade) 구조로 설계했습니다.

**💡 핵심 파이프라인 흐름 (Cascade Masking)** 분석 서비스(SqlKeywordAnalysisService)의 통제하에 순차적으로 연쇄 반응을 일으킵니다.


2. 모듈별 상세 구현 명세

Step 0. 텍스트 정규화 및 위치 추적 (Normalizer)

사용자의 오타, 띄어쓰기 오류, 무의미한 특수문자 입력에 구애받지 않고 일관된 매핑 환경을 만들기 위한 전처리 모듈입니다.

Stage 1. 완전 일치 매퍼 (ExactMapper)

고객이 “요금조회”, “단말기 분실” 처럼 키워드나 별칭만 단답형으로 입력했을 때 사용하는 초고속 Fast-path입니다.

Stage 2. 아호-코라식 멀티패턴 스캐너 (AhoCorasickExtractor)

긴 상담 문장(예: “요금조회가 안되고 자동이체 신청도 하고 싶은데…”) 속에서 수백~수천 개의 비즈니스 키워드를 동시다발적으로 스캔합니다. 정규식(re)으로 하나씩 찾는 것보다 압도적으로 빠릅니다.

Stage 3. 문맥 검사 및 오타 교정 심판관 (ContextScorer)

1, 2단계를 거치고도 남은 찌꺼기 텍스트(*로 마스킹 되지 않은 영역)를 처리하는 최종 Fallback 단계입니다. spaCy 한국어 모델을 활용합니다.

**💡 패자부활전 및 오타 교정 로직의 고민 흔적 (rescue_typos)** 단순히 유사도 알고리즘을 전체 문장에 무지성으로 돌리면 성능 이슈와 오탐(False Positive)이 폭발합니다. 이를 제어하기 위해 깐깐한 허들을 두었습니다.

  1. **명사 찰흙놀이:** spaCy 품사 태깅을 이용해 남은 텍스트 중 명사, 고유명사, 부사, 동사(NOUNPROPNVERB등)들을 덩어리로 뭉쳐냅니다.
  2. **O(1) 재검사 (FALLBACK_EXACT):** 띄어쓰기 이슈 등으로 2단계에서 놓쳤을 뿐, 사전에는 완벽히 존재하는 단어일 수 있으므로 유사도 검사 전 Exact 매칭을 한 번 더 수행합니다.
  3. **오타 교정 (FALLBACK_TYPO) - 왜 ‘1글자’만 허용했는가?:** 초고속 문자열 비교 C++ 라이브러리인 rapidfuzz (Damerau-Levenshtein)를 도입했습니다.

    • **거리 제한 (Distance == 1): CS/통신 도메인 특성상 거리를 2 이상 허용해 버리면 ’해지’와 ‘정지’** 처럼 의미가 완전히 다른 단어들이 유사 단어로 묶여버리는 대참사가 발생합니다. 따라서 오직 1글자 오타(오기입, 순서 도치 등)만 교정 대상으로 삼았습니다.
    • **최소 길이 제한 (len >= 3):** 2글자 이하의 짧은 단어(‘요금’, ‘이전’)는 1글자만 달라져도 아예 다른 단어가 되므로, 오타 검사 대상에서 강제로 제외하는 안전장치를 추가했습니다.

3. 종합 출력 및 감정 분석 연동

최종적으로 1, 2, 3단계에서 수집된 모든 키워드 목록은 SqlKeywordAnalysisService에서 집계됩니다.

#알고리즘 #설계