在线文本实体抽取能力,助力应用解析海量文本数据
随着信息化的发展,很多具有重要价值的知识隐藏分布在海量数据中,影响了人们获取知识的效率,如何处理繁杂的非结构化文本数据成为难题。
近日,HMS Core 机器学习服务 ,该能力可以检测出文本中是否存在比如日期、姓名、专有名词等实体信息,并将此类实体抽取出来,即自动处理非结构化自然语言文本数据的能力。例如,影视行业的应用中常常会出现大量文字的影评、资讯等内容,使用在线文本实体抽取能力即可快速提取结构信息,帮助搭建知识图谱,便于用户清晰理解。
此外,文本实体抽取能力更多应用于问答系统、信息索引、知识图谱构建等领域。
问答系统
问答系统是信息检索系统的一种高级形式,它能用准确、简洁的自然语言回答用户提出的问题。在问答系统实现过程中,则需要用到文本实体抽取能力识别问题和知识库中的实体信息,再通过多种算法模型匹配出精准回答。
信息索引
使用在线文本实体抽取能力,可命名特定实体信息作为索引和超链接。比如用户在评论时提到的专有名词,可以生成超链接,便于其他用户检索了解相关内容。
知识图谱构建
知识图谱是由实体、关系和属性组成的一种数据结构,即具有有向图结构的一个知识库,文本实体抽取能力作为知识图谱构建过程中的底层能力,有着极其重要的作用。比如构建音乐知识图谱,首先需要大量的文本数据中提取出歌手、歌曲、作词、影视等相关信息,然后再进行知识图谱的搭建。 目前,华为机器学习服务在线文本实体抽取能力共支持人名、金钱、影视名、网页链接在内的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
关注我们,第一时间了解 HMS Core 最新技术资讯~
- ArcGIS制图技巧:制图入门与点、线、面状符号制作
- Android技术分享|【Android踩坑】怀疑人生,主线程修改UI也会崩溃?
- 数据分表Mybatis Plus动态表名最优方案的探索
- 个人开源项目如何上传maven中央仓库
- 游戏创作者能够为玩家创造出快乐的体验,这或许就是做游戏的魅力吧!
- 用Python自动生成 图文并茂的数据分析 报告
- 软件测试之测试代表用户
- 分布式前修课:Zookeeper锁实现方式
- Python 数据分析师的基本修养
- 设计模式之适配器模式
- 如何做好企业数字化转型?这10份靠谱案例收藏了(附下载)
- 性能提升400倍丨外汇掉期估值计算优化案例
- 如何面向对象编程?程序员:我也要先有“对象”啊
- 技术分享| 融合调度系统中的电子围栏功能说明
- #yyds干货盘点# leetcode算法题:环形链表 II
- 网站建设流程
- Java池化技术你了解多少?
- 如何实时计算日累计逐单资金流
- JAVA面试解析之Spring
- 一文参透分布式存储系统Ceph的架构设计、集群搭建(手把手)