일반적으로 채팅을 개발하기 위해서 가장 많이 사용하는 방식이 바로 웹소켓(Web Socket)일 것이다. 그러나 사이트에서 프로젝트를 하거나 혹은 취미로 프로젝트를 할 때 인터넷에 떠돌아 다니는 웹소켓 채팅 솔루션을 적용하다보면 난관에 부딪힐때가 있다. 대부분 채팅 + 웹소켓에 관해서 포스팅한 내용들은 완성된 프로젝트 형태가 아니라 PoC 기반의 컨셉을 구현한 경우만 많기 때문에 실제 프로젝트 코드랑 괴리감이 존재한다. 그럼 웹소켓의 차이점이 무엇인지 단점이 무엇인지 알아봐야 할 것이다. 웹소켓과 HTTP Polling 방법 일반적으로 HTTP 4 이하 기반의 웹 형태로 채팅 시스템을 구현하려면, 윗방법과 같이 폴링(Polling)하는 방법을 사용할 것이다. 주기적으로 채팅서버에 새로운 대화가 있는지 찾..
다중채팅 솔루션은 우리가 흔히 아는 채팅방을 만들고 여러명이 대화를 하는 구조를 말한다. 이러한 기술은 사실 크게 어려운 방법이 아니다. 인터넷을 조금만 뒤져봐도 HTML 5.0 기술의 웹소켓(Web Socket)을 이용하여 구현한 사례는 얼마든지 있으며, 필자 역시 개인적으로 웹소켓을 구현해서 다중채팅을 만든적이 있다. 그러나 이 채팅 시스템이 상담사와 사용자가 대화를 한다고 가정을 해보자, 그러면 한가지 문제가 되는 것이 웹소켓의 세션 처리 방식이다. 웹소켓은 서로간에 대화를 쉽게 하게 만들지만 상담 시스템은 상담사 한명당 여러명의 사용자와 대화를 해야 한다. 여기에 한가지를 더 포함해서 챗봇과 공유하는 시스템은 어떻게 만들면 될 것인가? 즉 카카오톡처럼 한명당 여러개의 채팅방이 존재할 수 있고, 방..
시퀀스투시퀀스(Sequence to Sequence)는 RNN(Recurrent Neural Network, 순환신경망)을 사용하여 문장을 학습하는 기법입니다. 인공 신경망의 발전으로 인해 발화들의 서열(Sequence)로 이루어진 대화의 말뭉치(Corpus)를 학습하는 것으로도 선행 발화가 후행발화로 변환되는 확률을 계산하여 대화를 생성해 내는 것이 가능해 졌습니다. 기존의 챗봇같은 경우는 문장과 유사성을 LSA(Latent Sementic Analysis), cosine 유사도, Term 기반으로 가장 유사한 문장의 정확도를 채택하여, 해당 문장에 연결된 대화셋을 보여주는 것에서 끝났다면, 시퀀스 투 시퀀스는 새로운 응답을 생성할 수 있는 능력이 있습니다. 한마디로 지능적인 창의적이고 지능적인 대화가..