HarmonyOS之AI能力·IM类意图识别

举报
Serendipity·y 发表于 2022/02/16 23:30:06 2022/02/16
【摘要】 一、基本概念 IM 类意图识别,是指利用机器学习技术,针对用户短信或聊天类 APP 等 IM 应用的文本消息进行内容分析,并识别出消息内容代表的用户意图。基于语义分析,利用机器学习的相关技术识别并理解用...

一、基本概念

  • IM 类意图识别,是指利用机器学习技术,针对用户短信或聊天类 APP 等 IM 应用的文本消息进行内容分析,并识别出消息内容代表的用户意图。
  • 基于语义分析,利用机器学习的相关技术识别并理解用户消息的意图,通过IM意图识别,可以衍生出各种智能的应用场景,使智能设备更聪明,更懂用户。
  • 基于 IM 意图识别接口,可以对文本消息中包含的用户意图进行自动分析识别。
  • 目前仅开放支持通知消息类的三个意图的智能识别(称为“意图模块”),包括:
    • 还款提醒通知
    • 还款成功通知
    • 未接来电通知
  • IM 类意图识别当前只支持中文语境。
  • IM 类意图识别的输入文本限制在 500 个字符以内,字符数超出限制将返回参数错误,文本需要为 UTF-8 格式,格式错误不报错,但会导致分析结果错误。
  • Engine 支持多用户同时接入,但是不支持同一用户并发调用同一个特性。
    • 如同一个特性被同一进程同一时间多次调用,则返回系统忙错误。
    • 不同进程调用同一特性,则同一时间只有一个进程业务在处理,其他进程进入队列排队。

二、应用场景

① 生成智能卡片
  • 应用于生成智能卡片,例如:生成未接来电通知卡片。当来电未被用户接听(呼叫超时未接通或被用户主动拒绝接通),电信运营商或服务提供商会向用户发送短信提醒。
  • 当用户终端设备接收到短信提醒,即可由 IM 意图识别特性分析出未接来电通知短信的意图,并可以分析出呼叫方电话号码及呼叫时间,生成智能卡片,方便用户查看。
② 开发下拉 pad 屏
  • 应用于开发下拉 pad 屏。
  • 与生成智能卡片的场景类似,可识别用户消息文本的意图,在下拉 pad 屏生成并显示重要的信息,方便用户随时查看。
③ 文本消息意图识别
  • 主要针对用户短信或聊天类文本消息进行意图识别。
  • 目前仅开放支持了通知消息类的三个意图,分别为:还款提醒通知、还款成功通知、未接来电通知。

三、API 接口说明

① 主要接口
  • IM 类意图识别提供了初始化、同步、异步、解绑四个接口。
  • IM 类意图识别接口描述如下:
接口名 功能描述
void init(Context context, OnResultListener listener, boolean isLoadModel) 初始化接口,传入当前context对象和结果回调对象,决定是否在初始化时加载模型
ResponseResult getChatIntention(String requestData, int requestType) 同步接口,用于IM类场景下的用户意图分析
ResponseResult getChatIntention(final String requestData, final int requestType, final OnResultListener listener) 异步接口,用于IM类场景下的用户意图分析
void destroy(Context context) 解绑接口,释放当前上下文对象
② 接口输入值说明
  • isLoadModel:是否在初始化时加载模型。
  • requestType:请求类型,取值可以从 ohos.ai.nlu.NluRequestType 选择,目前只支持端侧(REQUEST_TYPE_LOCAL)一种请求类型。
  • requestData 的 json 格式如下:
参数名 是否必选 类型 说明
text true String 待分析的文本,UTF-8编码,不超过500个字符,超过300个字符的只分析通知类意图
timestamp false long 该文本的发送时间或接收时间,格式为时间戳,表示距离格林威治时间1970.1.1的毫秒数。默认为当前系统时间
isSender false int 用来标示发送或接收,0表示接收,1表示发送
category false String 需要分析的意图类别,默认分析所有类,多个用半角逗号“,”隔开,如需要分析出行类和通知类,传“notice”
module false String 用来指定具体分析哪些意图模块,默认分析全部意图模块。
如指定分析特定意图模块,则多个意图模块间用半角逗号“,”隔开。
例如同时分析还款提醒通知和还款成功通知意图,传“repayNotice,repayedNotice”
callPkg false String 调用者名称
callType false int 调用者类型:
0:普通应用(默认)
1:快应用
callVersion false String 调用者版本号
callState false int 调用者状态:
-1:未知(默认)
0:前台
1:后台
③ 接口返回值说明
  • 返回值 ResponseResult 中 responseResult 为 Json 字符串,体现文本分词的结果:
