命名实体识别(领域版)
功能介绍
对文本进行命名实体识别分析,目前支持通用、商务和娱乐领域。
- 通用领域:支持人名、地名、组织机构、时间点、日期、百分比、货币额度、序数词、计量规格词、民族、职业、邮箱、国家、节日的实体的识别。
- 商务领域:支持公司名、品牌名、职业、职位、邮箱、手机号码、电话号码、IP地址、身份证号、网址、专业的实体的识别。
- 娱乐领域:支持电影名、动漫、书名、互联网、歌名、产品名、电视剧名、电视节目名的实体的识别。
具体Endpoint请参见终端节点。
调用华为云NLP服务会产生费用,本API支持使用领域套餐包,购买时请在自然语言处理价格计算器中查看基础套餐包和领域套餐包支持的API范围。
本API调用限制为20次/秒。
调试
您可以在API Explorer中调试该接口。
前提条件
在使用本API之前,需要您完成服务申请和认证鉴权,具体操作流程请参见申请服务和认证鉴权章节。
用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。
URI
- URI格式
POST /v1/{project_id}/nlp-fundamental/ner/domain
- 参数说明
表1 URI参数说明 参数名
必选
说明
project_id
是
项目ID。获取方法请参见获取项目ID。
请求消息
请求参数如表2所示。
响应消息
响应参数如表3所示。
参数名 |
参数类型 |
说明 |
---|---|---|
named_entities |
Array of named_entity objects |
命名实体识别结果, 请参见表4。 |
error_code |
String |
调用失败时的错误码,具体参见错误码。 调用成功时无此字段。 |
error_msg |
String |
调用失败时的错误信息。 调用成功时无此字段。 |
参数名 |
参数类型 |
说明 |
---|---|---|
word |
String |
实体文本。 |
tag |
String |
实体类型,枚举类型。
|
offset |
Integer |
实体文本在待分析文本中的起始位置。 |
len |
Integer |
实体文本长度。 |
请求示例
- 请求示例1(识别分析命名实体,支持的领域类型为通用领域)
POST https://{endpoint}/v1/{project_id}/nlp-fundamental/ner/domain Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "text":"昨天程序员李小明来到北京参加开发者大赛,在比赛中表现优异,赢得了第一名。", "lang":"zh", "domain":"general" }
- Python3语言请求代码示例(识别分析命名实体,支持的语言类型为中文)
# -*- coding: utf-8 -*- # 此demo仅供测试使用,建议使用sdk。需提前安装requests,执行pip install requests import requests import json def nlp_demo(): url = 'https://{endpoint}/v1/{project_id}/nlp-fundamental/ner/domain' # endpoint和project_id需替换 token = '用户对应region的token' header = { 'Content-Type': 'application/json', 'X-Auth-Token': token } body = { 'text': '昨天程序员李小明来到北京参加开发者大赛,在比赛中表现优异,赢得了第一名。', 'lang': 'zh' } resp = requests.post(url, data=json.dumps(body), headers=header) print(resp.json()) if __name__ == '__main__': nlp_demo()
- Java语言请求代码示例(识别分析命名实体,支持的领域类型为通用领域)
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; /** * 此demo仅供测试使用,建议使用sdk */ public class NLPDemo { public void nlpDemo() { try { //endpoint和projectId需要替换成实际信息。 URL url = new URL("https://{endpoint}/v1/{project_id}/nlp-fundamental/ner/domain"); String token = "对应region的token"; HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); connection.addRequestProperty("Content-Type", "application/json"); connection.addRequestProperty("X-Auth-Token", token); //输入参数 String text = "昨天程序员李小明来到北京参加开发者大赛,在比赛中表现优异,赢得了第一名。"; String body = "{\"text\":\"" + text + "\",\"lang\":\"zh\",\"domain\":\"general\"}"; OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); osw.append(body); osw.flush(); InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); while (br.ready()) { System.out.println(br.readLine()); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { NLPDemo nlpDemo = new NLPDemo(); nlpDemo.nlpDemo(); } }
- 请求示例2(识别分析命名实体,支持商务领域)
POST https://{endpoint}/v1/{project_id}/nlp-fundamental/ner/domain Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "text":"程序员小明是华为的员工,邮箱是xiaoming@xx.com,电话12345678。", "lang":"zh", "domain":"business" }
- 请求示例3(识别分析命名实体,支持娱乐领域)
POST https://{endpoint}/v1/{project_id}/nlp-fundamental/ner/domain Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "text":"我早上看了动画《海贼王》,下午学唱《童年》,晚上在安徽卫视看《甄嬛传》。", "lang":"zh", "domain":"entertainment" }
响应示例
- 成功响应示例1
{ "named_entities": [ { "len": 2, "offset": 0, "tag": "day", "word": "昨天" }, { "len": 3, "offset": 2, "tag": "job", "word": "程序员" }, { "len": 3, "offset": 5, "tag": "nr", "word": "李小明" }, { "len": 2, "offset": 10, "tag": "ns", "word": "北京" }, { "len": 2, "offset": 32, "tag": "ord", "word": "第一" } ] }
- 失败响应示例1
{ "error_code": "NLP.0301", "error_msg": "The length of text should be in the range of 1-512." }
- 成功响应示例2
{ "named_entities": [ { "len": 3, "offset": 0, "tag": "job", "word": "程序员" }, { "len": 2, "offset": 6, "tag": "com", "word": "华为" }, { "len": 15, "offset": 15, "tag": "email", "word": "xiaoming@xx.com" }, { "len": 8, "offset": 33, "tag": "tele", "word": "12345678" } ] }
- 失败响应示例2
{ "error_code": "NLP.0301", "error_msg": "The length of text should be in the range of 1-512." }
- 成功响应示例3
{ "named_entities": [ { "len": 3, "offset": 8, "tag": "anime", "word": "海贼王" }, { "len": 2, "offset": 18, "tag": "song", "word": "童年" }, { "len": 4, "offset": 25, "tag": "pro", "word": "安徽卫视" }, { "len": 3, "offset": 31, "tag": "dra", "word": "甄嬛传" } ] }
- 失败响应示例3
{ "error_code": "NLP.0301", "error_msg": "The length of text should be in the range of 1-512." }
状态码
状态码请参见状态码。
错误码
错误码请参见错误码。