隨著資訊化的發展,很多具有重要價值的知識隱藏分佈在海量資料中,影響了人們獲取知識的效率,如何處理繁雜的非結構化文字資料成為難題。
近日,HMS Core機器學習服務6.5.0版本新增線上文字實體抽取能力,該能力可以檢測出文字中是否存在比如日期、姓名、專有名詞等實體資訊,並將此類實體抽取出來,即自動處理非結構化自然語言文字資料的能力。例如,影視行業的應用中常常會出現大量文字的影評、資訊等內容,使用線上文字實體抽取能力即可快速提取結構資訊,幫助搭建知識圖譜,便於使用者清晰理解。
此外,文字實體抽取能力更多應用於問答系統、資訊索引、知識圖譜構建等領域。
問答系統
問答系統是資訊檢索系統的一種高階形式,它能用準確、簡潔的自然語言回答使用者提出的問題。在問答系統實現過程中,則需要用到文字實體抽取能力識別問題和知識庫中的實體資訊,再通過多種演算法模型匹配出精準回答。
資訊索引
使用線上文字實體抽取能力,可命名特定實體資訊作為索引和超連結。比如使用者在評論時提到的專有名詞,可以生成超連結,便於其他使用者檢索瞭解相關內容。
知識圖譜構建
知識圖譜是由實體、關係和屬性組成的一種資料結構,即具有有向圖結構的一個知識庫,文字實體抽取能力作為知識圖譜構建過程中的底層能力,有著極其重要的作用。比如構建音樂知識圖譜,首先需要大量的文字資料中提取出歌手、歌曲、作詞、影視等相關資訊,然後再進行知識圖譜的搭建。
目前,華為機器學習服務線上文字實體抽取能力共支援人名、金錢、影視名、網頁連結在內的16個實體類別,可根據實際語義場景應用於不同類別的App中。
整合步驟
- 開發準備
詳細準備步驟可參考華為開發者聯盟官網。
- 整合和配置apigateway鑑權
基於apigateway的鑑權機制:
"paths": {
"/entityExtract": { "post": { "operationId": "entityExtract",
"parameters": [{"in": "body", "name": "req", "required": true,
"schema": { "$ref": "#/definitions/NerEnterReq" } }, {
"name": "X-Request-ID", "in": "header", "required": true,
"type": "string"
}, {"name": "X-Package-Name", "in": "header", "required": true,
"type": "string" }, ……],
"responses": {"200": { "description": "response of 200",
"schema": { "$ref": "#/definitions/ResponseEntityNerBodyVo"}}}}}
- 建立線上文字實體構造器
// 使用自定義的引數配置建立語種檢測器。
MLRemoteNerSetting setting = new MLRemoteNerSetting.Factory()
.setSourceLangCode("zh")
.create();
MLRemoteNer ner = MLNerFactory.getInstance().getRemoteNer(setting);
進行文字實體抽取。
- 線上獲取文字實體抽取
非同步方法示例程式碼:
ner.asyncEntityExtract(input).addOnSuccessListener(new OnSuccessListener<RemoteNerResultItem[]>() {
@Override
public void onSuccess(RemoteNerResultItem[] remoteNerResults) {
// 成功的處理邏輯。
if(remoteNerResults != null){
// 有識別結果
}else {
// 識別結果為空
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
// 識別失敗,獲取相關異常資訊。
try {
MLException mlException = (MLException) e;
// 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
int errorCode = mlException.getErrCode();
// 獲取報錯資訊,開發者可以結合錯誤碼,快速定位問題。
String errorMessage = mlException.getMessage();
} catch (Exception error) {
// 轉換錯誤處理。
}
}
});
同步方法示例程式碼:
try {
RemoteNerResultItem[] remoteNerResults = ner.syncEntityExtract(input);
// 識別成功邏輯
if(remoteNerResults != null){
// 有識別結果
}else {
// 識別結果為空
}
} catch (MLException mlException) {
// 失敗的處理邏輯。
// 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
int errorCode = mlException.getErrCode();
// 獲取報錯資訊,開發者可以結合錯誤碼,快速定位問題。
String errorMessage = mlException.getMessage();
}
- 完成後,釋放資源
if (ner != null) {
ner.stop();
}
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開發指導文件
華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間瞭解 HMS Core 最新技術資訊~