[Kakao + Flask] 카카오 챗봇 개념 및 용어 -(1)

Soorim Yoon·2022년 9월 15일
0

챗봇이란

챗봇(Chatot)은 음성이나 문자를 통한 인간과의 대화를 통해서 특정한 작업을 수행하도록 제작된 컴퓨터 프로그램이다. 구현 방법에 따른 챗봇의 종류는 다음과 같다.
1) 인간이 사용하는 언어를 이해해서 대화를 진행하는 자연어처리 기술을 적용하는 언어 이해 방식
2) 입력받은 말에서 특정 단어나 어구를 검출하여 그에 맞는 미리 준비된 응답을 출력하는 검색 방식
3) 각본을 미리 만들고 각본에 따라서 사용자의 입력에 대한 동작과 각본에 있는 응답을 출력하는 각본 방식
카카오톡, 네이버 클라우드 플랫폼, LINE, 슬랙, 페이스북 메신저, 스냇치봇 등에서 챗봇을 구동할 수 있는 API를 제공한다.

본 게시글에서는 카카오톡에서 제공하는 API를 활용해 챗봇을 구동하는 방법을 다루고자 한다. 본 게시글에 첨부하는 이미지들의 출처는 kakao i 오픈빌더이다.


위 사진은 <카카오톡 채널 챗봇 서비스>의 예시이다. 챗봇 관리자 센터의 서비스 구조는 다음과 같다.

주요 개념

챗봇 개발을 위해 알아야 하는 주요 용어와 개념을 소개하고자 한다.

엔티티

엔티티(Entity)란 봇이 이해할 수 있는 용어를 체계적으로 정리한 데이터 사전이다. 엔티티가 있으면 봇은 사용자의 발화로부터 사용자의 의도에 맞는 동작을 수행하기 위한 주요 데이터를 추출할 수 있다.

엔티티의 구조는 다음과 같다. 사용자가 정의할 수 있는 엔티티는 총 세 가지로 이루어지며, '엔티티명', '대표엔트리', '동의어'가 있다.

사용자 발화

사용자 발화란 사용자가 봇과의 커뮤니케이션을 위해 입력하는 텍스트 또는 음성을 의미한다. 챗봇의 경우 사용자 발화가 텍스트 데이터이고, 스피커 봇은 실제 사용자의 음성이다.

시나리오

시나리오(Senario)는 봇 안에서 사용자가 경험할 수 있는 서비스 단위이다.
ex) 금융과 관련된 서비스를 제공하는 봇의 경우, ‘예금’, ‘적금’, ‘대출’, ‘연금' 등의 시나리오를 가질 수 있다.

시나리오의 종류

1) 기본 시나리오
기본 시나리오는 모든 봇에 장착되어 있는 시나리오로, '웰컴 블록', '폴백 블록', '탈출 블록'을 항상 포함한다.

  • 폴백 블록은 지정된 키워드(발화)가 없을 때 출력되는 문구이다.

세 가지 블록에 대한 자세한 설명은 다음과 같다.

2) 커스텀 시나리오
커스텀 시나리오는 봇 작업자가 서비스를 단위 별로 구분하여 생성 가능한 시나리오이다.

블록

사용자의 의도(intent)를 응대하는 가장 작은 단위를 블록(block) 이라고 한다. 시나리오는 다양한 블록들이 모여서 이루어진다.

1개의 블록은 1개의 의도를 표현하며, 사용자 발화가 봇으로 유입되면, 블록안에 사전에 등록된 발화내용을 기반으로 사용자 의도가 파악되어 1개 블록이 최종 추출된다. 이 과정에서 블록 안에는 사용자의 예상 발화와 봇이 수행할 액션 및 응답 내용이 설계된다.

블록의 작동 원리는 다음과 같다. 사용자의 발화를 기반으로 화자의 의도에 해당하는 블록이 추출되고 이는 사용자에게 출력으로 이어진다.

발화 패턴

발화 패턴(Pattern) 은 챗봇이 사용자 발화를 인식할 수 있도록 만드는 핵심 원리이다.

