Post

자연어 처리-챗봇

NLP 시리즈

NLP는 어떤 것인가?

NLP_1 자연어 처리
NLP_2 자연어 처리-챗봇
NLP_3 NLP에서 영어와 한글의 차이
NLP_4 영어 in NLP
NLP_5 한글 in NLP

챗봇

자연어 처리는 Natural Language Processing으로 NLP라고 불립니다.
컴퓨터가 자연어를 이해, 생성, 조작할 수 있도록 하는 한 분야입니다.
기계 번역, 문서 요약, 감성 분석, Siri와 같은 개인 비서 서비스 등에 적용되어 사용되고 있습니다.

그 중 다양한 분야에서 많이 사용하고 있는 것이 바로 챗봇입니다.
챗봇(Chatter Robot)은 문자 또는 음성으로 대화를 진행하는 능력을 가진 컴퓨터 프로그램 혹은 인공 지능입니다.
오디오 입력을 사용하거나 SMS 문자 메시지를 통해 사용자와 상호 작용하여, 가상 비서 또는 상담사로도 불립니다.
주로 사용자의 질문이나 요구사항에 대응하는 고객 서비스나 시장 조사, 평가의 정보 수집 용도로 활용되고 있습니다.
챗봇을 사용하면 편리함이 가장 큰 장점이며, 기업과 고객 모두 이점을 가집니다.

  • 기업의 입장에서는 비용을 절감할 수 있으며, 고객의 피드백을 바로 반영할 수 있어 서비스가 향상되고 고객의 만족도도 올라갑니다.
    또 상담사나 상담시간 같은 추가 요소가 필요하지 않아 운영의 효율성을 높일 수 있습니다.
  • 고객이나 사용자의 입장에서도 원하는 것을 빠른 시간에 얻을 수 있으며, 마찬가지로 시간에 구애받지 않고 언제든 소통 할 수 있습니다.

대화 시스템

NLP에서는 챗봇을 대화 시스템(Dialogue System)이라고 부릅니다.
대화 시스템은 문제 해결용자유 주제로 나뉩니다.

dialogue_system

시스템은 올바른 데이터를 찾아 수집하여 데이터베이스를 구축하고, 개발 목적에 맞게 알고리즘을 개발합니다.

catbot_flow

그 후 개발된 알고리즘을 이용하여 사용자 요청 분석 -> 데이터베이스 검색 -> 알고리즘 -> 알맞은 대답 흐름을 따르면서 대화 시스템이 진행됩니다.

문제 해결용 대화 시스템

문제 해결용 대화 시스템은 Task-oriented Dialogue System으로, 문제를 해결하기 위해 만들어진 시스템입니다.
최대한 적은 대화로 사용자가 원하는 것을 이해하고, 해결해주는 것이 목적입니다.
그래서 식당 검색, 숙소나 영화 예약, 날씨 확인 등 특정 task 수행에 초점을 두어 실행됩니다.
Q&A 챗봇, 상담 챗봇 등이 있으며 시리, 알렉사, 빅스비와 같은 음성 인식 비서 서비스도 문제 해결용 대화 시스템에 속합니다.

문제 해결용 대화 시스템의 흐름은 다음과 같습니다.

task_oriented

  1. 사용자 입력
    사용자가 하고 싶은 말을 텍스트로 입력합니다.

  2. NLU (Natural Language Understanding)
    사용자 말의 의도를 파악합니다. (사용자 말 이해하기)
    어떤 대화 주제를 원하는지(Domain) 분류, 어떤 것을 요청하려하는지(Intent) 파악, 문맥 고려를 위한 문장 토큰화가 이루어집니다.

  3. DM (Dialogue Manager)
    NLU에서 얻은 정보에 맞는 적절한 태스크를 수행하기 위해 knowledge base에서 필요한 정보를 수집합니다
    예를 들어, 식당 예약의 경우, 식당에서 가지고 있는 DB나 담당 서버와 연결이 필요하고,\ 날씨 확인의 경우, 날씨 DB 또는 외부 API를 가져옵니다.
    만약, 수행하지 못하는 경우는 그에 대한 이유를 error로 반환합니다.

  4. NLG (Natural Language Generation)
    대화 시나리오를 이용하거나 모델에 따로 학습을 시켜, 문맥에 맞는 자연스러운 답변을 생성합니다.

