HarmonyOS学习路之开发篇—AI功能开发(分词)

news/2024/7/21 11:40:50 标签: 学习, harmonyos, AI, 分词, 华为, 人工智能

分词概述

随着信息技术的发展,网络中的信息量成几何级增长逐步成为当今社会的主要特征。准确提取文本关键信息,是搜索引擎等领域的技术基础,而分词作为文本信息提取的第一步则尤为重要。

分词作为自然语言处理领域的基础研究,衍生出各类不同的文本处理相关应用。

基本概念

分词模块提供了文本自动分词的接口,对于一段输入文本,可以自动进行分词,同时提供不同的分词粒度。开发者可以根据需要自定义分词粒度。

约束与限制

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

分词开发

场景介绍

  • 分词相关接口可以应用于搜索引擎开发。对于搜索引擎而言,最重要的是如何把全网搜索的结果进行筛选,并按相关程度进行排序。分词的准确与否,常常直接影响到搜索结果的相关度排序。
  • 分词相关接口可以应用于用户选择文本的场景。原始文本只能按字选择,如果使用分词,用户选中文本的时候可以按词选择。

接口说明

分词API的主要功能是将一个汉字序列切分成一个一个单独的词,可自定义分词的粒度。

主要接口

接口名

功能描述

ResponseResult getWordSegment(String requestData, int requestType)

分词,同步接口

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

分词,异步接口

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

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

void destroy(Context context)

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

接口输入值说明

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

类型

说明

static int

REQUEST_TYPE_LOCAL = 0,本地请求。

requestData表示输入的文本信息,为JSON格式,如下:

参数名

是否必选

值类型

说明

text

String

待分析的文本,utf-8,文本长度不超过500个字符。

type

long

分词的粒度,默认为0。取值包括:

  • 0:基本词,粒度较小。如“我要看速度与激情”,分成“我/要/看/速度/与/激情”。
  • 1:在基本词的基础上,做实体合并。例如:“我要去江宁万达广场看速度与激情”,分成“我/要/去/江宁万达广场/看/速度/与/激情”。

    对于没有可合并实体的文本信息,其分词效果与type为0的分词效果相同。例如:“明天下午3点一起看电影”,分成“明天/下午/3点/一起/看/电影”。

  • 9223372036854775807(2的63次方减1):在type为1的基础上,把实体时间、地点等整体结构合并,出现符号隔开不合并,并把一些常用短语合并。如“形容词+的”,“单字动词+单字名词”等,简化句子成分。

    例如“明天下午三点到五点我在江宁瑞都金逸影城看电影”,分成“明天下午三点/到/五点/我/在/江宁瑞都金逸影城/看/电影”。

callPkg

String

调用者名称。

callType

int

调用者类型:

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

callVersion

String

调用者版本号。

callState

int

调用者状态:

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

目前NLU支持的实体类别:

实体类别

备注

电影

依赖字典,要求真实用例,勿做修改。

电视剧

依赖字典,要求真实用例,勿做修改。

综艺

依赖字典,要求真实用例,勿做修改。

动漫

依赖字典,要求真实用例,勿做修改。

火车车次

要求真实用例,勿做修改。

航班号

要求真实用例,勿做修改。

球队

依赖字典,支持NBA、CBA、英超、西甲、德甲、意甲、法甲、中超的球队识别,要求真实用例,勿做修改。

人名

要求真实用例,勿做修改。

快递单号

要求真实用例,勿做修改。

电话号码

要求真实用例,勿做修改。

url

要求真实用例,勿做修改。

邮箱

要求真实用例,勿做修改。

联赛

NBA、CBA、英超、西甲、德甲、意甲、法甲、中超,要求真实用例,勿做修改。

时间

要求真实用例,勿做修改。

地点

包含酒店、餐馆、景点、学校、道路、省、市、县、区、镇等,部分依赖字典。

验证码

用例真实,勿做修改。

接口返回值说明

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

参数名

是否必选

值类型

说明

code

int

结果码。取值包括:

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

message

String

错误信息

words

JSONArray

切分出的词数组,数组里每一项的类型均为JSONObject。

开发步骤

1. 在使用分词API时,将实现分词的相关类添加至工程