발화 패턴을 만드는 과정은 다음과 같다.

  • 봇 작업자가 외부 사용자들이 ‘이렇게 말할 것이다’라고 예상되는 발화문을 등록한다.
  • 발화는 선택하여 삭제 가능하다.
  • 그 후 해당 문장 안에서 중요한 의미(또는 정보)를 갖는 부분을 엔티티로 태깅한다.

발화 패턴을 등록하면, 챗봇은 사용자가 조금씩 다르게 말하더라도 각각의 ‘의도’에 해당하는 블록을 선택해 보여줄 수 있다.

파라미터 설정

파라미터(Parameter) 는 봇이 사용자의 의도를 정확히 이해하기 위해 필요로 하는 데이터이다.

파라미터의 구성 요소

1) 파라미터 명
여러 개의 파라미터를 구분하는 이름이다.

2) 엔티티
발화에 매핑된 엔티티를 파라미터에 연결한다. 발화 입력시 유효한 엔티티가 있는 경우에는 추천 되고, 선택하여 태깅이 가능하다.

3) 값
‘동작’영역에서 ‘값’은 ‘엔티티’를 통해서 채우거나 이전 또는 현재의 정보에 접근해서 값을 채울 수 있다. 이외에도 고정된 값을 지정해서 채울 수 있으며, 값을 사용하기 위한 표현법은 다양하다.
ex) 엔티티 값, 특정 값, 고정된 값

응답 설정

추후 보완 예정

스킬

추후 보완 예정

머신러닝

머신러닝 은 숏-헤드 유형의 발화에 대해 보다 정확하게 응대할 수 있도록 도와주는 기능이다.

챗봇 서비스를 운영하다 보면 크게 두 가지 형태의 발화를 받게 된다. 이는 '숏-헤드' 유형과 '롱-테일' 유형의 발화이다.
1) 숏-헤드 유형 : 많은 사용자로부터 높은 빈도로 유입되는 주요 발화
2) 롱-테일 유형 : 낮은 빈도로 유입되는 다양한 발화

챗봇에 유입되는 질의 유형의 구분은 다음과 같다.

좋은 성능의 봇 서비스를 만들기 위해서는 두 가지 유형의 발화를 모두 커버할 수 있어야 한다. 하지만 사용자가 롱-테일 유형의 질문까지 모두 블록으로 만들어 응대하기는 쉽지 않다. 머신러닝을 활용하면 롱-테일 유형의 질문에 대비해 봇의 성능을 향상시킬 수 있다.

사용자 발화의 종류

1) 패턴 발화: 패턴 매칭을 위한 발화로 입력된 예상 발화를 기준으로 어순 일치, 엔티티와 조사, 어미의 변형에 한정하여 동일한 패턴으로 간주하여 의도를 파악한다.
2) 머신러닝 발화: 기계가 의도를 파악하기 위해 학습에 사용될 발화이다. 문장의 의미를 파악하기 때문에 패턴 발화보다 더 넓은 적용 범위를 가진다.


위 그림은 머신러닝의 유무에 따라 달라지는 사용자 발화에 대한 대응 범위이다. 이를 통해서도 알 수 있듯이, 머신러닝 발화와 패턴 발화를 같이 입력한 봇은 패턴 발화만 입력한 봇에 비해 사용자 발화에 대한 대응 범위가 넓어진다. 이는 곧 챗봇 성능의 향상을 의미한다.

스킬

스킬 은 블록의 출력만으로는 한계가 있는 문제점을 보완해 다양한 질문에 대해 더욱 정확한 응답을 돌려주는 기능을 한다. 표면적으로는 블록과 기능, 성질이 동일해보이지만 블록만으로 출력하기 어려운 응답을 제공하는 역할을 한다.

스킬의 역할

1) 출력
2) 데이터

추후 보완 예정

📚 참고 문서

카카오 챗봇 만들기 튜토리얼 - 공식 문서
스킬 만들기 - 공식 문서
카카오 챗봇 만들기
[KAKAO+Flask] 챗봇 만들기

profile
👩🏻‍💻 AI를 좋아하는 IT학부생 > 성장하는 2년차 개발자

0개의 댓글