음성 챗봇의 경우 사용자 음성 분석 및 인식-> NLU -> DM -> NLG -> 음성 합성으로,
소리를 텍스트로 변환하는 과정인 음성 분석 및 인식과 반대로 텍스트를 소리로 바꿔주는 음성 합성 과정을 추가해 줍니다.

자유 주제 대화 시스템

자유 주제 대화 시스템은 Open domain Dialogue System으로, 사용자와의 목적없는 대화를 위해 만들어진 시스템입니다.
사용자가 어떤 주제로 말을 해도 챗봇 시스템은 그에 맞는 알맞은 대답을 하여, 대화를 이어나가야 합니다.
따라서 지속적으로 사용자의 흥미를 유발하여 최대한 긴 대화를 하는 것이 목적입니다.
자유 주제 대화 시스템에서는 이루리 등이 있습니다.

특정한 주제 없이 자유로운 대화이므로, 시스템 구조에서도 정해진 툴은 없지만 대표적으로 답변을 직접 생성하는 모델과 DB에 저장된 답변을 이용하는 모델이 있습니다.

답변을 직접 생성하는 모델은 DB를 이용하는 모델에 비해 여러 단점이 있습니다.
여러 대화 데이터를 섞어 학습시키기 때문에 대답의 일관성을 가지기가 어렵고, 답변의 확률이 높은 애매한 답변들이 생성되어 긴 대화를 유도하기 힘듭니다.
따라서 많은 연산 수행과 많은 데이터를 가진 큰 모델이 필요합니다.

DB에 저장된 답변을 사용하는 모델

이를 보완한 모델이 DB에서 답변을 가져오는 Retrieval-based model입니다.
사용자 입력 이해 -> DB -> 최종 답변 선택순으로 이루어지며, 이루다의 경우로 Retrieval-based model의 시스템 흐름을 살펴보겠습니다.

  1. 텍스트 이해
    여기서 이해는 텍스트로 구성된 답변을 하나의 벡터로 치환하는 것을 말합니다.
    사용자와 챗봇의 대화 내용을 머신러닝 모델(DialogBERT)의 입력 값으로 받아, 현재까지의 대화 내용을 이해하고 결과값으로 ‘이해 벡터'를 얻습니다.

  2. DB
    이해 벡터를 바탕으로, 답변 후보를 저장 해 놓은 Session DB와 Context DB에서 답변 후보를 여러 개 선정합니다.

  3. 최종 답변 선택
    답변 후보 중 최종 후보를 얻기 위해 Response Selection 모델을 사용하여, 최종 답변 후보에서 최종 답변을 선정하여 사용자에게 답변합니다.

    Response Selection 모델은 일관성 있는 후보 선별을 위해 개별 대화 데이터를 학습하고 여러 미세 조정을 거쳤습니다.

DB 사용 장단점

앞에서도 언급했듯, 답변 생성에서 DB를 사용하면 챗봇의 대답이 자연스러워집니다.
데이터를 기반으로 컴퓨터가 만들어낸 것이 아닌 사람이 작성했기 때문에 더 자연스러울 수 밖에 없습니다.
또 여러 개의 답변 후보 중에서 최종 답변을 선택하는 방식이므로, 여러 상황에서 쓰일 수 있는 애매한 답변이 아닌 어울리는 답변을 생성할 수 있습니다.
따라서 이루다와 Chat-GPT처럼 답변을 위한 DB를 따로 활용하면, 답변의 적절함과 오타 등의 문제를 해결할 수 있습니다.

하지만 사람이 작성한 답변이므로, 사람의 특정 말투나 정보를 노출 할 수 있습니다.
또, 데이터에 개인 정보에 대한 처리가 제대로 이루어지지 않았을 경우, 민감한 문제가 발생할 수 있기 때문에 주의가 필요합니다.

비교 정리

챗봇에 대해 얘기한 내용을 간략하게 정리 해 보았습니다.\

vs

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.

© minjung. Some rights reserved.