데이터 사이언스(Data Science)/머신러닝,Machine Learning, 기계학습

[Dialogflow] 메뉴 주문 챗봇 , 간단하게 챗봇 만들기

게임이 더 좋아 2020. 8. 4. 00:28
반응형
728x170

구글에서 제공하는 플랫폼으로 오픈소스니까 무료로 사용 가능하다.

 

https://dialogflow.cloud.google.com/

 

Dialogflow

Updating Actions on Google...

dialogflow.cloud.google.com

 

위의 링크로 들어가면 된다. 

 


 

챗봇이라고해서 별거 있지는 않다. 다만 한글 챗봇을 만들고 싶다면 영어보다 정확도가 떨어지는 것은 감수해야 한다.

 

한글이 컴퓨터가 받아들이기 아직 어렵나보다. 

 

 

우선 무턱대고 만들어보자

 


1. Agent 생성

1번에 이름을 쓰고 

2번에서 주요 언어를 정한다. 

나머지 조건들은 신경쓰지 않아도 좋다.

 

메뉴 주문 받는 챗봇을 만들어보자 

물론 난 한국어로 만들거다 

 

 

2. Intent 생성

 

Intent란 말 그대로 의도를 말한다.

 

챗봇을 사용자의 발화의 의도를 파악하고 인식하여 동작한다.

 

즉 사용자가 원하는 것을 파악해서 어떤 서비스를 제공해야 할지 판단한다.

 

여기서 나는 메뉴 주문을 받기를 원한다.

 

챗봇은 

" 아메리카노 3잔 주세요" 를 알아듣고 적당하게 반응을 해야한다.

 

 

**우선 나는 카페의 위치를 물어보고 있다.

 

Training phrases란

어떠한 질문을 우리가 평소에 하는가? 라고 보면 되겠다.

 

 

 

 

 

이렇게 되는 경우 "강남" 연예인으로 인식하고 person이라고 하는 것 같은데 이것은 잘못되었으니 지워준다.

**지워주지 않는 경우 오류가 발생하기도 한다.

 

 

대답은 이렇게 설정할 수 있다. 

 

근데 챗봇은 입력해준대로 출력이 나오길 기대하는 것이 아니다.

입력해주지 않은 것도 예상된 결과가 나오길 기대하는 것이다.

 

한 번 해보자

 

 

내가 입력하지 않은 training phrase에서도 이렇게 결과가 나온다.

 

그럼 저장하고 다른 것을 해보자

 


2-1 메뉴 주문 받는 기능을 넣어보자

 

우선 저렇게 색이 왜 바뀌었을까 궁금하겠다.ㅎㅎ 

 

사실 어떠한 단어를 알아듣기 위해서는 미리 입력해놓을 필요가 있다. 

 


3. Entity 엔티티 만들기

 

엔티티란 항목, 속성을 뜻하고

 

사용자에게 서비스를 제공하기 위한 중요한 속성들을 말한다.

 

서비스를 제공하기 위해 필요한 요소, 즉 주문을 하기 위한 메뉴 이름을 말한다.

 

 

 

create을 누르면 된다.

 

1. 동의어 설정 (4에서 설정한다)

2. 해석하면 자동 뜻 확장기능이다.

3. Fuzzy matching이란 사용자의 실수도 잡아준다고 생각하면 되겠다.

(나도 정확히 .. 모름) ㅎ

 

그렇게 하고 다시 아까 2로 돌아가자

 


하지만 우린 항상 제대로 주문하지는 않는데... 주어를 빼먹는 경우도 많고 수량을 빼먹는 경우도 많다.

 

그래서 Required를 체크해준다.

Menu_name, number를 알 수 없으면 챗봇이 물어본다. (Prompts에 있는 질문으로)

그래서 알아낸 다음 대답을 해준다.

 

 

 

 


4. 여기서 잠깐.. 테이크 아웃은 어디서 나왔냐???? 

 

솔직히 카페에서 맨날 물어보는 것은 휘핑크림 올려드릴까요? 드시고 가세요? 등등 예 아니오로 대답할 수 있는 것들이다. 

꼭 예, 아니오가 아니더라도 문맥이 나누어지는 경우가 있다. 그래서 문맥을.. 나누어주는데 

 

 

intent로 가서

 

add follow-up intent로 추가시킬 수 있다. 

 

위에 테이크아웃 문장도 그렇게 만든 것이다.

 

 

이렇게 하면 대충 챗봇이 구색을 갖출 수 있다.

 


 

여기까지만 하고 나머지 응용은 알아서 하자 ㅎㅎ

 

그럼 20000

 

+++ 정말 챗봇을 만들고 싶다면 Entitiy를 영속적으로 저장할 수 있는 DB, 서버 무엇이든 저장할 곳이 필요하다.

사용자의 정보를 알고 있어야하니까.

 

그건 알아서 해보자

 

 

 

 

반응형
그리드형