HarmonyOS之AI能力·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; // 调用接口返回的成功/错误码信息
- 使用 NluClient 静态类进行初始化,通过异步方式获取服务的连接。
- context:应用上下文信息,应为 ohos.aafwk.ability.Ability 或 ohos.aafwk.ability.AbilitySlice 的实例或子类实例。
- listener:初始化结果的回调,可以传 null。
- isLoadModel:是否加载模型,如果传 true,则在初始化时加载模型;如果传 false,则在初始化时不加载模型。
NluClient.getInstance().init(context, new OnResultListener<Integer>(){@Overridepublic void onResult(Integer result){// 初始化成功回调,在服务初始化成功调用该函数}}, true);
- 确认 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();}
- 异步接口:
String requestJson = "{text:'您个人信用卡07月账单¥198.00,还款日07月27日【XX银行】'}"; // 调用接口NluClient.getInstance().getChatIntention(requestJson, NluRequestType.REQUEST_TYPE_LOCAL, new OnResultListener <ResponseResult> () {@Overridepublic void onResult(ResponseResult respResult) {// 异步返回if (respResult != null && respResult.getCode() == NluError.SUCCESS_RESULT) {// 获取接口返回结果String result = respResult.getResponseResult();}}});
- 解绑服务:
/* 功能使用完毕,销毁上下文,释放资源。 */NluClient.getInstance().destroy(context);
HarmonyOS之AI能力·IM类意图识别相关推荐
- HarmonyOS之AI能力·助手类意图识别
一.简介 随着人机交互越来越普遍,设备需要理解用户下达的各种指令,方便用户的操作. 助手类意图识别能够利用机器学习技术,对用户发送给设备的文本消息进行语义分析和意图识别,进而衍生出各种智能的应用场景, ...
- HarmonyOS之AI能力·实体识别
一.简介 实体识别能够从自然语言中提取出具有特定意义的实体,并在此基础上完成搜索等一系列相关操作及功能. 实体识别覆盖范围大,能够满足日常开发中对实体识别的需求,让应用体验更好.识别准确率高,能够准确 ...
- HarmonyOS之AI能力·通用文字识别技术
一.通用文字识别技术 通用文字识别的核心技术是 OCR(Optical Character Recognition,光学字符识别). OCR 是一种通过拍照.扫描等光学输入方式,把各种票据.卡证.表格 ...
- HarmonyOS之AI能力·文档检测校正
一.基本概念 文档校正提供了文档翻拍过程的辅助增强功能,包含两个子功能:文档检测和文档校验. 文档检测:能够自动识别图片中的文档,返回文档在原图中的位置信息.这里的文档泛指外形方正的事物,比如书本.相 ...
- HarmonyOS之AI能力·文字图像超分
一.简介 文字图像超分辨率可以对包含文字内容的图像进行 9 倍放大(高宽各放大 3 倍),同时增强图像内文字的清晰度,称为"文字图像超分辨率",简称"文字图像超分&quo ...
- HarmonyOS之AI能力·图像超分辨率
一.基本概念 针对图片分辨率不足的问题,传统的解决方案是使用双线性或双三次插值的方法来放大图像:而针对图片压缩噪声的问题,传统的解决方案则是通过各种算法实现平滑.去噪. 本 SDK 使用智能的方法,基 ...
- HarmonyOS之AI能力·语音识别技术
一.基本概念 语音识别功能提供面向移动终端的语音识别能力.它基于华为智慧引擎(HUAWEI HiAI Engine)中的语音识别引擎,向开发者提供人工智能应用层 API.该技术可以将语音文件.实时语音 ...
- HarmonyOS之AI能力·词性标注
一.简介 随着信息技术的发展,网络中的信息量成几何级增长逐步成为当今社会的主要特征.准确提取文本关键信息,是搜索引擎等领域的技术基础,而分词作为文本信息提取的第一步则尤为重要. 分词作为自然语言处理领 ...
- HarmonyOS之AI能力·分词
一.基本概念 随着信息技术的发展,网络中的信息量成几何级增长逐步成为当今社会的主要特征.准确提取文本关键信息,是搜索引擎等领域的技术基础,而分词作为文本信息提取的第一步则尤为重要. 分词作为自然语言处 ...
最新文章
- 微软发布虚机管理SCVMM 2008 R2 RC版
- 程序员真香!IT 业 2020 年平均工资最高
- C# System.Timers.Timer中的坑,程序异常退出后timer依然运行问题
- [2778]小明的花费预算 (二分查找)SDUT
- 零基础学Python(第五章 运算符)
- 计算机辅助翻译的启示,翻译单位研究对计算机辅助翻译启示.PDF
- Linux中expect命令实现交互,修改VNCPASSWD
- UJAM Virtual Guitarist SILK for mac(尼龙弦原声吉他)
- Java的自动拆箱和装箱是Java语言的一颗语法糖
- R语言周氏检验(Chow test) 检验回归中结构不稳定性的虚拟变量的替代方案
- oracle读写mysql_Oracle读写磁盘经过的缓存
- ATmega128单片机](熔丝修改后无法烧录程序情况)
- 设计原则(单一职能原则,开闭原则,里氏替换原则,依赖倒置原则,接口分离原则,迪米特原则)
- pg_repack使用
- 第二证券|支持多子女购房、提高公积金贷款额度、发放限时补贴
- HDU - 5238(剩余定理)
- mechanize 是 pthon 的并且可编程的 浏览器插件,
- cad重新加载php命令,cad无限缩小的命令是什么
- 叶酸修饰靶向性紫杉醇 PGA-TAXOL/羟基靶向修饰透明质酸接枝姜黄素 OH-HA-CUR/羧基靶向修饰透明质酸接枝姜黄素 COOH-HA-CUR
- Some selectors are not allowed in component wxss, including tag name selectors, ID selectors,and...
热门文章
- FIND_IN_SET 精确查找
- JS如何设置获取盒模型对应的宽高
- chosen组件实现下拉框
- Android 自定义 View 中 onKeyDown监听 没反应
- 计算机教育日志,信息技术日志1
- vuex刷新页面数据丢失怎么解决_你是否真正了解Vuex
- python apache配置_Apache运行Python的配置
- Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入
- php 静态扩展,thinkphp5行为扩展实现html静态缓存设置
- 防沉迷人脸识别可以扫照片吗_人脸识别的智能门锁到底安不安全?用照片可以打开是真的吗?...