助手类意图识别概述
随着人机交互越来越普遍,设备需要理解用户下达的各种指令,方便用户的操作。助手类意图识别能够利用机器学习技术,对用户发送给设备的文本消息进行语义分析和意图识别,进而衍生出各种智能的应用场景,使设备更智慧、更智能。
约束与限制
当前只支持中文语境。
助手类意图识别文本限制在50个字符以内,超过字数将返回参数错误。文本要求UTF-8格式,如果格式错误不会引发报错,但将导致分析结果不正确。
Engine支持多用户同时接入,但是不支持同一用户并发调用同一特性。若同一特性被同一进程同一时间多次调用,则返回系统忙错误;不同进程调用同一特性,则同一时间只能处理一个进程业务,其他进程进入队列排队。
助手类意图识别开发
场景介绍
可以应用于语音助手,通过智能对话与即时问答的智能交互,帮助用户快速解决问题。比如,在驾驶时无法腾出双手来使用手机,但可以通过语音助手交互来操控手机,完成机票订购等操作。
在家庭设备上可以做到声控设备的各种操作,比如家庭智能设备的打开和关闭等。
接口说明
助手类意图识别提供了一个函数接口getAssistantIntention(),该接口主要针对助手场景下的意图识别,分析用户的意图。
主要接口
接口输入值说明
requestType表示请求类型,通过NluRequestType类定义了以下请求类型:
requestData表示输入的文本信息,为JSON格式,如下:
表1 category与module取值说明
接口返回值说明
返回值为JSONObject字符串:
开发步骤
在使用助手类意图识别API时,将实现助手类意图识别的相关的类添加至工程。
import ohos.ai.nlu.NluRequestType; import ohos.ai.nlu.NluClient; import ohos.ai.nlu.OnResultListener; import ohos.ai.nlu.ResponseResult;
使用NluClient静态类进行初始化,通过异步方式获取服务的连接。
context:应用上下文信息,应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或子类实例。
listener:初始化结果的回调,可以传null。
isLoadModel:是否加载模型,如果传true,则在初始化时加载模型;如果传false,则在初始化时不加载模型。
NluClient.getInstance().init(context, new OnResultListener<Integer>(){ @Override public void onResult(Integer result){ // 初始化成功回调,在服务初始化成功调用该函数 } }, true);
调用助手类意图识别接口。
/** Constructing input parameters for testing getAssistantIntention method. */ String requestData = "{\"text\":\"关闭wlan\"}"; /** Start analyzing intention based on assistant tool */ ResponseResult responseResult = NluClient.getInstance().getAssistantIntention(requestData, NluRequestType.REQUEST_TYPE_LOCAL);
或者调用助手类意图识别的异步接口
NluClient.getInstance() .getAssistantIntention(requestData, NluRequestType.REQUEST_TYPE_LOCAL, new OnResultListener<ResponseResult>() { @Override public void onResult(ResponseResult result) { // 异步返回结果处理 } });
解绑服务
/** release resource*/ NluClient.getInstance().destroy(context);