import ohos.ai.nlu.NluRequestType;
import ohos.ai.nlu.NluClient;
import ohos.ai.nlu.OnResultListener;
import ohos.ai.nlu.ResponseResult;

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

3. 调用分词方法得到分析结果,接口提供同步和异步两个方法,开发者可根据自己需要选择。

  • 同步
String requestData = "{\"text\":\"今天天气不错,我们一起看电影吧\\n\",\"type\":0}";
ResponseResult responseResult = NluClient.getInstance().getWordSegment(requestData, NluRequestType.REQUEST_TYPE_LOCAL);
  • 异步
NluClient.getInstance().getWordSegment(requestData,
            NluRequestType.REQUEST_TYPE_LOCAL, new OnResultListener<ResponseResult>() {
                @Override
                public void onResult(ResponseResult result) {
                   // onResult deal
                }
            });

4. 解绑服务。

NluClient.getInstance().destroy(context);


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

相关文章

RFID微图柜的操作流程以及功能介绍

微型图书馆智能书柜是一种基于 RFID 技术的图书自助借阅延伸服务的终端设备&#xff0c;可实现 24 小时无人看守的共享的智能化设备&#xff0c;可自助借还书、自动数据记录分析、自助提醒等一体化管理服务功能。 智能书柜的操作流程 借书&#xff1a;在操作页面上选择“借书…

可孚医疗:「最懂互联网」的医疗器械企业是如何炼成的?

如果说钉钉在过去的标签是软件&#xff0c;是低代码。那么在医疗这个赛道里&#xff0c;这些标签已经不足以成为钉钉价值的侧写&#xff0c;除了固有标签之外&#xff0c;在可孚医疗的场景里&#xff0c;钉钉可以连接&#xff0c;可以成为智能BI&#xff0c;也更可以做到内外部…

Python运算符的优先级

Python中常用的运算符有算术运算符、关系运算符、身份运算符、成员运算符、逻辑运算符、赋值运算符共 7 大类&#xff0c;掌握七大运算符的优先级&#xff0c;对解题很有帮助。具体见下表&#xff1a; 运算符类型(从高到低)说明()括号的优先级最高算术运算符** > *、/、%、/…

【pytest学习总结2.2 】- 如何在测试中编写断言?

目录 2.2 如何在测试中编写断言 2.2.1 assert 断言 2.2.2 断言预期的异常 2.2.3 断言预期警告 【后续内容更新】 2.2.4 断言上下文 2.2.5 为失败的断言定义您自己的解释 2.2.6 断言的详细内容 &#x1f381;更多干货 完整版文档下载方式&#xff1a; 2.2 如何在测试中…

【备战秋招】每日一题:2023.4.3-阿里OD机试(第三题)-又一个数论题

在线评测链接:P1148 题目内容 塔子哥是一名年轻的数学家&#xff0c;他一直对数学充满热情。有一天&#xff0c;他在研究数论时发现了一个有趣的问题&#xff1a;给定一个长度为 n n n 的数组 a a a&#xff0c;问有多少个子数组的乘积的因数个数 ≥ k ≥k ≥k。 塔子哥对…

【已解决】有些网站播放视频时,视频播放器无法拖动进度,无法快进的问题

解决某些网站播放视频时,我们无法拖动视频播放器的进度条,无法快进播放,而且也不能使用倍速播放的问题 目录

Scrum敏捷看板工具在项目管理中的作用

Scrum是迭代式增量软件开发过程&#xff0c;是敏捷方法论中的重要框架之一&#xff0c;通常用于敏捷软件开发。 当开发团队在用 Scrum 这种开发方法开发项目时&#xff0c;可以利用敏捷看板&#xff0c;可视化透明且灵活的高效的完成工作。 使用敏捷看板可以使&#xff1a; …

了解 Splashtop 的多层安全防护措施

随着技术的进步&#xff0c;如何确保数据安全也越来越重要。Splashtop 作为行业领先的远程访问软件供应商&#xff0c;对这一点非常了解。Splashtop 基于信任、客观性、监控和隐私搭建安全框架&#xff0c;致力于保护所有数据交互和用户设备。 了解 Splashtop 安全性的核心 S…