HarmonyOS之AI能力·助手类意图识别

Posted Forever_wj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HarmonyOS之AI能力·助手类意图识别相关的知识,希望对你有一定的参考价值。

一、简介

  • 随着人机交互越来越普遍,设备需要理解用户下达的各种指令,方便用户的操作。
  • 助手类意图识别能够利用机器学习技术,对用户发送给设备的文本消息进行语义分析和意图识别,进而衍生出各种智能的应用场景,使设备更智慧、更智能。
  • 助手类意图识别当前只支持中文语境。
  • 助手类意图识别文本限制在 50 个字符以内,超过字数将返回参数错误。文本要求 UTF-8 格式,如果格式错误不会引发报错,但将导致分析结果不正确。
  • Engine 支持多用户同时接入,但是不支持同一用户并发调用同一特性。若同一特性被同一进程同一时间多次调用,则返回系统忙错误;不同进程调用同一特性,则同一时间只能处理一个进程业务,其他进程进入队列排队。

二、应用场景

  • 可以应用于语音助手,通过智能对话与即时问答的智能交互,帮助用户快速解决问题。比如,在驾驶时无法腾出双手来使用手机,但可以通过语音助手交互来操控手机,完成机票订购等操作。
  • 在家庭设备上可以做到声控设备的各种操作,比如家庭智能设备的打开和关闭等。

三、API 说明

  • 助手类意图识别提供了一个函数接口 getAssistantIntention(),该接口主要针对助手场景下的意图识别,分析用户的意图。
① 主要接口
功能描述接口原型
助手类意图(同步接口)ResponseResult getAssistantIntention(String requestData, int requestType)
助手类意图(异步接口)ResponseResult getAssistantIntention(final String requestData, final int requestType, final OnResultListener listener)
初始化void init(Context context, OnResultListener listener, boolean isLoadModel)
销毁接口void destroy(Context context)
② 接口输入值说明
  • requestType 表示请求类型,通过 NluRequestType 类定义了以下请求类型:
类型说明
static intREQUEST_TYPE_LOCAL = 0 本地请求
  • requestData 表示输入的文本信息,为 json 格式,如下:
参数名是否必选值类型说明
textString待分析的文本,格式要求为“utf-8”,文本长度不超过50个字符
categoryString需要分析的意图类别,默认分析所有类别,多个类别用半角逗号隔开。例如,需要系统设置类和出行类,取值为“systemSetting,trip”
moduleString用来指定具体分析哪些意图模块,默认分析所有模块,多个意图模块用半角逗号“,”隔开。例如分析订火车票和订机票意图,取值为“bookTrainTicket,bookAirTicket”。
备注:分析时category与module取并集,如category为“systemSetting”,module为“bookTrainTicket”,将会分析系统设置类的所有意图、以及订火车票“bookTrainTicket”意图
callPkgString调用者名称
callTypeint调用者类型,取值如下:
0:普通应用(默认)
1:快应用
callVersionString调用者版本号
callStateint调用者状态,取值如下:
-1:未知(默认)
0:前台
1:后台
  • category 与 module 取值说明:
意图类别(category)包含意图具体的意图模块(module)
trip订机票、订火车票、导航、查询地点bookTripTicket、bookAirTicket、queryTrain、navigation、queryPosition
contact打电话call
systemSetting打开4g、关闭4g、设置4g、打开wifi、关闭wifi等open4G、close4G、set4G、openWlan、closeWlan
③ 接口返回值说明
参数名子参数是否必选值类型说明
code-int0:成功
1:系统正在初始化
2:参数错误
3:系统忙
4:系统异常
5:任务超时
6:其它错误
message-String异常信息
intentions-JSONArray意图列表,数组里的类型为JSONObject
nameString意图名
attributesJSONArray意图对应的属性

四、开发流程

  • 在使用助手类意图识别 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);

以上是关于HarmonyOS之AI能力·助手类意图识别的主要内容,如果未能解决你的问题,请参考以下文章

HarmonyOS Sample 之 AI能力之NLU引擎服务

HarmonyOS之AI能力·语音识别技术

HarmonyOS之AI能力·实体识别

HarmonyOS之AI能力·通用文字识别技术

HarmonyOS之AI能力·文档检测校正

HarmonyOS Sample 之 AI能力应用之 报菜名儿