Dialogflow
Dialogflow는 자연어를 해석하고, 처리하여 질문에 대한 대화 환경을 제공합니다.
저는 Dialogflow를 이용하여, 다른 API를 이용한 안드로이드 앱을 만드는데에 목적이 있습니다.
- Agent
Dialogflow 에이전트는 사용자와의 대화를 처리하는 가상 에이전트, 자연어 이해 모듈입니다.
Dialogflow는 최종 사용자의 텍스트 또는 오디오를 앱이나 서비스가 이해할 수 있는 구조화된 데이터로 변환해줍니다.
시스템에 필요한 대화 유형을 처리하도록 에이전트를 직접 설계하고 빌드할 수 있습니다.
예상되는 대화 시나리오를 처리하도록 학습해야합니다.
- Intent
인텐트는 한번의 대화에서 사용자의 의도를 분류합니다. 각 에이전트에 대해 다수의 인텐트를 정의하고, 조합된 인텐트는 전체 대화를 처리합니다. 최종 사용자가 무언가를 쓰거나 말하면 Dialogflow는 최종사용자의 표현을 에이전트에서 가장 유사한 인텐트와 일치시킵니다. 인텐트 일치를 인텐트 분류라고도 합니다.
예) 날씨에 대한 최종 사용자 질문을 인식하여 날씨 에이전트를 만들 수 있습니다.
최종 사용자가 '예보는 어때?' 라고 말하면 Dialogflow는 최종 사용자 표현을 예보 인텐트와 일치시킵니다. 추출된 데이터는 시스템이 최종 사용자의 날씨 쿼리를 수행하는 데 중요합니다.
인텐트에는 학습 문구, 작업, 매개변수, 응답이 포함됩니다.
- 학습문구는 최종 사용자가 말할 가능성이 있는 문구입니다. 최종 사용자 표현이 이러한 문구 중 하나와 유사한 경우 Dialogflow는 인텐트를 일치 시킵니다. Dialogflow가 다른 비슷한 문구로 목록을 확장하므로(머신러닝), 가능한 모든 예시를 정의할 필요는없습니다.
- 작업은 각 인텐트의 작업을 의미합니다. 인텐트가 일치하면 Dialogflow가 시스템에 작업을 제공하고, 사용자는 이 작업을 사용하여 시스템에 정의된 특정 작업을 할 수 있습니다.
- 런타임에서 인텐트가 일치하면 Dialogflow는 최종 사용자 표현에서 추출된 값을 매개변수로 제공합니다. 각 매개변수는 항목유형(개체 항목, 시스템 항목)이라는 유형이 있어 (커스텀 데이터와 일치시키기 위해) 데이터를 추출하는 방법을 개발자가 지정할 수 있습니다. 매개변수는 원시 사용자의 입력과 달리 일부 로직을 수행하거나 응답을 생성할 때 손쉽게 사용할 수 있는 구조화된 데이터 입니다.
- 응답은 최종 사용자에게 반환할 텍스트, 음성, 시각적 응답입니다.
- Context
Dialogflow 컨텍스트는 자연어 컨텍스트와 비슷합니다. 대화의 문맥을 파악해 의도를 알아내야 하기때문에 최종 사용자 표현을 처리하여 인텐트를 정확하게 일치시키기 위해 컨텍스트가 제공되어야 합니다.
컨텍스트를 사용하여 대화의 흐름을 제어할 수 있습니다. 문자열 이름으로 식별되는 입력 및 출력 컨텍스트를 설정하여 인텐트의 컨텍스트를 구성할 수 있습니다. 인텐트가 일치하면 해당 인텐트에 대해 구성된 출력 컨텍스트가 활성화 됩니다. 활성화된 컨텍스트가 있으면 Dialogflow는 현재 활성화된 컨텍스트와 일치하는 입력 컨텍스트로 구성된 인텐트만 일치시킵니다.
- 후속 조치 Intent
후속 조치 인텐트를 사용하여 인텐트 쌍에 자동으로 컨텍스트를 설정할 수 있습니다. 후속 조치 인텐트는 연결된 상위 인텐트의 하위 요소입니다.
후속 조치 인텐트를 만들면 출력 컨텍스트가 자동으로 상위 인텐트에 추가되고 동일한 이름의 입력 컨텍스트가 후속 조치 인텐트에 추가됩니다.
Dialogflow는 '예', '아니요', 또는 '취소'와 같은 일반적인 최종 사용자 응답에 여러 개의 사전 정의된 후속조치 인텐트를 제공합니다. 또는 커스텀 응답을 처리하기 위해 직접 만들 수도 있습니다.
- Dialogflow Console
Dialgflow는 Dialogflow 콘솔이라는 웹 사용자 인터페이스를 제공합니다. 이 콘솔을 사용하여 에이전트를 만들고, 빌드하고, 테스트 할 수 있습니다.
- 통합을 통한 사용자 상호작용
Dialogflow는 Google 어시스턴트, Slack, Facebook Messenger와 같은 여러 대화 플랫폼과도 통합될 수 있습니다. 이러한 플랫폼중 하나를 위한 에이전트를 만들려면 여러 통합 옵션 중 하나를 사용해야 합니다.
이러한 통합은 다양한 응답을 작성하기 위한 플랫폼별 기능을 제공합니다. 직접 최종 사용자와의 상호작용이 처리되므로 에이전트를 빌드하는데에 집중 할 수 있습니다.
통합 옵션중 하나를 사용중이며 에이전트에 정적 인텐트 응답 이상이 필요한 경우, fulfillment를 사용하여 서비스를 에이전트에 연결해야 합니다. 서비스를 연결하면 최종 사용자에게 동적 응답을 보낼 수 있습니다.
각 인텐트에는 fulfillment를 사용하기 위한 설정이 있습니다.
- API와의 사용자 상호작용
통합 옵션 중 하나를 사용하지 않는 경우 최종 사용자와 직접 상호작용 하는 코드를 작성해야 합니다. 또한 각 대화 차례에서 최종 사용자 표현을 보내고 인텐트 일치 항목을 수신하기 위해 직접 Dialogflow API와 상호작용 해야합니다.
'Android > 이론' 카테고리의 다른 글
Kotlin 문법 (2) 데이터 클래스(Data class) 사용하기 (0) | 2020.07.17 |
---|---|
Kotlin 문법 (1) 변수/함수 선언하기, Nullable/Non-Null (0) | 2020.07.17 |
Kotlin 시작하기 ― 설정, Basic 문법 (0) | 2020.07.01 |
[안드로이드] Fragment 생명주기 ― Activity 생명주기와의 관계 (1) | 2020.03.04 |