场景介绍
接口说明
可用于从新闻和邮件里提取出关键字,便于用户快速获取新闻和邮件的主题。关键字可以为有意义的实体,比如,人名、电影,也可以为非实体的关键词汇,如,上课、考研。
接口名 |
功能描述 |
---|---|
ResponseResult getKeywords(String requestData, int requestType); |
同步接口,可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题。 |
ResponseResult getKeywords(final String requestData, final int requestType, final OnResultListener<ResponseResult> listener); |
异步接口,可用于从新闻和邮件里,提取出关键字后便于用户快速获取新闻和邮件的主题。 |
void init(Context context, OnResultListener<Integer> 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 |
调用者类型:
|
callVersion callState |
false false |
String int |
调用者版本号。 调用者状态:
|
requestType表示请求类型,取值可以从ohos.ai.nlu.NluRequestType选择。
类型 |
说明 |
---|---|
static final int |
REQUEST_TYPE_LOCAL=0,本地请求。 |
接口返回值说明
ResponseResult中responseResult为JSON字符串,体现关键字提取的结果:
参数名 |
是否必选 |
类型 |
说明 |
---|---|---|---|
code |
true |
int |
结果码。取值为:
|
message |
true |
String |
错误信息 |
keywords |
true |
JSONArray |
关键字列表,按照权重的顺序返回 |
参考示例如下:
{
“code”:0,
“message”:“成功”,
“keywords”:[
“上课”,
“一起”
]
}
开发步骤
- 在使用关键字提取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;// 接口返回码
- 使用NluClient静态类进行初始化,通过异步方式获取服务的连接。
- context:应用上下文信息,应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或子类实例。
- listener:初始化结果的回调,可以传null。
- isLoadModel:是否加载模型,如果传true,则在初始化时加载模型;如果传false,则在初始化时不加载模型。
NluClient.getInstance().init(context, new OnResultListener<Integer>(){
public void onResult(Integer result){
// 初始化成功回调,在服务初始化成功调用该函数
}
}, true);
- 调用获取关键词提取方法得到分析结果,同一个接口提供了同步和异步两个方法,开发者可根据自己需要选择。
同步
String requestData= “{number:2,body:’今天我们一起去上课吧’,title:’一起去上课’}”;
ResponseResult respResult = NluClient.getInstance().getKeywords(requestData, NluRequestType.REQUEST_TYPE_LOCAL);
if (null != respResult)
{
// 获取接口返回结果,参考接口文档返回使用
String result = respResult.getResponseResult();
}
title为可选参数 ,不填的时候只分析正文body。
异步
// 待分析文本
String requestData= “{number:2,body:’今天我们一起去上课吧’,title:’一起去上课’}”;
// 调用接口
NluClient.getInstance().getKeywords(requestData, NluRequestType.REQUEST_TYPE_LOCAL,new OnResultListener<ResponseResult>(){
public void onResult(ResponseResult respResult)
{
// 异步返回
if(null != respResult && NluError.SUCCESS_RESULT == respResult.getCode())
{
// 获取接口返回结果,参考接口文档返回使用
String result = respResult.getResponseResult();
}
}
});
使用结束调用destroy()方法释放进程资源,如果持续使用建议在进程结束时释放,释放后需要重复2才能再次使用。