인텐트, 엔티티, NLP, 자연어처리, 스몰토크 용어정리 by 젠틀파이
젠틀파이에서 챗봇기획자/개발자를 찾고 있습니다. 챗봇의 구조에서부터 UX, 시나리오, 컨텐츠, 개발까지 누구도 걷지 않은 길을 함께 배우고 함께 나아가고 싶습니다.
'A사에서는 B 인공지능으로 챗봇을 만들었는데,
대략 시나리오가 100개, 인텐트가 400개 정도 들어갔다고 합니다'
네??? 무슨말이죠?
시작한지 1년 반이 넘어가는데 여전히 이 블로그 최다 조회 글은 2016년에 쓴 '챗봇은 무엇인가'다. 어려운 담론보다는 기초부터 시작해야 할 필요성을 느껴, 챗봇과 관련된 기본 용어부터 정리해본다. 일종의 용어설명집. 요즘은 기술 이름마저 브랜딩화되는 추세에다 영한문 번역 시 한글이 다양한 표현으로 번역되는 문제, 게다가 업체마다 같은 말도 범위를 다르게 사용하는 경우까지 섞여, 모든 경우에 적용되는 보편적 의미를 적용하긴 어렵지만, 뉴스기사나 문서, 대화 상에서 이해하는데 무리가 없을 정도로 분류해 봤다. 아래 용어는 '기업' 혹은 '서비스'에 따라 다르게 적용될 수 있음을 미리 알아두자.
1) 자연어
인간이 의사소통시 사용하는 말 (반대개념 : 기계가 알아듣는 말, 기계어, 코드)
예] 라디오 좀 켜줘 (반대되는 표현: intent- #turn_on, entity- @appliance: radio)
2) 자연어 처리 (NLU: Natural Language Understanding)
사람이 한 말 혹은 적은 문장/단락/글을 “이해”하는 것. 말하는 사람의 의도와 의도 안에 사용된 주요키워드를 파악해 내는 것
3) 자연어처리 엔진
자연어처리를 할 수 있게 만들어주는 프로그램 혹은 툴.
음성, 이미지 등 인공지능 엔진은 종류가 다양한 데, 자연어 처리 엔진은 그 중 하나다. Watson에도 여러개의 인공지능 엔진이 있다. 그중에 자연어 처리, 그 자연어 처리 중 대화 처리와 관련된 엔진은 Conversation이다. 마찬가지로 '카카오 i'의 다양한 인공지능 엔진 중 대화처리 엔진이 따로 있다.
예: Watson 컨버세이션 (Conversation), MS Luis, 네이버 클로바의 Conversation, 카카오 카카오 i의 대화 엔진, 단비, 마인즈랩 maum.ai 등
4) 인텐트 (Intent)
자연어로 이야기했을 때, 말하는 사람의 발화 의도.
예] 소리가 너무 작아 → 인텐트: 볼륨 높여라(#Turn_up)
5) 대화 문장, 말뭉치(Utterance)
인텐트를 표현하는 다양한 예시 문장들로, 인공지능을 학습시키기 위한 교육자료(예제집)라 할 수 있다. 동일한 의미의 다양한 문장(Utterance)을 대화엔진에 입력하고 학습시켜야 다양한 표현에도 정확한 의도를 파악할수 있게 된다.
예] 볼륨을 높여라(#Turn_up)의 대화문장들(Utterance)
- 소리 좀 키워줘
- 소리가 작은데?
- 볼륨 높여
- 잘 안들리니까 소리좀 키워주면 참 좋겠다
6) 엔티티, 구성요소 (Entity)
문장에 들어가는 구성 요소들. 주로 명사 형태.
예] 라디오 소리 조금만 키워줘
- Entity @appliance : 라디오
- Entity @feature: 볼륨
- Entity @number : 조금 (volume:1)
7) 시나리오(Scenario)
미리 설계된 대화의 흐름
예] 사용자가 배송상황을 알려달라고 할때의 시나리오
• 일단 알았다고 대답 → 송장번호를 알려달라고 문의 → ① 송장번호를 모른다 하면 로그인으로 연결 ② 송장번호 안다고 하면 송장번호에 맞춰 배송상황 노출 or 틀린 송장번호 일경우는 재질의
8) 슬롯채우기(Slot Filling)
몇 개의 정보를 알아내야 답을 줄 수 있을 때 그 몇 개의 정보(Slot)를 다 채워넣는(Filling) 것으로, 모든 슬롯이 다 채워질때까지 질문한다.
예] 유저가 '날씨알려줘'라고 질문할때는 3개의 슬롯을 채워야 답변을 줄 수 있다.
① 위치(어디의 날씨) + ②시간(오늘? 내일? 다음주 날씨?) + ③ 날씨 항목(온도? 습도? 비오는지? 아니면 전체 다 알려달라는 건지)
9) 스몰토크 (Smalltalk)
일상적 대화. 사교적 커뮤니케이션을 위한 대화들
예] 너는 어디서 사니? 나 배고프다. 너 결혼했니? 등
10) 자연어 생성 (NLG : Natural Language Generation)
아예 생성하는 법과 일정한 규칙에 맞게 만들어 내는 방법이 있다.
예] TV 가격 문의가 들어올때 자연어 생성을 한다면 2가지 방법을 쓸 수 있다.
① 인공지능에서 알아서 자기 맘대로 생성하게 함
② 규칙에 맞게 "요청하신 '@TV종류'는 '@DB에서 불러온 가격'원입니다." 라고 만들어 냄
위의 모든 요소를 포함해서 하나의 예시를 들어보기로 한다.
나는 오늘 피자주문 챗봇을 만들었다.
우선, 질문의도(인텐트)를 파악하기 위해 "페퍼로니 피자 주문하고 싶어요". "지금 주문되나요?" 등의 대화문장(Utterance)을 만들어서, 인공지능 서비스 왓슨의 자연어처리 엔진 중에 대화엔진인 Conversation 안에 넣고 학습시켰다. 50여개의 Utterance를 넣었더니 대충 알아듣는 느낌이다.
피자배달 주문을 위해서는 ①피자종류 ② 주소 ③전화번호가 필요해서, 챗봇에서 질문을 통해 이 세가지 부분을 알아내면 주문을 완료하는 슬롯채우기 방식으로 제작했다.
주문이 끝났을 때는 "[고객 이름]이 주문하신 [피자종류]를 [주소]로 배달해드리겠습니다"라고 자연어 생성을 통해 답변하게 만들었다.
고객이 메뉴를 조회하는 과정은 시나리오로 만들었다. 피자 종류 조회 → 사이드 메뉴 조회 → 음료 종류 조회 → 주문 권유 의 순서다.
주문 챗봇이지만, 간혹 사람들이 이름이 뭐냐 어디서 사냐 등을 물어봐서, 이런 '스몰토크'들은 유형별로 정리해서 준비했다.
기초적인 내용이지만 처음 시작하는 사람들이나 챗봇 관련 글, 기사를 읽을 때 도움이 될수 있길 바래본다. 그리고, 늘 하는 얘기지만 하나라도 간단하게 만들어보면 훨씬 이해하기 쉽다. (단비, 클로저 등 국내 챗봇 빌더 서비스 추천)
이 블로그는 순서없이 글이 올라오지만, 혹시 이 블로그가 처음이라면 아래의 순서대로 이 블로그를 읽어보길 권한다.
1) 챗봇은 무엇인가?
2) 챗봇 관련 개념 정리
3) 챗봇 제작에 사용되는 기본 용어 정리 (본 글)
버리는 데이터를 일하는 데이터로
AI 챗봇에서 나오는 데이터, 과연 얼마나 활용하고 계시나요?
AI 챗봇 운영비를 낮추고, 데이터로 마케팅에도 사용하고!
지금 당장 코코너티브로 챗봇의 가치를 올려보세요!
코코너티브 https://www.coconutive.com
젠틀파이에서 챗봇기획자/개발자를 찾고 있습니다. 챗봇의 구조에서부터 UX, 시나리오, 컨텐츠, 개발까지 누구도 걷지 않은 길을 함께 배우고 함께 나아가고 싶습니다.
젠틀파이는 챗봇 제작 전문 그룹입니다.
경험이 다른 챗봇을 만들고 싶으시다면, 젠틀파이 hello@gentlepie.com 에 문의 주세요.
젠틀파이의 글과 챗봇 소식을 계속 보고 싶으시다면,
페이스북 챗봇 그룹
제이미 트위터 @jamiepark
이 브런치는 챗봇에 대한 다양한 소식이 업데이트됩니다. 브런치 구독