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

举报
Serendipity·y 发表于 2022/02/17 00:25:40 2022/02/17
【摘要】 一、简介 随着人机交互越来越普遍,设备需要理解用户下达的各种指令,方便用户的操作。助手类意图识别能够利用机器学习技术,对用户发送给设备的文本消息进行语义分析和意图识别,进而衍生出各种智能的应用场景,使设...

一、简介

  • 随着人机交互越来越普遍,设备需要理解用户下达的各种指令,方便用户的操作。
  • 助手类意图识别能够利用机器学习技术,对用户发送给设备的文本消息进行语义分析和意图识别,进而衍生出各种智能的应用场景,使设备更智慧、更智能。
  • 助手类意图识别当前只支持中文语境。
  • 助手类意图识别文本限制在 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 int REQUEST_TYPE_LOCAL = 0 本地请求
  • requestData 表示输入的文本信息,为 json 格式,如下:
参数名 是否必选 值类型 说明
text String 待分析的文本,格式要求为“utf-8”,文本长度不超过50个字符
category String 需要分析的意图类别,默认分析所有类别,多个类别用半角逗号隔开。例如,需要系统设置类和出行类,取值为“systemSetting,trip”
module String 用来指定具体分析哪些意图模块,默认分析所有模块,多个意图模块用半角逗号“,”隔开。例如分析订火车票和订机票意图,取值为“bookTrainTicket,bookAirTicket”。
备注:分析时category与module取并集,如category为“systemSetting”,module为“bookTrainTicket”,将会分析系统设置类的所有意图、以及订火车票“bookTrainTicket”意图
callPkg String 调用者名称
callType int 调用者类型,取值如下:
0:普通应用(默认)
1:快应用
callVersion String 调用者版本号
callState int 调用者状态,取值如下:
-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 - int 0:成功
1:系统正在初始化
2:参数错误
3:系统忙
4:系统异常
5:任务超时
6:其它错误
message - String 异常信息
intentions - JSONArray 意图列表,数组里的类型为JSONObject
name String 意图名
attributes JSONArray 意图对应的属性

四、开发流程

  • 在使用助手类意图识别 API 时,将实现助手类意图识别的相关的类添加至工程:
	import ohos.ai.nlu.NluRequestType;
	import ohos.ai.nlu.NluClient;
	import ohos.ai.nlu.OnResultListener;
	import ohos.ai.nlu.ResponseResult;

  
 
  • 1
  • 2
  • 3
  • 4
  • 使用 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);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 调用助手类意图识别接口:
	/** 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);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 或者调用助手类意图识别的异步接口:
	NluClient.getInstance()
	.getAssistantIntention(requestData, NluRequestType.REQUEST_TYPE_LOCAL, new OnResultListener<ResponseResult>() {
	                @Override
	                public void onResult(ResponseResult result) {
	                    // 异步返回结果处理
	                }
	            });

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 解绑服务:
	/** release resource*/
	NluClient.getInstance().destroy(context);

  
 
  • 1
  • 2

文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Forever_wj/article/details/118343316

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。