JAVA
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>
通過環(huán)境變量配置訪問憑證(AKSK)
說明:
阿里云賬號AccessKey擁有所有API的訪問權(quán)限,風(fēng)險很高。強烈建議您創(chuàng)建并使用RAM用戶進行API訪問或日常運維,請登錄RAM控制臺創(chuàng)建RAM用戶。
強烈建議不要把AccessKey和AccessKeySecret保存到代碼里,會存在密鑰泄漏風(fēng)險,在此提供通過配置環(huán)境變量的方式來保存和訪問aksk
Linux和macOS系統(tǒng)配置方法
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
Windows系統(tǒng)配置方法
新建環(huán)境變量文件,添加環(huán)境變量
NLP_AK_ENV
和NLP_SK_ENV
,并寫入已準備好的AccessKey ID和AccessKey Secret。重啟Windows系統(tǒng)。
AliNLP2.0 方式調(diào)用(推薦)
下方代碼以詞性標注算法為例,請求其它算法詳見下方文檔:更換API請求,替換代碼中的aciontName和請求參數(shù)即可
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的訪問權(quán)限,風(fēng)險很高。強烈建議您創(chuàng)建并使用RAM用戶進行API訪問或日常運維,請登錄RAM控制臺創(chuàng)建RAM用戶。
* 此處以把AccessKey和AccessKeySecret保存在環(huán)境變量為例說明。您也可以根據(jù)業(yè)務(wù)需要,保存到配置文件里。
* 強烈建議不要把AccessKey和AccessKeySecret保存到代碼里,會存在密鑰泄漏風(fēng)險
*/
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);
//構(gòu)造請求參數(shù),其中GetPosChEcom是算法的actionName, 請查找對應(yīng)的《API基礎(chǔ)信息參考》文檔并替換為您需要的算法的ActionName,示例詳見下方文檔中的:更換API請求
GetPosChEcomRequest request = new GetPosChEcomRequest();
//固定值,無需更改
request.setSysEndpoint("alinlp.cn-hangzhou.aliyuncs.com");
//固定值,無需更改
request.setServiceCode("alinlp");
//請求參數(shù), 具體請參考《API基礎(chǔ)信息文檔》進行替換與填寫
request.setText("這是一條文本");
request.setTokenizerId("MAINSE");
long start = System.currentTimeMillis();
//獲取請求結(jié)果,注意這里的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
(請求參數(shù)類)、GetPosChEcomResponse
(請求結(jié)果類),類名中的GetPosChEcom
是算法的actionName,可以替換成您需要的算法的actionName,可以在對應(yīng)的《API基礎(chǔ)信息參考》文檔中的請求參數(shù)-Action-示例值中找到并替換;
示例:需要調(diào)用基礎(chǔ)版-中文分詞-通用,進入中文分詞(基礎(chǔ)版),復(fù)制下圖中的示例值,將GetPosChEcomRequest
替換為GetWsChGeneralRequest
,GetPosChEcomResponse
替換成GetWsChGeneralResponse
;替換后要注意更改算法的請求參數(shù),參考API文檔即可。
Common Request方式調(diào)用
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的訪問權(quán)限,風(fēng)險很高。強烈建議您創(chuàng)建并使用RAM用戶進行API訪問或日常運維,請登錄RAM控制臺創(chuàng)建RAM用戶。
* 此處以把AccessKey和AccessKeySecret保存在環(huán)境變量為例說明。您也可以根據(jù)業(yè)務(wù)需要,保存到配置文件里。
* 強烈建議不要把AccessKey和AccessKeySecret保存到代碼里,會存在密鑰泄漏風(fēng)險
*/
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);
// 創(chuàng)建API請求并設(shè)置參數(shù)
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的參數(shù)可以在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();
}
}
}
調(diào)用異常自助排查
若調(diào)用過程中出現(xiàn)異常可對照調(diào)用異常自助排查(錯誤碼匯總),找到表格中對應(yīng)的描述,描述中包含具體錯誤原因和解決方案。