實(shí)體識別概述
實(shí)體識別能夠從自然語言中提取出具有特定意義的實(shí)體,并在此基礎(chǔ)上完成搜索等一系列相關(guān)操作及功能。
實(shí)體識別覆蓋范圍大,能夠滿足日常開發(fā)中對實(shí)體識別的需求,讓應(yīng)用體驗(yàn)更好。識別準(zhǔn)確率高,能夠準(zhǔn)確地提取到實(shí)體信息,對應(yīng)用基于信息的后續(xù)服務(wù)形成關(guān)鍵影響。
約束限制
- 當(dāng)前只支持中文語境。
- 實(shí)體識別文本限制在500個字符以內(nèi),超過字符數(shù)限制將返回參數(shù)錯誤;文本需要為UTF-8格式,格式錯誤不報(bào)錯,但會導(dǎo)致分析結(jié)果錯誤。
- Engine支持多用戶同時接入,但是不支持同一用戶并發(fā)調(diào)用同一個特性,如同一個特性被同一進(jìn)程同一時間多次調(diào)用,則返回系統(tǒng)忙錯誤;不同進(jìn)程調(diào)用同一特性,則同一時間只處理一個進(jìn)程的業(yè)務(wù),其他進(jìn)程進(jìn)入隊(duì)列排隊(duì)。
實(shí)體識別開發(fā)
場景介紹
- 雙指按壓文本彈出卡片
基于文本中所包含的實(shí)體內(nèi)容,如名人、電影、電視劇等。通過雙指按壓,快速彈出實(shí)體對應(yīng)的卡片介紹信息。讓用戶可以方便、快捷的獲取想知道的信息。
- 實(shí)體信息高亮
將相關(guān)的實(shí)體信息高亮,并設(shè)置快速操作入口。如將文本信息中的電話號碼高亮,用戶可以直接進(jìn)行撥號。
接口說明
實(shí)體識別提供識別文本中具有特定意義實(shí)體的能力,包含電影、電視劇、綜藝、動漫、單曲、專輯、圖書、火車車次、航班號、球隊(duì)、人名、快遞單號、電話號碼、url、郵箱、聯(lián)賽、時間、地點(diǎn)(包含酒店、餐館、景點(diǎn)、學(xué)校、道路、省、市、縣、區(qū)、鎮(zhèn)等)、驗(yàn)證碼。
主要接口
接口名 |
描述 |
---|---|
void init(Context context, OnResultListener<Integer> listener, boolean isLoadModel); |
初始化NLU服務(wù)。在調(diào)用NLU等功能接口前需要先調(diào)用此接口,在OnResultListener的onResult(T)方法中獲取到回調(diào)結(jié)果后,再調(diào)用NLU功能接口。開發(fā)者傳入listener參數(shù)作為回調(diào),用于等待NLU功能接口的調(diào)用過程和結(jié)果。 |
ResponseResult getEntity(String requestData, int requestType); |
采用同步方式識別文本中具有特定意義的實(shí)體,包含電影、電視劇、綜藝、動漫、單曲、專輯、圖書、火車車次、航班號、球隊(duì)、人名、快遞單號、電話號碼、url、郵箱、聯(lián)賽、時間、地點(diǎn)(包含酒店、餐館、景點(diǎn)、學(xué)校、道路、省、市、縣、區(qū)、鎮(zhèn)等)、驗(yàn)證碼。 |
ResponseResult getEntity(final String requestData, final int requestType, final OnResultListener<ResponseResult> listener); |
采用異步方式識別文本中具有特定意義的實(shí)體,包含電影、電視劇、綜藝、動漫、單曲、專輯、圖書、火車車次、航班號、球隊(duì)、人名、快遞單號、電話號碼、url、郵箱、聯(lián)賽、時間、地點(diǎn)(包含酒店、餐館、景點(diǎn)、學(xué)校、道路、省、市、縣、區(qū)、鎮(zhèn)等)、驗(yàn)證碼。 |
void destroy(Context context); |
取消所有NLU任務(wù),銷毀NLU引擎服務(wù)。調(diào)用此方法后,無法再使用NLU服務(wù)。如果需要重新使用NLU服務(wù),需要重新調(diào)用init(Context, OnResultListener<Integer>, boolean)}來初始化NLU服務(wù)。 |
接口輸入值說明
requestType表示請求類型,通過NluRequestType類定義如下:
枚舉的類型 |
枚舉的取值 |
---|---|
static final int |
REQUEST_TYPE_LOCAL = 0 本地請求 |
requestData的JSON格式如下:
參數(shù)名 |
是否必選 |
類型 |
說明 |
---|---|---|---|
text |
true |
String |
待分析的文本,UTF-8編碼,限制500個字符以內(nèi)。 |
module |
false |
String |
定義需要分析的實(shí)體,默認(rèn)所有實(shí)體均會分析。 分析某個實(shí)體,傳實(shí)體鍵值,例如:只需要分析時間實(shí)體,傳“time”??蓚鞫鄠€,表示分析多個實(shí)體,以半角逗號“,”分隔,例如:分析時間和地點(diǎn),傳“time,location”。 取值范圍:name、time、location、phoneNum、email、url、movie、tv、anime、league、team、trainNo、flightNo、expressNo、idNo、verificationCode、app、carNo |
callPkg |
false |
String |
調(diào)用者名稱。 |
callType |
false |
int |
調(diào)用者類型:
|
callVersion callState |
false false |
String int |
調(diào)用者版本號。 調(diào)用者狀態(tài):
|
接口返回值說明
返回值ResponseResult為JSONObject字符串,體現(xiàn)實(shí)體識別的結(jié)果:
參數(shù)名 |
是否必選 |
類型 |
說明 |
---|---|---|---|
code |
true |
int |
實(shí)體識別的結(jié)果碼。取值包括:
|
message |
true |
String |
實(shí)體識別的結(jié)果描述。 |
entity |
false |
JSONObject |
實(shí)體分析結(jié)果。 |
開發(fā)步驟
在使用實(shí)體識別相關(guān)接口時,需要將實(shí)體識別的相關(guān)類添加到工程。
import ohos.ai.nlu.ResponseResult; // 接口返回的結(jié)果類
import ohos.ai.nlu.NluClient; // 接口服務(wù)類
import ohos.ai.nlu.NluRequestType; // 接口調(diào)用時傳入的類型
import ohos.ai.nlu.OnResultListener; // 異步函數(shù),執(zhí)行成功的回調(diào)結(jié)果類
import ohos.ai.nlu.util.NluError;// 接口返回碼
使用NluClient靜態(tài)類進(jìn)行初始化,通過異步方式獲取服務(wù)的連接。
- context:應(yīng)用上下文信息,應(yīng)為ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的實(shí)例或子類實(shí)例。
- listener:初始化結(jié)果的回調(diào),可以傳null。
- isLoadModel:是否加載模型,如果傳true,則在初始化時加載模型;如果傳false,則在初始化時不加載模型。
NluClient.getInstance().init(context, new OnResultListener<Integer>(){
@Override
public void onResult(Integer result){
// 初始化成功回調(diào),在服務(wù)初始化成功調(diào)用該函數(shù)
}
}, true);
調(diào)用實(shí)體識別的接口,獲取分析結(jié)果。文章來源:http://www.zghlxwxcb.cn/news/detail-515592.html
- 采用同步方式進(jìn)行實(shí)體識別:
String requestData= "{text:'我要看電影魔獸',module:'movie'}"; // module為可選參數(shù),如果不設(shè)置該參數(shù),則默認(rèn)分析所有實(shí)體
ResponseResult respResult = NluClient.getInstance().getEntity(requestData, NluRequestType.REQUEST_TYPE_LOCAL);
if (null != respResult && NluError.SUCCESS_RESULT == respResult.getCode()) {
// 獲取接口返回結(jié)果,參考接口文檔返回使用
String result = respResult.getResponseResult();
}
- 采用異步方式進(jìn)行實(shí)體識別:
// 待分析文本
String requestData= "{text:'我要看電影魔獸',module:'movie'}"; // module為可選參數(shù),如果不設(shè)置該參數(shù),則默認(rèn)分析所有實(shí)體
// 調(diào)用接口
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()) {
// 獲取接口返回結(jié)果,參考接口文檔返回使用
String result = respResult.getResponseResult();
}
}
});
銷毀NLU服務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-515592.html
NluClient.getInstance().destroy();
到了這里,關(guān)于HarmonyOS學(xué)習(xí)路之開發(fā)篇—AI功能開發(fā)(實(shí)體識別)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!