AI/Dialogflow

[Dialogflow] Google NLP엔진 Dialogflow

ooeunz 2019. 10. 11. 18:22
반응형

NLP 란?

NLP (Natural Language Processing, 자연어 처리)는 텍스트에서 의미있는 정보를 분석, 추출하고 이해하는 일련의 기술 집합이다. 우리가 익히 사용하고 있는 IOS의 siri, Android bixby나 챗봇과 같은 것들이 nlp에 해당된다. 우리 생활에 밀접한 연관성을 띄고 차세대 기술로 뜨고 있는 machine learning 카테고리 중 하나로써 현재 많은 기업에서 투자하고 개발하고 있는 분야이다. 그중 이번 posting에서 소개할 플랫폼은 Google의 Dialogflow 플랫폼이다.

 

 

지금은 구글에 계신 조대협님이 meet up에서 "스스로 만드는 것보다 남이 만든걸 잘 쓰는 게 최고다!"와 같은 말씀을 남기신 것처럼 본인이 R&D 영역에 뜻이 있는 것이 아니라면 이미 잘 만들어진 플랫폼을 잘 사용하는 것은 무엇보다 중요한 역량이 될 수 있다. 왜냐하면 이미 많은 기업들이 투자하고 만들어놓은 엔진을 따라가는 것은 거의 불가능하기 때문이다. (그 이상의 투자와 인력이 갖추어져있지 않다면 말이다)

 

그렇다면 Dialogflow를 사용해보도록 하자. 

https://dialogflow.com/

 

위의 URL로 접속하면 다음과 같은 Dialogflow 메인 페이지를 만날 수 있다.

 

Google ID로 로그인을 한 후 오른쪽 상단에 Go to console 버튼을 눌러서 console로 이동한다. 그럼 다음과 같은 화면이 나타난다.

 

CREATE AGENT를 클릭하고 들어가서 새로운 agent를 만들어주자. 필자는 Tutorial이라는 이름으로 agent를 만들었다.

 

Dialogflow 개념 이해

본격적으로 Dialogflow를 시작하기 전에 앞서 알아두어야 할 개념들에 대해 소개하도록 하겠다. Dialogflow는 이름에서도 알 수 있듯이 dialog(대화), flow(흐름)을 잘 만들면 이를 이용해 대화의 흐름을 이어갈 수 있는 챗봇 서비스를 쉽게 만들 수 있다. 이러한 기능을 지탱하는 3가지 개념이 있다.

  • Intent (의도)
  • Entity (속성)
  • Context (문맥)

Intent

Intent는 사용자의 의도를 파악하는 것이다. 사용자가 키보드로 입력 또는 목소리로 말한 내용 (앞으로 이 둘을 줄여서 입력이라고 하겠다)을 기반으로 Dialogflow의 intent와 매핑하는 것으로 이를 intent mapping이라고 한다. 예를 들어 "맛집을 찾아줘."라는 입력이 사용자로부터 들어왔을 때, Dialogflow가 가지고 있는 intent와 비교하여 mapping 한 후 "어떤 종류의 맛집을 원하시나요?"와 같은 intent에 있는 답변을 내보내는 것이다.

 

Entity

Entity는 "피자가 먹고싶어."와 같은 입력에서 '피자'와 같은 파라미터를 뽑아내는 것이다. 이러한 entity는 서버 내에서 다양한 로직을 처리할 때 사용되거나, 다음 대화를 이끌어갈 때 사용된다.

 

Context

Context는 "피자가 먹고싶어" 라는 입력에서 왜 피자가 먹고 싶은지. 즉 앞선 대화에서 나온 '맛집'이라는 문맥을 사람처럼 파악하는 것을 의미한다. 단순히 피자가 먹고 싶은 것이 아니라, "맛집을 찾고 있고, 메뉴가 피자인 곳을 찾고 싶다."와 같은 부분을 이해하도록 할 수 있는 부분을 context라고 이해하면 된다.

반응형