AI/Dialogflow

[Dialogflow] Dialogflow를 사용하여 챗봇 만들기

ooeunz 2019. 10. 18. 17:26
반응형

이번에는 이전 포스팅에서 언급한 Intent, Entity, Context를 이용하여 Dialogflow를 이용하여서 챗봇을 만들어보도록 하겠다.

 

Intents

 

첫번째로 Intent의 새로운 의도를 만들고 훈련시켜보도록 하겠다. Dialogflow는 Intent를 통해서 사용자가 말하는 것에 대한 의도를 파악한다. 예를 들어, "당신의 이름은 무엇입니까?", "이름이 있습니까?" 또는 "이름"만 물어볼 수도 있다. 이러한 각 표현은 고유하지만 동일한 의도를 갖는다. 오른쪽 상단에 CREATE INTENT 버튼을 눌러 INTENT를 생성한다.

 

INTENT NAME을 'name'으로 입력하고, Training phrases에서 다음과 같은 텍스트를 입력한다. 

※ 의도일치의 정확성을 올리기 위해서는 최소한 10개 이상의 텍스트를 입력하여 Dialogflow를 학습시켜야 한다.

 

그리고 Responses 필드에서 "내 이름은 Dialogflow야!" 를 입력해주고 SAVE를 해준다.

그리고 오른 쪽에 있는 시뮬레이터를 통해서 입력한 Intent를 테스트 해볼 수 있다.

 

Dialogflow는 Intent에 입력한 텍스트를 학습 예제로 사용하여서 최종 사용자 표현을 의도와 일치시킨다. 이 모델은 모든 의도와 비교하며 각 의도에 점수를 매기는데, 가장 높은 점수의 의도와 매치시킨다. 하지만 최고 점수의 의도가 매우 낮은 경우에는 대체 의도를 일치시킨다.

 

 


 

Intents에 매개 변수 추가

이번에는 intent에 매개 변수를 추가해 보도록 하겠다. 위의 방법과 같이 새로운 intens를 만들고 이름을 Languages로 한다. 그리고

  • 나는 한국말을 잘해.
  • 나는 일어를 쓸 줄 알아.
  • 나는 프랑스어를 해.
  • 나는 영어를 할 줄 알아.

와 같이 Training phrases를 추가한다. 그리고 이번엔 추가한 텍스트 중 '한국말'을 드래그해서 sys.language라는 이름의 system entity를 매개 변수로 추가한다. (Dialogflow가 자동으로 인식해서 추가해주는 경우도 있지만, 스스로 인식하지 못하는 경우 이와같이 수동으로 추가해주어야 한다)

 

위와 같이 entity를 추가하고 나면 Action & parameters 탭에서 추가된 entity를 확인할 수 있다.

 

  • REQUIRED : 체크되어 있지 않으므로 매개 변수는 선택 사항이다.
  • PARAMETER NAME : 매개 변수의 이름.
  • ENTITY : entity의 유형을 나타낸다. @sys.language는 system entity로 인식된다.
  • VALUE : 이 매개 변수의 값을 참조 할 때 사용하는 식별자이다.
  • Is List : 체크되어 있지 않으므로 매개 변수가 목록이 아니다.

그리고 Responses에 VALUE 값을 넣으면 파라미터로 들어온 값이 적용되어 아래와 같이 대답한다.

 

 


 

Entity 추가

방금 예제에서는 system entity를 사용했다. 하지만 Dialogflow는 유저가 직접 entity를 만들 수 있도록 기능을 제공한다. 이번엔 왼쪽 메뉴에서 Entity로 들어가서 ProgrammingLanguage라는 새로운 entity를 CREATE하도록 한다. 그리고 reference value와 synonym(동의어)를 추가하고 SAVE한다.

그리고 다시 INTENT의 Language를 들어가서 방금 생성해 준 entity를 적용한다. 이렇게 사용자가 직접 만든 entity 역시 시뮬레이터에서 VALUE값으로 사용 할 수 있다.

 

※ Dialogflow는 복수나 대소문자 같은 간단한 것들은 처리 할 수 있지만 항목에 가능한 모든 동의어를 추가해야 한다.

 

 


 

Context 사용하기

이전 포스팅에서 이야기 했듯, context는 대화의 흐름을 뜻한다. context는 follow-up intent를 통해서 쉽게 제어할 수 있다. 좌측 사이드바에서 Intent를 선택해서 이전에 만들었던 Language에 마우스를 가져가 보자.

 

그럼 오른 쪽에 Add follow-up intent가 뜨는 것을 알 수 있다. 마우스를 움직여 follow-up intent를 누르고 custom을 선택하면 다음 화면으로 넘어간다.

 

follow-up intent는 상위 의도가 일치한 후에만 유효하다. 그러므로 "얼마나 language를 배웠어?" 라는 이전 질문에서 우리는 아래와 같은 훈련 문구를 입력할 수 있다.

  • 3년 정도
  • 4년
  • 5년동안 배웠어.

해당 텍스트를 시뮬레이터에서 테스츠해보면 아직 응답을 입력하지 않아서 대답은 없지만 context가 유지되는 것을 확인할 수 있다.

 

그리고 Language Intent의 context에 들어가면 앞에 숫자가 있는데, 이 숫자는 이 intent의 수명을 뜻한다. 수명은 앞으로 얼마만큼의 대화동안 이 intent를 Dialogflow가 기억할지에 관한 것으로, 사용자가 수정할 수 있다.

 

 

반응형