HarmonyOS之AI能力·关键字提取

网友投稿 765 2022-05-30

在日常生活中充满了各种各样的信息,这些信息千变万化。文本语言作为信息传递的一种载体,同样面临有用信息和无用信息糅杂在一起的问题。关键字提取帮助用户在众多文本信息中快速提取出关键信息和核心内容,节省时间提高效率。

关键字提取 API 提供了一个提取关键字的接口,通过该 API 可以在大量信息中提取出文本想要表达的核心内容,可以是具有特定意义的实体,如:人名,地点,电影等,也可以是一些基础但是在文本中很关键的词汇。

通过该 API 可以对提取的关键字按照在文本中所占权重由高到低排序。排序越靠前,权重越高,对文本的核心内容提取的越准确。

当前只支持中文语境。

关键字提取标题文本限制在 100 个字符以内,正文文本限制在 5000 个字符以内,关键词提取个数小于等于20。文本为 UTF-8 格式,格式错误不会报错,但分析结果会不正确。

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

游记摘要:本 API 可以从用户编辑的游记长文本中提取出能反应出其核心思想的关键词汇,关键词按关键到相对非关键的权重顺序输出,帮助用户快速从长文本中提取出关键信息,快速给游记文章关键信息选择对应的标签上传。

新闻标签:用户在浏览文章时,对感兴趣的想做,可以使用本 API,提取出关键信息,生成对应的标签,可供用户下次想继续浏览的文章时,不用打开文章,便可通过生成的标签快速了解到文章的核心内容。

可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题。关键字可以为有意义的实体,比如,人名,电影,也可以非实体的关键词汇,如,上课、考研。

关键词提取主要接口:

requestData 的 json 格式如下:

requestType 表示请求类型,取值可以从 ohos.ai.nlu.NluRequestType 选择:

ResponseResult 中 responseResult 为 Json 字符串,体现关键字提取的结果:

参考示例如下:

{ "code":0, "message":"成功", "keywords":[ "上课", "一起" ] }

1

HarmonyOS之AI能力·关键字提取

2

3

4

5

6

7

8

在使用关键字提取 API 时,将实现关键字提取的相关的类添加至工程:

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;// 接口返回码

1

2

3

4

5

使用 NluClient 静态类进行初始化,通过异步方式获取服务的连接:

context:应用上下文信息,应为 ohos.aafwk.ability.Ability 或 ohos.aafwk.ability.AbilitySlice 的实例或子类实例。

listener:初始化结果的回调,可以传 null。

isLoadModel:是否加载模型,如果传 true,则在初始化时加载模型;如果传 false,则在初始化时不加载模型。

NluClient.getInstance().init(context, new OnResultListener(){ @Override public void onResult(Integer result){ // 初始化成功回调,在服务初始化成功调用该函数 } }, true);

1

2

3

4

5

6

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

同步:title 为可选参数 ,不填的时候只分析正文 body:

String requestData= "{number:2,body:'今天我们一起去上课吧',title:'一起去上课'}"; ResponseResult respResult = NluClient.getInstance().getKeywords(requestData, NluRequestType.REQUEST_TYPE_LOCAL); if (null != respResult) { // 获取接口返回结果,参考接口文档返回使用 String result = respResult.getResponseResult(); }

1

2

3

4

5

6

7

异步:

// 待分析文本 String requestData= "{number:2,body:'今天我们一起去上课吧',title:'一起去上课'}"; // 调用接口 NluClient.getInstance().getKeywords(requestData, NluRequestType.REQUEST_TYPE_LOCAL,new OnResultListener(){ @Override public void onResult(ResponseResult respResult) { // 异步返回 if(null != respResult && NluError.SUCCESS_RESULT == respResult.getCode()) { // 获取接口返回结果,参考接口文档返回使用 String result = respResult.getResponseResult(); } } });

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

使用结束调用 destroy() 方法释放进程资源,如果持续使用建议在进程结束时释放,释放后需要重复“NluClient 静态类进行初始化”才能再次使用。

AI API

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Flutter】Flutter 页面跳转 ( 路由 Route | 导航器 Navigator | 页面关闭 )
下一篇:信息系统项目管理师项目变更管理
相关文章