서론
사이드로 기존에 만들었던 챗봇을 심폐소생하려고 하는데 개념을 다 까먹어버렸다.
만들었던 당시보다 가이드가 많이 발전되어 있어서 챗봇의 기본 개념부터 익혀보고자 한다.
위의 링크를 보고 나에게 필요한 부분을 정리해보고자 한다.
(참고로 카카오에서 챗봇을 만들기 위해서는 OBT 신청을 해야하며 기간이 꽤 소요된다. 공동작업자도 마찬가지이다. 만들 계획이 있다면 미리미리 신청해서 승인을 받아놓는 것이 좋다.)
이 글에서 사용되는 예시는 이번에 만드는 챗봇에 적용하기 위한 것일 수 있다.
(내가 만드는 챗봇의 주 기능은 '지금 롤 하고 있는지 알아내는 것'이다. 참고하면 이해가 더 쉬울 것...)
엔티티 (Entity)
엔티티 구조를 설계하는 것이 중요하다. 챗봇에서의 가장 기본적인 개념 중 하나이다.
- 사용자 발화 : 사용자가 봇과 커뮤니케이션하기 위해 내뱉는 말 또는 텍스트 등을 의미
- 엔티티(Entitiy) : 봇이 이해할 수 있는 용어를 체계적으로 정리한 데이터 사전
이렇게 보면 이해하기 힘들다.
아래 예시를 보자.
이해가 잘 된다.
역시 챗봇은 노가다의 산물이다.
csv를 통해 대규모 업데이트도 가능하다. 카카오에서 예시로 제공해준 포맷은 아래와 같다.
지금까지의 것들은 사용자가 직접 입력하는 '나의 엔티티' 에 대한 관리였고, 아래는 시스템에서 기본적으로 제공하는 엔티티이다.
예를 들어, 위 시스템 엔티티가 등록되어 있는 상황에서 사용자가 '올해 무슨 해야' 라고 발화하였다면?
챗봇은 올해를 @sys.date.period에 있는 대표엔트리(혹은 동의어)라는 것을 알아먹고 '올해[@sys.date.period] 무슨 해야'라고 이해할 수 있다. 이게 챗봇이 의미를 추출해내는 방식이다.
엔티티 입력
대강 이런 기능의 봇을 구현할 때 예상되는 사용자 발화를 생각해보자.
크게 저런 케이스가 있다고 해볼 때 예상되는 사용자 발화들은 이러하다.
(사실 케이스는 지금도 무궁무진하게 떠오르지만 일단...)
- 지금 롤 하는지 알려줘
- 지금 게임하는지 알려줘
- 오늘 게임했는지 알려줘
- 어제 게임했는지 알려줘
- 얘 롤해?
- hideonbush 게임중?
- hideonbush 어제 게임했어?
- 롤 언제했어?
첨부터 닉네임을 입력해도 챗봇이 그 말이 닉네임임을 구분할 능력이 없기 때문에 여기서 엔티티로 등록해서 챗봇에게 의미를 주입시켜 주어야 하는 것은 시간 정도인 것 같다. (의식의 흐름이며 챗봇을 기획할 때는 달라질 수 있음 주의)
라이엇 오픈 api에서 제공하는 것은 현재하고 있는 게임 + 최근 전적 100게임까지이다.
이런 것을 생각해볼 때 너무 먼 과거의 경우 특정 시간을 잡더라도 대답이 어려울 수 있다.
그래서 구체적인 특정 datetime의 게임 전적 조회 기능은 제공하지 않는 것이 좋을 것 같다. (최소 스펙으로 가볍게 만들거지롱)
그렇다면 챗봇에서 제공할 수 있는 것은 :
1. 지금 게임 중인지 아닌지 여부 (Y/N) - @time.now
2. 마지막으로 게임한 시간 - @time.lastgame
이렇게 구분할 수 있겠다. 그걸 구분하기 위해 사용자 발화에 엔티티를 등록해보겠다.
관리자센터 > 시나리오에 들어가면 이렇게 발화를 등록할 수 있다.
아까 위에 언급한 발화를 분류해보자
- 지금 롤 하는지 알려줘 @time.now
- 지금 게임하는지 알려줘 @time.now
- 오늘 게임했는지 알려줘 @time.lastgame
- 어제 게임했는지 알려줘 @time.lastgame
- 얘 롤해? @time.now
- hideonbush 게임중? @time.now
- hideonbush 어제 게임했어? @time.lastgame
- 롤 언제했어? @time.lastgame
이런 식으로 등록할 수 있다. (노가다성 작업)
롤=게임=리그오브레전드로 따로 등록할까 고민하다가, 어차피 롤 묻는 용의 챗봇인데 너무 쪼개서 정확도가 떨어질까봐 그냥 목적어도 붙여서 등록했다.
이제 챗봇은 사용자가 지금 게임 중인지를 묻는지, 마지막 게임 시간을 묻는지를 파악할 수 있다.
(ㅋㅋㅋㅋㅋ근데 플로우 상 지금 게임 중 아니면 마지막 게임 시간을 추가 응답하는 게 자연스러운 것 같기도? 지금은 개념 공부니까 나중에 생각해보자^_^ 어케 완성되는지 많관부~)
다음글
2022.08.16 - [PM 혹은 서비스기획자로 살아보자] - 카카오 챗봇 개념 공부 (2) : 시나리오, 블록, 파라미터 설정
'PM 혹은 서비스기획자로 살아보자' 카테고리의 다른 글
[ChatGPT] 노코드 툴로 AI 서비스 만들기! : 릴리즈 노트 생성기(feat.GetGPT) (5) | 2023.04.06 |
---|---|
카카오 챗봇 개념 공부 (2) : 시나리오, 블록, 파라미터 설정 (1) | 2022.08.16 |
첫번째 회사 + 두번째 회사 회고 (feat.신입PM) (1) | 2022.08.14 |
PM/PO/서비스기획자 면접준비 : (3) 꼬리질문 리스트 (0) | 2022.08.07 |
PM/PO/서비스기획자 면접준비 : (2) 면접질문 리스트 (2) | 2022.07.27 |