HarmonyOS之AI能力·关键字提取

举报
Serendipity·y 发表于 2022/02/17 01:32:04 2022/02/17
【摘要】 一、概念 在日常生活中充满了各种各样的信息,这些信息千变万化。文本语言作为信息传递的一种载体,同样面临有用信息和无用信息糅杂在一起的问题。关键字提取帮助用户在众多文本信息中快速提取出关键信息和核心内容,...

一、概念

  • 在日常生活中充满了各种各样的信息,这些信息千变万化。文本语言作为信息传递的一种载体,同样面临有用信息和无用信息糅杂在一起的问题。关键字提取帮助用户在众多文本信息中快速提取出关键信息和核心内容,节省时间提高效率。
  • 关键字提取 API 提供了一个提取关键字的接口,通过该 API 可以在大量信息中提取出文本想要表达的核心内容,可以是具有特定意义的实体,如:人名,地点,电影等,也可以是一些基础但是在文本中很关键的词汇。
  • 通过该 API 可以对提取的关键字按照在文本中所占权重由高到低排序。排序越靠前,权重越高,对文本的核心内容提取的越准确。

二、约束与限制

  • 当前只支持中文语境。
  • 关键字提取标题文本限制在 100 个字符以内,正文文本限制在 5000 个字符以内,关键词提取个数小于等于20。文本为 UTF-8 格式,格式错误不会报错,但分析结果会不正确。
  • Engine 支持多用户同时接入,但是不支持同一用户并发调用同一个特性。如同一个特性被同一进程同一时间多次调用,则返回系统忙错误;不同进程调用同一特性,则同一时间只有一个进程业务在处理,其他进程进入队列排队。

三、应用场景

  • 游记摘要:本 API 可以从用户编辑的游记长文本中提取出能反应出其核心思想的关键词汇,关键词按关键到相对非关键的权重顺序输出,帮助用户快速从长文本中提取出关键信息,快速给游记文章关键信息选择对应的标签上传。
  • 新闻标签:用户在浏览文章时,对感兴趣的想做收藏,可以使用本 API,提取出关键信息,生成对应的标签,可供用户下次想继续浏览收藏的文章时,不用打开文章,便可通过生成的标签快速了解到文章的核心内容。

四、API 说明

① 关键词提取接口
  • 可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题。关键字可以为有意义的实体,比如,人名,电影,也可以非实体的关键词汇,如,上课、考研。
  • 关键词提取主要接口:
接口名 功能描述
ResponseResult getKeywords(String requestData, int requestType); 同步接口,可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题
ResponseResult getKeywords(final String requestData, final int requestType, final OnResultListener listener); 异步接口,可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题
void init(Context context, OnResultListener listener, boolean isLoadModel); 绑定NLU服务必须调用初始化服务,使用多个nlu服务接口时,只需要调用一次,异步接口
void destroy(Context context); 解绑服务,初始化过就在销毁时需要解绑,让资源及时释放
② 接口输入值说明
  • requestData 的 json 格式如下:
参数名 是否必选 类型 说明
title false String 文章的标题,字符数不超过100
body true String 文章的正文,字符数不超过5000
number true int 需抽取的关键字个数,数值在1到20之间
callPkg false String 调用者名称
callType false int 调用者类型:
0:普通应用(默认)
1:快应用
callVersion
callState
false
false
String
int
调用者版本号。
调用者状态:
-1:未知(默认)
0:前台
1:后台
  • requestType 表示请求类型,取值可以从 ohos.ai.nlu.NluRequestType 选择:
类型 说明
static final int REQUEST_TYPE_LOCAL=0,本地请求
③ 接口返回值说明
  • ResponseResult 中 responseResult 为 Json 字符串,体现关键字提取的结果:
参数名 是否必选 类型 说明
code true int 结果码。取值为:
0:成功
1:系统正在初始化
2:参数错误
3:系统忙
4:系统异常
5:任务超时
6:其它错误
message true String 错误信息
keywords true JSONArray 关键字列表,按照权重的顺序返回
  • 参考示例如下:
	{
	    "code":0,
	    "message":"成功",
	    "keywords":[
	        "上课",
	        "一起"
	    ]
	}

  
 
  • 1
  • 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<Integer>(){
	        @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<ResponseResult>(){
	    @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 静态类进行初始化”才能再次使用。

文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Forever_wj/article/details/118335111

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。