본문 바로가기

Dev Stories/AI|ML(인공지능|머신러닝)

LLM을 활용한 자연어 처리 파이프라인: 시나리오1

반응형

LLM 활용 일반 시나리오

사용자 입력 전처리

입력 정규화

입력: "강남역에서 홍대까지 지하철로 가는법좀"
정규화: "강남역에서 홍대까지 지하철로 가는 방법"

다국어 지원 및 방언의 처리

  • 한국어 : 근처, 주변, 가까운 곳
  • 영어 : nearby around, close to
  • 음성 입력 오류 보정

의도 분석 (Intent Classification)

주요 의도 카테고리

{
  "ROUTING": ["길찾기", "경로", "가는법", "route", "direction"],
  "SEARCH": ["찾기", "검색", "어디", "find", "search", "locate"],
  "ANALYSIS": ["분석", "통계", "변화", "비교", "analyze", "compare"],
  "RECOMMENDATION": ["추천", "좋은", "맛집", "recommend", "suggest"],
  "INFORMATION": ["정보", "알려줘", "뭐야", "what", "info", "tell me"]
}

의도 분류 모델

  • Fine-tuned BERT/KoBERT for 한국어
  • Few-shot learning with GPT-4 for edge cases
  • 의도 신뢰도 점수 기반 fallback 처리

엔티티 추출 (Named Entity Recognition)

지리공간 엔티티

{
  "LOCATION": {
    "POI": ["강남역", "롯데월드타워", "N서울타워"],
    "ADDRESS": ["서울시 강남구", "123번길 45"],
    "REGION": ["강남구", "서울", "부산"],
    "LANDMARK": ["한강", "남산", "해운대해수욕장"]
  },
  "SPATIAL_RELATION": {
    "DISTANCE": ["근처", "주변", "500m 이내", "도보 10분"],
    "DIRECTION": ["북쪽", "남동쪽", "앞", "뒤"],
    "BOUNDARY": ["안에", "밖에", "경계선"]
  },
  "TRANSPORTATION": ["지하철", "버스", "도보", "자전거", "자동차"],
  "CATEGORY": ["카페", "맛집", "병원", "주차장", "ATM"],
  "TIME": ["지금", "오후 3시", "내일", "주말"]
}

공간 쿼리 변환

쿼리 템플릿 매핑

# 예시: 근거리 검색 쿼리 변환
사용자_입력 = "강남역 근처 카페 찾아줘"
추출된_엔티티 = {
    "location": "강남역",
    "category": "카페", 
    "spatial_relation": "근처"
}

공간_쿼리 = {
    "type": "proximity_search",
    "center": get_coordinates("강남역"),  # [127.027926, 37.497175]
    "radius": 500,  # 기본값 500m
    "category": "cafe",
    "limit": 20
}

복합 쿼리 처리

# "주차장 있는 강남역 근처 카페"
복합_쿼리 = {
    "type": "multi_criteria_search",
    "base_query": proximity_search,
    "filters": [
        {"attribute": "parking", "value": True},
        {"category": "cafe"}
    ],
    "spatial_join": {
        "type": "within_distance",
        "distance": 100  # 주차장이 100m 이내
    }
}

 

고급 활용 시나리오

컨텍스트 기반 대화형 검색

사용자: "강남역 근처 맛집 알려줘"
AI: "어떤 종류의 음식을 선호하시나요?"
사용자: "한식이면 좋겠어"
AI: "예산은 어느 정도 생각하고 계신가요?"
사용자: "2만원 정도"

→ 대화 컨텍스트를 유지하며 점진적 쿼리 정제

시간적 공간 분석

시간_공간_쿼리 = {
    "분석_유형": "temporal_spatial_analysis",
    "쿼리": "이 지역 인구밀도가 어떻게 변했는지 분석해줘",
    "파라미터": {
        "지역": "강남구",
        "시간_범위": ["2020", "2024"],
        "분석_방법": "시계열_분석",
        "시각화": "히트맵_애니메이션"
    }
}

다중 조건 라우팅

복합_라우팅 = {
    "출발지": "집",
    "도착지": "회사", 
    "경유지": ["스타벅스", "편의점"],
    "제약조건": {
        "교통수단": "대중교통",
        "도착시간": "오전 9시 이전",
        "선호사항": "환승 최소화"
    },
    "날씨_고려": True,
    "실시간_교통": True
}

 

반응형