鸿蒙HarmonyOS开发实战—AI功能开发(IM类意图识别)

IM类意图识别概述

基本概念

IM类意图识别,是指利用机器学习技术,针对用户短信或聊天类APP等IM应用的文本消息进行内容分析,并识别出消息内容代表的用户意图。

运作机制

基于语义分析,利用机器学习的相关技术识别并理解用户消息的意图,通过IM意图识别,可以衍生出各种智能的应用场景,使智能设备更聪明,更懂用户。

基于IM意图识别接口,可以对文本消息中包含的用户意图进行自动分析识别。

目前仅开放支持通知消息类的三个意图的智能识别(称为“意图模块”),包括:

  • 还款提醒通知
  • 还款成功通知
  • 未接来电通知
约束与限制
  • 当前只支持中文语境。
  • 目前仅支持以下三个意图的智能识别:还款提醒通知、还款成功通知、未接来电通知。
  • IM类意图识别的输入文本限制在500个字符以内,字符数超出限制将返回参数错误,文本需要为UTF-8格式,格式错误不报错,但会导致分析结果错误。
  • Engine支持多用户同时接入,但是不支持同一用户并发调用同一个特性。如同一个特性被同一进程同一时间多次调用,则返回系统忙错误。不同进程调用同一特性,则同一时间只有一个进程业务在处理,其他进程进入队列排队。

IM类意图识别开发

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

主要接口

IM类意图识别提供了初始化、同步、异步、解绑四个接口,如表1所示。

接口名

功能描述

void init(Context context, OnResultListener<Integer> listener, boolean isLoadModel)

初始化接口,传入当前context对象和结果回调对象,决定是否在初始化时加载模型。

ResponseResult getChatIntention(String requestData, int requestType)

同步接口,用于IM类场景下的用户意图分析。

ResponseResult getChatIntention(final String requestData, final int requestType, final OnResultListener<ResponseResult> listener)

异步接口,用于IM类场景下的用户意图分析。

void destroy(Context context)

解绑接口,释放当前上下文对象。

接口输入值说明

  • isLoadModel:是否在初始化时加载模型。
  • requestType:请求类型,取值可以从ohos.ai.nlu.NluRequestType选择。目前只支持端侧(REQUEST_TYPE_LOCAL)一种请求类型。

参数名

是否必选

类型

说明

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

详细请参考表2。

  • 0:成功
  • 1:系统正在初始化
  • 2:参数错误
  • 3:系统忙
  • 4:系统异常
  • 5:任务超时
  • 6:其它错误

message 错误信息 True String 错误信息描述。 intentions 意图列表 False JSONArray 详细请参考表2

详细意图说明

  • 还款通知表示还款通知的意图分析时,“intentions”子参数描述见下表: 表2 意图详情 参数名 是否必选 类型 说明 name true String 意图名,值为“repayNotice” attributes false JSONArray 意图属性,用数组表示,数组里的类型为JSONObject +deadline true JSONObject 还款截止时间,结构与实体“time”一致 +moneyInfo fale 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; // 调用接口返回的成功/错误码信息

复制

使用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);

复制

确认第二步初始化接口调用成功后,调用获取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();
}

复制

  • 异步接口:
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();
        }
    }
});

复制

解绑服务。

/* 功能使用完毕,销毁上下文,释放资源。 */
NluClient.getInstance().destroy(context);

最后,为了能让大家更好的去学习提升鸿蒙 (Harmony OS) 开发技术,小编连夜整理了一份30个G纯血版学习资料(含视频电子书学习文档等)以及一份在Github上持续爆火霸榜的《纯血版华为鸿蒙 (Harmony OS)开发手册》(共计890页),希望对大家有所帮助。

纯血版鸿蒙 HarmonyOS 4.0 视频学习资料

 需要以上视频学习资料小伙伴

请点击→纯血版全套鸿蒙HarmonyOS学习资料


《纯血版华为鸿蒙 (Harmony OS)开发手册》

这份手册涵盖了当前鸿蒙 (Harmony OS) 开发技术必掌握的核心知识点

纯血版鸿蒙 (Harmony OS)开发手册部分精彩内容

HarmonyOS 概念:

  • 系统定义
  • 技术架构
  • 技术特性
  • 系统安全

如何快速入门?

  • 基本概念
  • 构建第一个ArkTS应用
  • 构建第一个JS应用
  • ……


开发基础知识: 

  • 应用基础知识
  • 配置文件
  • 应用数据管理
  • 应用安全管理
  • 应用隐私保护
  • 三方应用调用管控机制
  • 资源分类与访问
  • 学习ArkTS语言
  • ……

基于ArkTS 开发:

  • Ability开发
  • UI开发
  • 公共事件与通知
  • 窗口管理
  • 媒体
  • 安全
  • 网络与链接
  • 电话服务
  • 数据管理
  • 后台任务(Background Task)管理
  • 设备管理
  • 设备使用信息统计
  • DFX
  • 国际化开发
  • 折叠屏系列
  • .……

获取以上文中提到的这份纯血版鸿蒙 (Harmony OS) 开发资料的小伙伴 

请点击→纯血版全套鸿蒙HarmonyOS学习资料


🚀写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新VIP学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值