HarmonyOS学习路之开发篇—AI功能开发(实体识别)

news/2024/7/21 10:04:09 标签: 学习, harmonyos, 人工智能, java, 实体识别, AI, 华为

实体识别概述

实体识别能够从自然语言中提取出具有特定意义的实体,并在此基础上完成搜索等一系列相关操作及功能。

实体识别覆盖范围大,能够满足日常开发中对实体识别的需求,让应用体验更好。识别准确率高,能够准确地提取到实体信息,对应用基于信息的后续服务形成关键影响。

约束限制

  • 当前只支持中文语境。
  • 实体识别文本限制在500个字符以内,超过字符数限制将返回参数错误;文本需要为UTF-8格式,格式错误不报错,但会导致分析结果错误。
  • Engine支持多用户同时接入,但是不支持同一用户并发调用同一个特性,如同一个特性被同一进程同一时间多次调用,则返回系统忙错误;不同进程调用同一特性,则同一时间只处理一个进程的业务,其他进程进入队列排队。

实体识别开发

场景介绍

  • 双指按压文本弹出卡片

    基于文本中所包含的实体内容,如名人、电影、电视剧等。通过双指按压,快速弹出实体对应的卡片介绍信息。让用户可以方便、快捷的获取想知道的信息。

  • 实体信息高亮

    将相关的实体信息高亮,并设置快速操作入口。如将文本信息中的电话号码高亮,用户可以直接进行拨号。

接口说明

实体识别提供识别文本中具有特定意义实体的能力,包含电影、电视剧、综艺、动漫、单曲、专辑、图书、火车车次、航班号、球队、人名、快递单号、电话号码、url、邮箱、联赛、时间、地点(包含酒店、餐馆、景点、学校、道路、省、市、县、区、镇等)、验证码。

主要接口

接口名

描述

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

初始化NLU服务。在调用NLU等功能接口前需要先调用此接口,在OnResultListener的onResult(T)方法中获取到回调结果后,再调用NLU功能接口。开发者传入listener参数作为回调,用于等待NLU功能接口的调用过程和结果。

ResponseResult getEntity(String requestData, int requestType);

采用同步方式识别文本中具有特定意义的实体,包含电影、电视剧、综艺、动漫、单曲、专辑、图书、火车车次、航班号、球队、人名、快递单号、电话号码、url、邮箱、联赛、时间、地点(包含酒店、餐馆、景点、学校、道路、省、市、县、区、镇等)、验证码。

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

采用异步方式识别文本中具有特定意义的实体,包含电影、电视剧、综艺、动漫、单曲、专辑、图书、火车车次、航班号、球队、人名、快递单号、电话号码、url、邮箱、联赛、时间、地点(包含酒店、餐馆、景点、学校、道路、省、市、县、区、镇等)、验证码。

void destroy(Context context);

取消所有NLU任务,销毁NLU引擎服务。调用此方法后,无法再使用NLU服务。如果需要重新使用NLU服务,需要重新调用init(Context, OnResultListener<Integer>, boolean)}来初始化NLU服务。

接口输入值说明

requestType表示请求类型,通过NluRequestType类定义如下:

枚举的类型

枚举的取值

static final int

REQUEST_TYPE_LOCAL = 0 本地请求

requestData的JSON格式如下:

参数名

是否必选

类型

说明

text

true

String

待分析的文本,UTF-8编码,限制500个字符以内。

module

false

String

定义需要分析的实体,默认所有实体均会分析。

分析某个实体,传实体键值,例如:只需要分析时间实体,传“time”。可传多个,表示分析多个实体,以半角逗号“,”分隔,例如:分析时间和地点,传“time,location”。

取值范围:name、time、location、phoneNum、email、url、movie、tv、anime、league、team、trainNo、flightNo、expressNo、idNo、verificationCode、app、carNo

callPkg

false

String

调用者名称。

callType

false

int

调用者类型:

  • 0:普通应用(默认)
  • 1:快应用

callVersion

callState

false

false

String

int

调用者版本号。

调用者状态:

  • -1:未知(默认)
  • 0:前台
  • 1:后台

接口返回值说明

返回值ResponseResult为JSONObject字符串,体现实体识别的结果:

参数名

是否必选

类型

说明

code

true

int

实体识别的结果码。取值包括:
  • 0:成功
  • 1:系统正在初始化
  • 2:参数错误
  • 3:系统忙
  • 4:系统异常
  • 5:任务超时
  • 6:其它错误

message

true

String

实体识别的结果描述。

entity

false

JSONObject

实体分析结果。

