HarmonyOS学习路之开发篇—AI功能开发(IM类意图识别)

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

IM类意图识别概述

基本概念

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


运作机制

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


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


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


还款提醒通知

还款成功通知

未接来电通知

约束与限制

当前只支持中文语境。

目前仅支持以下三个意图的智能识别:还款提醒通知、还款成功通知、未接来电通知。


IM类意图识别的输入文本限制在500个字符以内,字符数超出限制将返回参数错误,文本需要为UTF-8格式,格式错误不报错,但会导致分析结果错误。


Engine支持多用户同时接入,但是不支持同一用户并发调用同一个特性。如同一个特性被同一进程同一时间多次调用,则返回系统忙错误。不同进程调用同一特性,则同一时间只有一个进程业务在处理,其他进程进入队列排队。


IM类意图识别开发

场景介绍

生成智能卡片

应用于生成智能卡片,例如:生成未接来电通知卡片。当来电未被用户接听(呼叫超时未接通或被用户主动拒绝接通),电信运营商或服务提供商会向用户发送短信提醒。当用户终端设备接收到短信提醒,即可由IM意图识别特性分析出未接来电通知短信的意图,并可以分析出呼叫方电话号码及呼叫时间,生成智能卡片,方便用户查看。


开发下拉pad屏

应用于开发下拉pad屏。与生成智能卡片的场景类似,可识别用户消息文本的意图,在下拉pad屏生成并显示重要的信息,方便用户随时查看。


文本消息意图识别

主要针对用户短信或聊天类文本消息进行意图识别,目前仅开放支持了通知消息类的三个意图,分别为:还款提醒通知、还款成功通知、未接来电通知。


接口说明

主要接口


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


表1 接口描述


image.png

image.png

接口输入值说明

  • isLoadModel:是否在初始化时加载模型。
  • requestType:请求类型,取值可以从ohos.ai.nlu.NluRequestType选择。目前只支持端侧(REQUEST_TYPE_LOCAL)一种请求类型。
  • requestData的JSON格式如下:
  • image.png
  • 接口返回值说明

返回值ResponseResult中responseResult为JSON字符串,体现文本分词的结果:

image.png

详细意图说明

  • 还款通知表示还款通知的意图分析时,“intentions”子参数描述见下表:
  • 表2 意图详情
  • image.png
  • 已还款通知

表示已经还款成功的通知,“intentions”子参数描述见下表:

  • image.png
  • 未接来电通知

表示未接来电的意图,“intentions”子参数描述见下表:

image.png

开发步骤

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


相关文章
|
2月前
|
缓存 API 数据安全/隐私保护
自学记录:学习HarmonyOS Location Kit构建智能定位服务
作为一名对新技术充满好奇心的开发者,我选择了HarmonyOS Next 5.0.1(API 13)作为挑战对象,深入研究其强大的定位服务API——Location Kit。从权限管理、获取当前位置、逆地理编码到地理围栏,最终成功开发了一款智能定位应用。本文将结合代码和开发过程,详细讲解如何实现这些功能,并分享遇到的挫折与兴奋时刻。希望通过我的经验,能帮助其他开发者快速上手HarmonyOS开发,共同探索更多可能性。
135 5
|
1月前
|
机器学习/深度学习 人工智能 搜索推荐
哈佛推出全新类ChatGPT癌症诊断AI,登上Nature!准确率高达96%
哈佛大学研究团队开发的新型AI模型CHIEF,在《自然》期刊发表,癌症诊断准确率达96%。CHIEF基于深度学习,能自动识别、分类癌症并预测生存期,具高准确性、多任务能力和泛化性。它结合病理图像与基因组学等数据,显著提升诊断效率和个性化治疗水平,有望改善医疗资源不平等。但数据隐私和临床效果验证仍是挑战。论文见:https://www.nature.com/articles/s41586-024-07894-z
169 101
|
1天前
鸿蒙开发:了解@Builder装饰器
@Builder装饰是鸿蒙UI开发中,非常重要的一个装饰器,在实际的开发中,合理且正确的使用,能够让我们的代码更加的简洁,有两点需要注意,一是,是用私有还是全局,取决于当前的组件的复用机制,如果多个页面都使用了,建议以全局为主;二是传参的动态更新,有更新就使用引用参数传递,没有更新按值传递即可。
48 28
|
1月前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
106 47
Harmony OS开发-ArkTS语言速成二
|
11天前
|
人工智能
逼真到离谱!1000个人类克隆进西部世界,AI相似度85%细节太炸裂
《生成式代理:1000人的模拟》由斯坦福大学等机构完成,利用AI技术成功模拟了1000个真实个体的态度和行为,准确率达85%。研究结合大型语言模型与定性访谈数据,旨在为社会科学研究提供新工具,减少偏见,提升公平性。论文还探讨了隐私和伦理问题,并强调了代理的局限性。
38 13
|
2月前
|
索引 API
鸿蒙开发:自定义一个股票代码选择键盘
金融类的软件,特别是股票基金类的应用,在查找股票的时候,都会有一个区别于正常键盘的键盘,也就是股票代码键盘,和普通键盘的区别就是,除了常见的数字之外,也有一些常见的股票代码前缀按钮,方便在查找股票的时候,更加方便的进行检索。
鸿蒙开发:自定义一个股票代码选择键盘
|
2月前
|
API
鸿蒙开发:自定义一个英文键盘
实现方式呢,有很多种,目前采用了比较简单的一种,如果大家采用网格Grid组件实现方式,也是可以的,但是需要考虑每行的边距以及数据,还有最后两行的格子占位问题。
鸿蒙开发:自定义一个英文键盘
|
2月前
|
前端开发 API 数据库
鸿蒙开发:异步并发操作
在结合async/await进行使用的时候,有一点需要注意,await关键字必须结合async,这两个是搭配使用的,缺一不可,同步风格在使用的时候,如何获取到错误呢,毕竟没有catch方法,其实,我们可以自己创建try/catch来捕获异常。
105 3
鸿蒙开发:异步并发操作
|
2月前
|
API
鸿蒙开发:实现popup弹窗
目前提供了两种方式实现popup弹窗,主推系统实现的方式,几乎能满足我们常见的所有场景,当然了,文章毕竟有限,尽量还是以官网为主。
106 2
鸿蒙开发:实现popup弹窗
|
2月前
|
API
鸿蒙开发:自定义一个车牌字母键盘
车牌字母键盘和一般的键盘还有很大区别的,大家可以发现,键盘上是少一个字母的,因为I字母具有混淆性,所以这个字母是不在车牌键盘内的。
鸿蒙开发:自定义一个车牌字母键盘

热门文章

最新文章