RASA에서 Entity Synonym Mapper 이해하기

발행: (2026년 1월 17일 오후 10:25 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Our previous blog: Understanding RASA pipelines

Hereafter, we’ll dive deeper into how entities are normalized in RASA and how the Entity Synonym Mapper works, with YAML examples and practical insights for pipeline development.

우리의 이전 블로그: Understanding RASA pipelines

앞으로는 RASA에서 엔티티가 어떻게 정규화되는지와 Entity Synonym Mapper가 어떻게 작동하는지에 대해 더 깊이 살펴보고, YAML 예시와 파이프라인 개발을 위한 실용적인 인사이트를 제공하겠습니다.

목차

  • Entity Synonym Mapper란 무엇인가?
  • 엔터티 정규화가 중요한 이유
  • YAML 구성 예시
  • 내부 작동 방식 및 고려 사항
  • 실용적인 예시
  • Entity Synonym Mapper를 언제 사용해야 하는가

Entity Synonym Mapper란?

앞서 논의했듯이 파이프라인은 모듈형 컴포넌트들로 구성되며, 각각은 작지만 중요한 작업을 수행합니다.

Entity Synonym Mapper는 RASA NLU 파이프라인의 그런 컴포넌트 중 하나이며, 주요 역할은 다음과 같습니다:

동일한 개념의 다양한 텍스트 표현을 정규 형태로 매핑하여 모델이 이를 동등하게 취급하도록 합니다.

이를 엔티티를 위한 번역기로 생각하면 됩니다. 예를 들어 사용자는 다음과 같이 입력할 수 있습니다:

  • “NYC”
  • “New York City”
  • “Big Apple”

이 모든 표현은 같은 장소를 의미하지만, 정규화가 없으면 챗봇은 이를 서로 다른 엔티티로 인식합니다. Entity Synonym Mapper는 이들을 모두 단일 정규값, 예를 들어 “New York City” 로 매핑하도록 보장합니다.

왜 이것이 중요한가?

머신러닝 모델과 NLP 파이프라인은 일반적으로 동의어를 자동으로 추론할 수 없습니다.

정규화 없이

  • 의도 분류는 성공할 수 있지만, 엔터티 추출은 일관성이 없을 수 있습니다.
  • 엔터티 값이 일관되지 않으면 데이터베이스 쿼리나 API 호출 같은 하위 프로세스가 실패할 수 있습니다.

정규화와 함께

"NYC" → "New York City"
"Big Apple" → "New York City"

이렇게 하면 변동성이 감소하고, 학습 효율이 향상되며, 예측 가능한 동작을 보장합니다.

YAML 구성 예시

Entity Synonym Mapper는 동의어를 정의하기 위해 YAML 파일을 사용합니다. 다음은 최소 예시입니다:

version: "3.1"

nlu:
  - intent: inform_city
    examples: |
      - I want to travel to [NYC](city)
      - I'm going to [Big Apple](city)
      - Book a hotel in [New York City](city)

  - synonym: New York City
    examples: |
      - NYC
      - Big Apple

작동 방식

  • intent 섹션은 사용자가 개념을 여러 방식으로 표현할 수 있는 예시를 보여줍니다.
  • synonym 섹션은 정규값(New York City)과 그에 매핑되어야 할 변형(NYC, Big Apple)을 정의합니다.

정의가 완료되면, 변형 중 하나로 인식된 모든 엔터티는 자동으로 정규값으로 대체됩니다.

내부 작동

낮은 수준에서 Entity Synonym Mapper는 다음과 같이 작동합니다:

  1. Entity extraction은 먼저 발생합니다 (파이프라인의 토크나이저 + 피처라이저를 통해).
  2. Mapper는 추출된 엔티티가 YAML 파일의 동의어 항목과 일치하는지 확인합니다.
  3. 일치하는 항목이 발견되면, 엔티티 값이 정규값(canonical value)으로 교체됩니다.

이를 사전 조회로 생각하면 됩니다:

synonyms = {
    "NYC": "New York City",
    "Big Apple": "New York City"
}

entity = "NYC"
canonical_value = synonyms.get(entity, entity)
print(canonical_value)
# Output: New York City

실용적인 예시

항공편 예약을 위한 챗봇을 상상해 보세요.

User input

I want to fly to Big Apple next week

Without the Entity Synonym Mapper

{
  "intent": "inform_city",
  "entities": [
    {
      "entity": "city",
      "value": "Big Apple"
    }
  ]
}

With the Mapper

{
  "intent": "inform_city",
  "entities": [
    {
      "entity": "city",
      "value": "New York City"
    }
  ]
}

이제 항공편 데이터베이스 검색과 같은 하위 로직이 항상 일관된 엔티티 값을 받아 오류를 제거합니다.

엔터티 동의어 매퍼를 사용할 때

  • 사용자 입력에 흔한 약어나 별명이 있을 때.
  • 다운스트림 작업을 위해 일관된 엔터티 값을 원할 때.
  • 동일한 엔터티 개념을 공유하지만 표현이 다른 여러 인텐트를 학습할 때.

다음으로 RegexEntityExtractor를 살펴보며, 패턴 기반 엔터티 추출과 엔터티 동의어 매퍼가 견고한 NLU에 어떻게 보완되는지 알아보겠습니다.

Back to Blog

관련 글

더 보기 »

Flowise를 배포하는 5가지 멋진 방법

Flowise 배포 가이드 2026 Flowise는 AI 에이전트를 시각적으로 구축하기 위한 강력한 오픈소스 플랫폼입니다. 올바른 배포 방법을 선택하는 것은 귀하의…