[챗봇]Dialogflow를 통해 챗봇 만들어보기

ManSonCoding·2021년 4월 10일
0

"대화" 마저도 인공지능의 영역으로 넓어질까?

개념

챗봇은 기존의 상담사가 존재하던 시절의 노동력을 상당 수 위협하는 존재가 되었다.그럴 수 밖에 없는게, 챗봇이란. 인간의 언어노동을 대신 하는 것이기 떄문이다. 특히 인공지능이 단순하게 QNA 형식에 정해진 질의응답을 하는 것이 아닌 딥러닝 모델의 발달로 조금은 더 '인간스러워졌다' 라고 생각할 수 있게 되었다.

개발 목적

챗봇을 공부하게 된 이유는 음성키오스크 개발 관련하여 가장 알맞은 형식이라고 생각되었기 때문이다. 챗봇은 현재 네이버, 카카오와 같은 대형 플랫폼에서 운영할 수도 있고, 또는 직접 자연어 처리 모델을 개발하여 사용하기도 한다.

기존의 국어국문학을 공부하면서 내가 가지고 있는 도메인 지식과 컴퓨터간 가장 잘 어울리는 스킬이라고 생각하여 관심있게 보던 중, 프로젝트의 구성요소가 맞아떨어지게 되면서 챗봇을 공부해보게 되었다.

네이버D2 블로그에서 배우다

Link: 네이버 D2 챗봇을 위한 대화는 어떻게 디자인할까

챗봇에 대한 개념이 전무한터라, 다음 블로그와 나동빈님 유튜브를 참조했다.

Link: 다이얼로그 플로우의 개요 및 챗봇 개발 시작하기 (나동빈님은 개인적으로 신인것 같다.)

챗봇 요약

  • 인텐드: 발화의 의도를 말한다.
  • 슬롯 : 발화에 포함된 정보를 가지고 있는 것이다. 슬롯에는 인텐드와 슬롯이 동시에 필요한 경우도 존재한다. 이를 페어라고 한다.
  • 엔티티 : 자료구조를 생각하면 된다. 관련된 정보가 저장된 슬롯이다.

내가 만든 챗봇

챗봇은 계속 업데이트 됩니다.

Link: 버거킹 챗봇

느낀 점

인텐드를 정의하는 것, 자료구조인 엔티티를 정의하는 것, 그리고 이들 간의 워크 플로우인 알고리즘을 정의하는 것이 중요하다고 느꼈다.

가령 예를 들어 손님의 주문을 확인했는데, 주문이 다르게 나온 경우 손님은 주문을 수정할 수 있어야 한다. 이 때 손님이 특정 단어를 의미하는 의도를

요청하면, 그 의도로 넘어가서 문제를 해결하고 다시 돌아오는(원자 단위) 챗봇의 구성을 해야 한다고 느꼈다.

챗봇을 만들면서 시나리오를 먼저 작성해야 한다는 것을 느꼈고, 무엇보다도 발화 데이터를 구하는 것이 조금은 어려울 것이라고 생각한다.

설령 자동화 되어 있다고 하더라도 발화 데이터가 개발 목적에 맞는 데이터인지 판단하는 것은 아직 사람이 월등히 잘하기 때문이다.

특히 그냥 대화를 아무렇게나 구성하는 것이 아닌, 엔티티와 인텐드를 이해하고 구성하는 것이 필수적이라고 느꼈다.




다음에 배울 것.
  • 챗봇 데이터를 한번에 구성하고 정제하는 방법?
  • 배달의 민족 음성 주문 시스템에 대해서 공부
  • 인텐드에 숨어있는 엔티티 찾아내는 법
  • pytorch를 활용한 자연어처리
  • Django를 활용한 웹프레임워크 개발
  • 서버의 개념 및 Flask로 간단한 서버 만들기
  • IOS 앱개발
  • 배포와 도커 사용
profile
AlwaysILearned

0개의 댓글