지능형 로봇 프로젝트의 요구 사항과 개선 방향을 더 잘 이해하기 위해 몇 가지 도구를 개발해야 하는 경우가 많습니다. 제가 참여한 여러 로봇공학 프로젝트 중 대부분은 제품 요구 사항을 성공적으로 충족했습니다. 이러한 관행을 통해 우리는 계속 발전하고 개선하려면 기존 로봇 정의 언어를 크게 개선해야 한다는 것을 깊이 깨달았습니다.
기존 관행에서는 의도 정의에 부분 순서 제약 조건이 혼합되어 대화의 자유를 제한하기 때문에 이를 수행하기가 쉽지 않습니다. 경로. 이는 대부분의 질문이 독립적이고 항상 사용 가능한 "개방형" 봇(FAQ 스타일 봇에서 일반적임)을 처리하는 데 충분합니다. 그러나 더 많은 "폐쇄형" 봇의 경우 잠재적인 대화 제한이 훨씬 더 큽니다(예: 온라인에서 티켓을 예약하는 데 사용되는 봇).
챗봇 정의 언어의 기능을 새로운 수준으로 끌어올리기 위해 일부 프로젝트에서는 상태 머신 의미론에 더 가까운 DSL을 도입했으며 로봇이 고정된 실행을 제어하는 변환 규칙과 의도 정의를 완전히 통합했습니다. -포인트 사용 가능한 의도 분리에는 다음과 같은 장점이 있습니다.
의도 정의는 이제 실행 부분에서 분리되었지만 여전히 별도의 하위 언어입니다. 각 의도에 대해 로봇이 사용자 발화의 의도를 인식하고 그로부터 필요한 매개변수를 추출할 수 있도록 몇 가지 훈련 문장만 제공하면 됩니다.
예를 들어, 인사말과 이름 언급이라는 두 가지 유형의 사용자 발화만 이해하는 간단한 봇이 있습니다. 각 발화 유형에 대해 몇 가지 예문을 제공하고 로봇이 이를 인식하는 방법을 학습하도록 할 수 있습니다. 사용자가 발화를 입력하면 로봇은 의도에 따라 해당 동작을 수행하고 그로부터 필요한 매개변수를 추출합니다.
intent Hello { inputs { "你好" "早上好" } } intent MyNameIs { inputs { "我的名字叫小明" "我是小明" "你可以叫我小明" } creates context Greetings { set parameter name from fragment "小明" (entity any) } }
로봇이 인식하는 방법을 훈련시키기 위해 각 인텐트에 대해 몇 가지 샘플 문장을 제공합니다. 또한 경우에 따라 향후 사용자에게 더욱 개인적으로 응답할 수 있도록 컨텍스트에서 일부 매개변수(예: 사용자 이름)도 수집합니다.
봇이 먼저 일치를 시도해야 하는 인텐트를 지정하지 않았습니다. 이는 실행 언어의 일부입니다. 이 접근 방식을 사용하면 이러한 의도를 재사용할 수 있습니다(예를 들어 다른 봇에서는 인사말 의도뿐만 아니라 사용자에게 이름을 물어봐야 할 수도 있음).
실행 파일을 사용하여 로봇이 의도/이벤트에 응답하고 전환할 수 있는 방법을 설명하는 상태 기계를 정의합니다. 이를 통해 봇 디자이너는 실행 파일을 보고 전체 대화 흐름을 이해할 수 있습니다.
실행 언어의 각 상태는 3개의 부분으로 구성됩니다
실행 모델에는 2가지 특수 상태도 포함되어 있습니다.
最后,一个状态可以定义一个单一的通配符转换(使用保留字符___作为转换条件),当计算状态主体时将自动导航。这使我们能够在多个地方重用相同的代码并模块化执行逻辑。下面是一个简单的机器人示例,它只回复问候意图,询问用户名并向用户问好。这个机器人的回复可以通过我们基于 React 的聊天小部件显示。
//We can always have an init state in case we need to initialize some bot parameters (e.g. welcoming message) Init { Next { //Here we state that the bot will first listen for an utterance matching the Hello intent, it will ignore anything else intent == Hello --> HandleHello } } HandleHello { Body { ReactPlatform.Reply("你好, 你叫什么名字?") } Next { //We wait for the user to input the name, no other transition is possible at this point //Obviously, in more complex bots we may have several possible outgoing transitions in a given state intent == MyNameIs --> HandleMyNameIs } } HandleMyNameIs { Body { ReactPlatform.Reply("你好 " + context.get("Greetings").get("name")) } Next { // An automatic transition to the Init state since at this point the conversation is finished and we can start again _ --> Init } } // Default Fallback state could go here
위 내용은 상태 머신 기반 챗봇 설계 경험 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!