更新时间:2024-01-17 GMT+08:00
分享

事件抽取

功能介绍

事件抽取是指从自然语言文本中抽取指定类型的事件以及相关实体信息,并形成结构化数据输出的文本处理技术。

目前只支持金融公告中会议召开、聘任、辞职、股票增持、股票减持5类事件以及相关要素的抽取。

本API免费调用,调用限制为2次/秒。

调试

您可以在API Explorer中调试该接口。

前提条件

在使用本API之前,需要您完成服务申请和认证鉴权,具体操作流程请参见申请服务认证鉴权章节。

用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。

URI

  • URI格式
    POST /v1/{project_id}/nlp-fundamental/event-extraction
  • 参数说明
    表1 URI参数说明

    参数名

    必选

    说明

    project_id

    项目ID。获取方法请参见获取项目ID

请求消息

请求参数如表 请求参数所示。

表2 请求参数

参数名

参数类型

必选

说明

text

String

待分析文本,长度为1~256,文本编码为UTF-8。

响应消息

响应参数如表3所示。

表3 响应参数

参数名

参数类型

说明

events

Array of events

事件抽取结果。

请参见表4

error_code

String

调用失败时的错误码,具体参见错误码

调用成功时无此字段。

error_msg

String

调用失败时的错误信息。

调用成功时无此字段。

表4 events数据结构说明

参数名

参数类型

说明

argument

Array of arguments

事件元素列表。

event_trigger

String

事件触发词。触发词是事件描述中最能代表事件发生的词汇,决定事件类别的重要特征。

event_type

String

事件类型。

trigger_span

List of Integer

事件触发词在待分析文本中的起始和终止位置。

表5 events.argument数据结构说明

参数名

参数类型

说明

role

String

元素角色。元素角色指的是事件元素在事件中扮演的角色,是事件元素与事件的语义关系。

span

List of Integer

实体文本在待分析文本中的起始和终止位置。

word

String

实体文本。

表6 事件模板

事件类型

模板元素

说明

会议召开

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."
    }

状态码

状态码请参见状态码

错误码

错误码请参见错误码

相关文档