开发步骤

在使用实体识别相关接口时,需要将实体识别的相关类添加到工程。

java">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,则在初始化时不加载模型。
java">NluClient.getInstance().init(context, new OnResultListener<Integer>(){
        @Override
        public void onResult(Integer result){
         // 初始化成功回调,在服务初始化成功调用该函数
        }
}, true);

调用实体识别的接口,获取分析结果。

java">String requestData= "{text:'我要看电影魔兽',module:'movie'}"; // module为可选参数,如果不设置该参数,则默认分析所有实体
ResponseResult respResult = NluClient.getInstance().getEntity(requestData, NluRequestType.REQUEST_TYPE_LOCAL);
if (null != respResult && NluError.SUCCESS_RESULT == respResult.getCode()) {
    // 获取接口返回结果,参考接口文档返回使用
    String result = respResult.getResponseResult();
}
java">// 待分析文本
String requestData= "{text:'我要看电影魔兽',module:'movie'}"; // module为可选参数,如果不设置该参数,则默认分析所有实体
// 调用接口
NluClient.getInstance().getEntity(requestData, NluRequestType.REQUEST_TYPE_LOCAL, new OnResultListener < ResponseResult > () {
    @Override
    public void onResult(ResponseResult respResult) {
        // 异步返回
        if (null != respResult && NluError.SUCCESS_RESULT == respResult.getCode()) {
            // 获取接口返回结果,参考接口文档返回使用
            String result = respResult.getResponseResult();
        }
    }
});

销毁NLU服务。

java">NluClient.getInstance().destroy();


http://www.niftyadmin.cn/n/475932.html

相关文章

AutoGrow源码解析

AutoGrow参数说明 参数注释-h, --help显示此帮助消息并退出–json param.json, -j param.json包含所有参数的json文件名。覆盖其他参数。–debug_mode, -d在调试模式下运行Autogrow。这将保留所有临时文件并添加额外的打印语句。–filename_of_receptor receptor.pdb, -r rece…

深入浅出解析LoRA完整核心基础知识 | 【算法兵器谱】

Rocky Ding 公众号&#xff1a;WeThinkIn 写在前面 【算法兵器谱】栏目专注分享AI行业中的前沿/经典/必备的模型&论文&#xff0c;并对具备划时代意义的模型&论文进行全方位系统的解析&#xff0c;比如Rocky之前出品的爆款文章Make YOLO Great Again系列。也欢迎大家提…

[框架]Spring MVC框架

目录 关于Spring MVC框架 Spring MVC框架的依赖项 使用Spring MVC框架接收请求 关于RequestMapping注解 关于RESTful 关于RequestParam注解 RequestParam注解是添加在方法的参数上的&#xff0c;它的作用主要有&#xff1a; 其它 关于Spring MVC框架 MVC&#xff1a…

2.2 HDFS shell操作

2.2 HDFS shell操作 调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式 ls 使用方法&#xff1a;hadoop fs -ls 如果是文件&#xff0c;则按照如下格式返回文件信息&#xff1a; 文件名 <副本数> 文件大小 修改日期 修改时间 权限 用户ID 组ID 如果是目录&#xff…

用ChatGPT提高开发效率(Andoid)

一、前言 我们问了10个问题&#xff0c;开发的、生活中有疑问的&#xff0c;ChartGPT都给了我们答案。这些答案怎么样&#xff0c;请往下看吧。 ChatGPT-1、写一个车牌号的正则表达式ChatGPT-2、写一个中国大陆车牌号的正则表达式ChatGPT-3、用kotlin写一个车牌号的校验函数C…

记一次Tomcat控制台弱口令爆破事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门在安全设备上观察到大量Tomcat控制台登录请求&#xff0c;现需根据流量情况进…

Python如何调用C库(Windows Linux)

软硬件环境 ubuntu 18.04 64bitwindows 10 64bitPython 3.8GCC 4.9visual studio 前言 在做 python 开发中&#xff0c;经常会碰到&#xff0c;需要通过调用 C 的一个动态链接库来获取相应的值。本文详细讲解了 Windows 和 Linux 2个平台上的不同实现。 linux版的动态库 写个简…

特征选择:从冗杂数据中找出真金

在机器学习项目中&#xff0c;特征选择是一个不可或缺的步骤。不论你面对的是分类问题&#xff0c;还是回归问题&#xff0c;适当的特征选择都能提升模型的性能&#xff0c;甚至能显著节约计算资源。接下来&#xff0c;我将为你详细讲解特征选择的重要性以及常用的特征选择技术…