事件抽取
功能介绍
事件抽取是指从自然语言文本中抽取指定类型的事件以及相关实体信息,并形成结构化数据输出的文本处理技术。
目前只支持金融公告中会议召开、聘任、辞职、股票增持、股票减持5类事件以及相关要素的抽取。
本API免费调用,调用限制为2次/秒。
调试
您可以在API Explorer中调试该接口。
前提条件
在使用本API之前,需要您完成服务申请和认证鉴权,具体操作流程请参见申请服务和认证鉴权章节。
用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。
URI
- URI格式
POST /v1/{project_id}/nlp-fundamental/event-extraction
- 参数说明
表1 URI参数说明 参数名
必选
说明
project_id
是
项目ID。获取方法请参见获取项目ID。
响应消息
响应参数如表3所示。
参数名 |
参数类型 |
说明 |
---|---|---|
events |
Array of events |
事件抽取结果。 请参见表4。 |
error_code |
String |
调用失败时的错误码,具体参见错误码。 调用成功时无此字段。 |
error_msg |
String |
调用失败时的错误信息。 调用成功时无此字段。 |
参数名 |
参数类型 |
说明 |
---|---|---|
argument |
事件元素列表。 |
|
event_trigger |
String |
事件触发词。触发词是事件描述中最能代表事件发生的词汇,决定事件类别的重要特征。 |
event_type |
String |
事件类型。 |
trigger_span |
List of Integer |
事件触发词在待分析文本中的起始和终止位置。 |
参数名 |
参数类型 |
说明 |
---|---|---|
role |
String |
元素角色。元素角色指的是事件元素在事件中扮演的角色,是事件元素与事件的语义关系。 |
span |
List of Integer |
实体文本在待分析文本中的起始和终止位置。 |
word |
String |
实体文本。 |
事件类型 |
模板元素 |
说明 |
---|---|---|
会议召开 |
ORG |
公司名称 |
Time |
会议时间 |
|
Place |
会议地点 |
|
Name |
会议名称 |
|
聘任 |
ORG |
公司名称 |
Person |
聘任对象 |
|
Job |
职位 |
|
Time-Period |
任期 |
|
辞职 |
ORG |
公司名称 |
Person |
辞职对象 |
|
Job |
职位 |
|
Time |
辞职时间 |
|
股票增持 |
Obj |
发行股票的公司 |
Sub |
增持主体(个人或组织) |
|
Time-Ending |
增持日期 |
|
Increasing-Num |
增持股数 |
|
Increasing-Rate |
增持比例 |
|
After-Num |
增持后持股数 |
|
After-Rate |
增持后持股比例 |
|
股票减持 |
Obj |
发行股票的公司 |
Sub |
减持主体(个人或组织) |
|
Time-Ending |
减持日期 |
|
Decreasing-Num |
减持股数 |
|
Decreasing-Rate |
减持比例 |
|
After-Num |
减持后持股数 |
|
After-Rate |
减持后持股比例 |
请求示例
- 请求示例(抽取事件)
POST https://{endpoint}/v1/{project_id}/nlp-fundamental/event-extraction Request Header: Content-Type: application/json X-Auth-Token: MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "text":"中国XXX股份有限公司(以下简称“公司”)第五届董事会第一次会议上,同意选举董事黄XX为审计委员会委员。审计委员会任期与本届董事会任期一致" }
- 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/event-extraction' # endpoint和project_id需替换 token = '用户对应region的token' header = { 'Content-Type': 'application/json', 'X-Auth-Token': token } body = { 'text': '中国XXX股份有限公司(以下简称“公司”)第五届董事会第一次会议上,同意选举董事黄XX为审计委员会委员。审计委员会任期与本届董事会任期一致' } 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/event-extraction"); 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 = "中国XXX股份有限公司(以下简称“公司”)第五届董事会第一次会议上,同意选举董事黄XX为审计委员会委员。审计委员会任期与本届董事会任期一致"; String body = "{\"text\":\"" + text + "\"}"; 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(); } }
响应示例
- 成功响应示例
{ "events": [ { "argument": [ { "role": "ORG", "span": [0,11], "word": "中国XXX股份有限公司" }, { "role": "Person", "span": [40,43], "word": "黄XX" }, { "role": "Job", "span": [44,51], "word": "审计委员会委员" }, { "role": "Time-Period", "span": [57,69], "word": "任期与本届董事会任期一致" } ], "event_trigger": "选举", "event_type": "聘任", "trigger_span": [36,38] } ] }
- 失败响应示例
{ "error_code": "NLP.0301", "error_msg": "text should be between 1 to 256." }
状态码
状态码请参见状态码。
错误码
错误码请参见错误码。