Java代码示例。

安装

pom依赖如下:

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.5.13</version>
</dependency>

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-alinlp</artifactId>
  <version>1.8.14</version>
</dependency>

通过环境变量配置访问凭证(AKSK)

  1. 说明:

    1. 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。

    2. 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险,在此提供通过配置环境变量的方式来保存和访问aksk

  2. Linux和macOS系统配置方法

    export NLP_AK_ENV=<access_key_id>
    export NLP_SK_ENV=<access_key_secret>

    其中<access_key_id>替换为已准备好的AccessKey ID,<access_key_secret>替换为AccessKey Secret,AccessKey ID和AccessKey Secret的获取方式见步骤二:获取账号的AccessKey

  3. Windows系统配置方法

    1. 新建环境变量文件,添加环境变量NLP_AK_ENVNLP_SK_ENV,并写入已准备好的AccessKey ID和AccessKey Secret。

    2. 重启Windows系统。

AliNLP2.0 方式调用(推荐)

下方代码以词性标注算法为例,请求其它算法详见下方文档:更换API请求,替换代码中的aciontName和请求参数即可

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;

import com.aliyuncs.alinlp.model.v20200629.GetPosChEcomRequest;
import com.aliyuncs.alinlp.model.v20200629.GetPosChEcomResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;

public class TestCloud {
    /**
     * 代码示例:请求词性标注算法
     */
    public static void main(String[] args) throws ClientException {
        /**
         * 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
         * 此处以把AccessKey和AccessKeySecret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
         * 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险
         */
        String accessKeyId = System.getenv("NLP_AK_ENV");
        String accessKeySecret = System.getenv("NLP_SK_ENV");
        DefaultProfile defaultProfile = DefaultProfile.getProfile(
                "cn-hangzhou",
                accessKeyId,
                accessKeySecret);
        IAcsClient client = new DefaultAcsClient(defaultProfile);
        //构造请求参数,其中GetPosChEcom是算法的actionName, 请查找对应的《API基础信息参考》文档并替换为您需要的算法的ActionName,示例详见下方文档中的:更换API请求
        GetPosChEcomRequest request = new GetPosChEcomRequest();
        //固定值,无需更改
        request.setSysEndpoint("alinlp.cn-hangzhou.aliyuncs.com");
        //固定值,无需更改
        request.setServiceCode("alinlp");
        //请求参数, 具体请参考《API基础信息文档》进行替换与填写
        request.setText("这是一条文本");
        request.setTokenizerId("MAINSE");
        long start = System.currentTimeMillis();
        //获取请求结果,注意这里的GetPosChEcom也需要替换
        GetPosChEcomResponse response = client.getAcsResponse(request);
        System.out.println(response.hashCode());
        System.out.println(response.getRequestId() + "\n" + response.getData() + "\n" + "cost:" + (System.currentTimeMillis()- start));
    }
}

更换API请求

GetPosChEcomRequest(请求参数类)、GetPosChEcomResponse(请求结果类),类名中的GetPosChEcom是算法的actionName,可以替换成您需要的算法的actionName,可以在对应的《API基础信息参考》文档中的请求参数-Action-示例值中找到并替换;

示例:需要调用基础版-中文分词-通用,进入中文分词(基础版),复制下图中的示例值,将GetPosChEcomRequest替换为GetWsChGeneralRequestGetPosChEcomResponse替换成GetWsChGeneralResponse替换后要注意更改算法的请求参数,参考API文档即可。actionName值的位置

Common Request方式调用

common request文档

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;

public class AliNLP2 {
    public static void main(String[] args) {
      	/**
         * 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
         * 此处以把AccessKey和AccessKeySecret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
         * 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险
         */
        String accessKeyId = System.getenv("NLP_AK_ENV");
        String accessKeySecret = System.getenv("NLP_SK_ENV");
        DefaultProfile defaultProfile = DefaultProfile.getProfile(
                "cn-hangzhou",
                accessKeyId,
                accessKeySecret);
        IAcsClient client = new DefaultAcsClient(defaultProfile);
        // 创建API请求并设置参数
        CommonRequest request = new CommonRequest();
        // domain和version是固定值
        request.setDomain("alinlp.cn-hangzhou.aliyuncs.com");
        request.setVersion("2020-06-29");
        //action name可以在API文档里查到
        request.setSysAction("GetPosChEcom");
        //put的参数可以在API文档查看到
        request.putQueryParameter("ServiceCode", "alinlp");
        request.putQueryParameter("Text", "这是一条文本");
        request.putQueryParameter("TokenizerId", "MAINSE");

        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

调用异常自助排查

若调用过程中出现异常可对照调用异常自助排查(错误码汇总),找到表格中对应的描述,描述中包含具体错误原因和解决方案。