键参数名 说明 是否必选 值类型 返回值解析
code 结果码 True Int 实体识别的结果码。取值包括:
0:成功
1:系统正在初始化
2:参数错误
3:系统忙
4:系统异常
5:任务超时
6:其它错误
message 错误信息 True String 错误信息描述
intentions 意图列表 False JSONArray 详细意图说明
④ 详细意图说明
  • 还款通知:表示还款通知的意图分析时,“intentions”子参数描述见下表:
参数名 是否必选 类型 说明
name true String 意图名,值为“repayNotice”
attributes false JSONArray 意图属性,用数组表示,数组里的类型为JSONObject
+deadline true JSONObject 还款截止时间,结构与实体“time”一致
+moneyInfo false JSONArray 还款额信息,可能存在多币种,以数组形式存在,数组里的类型为JSONObject
++amount true String 还款总额
++miniAmount false String 最低还款金额
++unit true int 单位,0(人民币元)、1(美元)
+bank false String 还款银行
+cardSuffix false String 银行卡尾号
+bankCode false String 银行简称代码
+phoneNumber false String 客服电话
+cardType true int 卡类型,其取值列表如下:
0:信用卡
1:借记卡
+accountType true int 账户类型,其取值列表如下:
0:普通个人账户(默认)
1:车贷账户
  • 已还款通知:表示已经还款成功的通知,“intentions”子参数描述见下表:
参数名 是否必选 类型 说明
name true String 意图名,值为“repayedNotice”
attributes false JSONArray 意图属性,用数组表示,数组里的类型为JSONObject
+time false JSONObject 还款的时间,结构与实体“time”一致
+moneyInfo false JSONArray 还款额信息,可能存在多币种,以数组形式存在,数组里的类型为JSONObject
++amount true String 已还款额
++unit true int 单位,0(人民币元)、1(美元)
+bank false String 还款银行,与“银行卡尾号”二者至少存在一个
+cardSuffix false String 银行卡尾号,与“还款银行”二者至少存在一个
+bankCode false String 银行简称代码(对照代码表)
+isPayOff false int 是否还清,只依据文本中出现的描述,“1”表示还清,否则无该字段
+arrears false JSONArray 还欠款信息,可能存在多币种,以数组形式存在,数组里的类型为JSONObject
++amount true String 还欠款额
++unit true int 单位,0(人民币元)、1(美元)
+cardType true int 卡类型,其取值列表如下:
0:信用卡
1:借记卡
+accountType true int 账户类型,其取值列表如下:
0:普通个人账户(默认)
1:车贷账户
+deadline false JSONObject 截止时间,结构与实体“time”一致
  • 未接来电通知:表示未接来电的意图,“intentions”子参数描述见下表:
参数名 是否必选 类型 说明
attributes true JSONArray 意图属性,用数组表示,数组里的类型为JSONObject
+number true String 未接来电号码
+callTime true JSONObject 未接来电时间,结构与实体“time”一致
+name false String 未接来电号码所属的人名

四、开发流程

  • 在使用 IM 类意图识别 API 时,将实现 IM 类意图识别的相关的类添加至工程:
	import ohos.ai.nlu.ResponseResult; // 接口返回的结果类
	import ohos.ai.nlu.NluClient; // 接口客户端类
	import ohos.ai.nlu.NluRequestType; // 接口请求类
	import ohos.ai.nlu.OnResultListener; // 异步函数,执行成功的回调结果类
	import ohos.ai.nlu.util.NluError; // 调用接口返回的成功/错误码信息

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 使用 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
  • 确认 NluClient 静态类进行初始化接口调用成功后,调用获取 IM 类意图识别方法得到分析结果,调用实例。同一个接口同时提供了同步和异步两种方法,开发者可根据自己需要进行选择,还款通知中的时间不应早于当前时间。
    • 同步接口:
	String requestJson = "{text:'您个人信用卡07月账单¥198.00,还款日07月27日【XX银行】'}";
	ResponseResult responseResult = NluClient.getInstance().getChatIntention(requestJson, NluRequestType.REQUEST_TYPE_LOCAL);
	if (responseResult != null) {
	    // 获取接口返回结果
	    String result = responseResult.getResponseResult();
	}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
    • 异步接口:
	String requestJson = "{text:'您个人信用卡07月账单¥198.00,还款日07月27日【XX银行】'}"; 
	// 调用接口
	NluClient.getInstance().getChatIntention(requestJson, NluRequestType.REQUEST_TYPE_LOCAL, new OnResultListener <ResponseResult> () {
	    @Override
	    public void onResult(ResponseResult respResult) {
	        // 异步返回
	        if (respResult != null && respResult.getCode() == NluError.SUCCESS_RESULT) {
	            // 获取接口返回结果
	            String result = respResult.getResponseResult();
	        }
	    }
	});

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 解绑服务:
	/* 功能使用完毕,销毁上下文,释放资源。 */
	NluClient.getInstance().destroy(context);

  
 
  • 1
  • 2

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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