엔티티
    • PDF

    엔티티

    • PDF

    Article Summary

    Classic/VPC 환경에서 이용 가능합니다.

    엔티티는 인명, 기관명, 장소, 날짜와 상품명 등의 단어들이 등록된 사전을 의미합니다. 챗봇은 사용자 발화 속에서 분석한 엔티티를 통해 의도를 파악하고 슬롯을 추출하는데 활용합니다. 같은 의미인 단어를 엔티티로 정의해 두면, 사용자의 발화를 파악하는데 도움이 됩니다. 엔티티를 생성, 수정, 삭제한 후에는 빌드하거나 변경된 설정 적용을 완료해야 챗봇 서비스에 반영됩니다.

    • 엔티티의 종류
      • 도메인 엔티티: 특정 도메인에서만 자주 사용하는 엔티티. 사전 기반의 사전형 엔티티와 정규식 패턴 기반의 패턴형 엔티티로 나뉨
      • 시스템 엔티티: 모든 도메인에서 공통으로 사용 가능한 엔티티. 빌트인으로 제공됨
      • API 엔티티: 챗봇 빌더 내부에 직접 엔티티를 정의하지 않고 외부 DB에 저장된 엔티티 데이터를 활용하는 엔티티

    도메인 엔티티 생성

    도메인 엔티티는 해당 도메인에서 사용될 것으로 예상되는 주요 단어들의 모음입니다. 예를 들어 커피 주문과 관련된 챗봇을 생성한다고 가정했을 때, 커피 주문에 필요한 커피 종류, 커피 사이즈 등을 도메인 엔티티에 등록하여 활용할 수 있습니다.
    도메인 엔티티를 등록하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 콘솔에서 Services > CLOVA Chatbot > Domain 메뉴를 차례대로 클릭해 주십시오.
    2. 원하는 도메인의 [빌더 실행하기] 버튼을 클릭하여 챗봇 빌더를 실행해 주십시오.
    3. 챗봇 빌더에서 엔티티 > [도메인 엔티티] 탭을 클릭해 주십시오.
    4. [엔티티 생성] 버튼을 클릭해 주십시오.
    항목설명
    엔티티 이름엔티티 이름 입력
    엔티티 유형엔티티 유형 선택
    • 사전형: 사전 기반의 엔티티 유형. 사전형의 엔티티 데이터는 모델 학습에 활용됨. 도메인 엔티티 내에서 중복되는 단어를 대표어 또는 유사어로 등록할 수 없음
    • 패턴형: 정규식 패턴 기반 엔티티 유형. 패턴형 엔티티는 모델 학습에 활용되지 않음
    민감 정보 보안 설정엔티티에 담길 정보의 민감 정보 여부 설정. 민감한 정보가 담긴 특수한 경우가 아니라면 기본적으로 일반 정보로 설정
    • 일반 정보: 해당 엔티티에 담길 정보가 민감한 정보가 아닌 일반적인 정보
    • 일반 민감 정보: 사용자의 이름, 전화번호, 주소와 같은 정보. 사용자가 일반 민감 정보를 포함하여 입력한 경우, 챗봇 빌더 내의 대화 기록 등의 화면에서 해당 민감 정보를 마스킹하여 챗봇 제작자에게 표시되지 않음. 일반 민감 정보를 챗봇의 답변에 삽입하여 사용하는 경우, 챗봇이 사용자의 민감 정보를 재발화할 수 있기 때문에 로깅 제외 옵션을 활성화하여 챗봇 답변도 마스킹하는 것을 권장함
    • 특수 민감 정보: 사용자의 고유식별정보(주민등록번호, 운전면허번호), 비밀번호와 같은 특수한 민감 정보. 사용자가 특수 민감 정보를 포함하여 입력한 경우, 챗봇 빌더 내의 대화 기록 등의 화면에서 해당 민감 정보를 마스킹하여 챗봇 제작자에게 표시되지 않음. 또한 챗봇 엔진 내 로그에도 마스킹하기 떄문에 특수한 보안 처리가 필요한 경우에 특수 민감 정보로 설정하는 것을 권장함. 단, 엔진 로그에서도 정보를 남기지 않으므로 장애 발생 시 디버그 지원이 어려우므로 특수 민감 정보를 챗봇의 답변에 삽입하여 사용하는 것을 제한함
    엔티티 등록엔티티 유형으로 사전형 엔티티를 선택한 경우
    • 대표어: 엔티티에 등록할 대표어 입력
    • 유사어: 다양한 표현의 유사어 입력. 여러 개의 유사어를 입력하는 경우 콤마(,)로 구분
      엔티티 유형으로 패턴형 엔티티를 선택한 경우
    • 정규 표현식을 활용하여 패턴으로서 엔티티 분석
    • 단, 패턴형 엔티티에는 사전형 엔티티, 시스템 엔티티, 시스템 변수, 도메인 변수만 입력 가능
    • 패턴 정의 시 정규식 입력 가이드 참조
    1. 엔티티 정보 입력이 완료되면 [저장] 버튼을 클릭해 주십시오.
    • <예시> 패턴형 엔티티
      chatbot-chatbot-3-2_ex01_ko

    • <예시> 사전형 엔티티
      chatbot-chatbot-3-2_ex02_ko

    시스템 엔티티 생성

    시스템 엔티티는 모든 도메인에서 공통으로 사용 가능한 엔티티입니다. 네이버 클라우드 플랫폼에서 관리하며, 챗봇 제작자는 등록된 시스템 엔티티 중 사용할 시스템 엔티티만 활성화합니다.

    참고

    태스크 또는 정규식 질문에서 참조되고 있는 시스템 엔티티는 비활성화할 수 없습니다.

    `@SYSTEM_ANY

    `@SYSTEM_ANY는 사용자의 자유 발화 중 일부 패턴만을 저장하고 싶은 경우에 사용합니다. 예를 들어 사전형 엔티티 또는 패턴형 엔티티로 정의하기 어려운 사람의 이름이나, 검색어 등을 엔티티로 분석하고자 할 때 활용할 수 있습니다.

    • `@SYSTEM_ANY는 정규식 질문에만 입력할 수 있습니다.
    • `@SYSTEM_ANY는 어떤 발화든 매칭시킬 수 있습니다. 정규식 문법 중 와일드 카드와 동일합니다.
    • `@SYSTEM_ANY만 등록하는 것이 아니라, 등장할 수 있는 다른 패턴을 함께 입력하는 것을 권장합니다.
    정규식 질문: `@SYSTEM_ANY [은|는|이|가] [뭐야|뭐니|뭘까요]
    
    • 단, 선택적으로 등장하는 정규식 표현식을 함께 사용하는 경우 `@SYSTEM_ANY에 매칭되는 단어를 보장할 수 없으므로 주의해 주십시오.
    정규식 질문 : `@SYSTEM_ANY (을|를) [설명해](줘|주세요)
    -> 사용자가 "클로바 챗봇을 설명해줘"라고 입력한 경우 `@SYSTEM_ANY에 "클로바 챗봇을"이 매칭될 수 있습니다.
    
    • `@SYSTEM_ANY만 등록해야 하는 경우, 컨텍스트 또는 조건 등을 설정하여 특정 시점에만 제한적으로 해당 대화가 매칭될 수 있도록 제한하는 것을 권장합니다.
    정규식 질문 : `@SYSTEM_ANY
    -> `@SYSTEM_ANY만 입력한 정규식 질문을 등록하는 경우, 사용자가 발화를 입력했을 때, 항상 해당 대화에 매칭되어버릴 수 있습니다.
    

    Slot Module

    슬롯 모듈은 시나리오를 구축할 때, 가장 자주 쓰는 엔티티들을 공통 모듈로 만들어서 제공하는 엔티티입니다.

    • DATE, TIME, PEOPLE, NAME의 4가지 시스템 엔티티를 제공하며, 날짜, 시간, 인원 수, 이름이 포함된 발화가 들어왔을 때, 해당 발화에 포함된 날짜, 시간 및 인원 수의 패턴을 인식하여 시스템 엔티티에 담아 값을 전달해 줍니다.
    • 해당 엔티티를 사용할 경우, Date, Time, People, Name과 같은 패턴형 엔티티들을 따로 만들지 않고, 시스템 엔티티에서 필요한 엔티티를 On/Off 하는 형태로 사용할 수 있습니다.
    참고
    • 시스템 엔티티 중 DATE, TIME, PEOPLE, NAME은 정규식 질문에 입력할 수 없습니다.

    • On을 하고 난 뒤에는 반드시 빌드를 해야 해당 엔티티를 사용할 수 있습니다.

    슬롯 모듈은 응답 조건에 사용자 변수를 지정하거나 응답 내용에 사용자 변수를 입력하는 데 사용됩니다.

    • 응답 조건 설정의 경우 [사용자 변수] 탭을 선택하고 [ 값 ] 필드에 `@DATE와 같이 일부를 입력하면 슬롯모듈의 리스트가 표시됩니다.
      chatbot-chatbot-3-2_slotnormalizer-2_ko

    • 답변에 사용자 변수를 입력하려면 사용자 변수 항목의 값 드롭다운 목록에서 엔티티를 선택합니다. `@DATE와 같이 일부를 입력하면 리스트가 표시됩니다.
      chatbot-chatbot-3-2_slotnormalizer-1_ko

    DATE

    DATE는 '오늘', '크리스마스', '석가탄신일', '1년 후'와 같은 날짜 입력 패턴을 인식하고 해당하는 날짜를 담아서 전달해주는 엔티티입니다.

    DATE 값을 시스템 엔티티에 담아서 활용하고 싶은 경우, 해당 엔티티를 On하면 활성화됩니다. DATE를 활성화하면 TIME 엔티티도 동시에 활성화됩니다.

    주의

    시스템 엔티티인 date와 datetime은 동시에 활성화할 수 없습니다. date를 on하고 datetime을 on하면 date가 off 됩니다.

    대화에서 날짜를 처리하는 경우 다음 두 가지 패턴을 생각할 수 있습니다.

    • 레스토랑 등에 예약 전화하기 -> analyzed : 미래의 날짜
    • 카드 회사에 사용 내역 조회하기 -> alternative: 과거 날짜

    레스토랑에 예약 전화를 할 경우에는 보통 미래 날짜를 예약하게 되고, 카드 회사에서 사용내역을 조회할 경우, 과거의 날짜를 조회하게 됩니다.

    date 값에는 analyzed 값과 alternative 값 두가지가 있어서, 미래와 과거의 날짜를 모두 유추하여 볼 수 있습니다.
    예를 들어 현재 날짜가 2022년 4월 1일이고 '5월 1일'이라고 말하면 다음과 같이 분석됩니다.

    • analyzed: 2022-05-01
    • alternative: 2021-05-01
    참고
    • 현재는, analyzed만 사용 가능합니다. alternative에 대해서는, 향후 사용 가능하게 될 예정입니다.

    • 분석 결과로서 화면에 alternative가 표시되는 경우가 있습니다만, 사양이 변경될 가능성이 있으므로 주의해 주십시오.

    분석 값 설명

    attributetypedescription
    `@{DATE.literal}string사용자가 말한 그대로의 값
    ex) 12월 25일
    `@{DATE.analyzed}-사용자가 확정적인 날짜를 응답하지 않고 일부 정보만 응답한 경우
    ex) 25일 → 미래 날짜로 유추하여 반환 
    ex) 현재 날짜가 2022년 12월 24라면 2022년 12월 25로 분석
    `@{DATE.analyzed.value}stringex) 2020-12-25
    `@{DATE.analyzed.year}number분석된 년도 값
    ex) 2021
    `@{DATE.analyzed.month}number분석된 달(month) 값
    ex) 12
    `@{DATE.analyzed.day}number분석된 날짜(day) 값
    ex) 25
    `@{DATE.analyzed.dayOfWeek}number분석된 요일 값을 숫자로 표현
    ex) 월요일~일요일 → 0~6
    ex) 5 → 토요일
    `@{DATE.analyzed.type}string분석된 값의 type을 표시
  • availableDate: 유효한 날짜. 아래의 경우에 해당하지 않는 경우
  • unavailableDate: 캘린더에 없는 날짜 또는 슬롯 모듈에서 추측할 수 없는 범위의 값
  • unavailableDateCombi: 날짜와 요일이 일치하지 않는 경우
  • multiDate: 날짜가 여러 번 나온 경우
  • `@{DATE.analyzed.relative}-현재 날짜 정보와 실제 분석된 날짜 정보 사이의 상대적인 값. analyzed를 기준으로 분석
    `@{DATE.analyzed.relative.year}number현재 년도와 실제 분석된 날짜의 년도 사이의 상대적인 값. analyzed가 availableDate일 때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 2년 전 → -2
    `@{DATE.analyzed.relative.month}number이번 달과 실제 분석된 날짜의 달 사이의 상대적인 값. analyzed가 availableDate일 때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 2달 후 → 2
    `@{DATE.analyzed.relative.week}number이번 주와 실제 분석된 날짜의 주 사이의 상대적인 값. analyzed가 availableDate일 때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 2주 전 → -2
    `@{DATE.analyzed.relative.day}number오늘 날짜와 실제 분석된 날짜 사이의 상대적인 값. analyzed가 availableDate일 때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 3일 후 → 3
    `@{DATE.alternative}-
    • 대체 값 사용자가 확정적인 날짜를 응답하지 않고 일부 정보만 응답한 경우
      ex)25일
      • @{DATE.analyzed}로 미래 날짜로 유추하여 반환됨
      • @{DATE.alternative}로 과거 날짜로 유추하여 반환됨
    • 사용자가 확정적인 날짜를 응답한 경우
      ex)2021년 12월 25일
      • @{DATE.analyzed}과 @{DATE.alternative}는 동일한 값을 가짐
    `@{DATE.alternative.value}stringex) 2020-12-25
    `@{DATE.alternative.year}number대체 값의 년도
    ex) 2021
    `@{DATE.alternative.month}number대체 값의 달(month)
    ex) 12
    `@{DATE.alternative.day}number대체 값의 날짜(day) 
    ex) 25
    `@{DATE.alternative.dayOfWeek}number대체 값의 요일을 숫자로 표현 월요일~일요일 → 0~6
    ex) 5 → 토요일
    `@{DATE.alternative.type}string분석된 값의 type을 표시
    • availableDate: 유효한 날짜 혹은 아래 case에 해당하지 않는 경우
    • unavailableDate: 달력에 없는 날짜이거나 슬롯 모듈에서 추측 불가능한 영역이 누락된 경우
    • unavailableDateCombi: 날짜와 요일이 맞지 않는 경우
    • multiDate: 멀티로 잡힌 경우
    `@{DATE.alternative.relative}-현재 날짜 정보와 실제 분석된 날짜 정보 사이의 상대적인 값. alternative를 기준으로 분석
    `@{DATE.alternative.relative.year}number현재 년도와 실제 분석된 날짜의 년도 사이의 상대적인 값. alternative가 availableDate일때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 2년 전 → -2
    `@{DATE.alternative.relative.month}number이번 달과 실제 분석된 날짜의 달 사이의 상대적인 값. alternative가 availableDate일 때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 2달 후 → 2
    `@{DATE.alternative.relative.week}number이번 주와 실제 분석된 날짜의 주 사이의 상대적인 값. alternative가 availableDate일 때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 2주 전 → -2
    `@{DATE.alternative.relative.day}number오늘 날짜와 실제 분석된 날짜 사이의 상대적인 값. alternative가 availableDate일 때만 analyzed를 기준으로 분석 또는 사용자가 상대적인 발화를 했을 때만 분석
    ex) 3일 후 → 3

    예 1 : 현재 날짜가 2022년 5월 31일이고 사용자가 '주말'이라고 말한 경우

    속성설명
    분석6/4 또는 6/5로 추정미래의 토요일 또는 일요일
    year2022토요일과 일요일 모두 2022년
    month6토요일과 일요일 모두 6월
    daynull토요일인지 일요일인지에 따라 달라짐
    유형multiDate여러 날짜가 적용됨

    예 2 : 현재 날짜가 2022년 5월 2일이고 사용자가 '주말'이라고 말한 경우

    속성설명
    분석5/7 또는 5/8로 추정미래의 토요일 또는 일요일
    year2022토요일과 일요일 모두 2022년
    month5토요일과 일요일 모두 5월
    daynull토요일인지 일요일인지에 따라 달라짐
    유형multiDate여러 날짜가 적용됨

    예 3 : 현재 날짜가 2022년 5월 31일이고 사용자가 '오늘'이라고 말한 경우

    속성설명
    분석2022-05-31결정적인 날짜
    year2022
    month5
    day31
    유형availableDate유효한 날짜

    예 4 : 현재 날짜가 2022년 5월 31일이고 사용자가 '1일'이라고 말한 경우

    속성설명
    분석2022-06-01미래의 확정적인 날짜
    year2022
    month6
    day1
    유형availableDate유효한 날짜
    • 분석된 엔티티의 예시
    {
      "literal" : "12월 25일",
      "analyzed":
      {
        "value" : "2022-12-25",
        "year" : 2022,
        "month" : 12,
        "day" : 25,
        "dayOfWeek" : 5,
        "type" : "availableDate",
        "relative" : 
       {
         "year" : 0,
         "month" : 1,
         "week" : 1,
         "day" : 11
       }
      },
      "alternatives" :
      {
        "value" : "2021-12-25",
        "year" : 2021,
        "month" : 12,
        "day" : 25,
        "dayOfWeek" : 5,
        "type" : "availableDate",
        "relative" : 
       {
         "year" : -1,
         "month" : 1,
         "week" : 1,
         "day" : 11
       }
      }
     }
    }
    

    TIME

    TIME는 '7시 반', '2시간 후', '지금'과 같은 입력 패턴을 인식하고 해당하는 시간을 슬롯에 넣어서 전달합니다.

    참고

    슬롯 모듈은 '예약'을 테마로 하기 때문에 모든 시간은 10분 단위로 끊어질 수 있도록 추정합니다.
    ex) 예를 들어 지금 시간이 오후 6시 30분이고 7분뒤라고 발화했다면, 6시 37분이 아니라 6시 40분으로 반환합니다.

    TIME를 활성화하려면 DATE를 ON해 주십시오.

    attributetypedescription
    `@{TIME.literal}string사용자가 말한 그대로의 값
    ex) 7시 반
    `@{TIME.analyzed}-
    • 분석된 값으로 사용자가 확정적인 시간을 응답하지 않고 일부 정보만 응답한 경우
      • ex)7시
        • @{TIME.analyzed}로 미래 시간으로 유추하여 반환됨
        • @{TIME.alternative}로 과거 시간으로 유추하여 반환됨
    • 사용자가 확정적인 시간을 응답한 경우
      • ex)오후 1시 30분
        • @{TIME.analyzed}과 `@{TIME.alternative}는 동일한 값을 가짐
    `@{TIME.analyzed.value}stringex) 19:30
    `@{TIME.analyzed.hour}number분석된 시간 값
    ex) 19
    `@{TIME.analyzed.minute}number분석된 분(minute) 값
    ex) 30
    `@{TIME.analyzed.type}string분석된 값의 type을 표시
    • availableTime: 유효한 시간이고, 아래 case에 해당하지 않는 경우
    • unavailableTime: 24 이상의 hour 혹은 60 초과의 minute 값을 가지는 경우 혹은 추측 불가능한 영역이 누락된 경우
    • multiTime: 멀티로 잡힌 경우
    • @{TIME.analyzed.relative}: 현재 시간 정보와 실제 분석된 시간 정보 사이의 상대적인 값. analyzed를 기준으로 분석
    `@{TIME.analyzed.relative.hour}number현재 시간과 실제 분석된 시간의 시각 사이의 상대적인 값. analyzed를 기준으로 분석
    ex) 1시간 후 → 1
    `@{TIME.analyzed.relative.minute}number현재 분과 실제 분석된 시간의 분 사이의 상대적인 값. analyzed를 기준으로 분석
    ex) 30분 후 → 30
    `@{TIME.alternative}-
    • 사용자가 확정적인 시간을 응답하지 않고 일부 정보만 응답한 경우
      ex)7시
      • @{TIME.analyzed}로 미래 시간으로 유추하여 반환됨
      • @{TIME.alternative}로 과거 시간으로 유추하여 반환됨
    • 사용자가 확정적인 시간을 응답한 경우
      ex)오후 1시 30분
      • @{TIME.analyzed}과 @{TIME.alternative}는 동일한 값을 가짐
    `@{TIME.alternative.value}stringex) 07:30
    `@{TIME.alternative.hour}number분석된 시간 값
    ex) 7
    `@{TIME.alternative.minute}number분석된 분(minute) 값
    ex) 30
    `@{TIME.alternative.type}string분석된 값의 type을 표시
    • availableTime유효한 시간 혹은 아래 case에 해당하지 않는 경우
    • unavailableTime: 24 이상의 hour 혹은 60 초과의 minute 값을 가지는 경우 또는 추측 불가능한 영역이 누락된 경우
    • multiTime: 멀티로 잡힌 경우
    `@{TIME.alternative.relative}-현재 시간 정보와 실제 분석된 시간 정보 사이의 상대적인 값. alternative를 기준으로 분석
    `@{TIME.alternative.relative.hour}number현재 시간과 실제 분석된 시간의 시각 사이의 상대적인 값. alternative를 기준으로 분석
    ex) 1시간 후 → 1
    `@{TIME.alternative.relative.minute}number현재 분과 실제 분석된 시간의 분 사이의 상대적인 값. alternative를 기준으로 분석
    ex) 30분 후 → 30
    • 분석된 엔티티의 예시
    {
      "literal" : "7시 반",
      "analyzed":
      {
        "value" : "19:30",
        "hour" : 19,
        "minute" : 30,
        "type" : "availableTime",
        "relative" : 
       {
         "hour" : 1,
        "minute" : 30,
        "second" : -30
       }
      },
      "alternatives" :
      {
        "value" : "07:30",
        "hour" : 7,
        "minute" : 30,
        "type" : "availableTime",
        "relative" : 
       {
         "hour" : 1,
        "minute" : 30,
        "second" : -30
       }
      }
    }
    

    People

    People은 '성인 하나, 아이 둘', '어른 셋'과 같은 인원 수 입력 패턴을 인식하고 총 인원 수나 성인/아이의 숫자를 슬롯에 넣어서 전달합니다.
    시스템 엔티티에서 People을 On하여 사용할 수 있습니다.

    주의

    현재 스펙상으로 '학생'은 아이로 계산하지 않습니다.

    attributetypedescription
    `@{PEOPLE.literal}string사용자가 말한 그대로의 값
    ex)'성인 둘에 아이 하나'
    `@{PEOPLE.total}number분석된 사람 수 총 값
    ex) 3
    `@{PEOPLE.numAdult}number분석된 성인의 수
    ex) 2, 만일 child 정보가 없다면 항상 total의 값으로 유추하여 채움
    `@{PEOPLE.numChild}number분석된 아이의 수
    ex) 1, child 정보가 없다면 항상 0으로 유추
    `@{PEOPLE.type}string분석된 값의 type을 표시
    • availablePeople: 유효한 사람의 수
    • multiPeople : 멀티로 잡힌 경우
    • 분석된 엔티티의 예시
    {
      "literal" : "성인둘에 아이 하나",
      "total" : 3,
      "numAdult" : 2,
      "numChild" : 1,
      "type" : "availablePeople"
    }
    

    Name

    사용자가 입력한 값 중 이름을 인식하여 슬롯에 넣어서 내보낼 수 있습니다. 
    시스템 엔티티에서 People을 On하여 사용할 수 있습니다.

    주의

    사람의 이름이 아닌 단체이름 /회사이름/닉네임의 경우는 인식하지 않습니다.

    attributetypedescription
    `@{NAME.literal}string사용자가 말한 그대로의 값
    ex) '선우정아'
    `@{NAME.lastName}string전체 이름 중 '성'
    ex) 선우. lastName 정보가 없다면 채우지 않음
    `@{NAME.firstName}string전체 이름 중 '이름'
    ex) 정아. firstName 정보가 없다면 채우지 않음
    `@{NAME.type}string분석된 값의 type을 표시
    • availableName: 유효한 이름 혹은 아래 case에 해당하지 않는 경우
    • noLastName: lastName이 누락된 경우
    • noFirstName: firstName이 누락된 경우
    • noPersonName: 사람의 이름이 아닌 경우
    • multiName: 멀티로 잡힌 경우
    • 분석된 엔티티의 예시
    {
      "literal" : "선우정아",
      "lastName" : "선우",
      "firstName" : "정아",
      "type" : "availableName"
    }
    

    활용방법

    • 사용자 변수에 저장: `@{DATE.analyzed.dayOfWeek}과 같이 원하는 field를 선택하여 사용자 변수에 할당하여 활용할 수 있습니다.
      chatbot-chatbot-3-2_slotnormalizer-3_ko

    • 태스크 대화

      • 사용자 응답값인 경우: literal의 값으로 저장하여 활용할 수 있습니다.
        chatbot-chatbot-3-2_slotnormalizer-4_ko

      • 노말라이즈 값인 경우
        @{DATE.analyzed},@{TIME.analyzed},@{PEOPLE.total}, @{NAME.literal}의 값으로 저장하여 활용할 수 있습니다.
        chatbot-chatbot-3-2_slotnormalizer-5_ko

    • 답변

      • 사용자 변수를 그대로 써서 활용할 수 있습니다.
        chatbot-chatbot-3-2_slotnormalizer-3_ko

      • 특정 포맷으로 치환하여 사용하고 싶다면 사용자 변수에 넣어 활용할 수 있습니다.
        ex) @{TIME:kr.time.partsDay} 맞으시죠?
        chatbot-chatbot-3-2_slotnormalizer-6_ko

    참고

    특정 포맷으로 치환하기 위해서는 사용자 변수는 반드시 json형태로 만들어 주어야 합니다.
    chatbot-chatbot-3-2_slotnormalizer-7_ko

    답변포맷팅 방법

    format nameuser variableoutputdetaile.g
    kr.date{"month" : M, "day" : D, "weekday" : "AAAA"}[M]월 [D]일5월 5일
    kr.date.weekday{"month" : M, "day" : D, "weekday" : "AAAA"}[M]월 [D]일 [AAAA][AAAA] = [월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일]5월 5일 화요일
    kr.time{”hour" : H, "minuet" : M}[H]시 [M]분H = 24시간제23시 30분
    kr.time.partsDay{”hour" : H, "minuet" : M}[partsDay] [H]시 [M]분H =12시간제밤 23시 30분
    kr.time.twelveHour{”hour" : H, "minuet" : M}[H]시 [M]분H =12시간제11시 30분
    kr.people{"numPeople" : NNNN}[NNNN] 분1<= N <50 : 서수로 변환, 50<= N : 기수로 변환네 분
    kr.people.arabic{"numPeople" : NNNN}[NNNN] 분N : arabic 숫자 그대로4분
    kr.telNum"XXXYYYYZZZZ"[XXX]에[YYYY]에[ZZZZ]XYZ : 기수로 변환공일공에 이구이구에 이구이구
    kr.telNum.fourDigits"XXXYYYYZZZZ"[ZZZZ]N : 기수로 변환이구이구
    telNum.arabic"XXXYYYYZZZZ"[XXX]-[YYYY]-[ZZZZ]XYZ : arabic 숫자 그대로090-1234-5678
    telNum.fourDigits.arabic"XXXYYYYZZZZ"[ZZZZ]XYZ : arabic 숫자 그대로2929

    API 연동형 엔티티 생성

    API 연동형 엔티티는 챗봇 빌더에서 관리가 불가능한 엔티티 또는 실시간으로 정보가 변경되는 엔티티가 있는 경우에 활용합니다. 예를 들어 직원명이나 고객명과 같이 보안이 중요한 데이터를 챗봇 빌더에 엔티티로 등록하여 관리하는 것이 어려운 경우, API 연동형 엔티티를 활용합니다. 엔티티를 대신 분석할 수 있는 서버의 API url를 입력하면, 사용자가 입력한 발화를 엔티티 분석이 가능한 API 서버에 전달하여 분석된 결과를 받아 시나리오를 전개해나갈 수 있습니다.

    API 연동형 엔티티는 다음과 같은 경우에 사용합니다.

    • 태스크의 슬롯으로 사용하는 경우
    • 답변 조건에서 엔티티 조건을 체크할 경우
    • 액션 메소드v1을 호출할 경우

    API 연동형 엔티티를 사용하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼의 콘솔에서 Services > CLOVA Chatbot > Domain 메뉴를 차례대로 클릭해 주십시오.
    2. 원하는 도메인의 [빌더 실행하기] 버튼을 클릭하여 챗봇 빌더를 실행해 주십시오.
    3. 챗봇 빌더에서 엔티티 > [API 엔티티] 탭을 클릭해 주십시오.
    4. URL 영역의 [수정] 버튼을 클릭해 주십시오.
    5. URL 필드에 엔티티를 분석할 수 있는 API의 주소를 입력하고 [저장] 버튼을 클릭해 주십시오.
      • 챗봇은 입력된 URL을 통해 형태소를 분석한 결과를 포함하여 호출함
    6. [엔티티 생성] 버튼을 클릭해 주십시오.
    7. 엔티티 생성 창이 나타나면 엔티티 이름을 입력하고 [중복확인] 버튼을 클릭하고 [저장] 버튼을 클릭해 주십시오.
    8. 생성된 엔티티를 확인해 주십시오.
    • 요청 형식
    {
      "query": "한국살아",
      "nlpResult": {
        "data": [
          {
            "words": [
              {
                "in": [
                  {
                    "morph": "한국",
                    "tag": "NOUN",
                    "ner": "Ner=B-한국 엔티티 이름",
                    "lemma": null,
                    "start": 0,
                    "end": 5,
                    "feature": 0,
                    "additionals": ""
                  },
                  {
                    "morph": "살아",
                    "tag": "NORMALVERB",
                    "ner": "Ner=O",
                    "lemma": "살다",
                    "start": 6,
                    "end": 11,
                    "feature": 0,
                    "additionals": "아"
                  }
                ],
                "word": "한국살아"
              }
            ]
          }
        ],
        "success": true
      }
    }
    
    • 응답 형식
    {
      "code": "OK",
      "message": "Option[String]",
      "entity": [
        {
          "name": "국가",
          "userInput": "한국",
          "represent": "Korea"
        }
      ]
    }
    

    수동으로 엔티티 태깅

    사전형 엔티티는 대화의 일반 질문에 태깅할 수 있습니다. 엔티티를 등록한 후 모델 빌드가 완료되면 일반 질문 등록 시 엔티티에 해당하는 단어가 자동으로 태깅되며, 태깅된 엔티티는 대화의 질문 목록에서 파란색 글자로 표현됩니다. 엔티티가 태깅된 질문은 대화 모델 학습에 반영되어 사용자의 발화를 인식하는데 도움을 줍니다.
    대화 모델 빌드 전이거나 엔티티가 자동으로 태깅되지 않은 경우에는 챗봇 제작자가 엔티티를 수동으로 태깅할 수 있습니다.
    수동으로 엔티티를 태깅하는 방법은 다음과 같습니다.

    1. 사전 작업을 완료해 주십시오.
      • ‘피자종류’ 엔티티 추가, 대표어: 포테이토 피자
        chatbot-chatbot-3-2_tag01_ko
    2. 질문을 등록한 후, 엔티티로 태깅할 단어를 드래그해 주십시오.
      • 이 시나리오에서는 ‘포테이토 피자’를 드래그합니다.
        chatbot-chatbot-3-2_tag02_ko
    3. 엔티티 선택 창이 나타나면 태깅하고자 하는 엔티티를 선택하고 [적용] 버튼을 클릭해 주십시오.
      • 새로운 대표어로 추가하거나, 이미 등록된 대표어의 유의어로 추가할 수 있습니다.
      • 만약 엔티티가 없는 경우 [엔티티 생성] 버튼을 클릭하여 신규 생성합니다.
        chatbot-chatbot-3-2_tag03_ko
    4. 엔티티 태깅이 완료되었는지 확인해 주십시오.
      chatbot-chatbot-3-2_tag04_ko

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.